From dae25b7123f60d803f9784a70e70ba131bba6079 Mon Sep 17 00:00:00 2001 From: Joe Fiorini Date: Fri, 5 Jun 2015 16:33:26 -0400 Subject: [PATCH] Move check to outer scope for great performance --- .../js/system-tracking/compare-facts.js | 5 ++ .../js/system-tracking/compare-facts/flat.js | 18 ++--- .../get-data-for-comparison.factory.js | 4 +- .../system-tracking.controller.js | 6 +- .../system-tracking.partial.html | 77 ++++++++++--------- 5 files changed, 56 insertions(+), 54 deletions(-) diff --git a/awx/ui/static/js/system-tracking/compare-facts.js b/awx/ui/static/js/system-tracking/compare-facts.js index 4941be51e3..0d5e77398f 100644 --- a/awx/ui/static/js/system-tracking/compare-facts.js +++ b/awx/ui/static/js/system-tracking/compare-facts.js @@ -20,6 +20,11 @@ export function compareFacts(module, facts) { return _(leftToRight) .concat(rightToLeft) .unique('displayKeyPath') + .thru(function(result) { + return { factData: result, + isNestedDisplay: _.isUndefined(module.factTemplate) + }; + }) .value(); } } diff --git a/awx/ui/static/js/system-tracking/compare-facts/flat.js b/awx/ui/static/js/system-tracking/compare-facts/flat.js index bb77c721d5..0bf6a1b66f 100644 --- a/awx/ui/static/js/system-tracking/compare-facts/flat.js +++ b/awx/ui/static/js/system-tracking/compare-facts/flat.js @@ -9,7 +9,7 @@ import stringFilters from 'tower/shared/string-filters/main'; var $injector = angular.injector(['ng', stringFilters.name]); var $interpolate = $injector.get('$interpolate'); -function parseFactTemplate(factTemplate, fact) { +function getFactTemplate(factTemplate, fact) { if (_.isFunction(factTemplate)) { return factTemplate(fact); } else { @@ -40,11 +40,11 @@ function slotFactValues(basisPosition, basisValue, comparatorValue) { export default function flatCompare(basisFacts, comparatorFacts, nameKey, compareKeys, factTemplate) { + return basisFacts.reduce(function(arr, basisFact) { var searcher = {}; searcher[nameKey] = basisFact[nameKey]; - var isNestedDisplay = false; var basisTemplate, comparatorTemplate, slottedValues, basisValue, comparatorValue; var matchingFact = _.where(comparatorFacts, searcher); @@ -54,26 +54,24 @@ export default if (!_.isUndefined(factTemplate)) { - basisTemplate = parseFactTemplate(factTemplate, basisFact); + basisTemplate = getFactTemplate(factTemplate, basisFact); basisValue = renderFactTemplate(basisTemplate, basisFact); slottedValues = slotFactValues(basisFacts.position, basisValue, 'absent'); diffs = { keyName: basisFact[nameKey], - isNestedDisplay: false, value1: slottedValues.left, value2: slottedValues.right }; } else { - isNestedDisplay = true; diffs = _.map(basisFact, function(value, key) { var slottedValues = slotFactValues(basisFacts.position, value, 'absent'); - return { keyName: key, + return { keyName: key, value1: slottedValues.left, value1IsAbsent: slottedValues.left === 'absent', value2: slottedValues.right, @@ -87,8 +85,8 @@ export default if (!_.isUndefined(factTemplate)) { - basisTemplate = parseFactTemplate(factTemplate, basisFact); - comparatorTemplate = parseFactTemplate(factTemplate, matchingFact); + basisTemplate = getFactTemplate(factTemplate, basisFact); + comparatorTemplate = getFactTemplate(factTemplate, matchingFact); basisValue = renderFactTemplate(basisTemplate, basisFact); comparatorValue = renderFactTemplate(comparatorTemplate, matchingFact); @@ -99,7 +97,6 @@ export default diffs = { keyName: basisFact[nameKey], - isNestedDisplay: false, value1: slottedValues.left, value2: slottedValues.right }; @@ -108,8 +105,6 @@ export default } else { - isNestedDisplay = true; - diffs = _(compareKeys) .map(function(key) { var slottedValues = slotFactValues(basisFacts.position, @@ -131,7 +126,6 @@ export default var descriptor = { displayKeyPath: basisFact[nameKey], - isNestedDisplay: isNestedDisplay, nestingLevel: 0, facts: diffs }; diff --git a/awx/ui/static/js/system-tracking/data-services/get-data-for-comparison.factory.js b/awx/ui/static/js/system-tracking/data-services/get-data-for-comparison.factory.js index 4f36f1a517..a45249d483 100644 --- a/awx/ui/static/js/system-tracking/data-services/get-data-for-comparison.factory.js +++ b/awx/ui/static/js/system-tracking/data-services/get-data-for-comparison.factory.js @@ -12,8 +12,6 @@ export default function(factScanDataService, getModuleOptions, resolveVersions, _) { return function(hostIds, moduleName, leftDate, rightDate) { - var moduleOptions; - if (hostIds.length === 1) { hostIds = hostIds.concat(hostIds[0]); } @@ -49,7 +47,7 @@ export default } }) .thenAll(function(hostFacts) { - return [moduleOptions, hostFacts]; + return hostFacts; }); }; } diff --git a/awx/ui/static/js/system-tracking/system-tracking.controller.js b/awx/ui/static/js/system-tracking/system-tracking.controller.js index 5e20368bfe..1ec6e9f069 100644 --- a/awx/ui/static/js/system-tracking/system-tracking.controller.js +++ b/awx/ui/static/js/system-tracking/system-tracking.controller.js @@ -62,8 +62,7 @@ function controller($rootScope, activeModule.name, leftRange, rightRange) - .then(function(factDataAndModules) { - var responses = factDataAndModules[1]; + .then(function(responses) { var data = _.pluck(responses, 'fact'); $scope.leftScanDate = moment(responses[0].timestamp); @@ -126,7 +125,8 @@ function controller($rootScope, // Clear out any errors from the previous run... $scope.error = null; - $scope.factData = info; + $scope.factData = info.factData; + $scope.isNestedDisplay = info.isNestedDisplay; return info; diff --git a/awx/ui/static/js/system-tracking/system-tracking.partial.html b/awx/ui/static/js/system-tracking/system-tracking.partial.html index 67e396d5b4..3ae18ccf53 100644 --- a/awx/ui/static/js/system-tracking/system-tracking.partial.html +++ b/awx/ui/static/js/system-tracking/system-tracking.partial.html @@ -54,52 +54,57 @@ {{rightScanDate|longDate}} -
-
+
+

{{group.facts.keyName}}

{{group.facts.value1}}

{{group.facts.value2}}

-
-

- {{group.displayKeyPath}} -

-

- {{group.displayKeyPath}} -

-

- {{group.displayKeyPath}} -

-
- {{group.displayKeyPath}} -
-
-
-
-
-

+

+
+ +
+ +
+

+ {{group.displayKeyPath}} +

+

+ {{group.displayKeyPath}} +

+

+ {{group.displayKeyPath}} +

+
+ {{group.displayKeyPath}} +
+
+
+
+
+

{{fact.keyName}} -

-

+

+

{{fact.value1}} -

-

+

+

{{fact.value2}} +

+
+
+
+

+ {{fact.keyName}} +

+

+ {{fact.value1}} +

+

+ {{fact.value2}}

-
-

- {{fact.keyName}} -

-

- {{fact.value1}} -

-

- {{fact.value2}} -

-
-