Fix lint errors and update eslint
Fixes a couple of lint errors caught by `npm run lint` in timeline- overview.js and timeline-viewport.js. Also restructures the test- details controller to use appropriate `this.` syntax instead of `$scope.` In addition, eslint and eslint-config-openstack have been updated, and a new .eslintrc.json config file has been created to tweak some specific rules for stackviz. Change-Id: I9e1fe5121621730eb3efda4b99e9fe182f399aee
This commit is contained in:
parent
6fab4c7e3f
commit
093c02d0b9
14
.eslintrc
14
.eslintrc
@ -1,14 +0,0 @@
|
||||
# Use eslint-config-openstack
|
||||
extends: openstack
|
||||
|
||||
# Set up globals
|
||||
globals:
|
||||
angular: false
|
||||
module: false
|
||||
|
||||
env:
|
||||
browser: true
|
||||
jasmine: true
|
||||
|
||||
rules:
|
||||
module-setter: 0
|
25
.eslintrc.json
Normal file
25
.eslintrc.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"extends" : "openstack",
|
||||
|
||||
"globals" : {
|
||||
"angular": false,
|
||||
"module": false
|
||||
},
|
||||
|
||||
"env" : {
|
||||
"browser": true,
|
||||
"jasmine": true
|
||||
},
|
||||
|
||||
"rules" : {
|
||||
"module-setter": 0,
|
||||
"strict": [2,"global"],
|
||||
"valid-jsdoc": 0,
|
||||
"brace-style": [2, "1tbs", { "allowSingleLine": true }],
|
||||
"no-extra-parens": [2, "functions"],
|
||||
"complexity": 0,
|
||||
"no-unused-vars": 0,
|
||||
"guard-for-in": 0
|
||||
}
|
||||
|
||||
}
|
@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" href="css/main.css">
|
||||
</head>
|
||||
|
||||
<body class="ng-cloak" ng-controller="MainCtrl">
|
||||
<body class="ng-cloak" ng-controller="MainController">
|
||||
<header class="navbar navbar-default navbar-fixed-top navbar-inner">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
|
@ -26,4 +26,4 @@ function HomeCtrl($scope, $state, datasetService) {
|
||||
|
||||
}
|
||||
|
||||
controllersModule.controller('HomeCtrl', HomeCtrl);
|
||||
controllersModule.controller('HomeController', HomeCtrl);
|
||||
|
@ -12,4 +12,4 @@ function MainCtrl($window, $scope) {
|
||||
});
|
||||
}
|
||||
|
||||
controllersModule.controller('MainCtrl', MainCtrl);
|
||||
controllersModule.controller('MainController', MainCtrl);
|
||||
|
@ -5,19 +5,18 @@ var controllersModule = require('./_index');
|
||||
/**
|
||||
* @ngInject
|
||||
*/
|
||||
function TestDetailsCtrl($scope, $location, $stateParams, datasetService, progressService) {
|
||||
// ViewModel
|
||||
var TestDetailsCtrl = function($scope, $location, $stateParams, datasetService, progressService) {
|
||||
var vm = this;
|
||||
$scope.datasetId = $stateParams.datasetId;
|
||||
vm.datasetId = $stateParams.datasetId;
|
||||
var testName = $stateParams.test;
|
||||
$scope.testName = testName;
|
||||
vm.testName = testName;
|
||||
|
||||
progressService.start({ parent: 'div[role="main"] .panel-body' });
|
||||
|
||||
// load dataset, raw json, and details json
|
||||
datasetService.get($stateParams.datasetId).then(function(response) {
|
||||
$scope.dataset = response;
|
||||
$scope.stats = response.stats;
|
||||
vm.dataset = response;
|
||||
vm.stats = response.stats;
|
||||
datasetService.raw(response).then(function(raw) {
|
||||
var item = null;
|
||||
for (var t in raw.data) {
|
||||
@ -25,7 +24,7 @@ function TestDetailsCtrl($scope, $location, $stateParams, datasetService, progre
|
||||
item = raw.data[t];
|
||||
}
|
||||
}
|
||||
$scope.item = item;
|
||||
vm.item = item;
|
||||
|
||||
progressService.inc();
|
||||
}).catch(function(ex) {
|
||||
@ -33,9 +32,9 @@ function TestDetailsCtrl($scope, $location, $stateParams, datasetService, progre
|
||||
progressService.done();
|
||||
});
|
||||
datasetService.details(response).then(function(deets) {
|
||||
$scope.details = deets;
|
||||
$scope.originalDetails = angular.copy(deets.data[testName]);
|
||||
$scope.itemDetails = deets.data[testName];
|
||||
vm.details = deets;
|
||||
vm.originalDetails = angular.copy(deets.data[testName]);
|
||||
vm.itemDetails = deets.data[testName];
|
||||
|
||||
progressService.done();
|
||||
}).catch(function(ex) {
|
||||
@ -47,9 +46,9 @@ function TestDetailsCtrl($scope, $location, $stateParams, datasetService, progre
|
||||
progressService.done();
|
||||
});
|
||||
|
||||
$scope.parsePythonLogging = function(showINFO, showDEBUG, showWARNING, showERROR) {
|
||||
if ($scope.originalDetails && $scope.originalDetails.pythonlogging) {
|
||||
var log = $scope.originalDetails.pythonlogging;
|
||||
vm.parsePythonLogging = function(showINFO, showDEBUG, showWARNING, showERROR) {
|
||||
if (vm.originalDetails && vm.originalDetails.pythonlogging) {
|
||||
var log = vm.originalDetails.pythonlogging;
|
||||
var ret = [];
|
||||
var lines = log.split('\n');
|
||||
for (var i in lines) {
|
||||
@ -57,19 +56,19 @@ function TestDetailsCtrl($scope, $location, $stateParams, datasetService, progre
|
||||
if (showINFO && line.includes("INFO")) {
|
||||
ret.push(line);
|
||||
}
|
||||
else if (showDEBUG && line.includes("DEBUG")) {
|
||||
if (showDEBUG && line.includes("DEBUG")) {
|
||||
ret.push(line);
|
||||
}
|
||||
else if (showWARNING && line.includes("WARNING")) {
|
||||
if (showWARNING && line.includes("WARNING")) {
|
||||
ret.push(line);
|
||||
}
|
||||
else if (showERROR && line.includes("ERROR")) {
|
||||
if (showERROR && line.includes("ERROR")) {
|
||||
ret.push(line);
|
||||
}
|
||||
}
|
||||
$scope.itemDetails.pythonlogging = ret.join('\n');
|
||||
vm.itemDetails.pythonlogging = ret.join('\n');
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
controllersModule.controller('TestDetailsCtrl', TestDetailsCtrl);
|
||||
};
|
||||
controllersModule.controller('TestDetailsController', TestDetailsCtrl);
|
||||
|
@ -34,4 +34,4 @@ function TimelineCtrl($scope, $location, $stateParams, datasetService) {
|
||||
|
||||
}
|
||||
|
||||
controllersModule.controller('TimelineCtrl', TimelineCtrl);
|
||||
controllersModule.controller('TimelineController', TimelineCtrl);
|
||||
|
@ -19,8 +19,7 @@ function testDetailsSearch() {
|
||||
this.showERROR = true;
|
||||
|
||||
var update = function() {
|
||||
$scope.$parent
|
||||
.parsePythonLogging(self.showINFO, self.showDEBUG, self.showWARNING, self.showERROR);
|
||||
$scope.filter(self.showINFO, self.showDEBUG, self.showWARNING, self.showERROR);
|
||||
};
|
||||
|
||||
$scope.$watch(function() { return self.query; }, update);
|
||||
@ -32,9 +31,9 @@ function testDetailsSearch() {
|
||||
|
||||
return {
|
||||
restrict: 'EA',
|
||||
require: ['^testDetailsSearch', '^testDetails'],
|
||||
require: ['^testDetailsSearch','^testDetails'],
|
||||
scope: {
|
||||
'parsePythonLogging': '&'
|
||||
'filter': '='
|
||||
},
|
||||
controller: controller,
|
||||
controllerAs: 'search',
|
||||
|
@ -178,7 +178,6 @@ function timelineOverview() {
|
||||
|
||||
scope.$on('filter', function() {
|
||||
if (loaded) {
|
||||
console.log('filtering');
|
||||
updateItems(timelineController.data);
|
||||
}
|
||||
});
|
||||
|
@ -102,8 +102,8 @@ function timelineViewport($document) {
|
||||
timelineController.setHover(d);
|
||||
scope.$apply();
|
||||
|
||||
if (!timelineController.selection
|
||||
|| d !== timelineController.selection.item) {
|
||||
if (!timelineController.selection ||
|
||||
d !== timelineController.selection.item) {
|
||||
color(d3.select(this), statusColorMap.hover);
|
||||
}
|
||||
};
|
||||
@ -112,8 +112,8 @@ function timelineViewport($document) {
|
||||
timelineController.clearHover();
|
||||
scope.$apply();
|
||||
|
||||
if (!timelineController.selection
|
||||
|| d !== timelineController.selection.item) {
|
||||
if (!timelineController.selection ||
|
||||
d !== timelineController.selection.item) {
|
||||
var self = d3.select(this);
|
||||
uncolor(d3.select(this));
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ var parseWorker = function(tags) {
|
||||
continue;
|
||||
}
|
||||
|
||||
return parseInt(tags[i].split('-')[1]);
|
||||
return parseInt(tags[i].split('-')[1], 10);
|
||||
}
|
||||
|
||||
return null;
|
||||
@ -286,10 +286,10 @@ function timeline($log, datasetService, progressService) {
|
||||
d3.select(window)
|
||||
.on("keydown", function() {
|
||||
var code = d3.event.keyCode;
|
||||
if (code == 37) {
|
||||
if (code === 37) {
|
||||
ctrl.selectPreviousItem();
|
||||
}
|
||||
else if (code == 39) {
|
||||
if (code === 39) {
|
||||
ctrl.selectNextItem();
|
||||
}
|
||||
scope.$apply();
|
||||
|
@ -31,7 +31,7 @@ var onConfig = require('./on_config');
|
||||
angular.module('app').config(onConfig);
|
||||
|
||||
var onRun = require('./on_run');
|
||||
angular.module('app').run(require('./on_run'));
|
||||
angular.module('app').run(onRun);
|
||||
|
||||
angular.bootstrap(document, ['app'], {
|
||||
strictDi: true
|
||||
|
@ -8,14 +8,14 @@ function OnConfig($stateProvider, $locationProvider, $urlRouterProvider) {
|
||||
$stateProvider.state('home', {
|
||||
url: '/{datasetId:int}',
|
||||
params: { datasetId: 0 },
|
||||
controller: 'HomeCtrl as home',
|
||||
controller: 'HomeController as home',
|
||||
templateUrl: 'home.html',
|
||||
title: 'Home'
|
||||
});
|
||||
|
||||
$stateProvider.state('timeline', {
|
||||
url: '/{datasetId:int}/timeline?test',
|
||||
controller: 'TimelineCtrl as timeline',
|
||||
controller: 'TimelineController as timeline',
|
||||
templateUrl: 'timeline.html',
|
||||
reloadOnSearch: false,
|
||||
title: 'Timeline'
|
||||
@ -23,7 +23,8 @@ function OnConfig($stateProvider, $locationProvider, $urlRouterProvider) {
|
||||
|
||||
$stateProvider.state('testDetails', {
|
||||
url: '/{datasetId:int}/test-details/{test}',
|
||||
controller: 'TestDetailsCtrl as testDetails',
|
||||
controller: 'TestDetailsController',
|
||||
controllerAs: 'testDetails',
|
||||
templateUrl: 'test-details.html',
|
||||
title: 'Test Details'
|
||||
});
|
||||
@ -32,4 +33,5 @@ function OnConfig($stateProvider, $locationProvider, $urlRouterProvider) {
|
||||
|
||||
}
|
||||
|
||||
OnConfig.$inject = ['$stateProvider','$locationProvider','$urlRouterProvider'];
|
||||
module.exports = OnConfig;
|
||||
|
@ -21,4 +21,5 @@ function OnRun($rootScope, AppSettings) {
|
||||
|
||||
}
|
||||
|
||||
OnRun.$inject = ['$rootScope','AppSettings'];
|
||||
module.exports = OnRun;
|
||||
|
@ -20,7 +20,8 @@ function DatasetService($q, $http) {
|
||||
service.get = function(id) {
|
||||
return $q(function(resolve, reject) {
|
||||
service.list().then(function(response) {
|
||||
for (let entry of response.data.tempest) {
|
||||
for (var i in response.data.tempest) {
|
||||
var entry = response.data.tempest[i];
|
||||
if (entry.id === id) {
|
||||
resolve(entry);
|
||||
return;
|
||||
|
@ -1,5 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
var binaryMinIndex = function(min, array, func) {
|
||||
"use strict";
|
||||
|
||||
var left = 0;
|
||||
var right = array.length - 1;
|
||||
@ -26,7 +27,6 @@ var binaryMinIndex = function(min, array, func) {
|
||||
};
|
||||
|
||||
var binaryMaxIndex = function(max, array, func) {
|
||||
"use strict";
|
||||
|
||||
var left = 0;
|
||||
var right = array.length - 1;
|
||||
|
@ -1,7 +1,8 @@
|
||||
'use strict';
|
||||
|
||||
var d3 = require("d3");
|
||||
|
||||
var fillArrayRight = function(array) {
|
||||
"use strict";
|
||||
|
||||
// "fill" the array to the right, overwriting empty values with the next
|
||||
// non-empty value to the left
|
||||
@ -14,7 +15,6 @@ var fillArrayRight = function(array) {
|
||||
};
|
||||
|
||||
var mergeNames = function(primary, secondary) {
|
||||
"use strict";
|
||||
|
||||
// "zip" together strings in the same position in each array, and do some
|
||||
// basic cleanup of results
|
||||
@ -26,7 +26,6 @@ var mergeNames = function(primary, secondary) {
|
||||
};
|
||||
|
||||
var parseDstat = function(data, year) {
|
||||
"use strict";
|
||||
|
||||
var primaryNames = null;
|
||||
var secondaryNames = null;
|
||||
|
@ -10,8 +10,8 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
{{testName | split:'.' | slice:-2 | join:'.'}}
|
||||
<test-details-search class="pull-right"></test-details-search>
|
||||
{{testDetails.testName | split:'.' | slice:-2 | join:'.'}}
|
||||
<test-details-search class="pull-right" filter="testDetails.parsePythonLogging"></test-details-search>
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
@ -21,26 +21,26 @@
|
||||
<table class="table table-bordered table-hover table-striped">
|
||||
<tr>
|
||||
<td>Name</td>
|
||||
<td>{{item.name | split:'.' | pickRight:1}}</td>
|
||||
<td>{{testDetails.item.name | split:'.' | pickRight:1}}</td>
|
||||
<tr>
|
||||
<td>Full Name</td>
|
||||
<td>{{item.name}}</td>
|
||||
<td>{{testDetails.item.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Status</td>
|
||||
<td>{{item.status}}</td>
|
||||
<td>{{testDetails.item.status}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tags</td>
|
||||
<td>{{item.tags | join:', '}}</td>
|
||||
<td>{{testDetails.item.tags | join:', '}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Duration</td>
|
||||
<td>{{item.duration | number:1}} seconds</td>
|
||||
<td>{{testDetails.item.duration | number:1}} seconds</td>
|
||||
</tr>
|
||||
</table>
|
||||
</uib-tab>
|
||||
<uib-tab ng-repeat="(entry,log) in itemDetails" heading="{{entry}}">
|
||||
<uib-tab ng-repeat="(entry,log) in testDetails.itemDetails" heading="{{entry}}">
|
||||
<pre style="height: 400px; overflow-y: scroll;">{{log}}</pre>
|
||||
</uib-tab>
|
||||
</uib-tabset>
|
||||
@ -48,7 +48,7 @@
|
||||
|
||||
<div class="panel-footer clearfix">
|
||||
<a class="btn btn-default pull-right"
|
||||
ui-sref="timeline({datasetId: dataset.id, test: item.name})">
|
||||
ui-sref="timeline({datasetId: testDetails.dataset.id, test: testDetails.item.name})">
|
||||
Timeline
|
||||
</a>
|
||||
</div>
|
||||
|
@ -22,8 +22,8 @@
|
||||
"bulkify": "^1.1.1",
|
||||
"d3": "^3.5.6",
|
||||
"del": "^0.1.3",
|
||||
"eslint": "1.5.1",
|
||||
"eslint-config-openstack": "1.2.2",
|
||||
"eslint": "^1.10.3",
|
||||
"eslint-config-openstack": "^1.2.3",
|
||||
"eslint-plugin-angular": "0.12.0",
|
||||
"express": "^4.7.2",
|
||||
"gulp": "^3.8.8",
|
||||
|
@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var istanbul = require('browserify-istanbul');
|
||||
var isparta = require('isparta');
|
||||
var isparta = require('isparta');
|
||||
|
||||
module.exports = function(config) {
|
||||
|
||||
|
@ -1,22 +0,0 @@
|
||||
/*global angular */
|
||||
|
||||
'use strict';
|
||||
|
||||
describe('Unit: HomeCtrl', function() {
|
||||
|
||||
var ctrl;
|
||||
|
||||
beforeEach(function() {
|
||||
// instantiate the app module
|
||||
angular.mock.module('app');
|
||||
|
||||
angular.mock.inject(function($controller) {
|
||||
ctrl = $controller('HomeCtrl');
|
||||
});
|
||||
});
|
||||
|
||||
it('should exist', function() {
|
||||
expect(ctrl).toBeDefined();
|
||||
});
|
||||
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user