From b0d773325b79afbe48a8622ea9320f86cef9161a Mon Sep 17 00:00:00 2001 From: Joe Fiorini Date: Fri, 12 Jun 2015 09:38:53 -0400 Subject: [PATCH] [system_tracking] Refactor flat comparison logic --- .../js/system-tracking/compare-facts/flat.js | 79 ++++++++----------- .../compare-facts/flat-test.js | 4 +- 2 files changed, 35 insertions(+), 48 deletions(-) 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 887b8fd2ad..197abc4540 100644 --- a/awx/ui/static/js/system-tracking/compare-facts/flat.js +++ b/awx/ui/static/js/system-tracking/compare-facts/flat.js @@ -33,12 +33,17 @@ export default var matchingFact = _.where(comparatorFacts.facts, searcher); var diffs; - if (_.isEmpty(matchingFact)) { - if (!_.isUndefined(factTemplate)) { basisValue = factTemplate.render(basisFact); - slottedValues = slotFactValues(basisFacts.position, basisValue, 'absent'); + + if (_.isEmpty(matchingFact)) { + comparatorValue = 'absent'; + } else { + comparatorValue = factTemplate.render(matchingFact[0]); + } + + slottedValues = slotFactValues(basisFacts.position, basisValue, comparatorValue); diffs = { keyName: basisFact[nameKey], @@ -48,60 +53,40 @@ export default } else { - diffs = - _.map(basisFact, function(value, key) { - var slottedValues = slotFactValues(basisFacts.position, value, 'absent'); + if (_.isEmpty(matchingFact)) { + matchingFact = {}; + } else { + matchingFact = matchingFact[0]; + } - return { keyName: key, + diffs = + _(basisFact).map(function(value, key) { + var slottedValues = slotFactValues(basisFacts.position, value, matchingFact[key] || 'absent'); + var keyName; + + if (slottedValues.right !== 'absent') { + if(slottedValues.left === slottedValues.right) { + return; + } + + if (!_.include(compareKeys, key)) { + return; + } + keyName = basisFact[nameKey]; + } else { + keyName = key; + } + + return { keyName: keyName, value1: slottedValues.left, value1IsAbsent: slottedValues.left === 'absent', value2: slottedValues.right, value2IsAbsent: slottedValues.right === 'absent' }; - }); - } - } else { - - matchingFact = matchingFact[0]; - - if (!_.isUndefined(factTemplate)) { - - basisValue = factTemplate.render(basisFact); - comparatorValue = factTemplate.render(matchingFact); - - slottedValues = slotFactValues(basisFacts.position, basisValue, comparatorValue); - - if (basisValue !== comparatorValue) { - - diffs = - { keyName: basisFact[nameKey], - value1: slottedValues.left, - value2: slottedValues.right - }; - - } - - } else { - - diffs = _(compareKeys) - .map(function(key) { - var slottedValues = slotFactValues(basisFacts.position, - basisFact[key], - matchingFact[key]); - - if (slottedValues.left !== slottedValues.right) { - return { - keyName: basisFact[nameKey], - value1: slottedValues.left, - value2: slottedValues.right - }; - } }).compact() .value(); } - } - var descriptor = { displayKeyPath: basisFact[nameKey], nestingLevel: 0, diff --git a/awx/ui/tests/unit/system-tracking/compare-facts/flat-test.js b/awx/ui/tests/unit/system-tracking/compare-facts/flat-test.js index 6c829d33c1..1e5f47822b 100644 --- a/awx/ui/tests/unit/system-tracking/compare-facts/flat-test.js +++ b/awx/ui/tests/unit/system-tracking/compare-facts/flat-test.js @@ -54,7 +54,9 @@ describe('CompareFacts.Flat', function() { facts: [{ keyName: 'foo', value1: 'bar', - value2: 'baz' + value1IsAbsent: false, + value2: 'baz', + value2IsAbsent: false }] }]); });