From 1ff983a03b172730334522b707ed87d710fecd68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20M=C3=A9tais?= Date: Fri, 22 May 2015 17:44:54 +0200 Subject: [PATCH] Add specific sub-filters on warnings in the timeline --- front/src/css/timeline.css | 26 +++++++++++++-- front/src/js/controllers/timelineCtrl.js | 8 +++++ .../src/js/directives/offendersDirectives.js | 15 ++++++++- front/src/less/timeline.less | 33 +++++++++++++++++-- front/src/views/timeline.html | 25 ++++++++++++-- lib/tools/jsExecutionTransformer.js | 6 ++-- 6 files changed, 102 insertions(+), 11 deletions(-) diff --git a/front/src/css/timeline.css b/front/src/css/timeline.css index 2816533..9ecf796 100644 --- a/front/src/css/timeline.css +++ b/front/src/css/timeline.css @@ -143,6 +143,10 @@ border: 1px dotted #aaa; text-align: left; } +.subFilters { + margin-left: 3em; + font-size: 0.9em; +} .table { display: table; width: 100%; @@ -306,9 +310,27 @@ color: #e74c3c; cursor: pointer; } -.warningsFilterOn > div { +.queryWithoutResultsFilterOn > div { display: none; } -.warningsFilterOn > div.warning { +.queryWithoutResultsFilterOn > div.queryWithoutResults { + display: table-row; +} +.jQueryCallOnEmptyObjectFilterOn > div { + display: none; +} +.jQueryCallOnEmptyObjectFilterOn > div.jQueryCallOnEmptyObject { + display: table-row; +} +.eventNotDelegatedFilterOn > div { + display: none; +} +.eventNotDelegatedFilterOn > div.eventNotDelegated { + display: table-row; +} +.jsErrorFilterOn > div { + display: none; +} +.jsErrorFilterOn > div.jsError { display: table-row; } diff --git a/front/src/js/controllers/timelineCtrl.js b/front/src/js/controllers/timelineCtrl.js index 3887ff1..0dac9eb 100644 --- a/front/src/js/controllers/timelineCtrl.js +++ b/front/src/js/controllers/timelineCtrl.js @@ -4,6 +4,14 @@ timelineCtrl.controller('TimelineCtrl', ['$scope', '$rootScope', '$routeParams', $scope.runId = $routeParams.runId; $scope.Menu = Menu.setCurrentPage('timeline', $scope.runId); + $scope.warningsFilterOn = false; + $scope.warningsFilters = { + queryWithoutResults: true, + jQueryCallOnEmptyObject: true, + eventNotDelegated: true, + jsError: true + }; + function loadResults() { // Load result if needed if (!$rootScope.loadedResult || $rootScope.loadedResult.runId !== $routeParams.runId) { diff --git a/front/src/js/directives/offendersDirectives.js b/front/src/js/directives/offendersDirectives.js index df2b35c..0eb0693 100644 --- a/front/src/js/directives/offendersDirectives.js +++ b/front/src/js/directives/offendersDirectives.js @@ -766,10 +766,23 @@ element.append(getProfilerLineHTML(scope.index, scope.node)); element[0].id = 'line_' + scope.index; - if (scope.node.warning || scope.node.error) { + if (scope.node.warning) { element[0].classList.add('warning'); + + if (scope.node.queryWithoutResults) { + element[0].classList.add('queryWithoutResults'); + } + + if (scope.node.jQueryCallOnEmptyObject) { + element[0].classList.add('jQueryCallOnEmptyObject'); + } + + if (scope.node.eventNotDelegated) { + element[0].classList.add('eventNotDelegated'); + } } + // Bind click on the details icon var detailsIcon = element[0].querySelector('.details div'); if (detailsIcon) { diff --git a/front/src/less/timeline.less b/front/src/less/timeline.less index 1968752..ab9bd80 100644 --- a/front/src/less/timeline.less +++ b/front/src/less/timeline.less @@ -162,6 +162,11 @@ text-align: left; } +.subFilters { + margin-left: 3em; + font-size: 0.9em; +} + .table { display: table; width: 100%; @@ -346,10 +351,34 @@ color: #e74c3c; cursor: pointer; } -.warningsFilterOn { +.queryWithoutResultsFilterOn { > div { display: none; - &.warning { + &.queryWithoutResults { + display: table-row; + } + } +} +.jQueryCallOnEmptyObjectFilterOn { + > div { + display: none; + &.jQueryCallOnEmptyObject { + display: table-row; + } + } +} +.eventNotDelegatedFilterOn { + > div { + display: none; + &.eventNotDelegated { + display: table-row; + } + } +} +.jsErrorFilterOn { + > div { + display: none; + &.jsError { display: table-row; } } diff --git a/front/src/views/timeline.html b/front/src/views/timeline.html index 497340e..e0bc1e0 100644 --- a/front/src/views/timeline.html +++ b/front/src/views/timeline.html @@ -60,11 +60,30 @@

- - + + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ {{queryWithoutResultsFilterOn}}
-
+
Type
diff --git a/lib/tools/jsExecutionTransformer.js b/lib/tools/jsExecutionTransformer.js index 486cf4b..9beff21 100644 --- a/lib/tools/jsExecutionTransformer.js +++ b/lib/tools/jsExecutionTransformer.js @@ -15,9 +15,7 @@ var jsExecutionTransformer = function() { queriesWithoutResults: 0 }; - var offenders = { - - }; + var offenders = {}; var hasjQuery = (data.toolsResults.phantomas.metrics.jQueryVersionsLoaded > 0); if (hasjQuery) { @@ -53,11 +51,13 @@ var jsExecutionTransformer = function() { if (node.data.resultsNumber === 0) { metrics.queriesWithoutResults ++; + node.queryWithoutResults = true; node.warning = true; } if (contextLength === 0) { metrics.jQueryCallsOnEmptyObject ++; + node.jQueryCallOnEmptyObject = true; node.warning = true; }