[Limits] Use datum for limits in scrolling list view

Utilize 'datum' API when displaying limits in a scrolling list
view, WTD-1223.
This commit is contained in:
Victor Woeltjen
2015-06-09 10:06:54 -07:00
parent 781a1a4be5
commit 51852e1322
2 changed files with 36 additions and 14 deletions

View File

@ -58,11 +58,10 @@ define(
// Set up columns based on telemetry metadata. This will // Set up columns based on telemetry metadata. This will
// include one column for each domain and range type, as // include one column for each domain and range type, as
// well as a column for the domain object name. // well as a column for the domain object name.
function setupColumns(telemetry) { function setupColumns(metadatas) {
var domainKeys = {}, var domainKeys = {},
rangeKeys = {}, rangeKeys = {},
columns = [], columns = [];
metadata;
// Add a domain to the set of columns, if a domain // Add a domain to the set of columns, if a domain
// with the same key has not yet been inclued. // with the same key has not yet been inclued.
@ -84,9 +83,9 @@ define(
} }
} }
// We cannot proceed if the telemetry controller // We cannot proceed if metadata is not available;
// is not available; clear all rows/columns. // clear all rows/columns.
if (!telemetry) { if (!Array.isArray(metadatas)) {
columns = []; columns = [];
$scope.rows = []; $scope.rows = [];
$scope.headers = []; $scope.headers = [];
@ -96,11 +95,10 @@ define(
columns = [ new NameColumn() ]; columns = [ new NameColumn() ];
// Add domain, range columns // Add domain, range columns
metadata = telemetry.getMetadata(); metadatas.forEach(function (metadata) {
(metadata || []).forEach(function (metadata) {
(metadata.domains || []).forEach(addDomain); (metadata.domains || []).forEach(addDomain);
}); });
(metadata || []).forEach(function (metadata) { metadatas.forEach(function (metadata) {
(metadata.ranges || []).forEach(addRange); (metadata.ranges || []).forEach(addRange);
}); });
@ -126,9 +124,9 @@ define(
} }
$scope.$on("telemetryUpdate", updateRows); $scope.$on("telemetryUpdate", updateRows);
$scope.$watch("telemetry", setupColumns); $scope.$watch("telemetry.getMetadata()", setupColumns);
} }
return ScrollingListController; return ScrollingListController;
} }
); );

View File

@ -111,6 +111,25 @@ define(
return latest; return latest;
} }
// From a telemetry series, retrieve a single data point
// containing all fields for domains/ranges
function makeDatum(domainObject, series, index) {
var telemetry = domainObject.getCapability('telemetry'),
metadata = telemetry ? telemetry.getMetadata() : {},
result = {};
(metadata.domains || []).forEach(function (domain) {
result[domain.key] =
series.getDomainValue(index, domain.key);
});
(metadata.ranges || []).forEach(function (range) {
result[range.key] =
series.getRangeValue(index, range.key);
});
return result;
}
return { return {
/** /**
@ -141,11 +160,16 @@ define(
// some value in each column (rendering by the // some value in each column (rendering by the
// column object itself) // column object itself)
return values.map(function (value) { return values.map(function (value) {
var datum = makeDatum(
objects[value.objectIndex],
datas[value.objectIndex],
value.pointIndex
);
return columns.map(function (column) { return columns.map(function (column) {
return column.getValue( return column.getValue(
objects[value.objectIndex], objects[value.objectIndex],
datas[value.objectIndex], datum
value.pointIndex
); );
}); });
}); });
@ -156,4 +180,4 @@ define(
return ScrollingListPopulator; return ScrollingListPopulator;
} }
); );