[system_tracking] Display all facts for latest scan when no diffs

This commit is contained in:
Joe Fiorini 2015-07-02 16:02:07 -04:00
parent fef3d5d2b0
commit d41b8a363f
6 changed files with 96 additions and 13 deletions

View File

@ -41,7 +41,9 @@ export function compareFacts(module, facts) {
.unique('displayKeyPath')
.thru(function(result) {
return { factData: result,
isNestedDisplay: _.isPlainObject(renderOptions.factTemplate)
isNestedDisplay: _.isPlainObject(renderOptions.factTemplate),
leftData: facts[0].facts,
rightData: facts[1].facts
};
})
.value();

View File

@ -12,6 +12,7 @@ export default
leftDataNoScans: '=',
rightDataNoScans: '=',
isNestedDisplay: '=',
singleResultView: '=',
factData: '='
}
};

View File

@ -1,4 +1,7 @@
<section class="FactDataTable SystemTrackingContainer-main" ng-if="!error">
<div class="alert alert-info" ng-if="singleResultView">
The selected fact scans were identical for this module. Showing all facts from the latest selected scan instead.
</div>
<div class="FactDataTable-headingRow">
<h3 class="FactDataTable-column FactDataTableHeading">
<span class="FactDataTableHeading-label">
@ -10,7 +13,7 @@
<span class="FactDataTableHeading-host" ng-if="!leftDataNoScans">{{leftHostname}}</span>
<span class="FactDataTableHeading-date">{{leftScanDate|longDate}}</span>
</h3>
<h3 class="FactDataTable-column FactDataTableHeading">
<h3 class="FactDataTable-column FactDataTableHeading" ng-if="!singleResultView">
<span ng-if="rightDataNoScans">No scans for {{rightHostname}} on</span>
<span class="FactDataTableHeading-host" ng-if="!rightDataNoScans">{{rightHostname}}</span>
<span class="FactDataTableHeading-date">{{rightScanDate|longDate}}</span>
@ -25,7 +28,7 @@
{{value}}
</span>
</span>
<span class="FactDataTable-column FactDataTable-columnArray">
<span class="FactDataTable-column FactDataTable-columnArray" ng-if="!singleResultView">
<span class="FactDataTable-columnMember" ng-repeat="value in group.facts.value2">
{{value}}
</span>
@ -34,7 +37,7 @@
<div class="FactDataTable-row" ng-if="!group.containsValueArray">
<span class="FactDataTable-column">{{group.facts.keyName}}</span>
<span class="FactDataTable-column">{{group.facts.value1}}</span>
<span class="FactDataTable-column">{{group.facts.value2}}</span>
<span class="FactDataTable-column" ng-if="!singleResultView">{{group.facts.value2}}</span>
</div>
</div>
</div>

View File

@ -0,0 +1,13 @@
export function formatFactForDisplay(fact, renderOptions) {
var factTemplate = renderOptions.factTemplate;
var template = factTemplate;
// if (!renderOptions.supportsValueArray) {
// comparatorFact = comparatorFact[0];
// }
return template.render(fact);
}

View File

@ -6,6 +6,8 @@
import {searchDateRange} from './search-date-range';
import {compareFacts} from './compare-facts/main';
import {formatFactForDisplay} from './format-facts';
import FactTemplate from './compare-facts/fact-template';
function controller($rootScope,
$scope,
@ -75,6 +77,8 @@ function controller($rootScope,
$scope.leftDateWarning = false;
$scope.rightDateWarning = false;
$scope.singleFactOnly = false;
waitIndicator('start');
return getDataForComparison(
@ -173,17 +177,76 @@ function controller($rootScope,
$scope.error = null;
if (_.isEmpty(info.factData)) {
info = _.reject({
name: 'NoScanDifferences',
message: 'No differences in the scans on the dates you selected. Please try selecting different dates.',
dateValues:
{ leftDate: $scope.leftDate.clone(),
rightDate: $scope.rightDate.clone()
}
// info = _.reject({
// name: 'NoScanDifferences',
// message: 'No differences in the scans on the dates you selected. Please try selecting different dates.',
// dateValues:
// { leftDate: $scope.leftDate.clone(),
// rightDate: $scope.rightDate.clone()
// }
// });
$scope.singleFactOnly = true;
$scope.factData = info.leftData.map(function(fact) {
var keyNameMap = activeModule.keyNameMap;
var nameKey = activeModule.nameKey;
var renderOptions = _.merge({}, activeModule);
var isNestedDisplay = false;
var facts;
if (_.isObject(renderOptions.factTemplate) &&
_.isArray(renderOptions.compareKey)) {
isNestedDisplay = true;
var templates = _.mapValues(renderOptions.factTemplate, function(template, key) {
if (template === true) {
return { render: function(fact) {
return fact[key];
}
};
} else {
return new FactTemplate(template);
}
});
facts = _.map(templates, function(template, key) {
var keyName = key;
if (_.isObject(keyNameMap) && keyNameMap.hasOwnProperty(key)) {
keyName = keyNameMap[key];
}
renderOptions.factTemplate = template;
var formattedValue = formatFactForDisplay(fact, renderOptions);
return { keyName: keyName,
isNestedDisplay: true,
value1: formattedValue
};
});
} else {
renderOptions.factTemplate = new FactTemplate(renderOptions.factTemplate);
var formattedValue = formatFactForDisplay(fact, renderOptions);
isNestedDisplay = false;
facts = { keyName: fact[nameKey],
value1: formattedValue
};
}
$scope.isNestedDisplay = isNestedDisplay;
return { displayKeyPath: fact[renderOptions.nameKey],
nestingLevel: 0,
containsValueArray: false,
facts: facts
};
});
} else {
$scope.singleFactOnly = false;
$scope.factData = info.factData;
$scope.isNestedDisplay = info.isNestedDisplay;
}
$scope.factData = info.factData;
$scope.isNestedDisplay = info.isNestedDisplay;
return info;

View File

@ -87,6 +87,7 @@
left-data-no-scans="leftDataNoScans"
right-data-no-scans="rightDataNoScans"
is-nested-display="isNestedDisplay"
single-result-view="singleFactOnly"
fact-data="factData">
</fact-data-table>
</section>