[Code Style] Use prototypes in Scrolling List bundle

WTD-1482.
This commit is contained in:
Victor Woeltjen 2015-08-13 12:35:48 -07:00
parent 820c15d74c
commit 6302eee17e
5 changed files with 189 additions and 191 deletions

View File

@ -34,6 +34,7 @@ define(
* (typically, timestamps.) Used by the ScrollingListController. * (typically, timestamps.) Used by the ScrollingListController.
* *
* @memberof platform/features/scrolling * @memberof platform/features/scrolling
* @implements {platform/features/scrolling.ScrollingColumn}
* @constructor * @constructor
* @param domainMetadata an object with the machine- and human- * @param domainMetadata an object with the machine- and human-
* readable names for this domain (in `key` and `name` * readable names for this domain (in `key` and `name`
@ -42,30 +43,21 @@ define(
* formatting service, for making values human-readable. * formatting service, for making values human-readable.
*/ */
function DomainColumn(domainMetadata, telemetryFormatter) { function DomainColumn(domainMetadata, telemetryFormatter) {
this.domainMetadata = domainMetadata;
this.telemetryFormatter = telemetryFormatter;
}
DomainColumn.prototype.getTitle = function () {
return this.domainMetadata.name;
};
DomainColumn.prototype.getValue = function (domainObject, datum) {
return { return {
/** text: this.telemetryFormatter.formatDomainValue(
* Get the title to display in this column's header. datum[this.domainMetadata.key]
* @returns {string} the title to display
* @memberof platform/features/scrolling.DomainColumn#
*/
getTitle: function () {
return domainMetadata.name;
},
/**
* Get the text to display inside a row under this
* column.
* @returns {string} the text to display
* @memberof platform/features/scrolling.DomainColumn#
*/
getValue: function (domainObject, datum) {
return {
text: telemetryFormatter.formatDomainValue(
datum[domainMetadata.key]
) )
}; };
}
}; };
}
return DomainColumn; return DomainColumn;
} }

View File

@ -34,31 +34,21 @@ define(
* which exposed specific telemetry values. * which exposed specific telemetry values.
* *
* @memberof platform/features/scrolling * @memberof platform/features/scrolling
* @implements {platform/features/scrolling.ScrollingColumn}
* @constructor * @constructor
*/ */
function NameColumn() { function NameColumn() {
return { }
/**
* Get the title to display in this column's header. NameColumn.prototype.getTitle = function () {
* @returns {string} the title to display
* @memberof platform/features/scrolling.NameColumn#
*/
getTitle: function () {
return "Name"; return "Name";
}, };
/**
* Get the text to display inside a row under this NameColumn.prototype.getValue = function (domainObject) {
* column. This returns the domain object's name.
* @returns {string} the text to display
* @memberof platform/features/scrolling.NameColumn#
*/
getValue: function (domainObject) {
return { return {
text: domainObject.getModel().name text: domainObject.getModel().name
}; };
}
}; };
}
return NameColumn; return NameColumn;
} }

View File

@ -34,6 +34,7 @@ define(
* (typically, measurements.) Used by the ScrollingListController. * (typically, measurements.) Used by the ScrollingListController.
* *
* @memberof platform/features/scrolling * @memberof platform/features/scrolling
* @implements {platform/features/scrolling.ScrollingColumn}
* @constructor * @constructor
* @param rangeMetadata an object with the machine- and human- * @param rangeMetadata an object with the machine- and human-
* readable names for this range (in `key` and `name` * readable names for this range (in `key` and `name`
@ -42,34 +43,25 @@ define(
* formatting service, for making values human-readable. * formatting service, for making values human-readable.
*/ */
function RangeColumn(rangeMetadata, telemetryFormatter) { function RangeColumn(rangeMetadata, telemetryFormatter) {
return { this.rangeMetadata = rangeMetadata;
/** this.telemetryFormatter = telemetryFormatter;
* Get the title to display in this column's header. }
* @returns {string} the title to display
* @memberof platform/features/scrolling.RangeColumn# RangeColumn.prototype.getTitle = function () {
*/ return this.rangeMetadata.name;
getTitle: function () { };
return rangeMetadata.name;
}, RangeColumn.prototype.getValue = function (domainObject, datum) {
/** var range = this.rangeMetadata.key,
* Get the text to display inside a row under this
* column.
* @returns {string} the text to display
* @memberof platform/features/scrolling.RangeColumn#
*/
getValue: function (domainObject, datum) {
var range = rangeMetadata.key,
limit = domainObject.getCapability('limit'), limit = domainObject.getCapability('limit'),
value = datum[range], value = datum[range],
alarm = limit.evaluate(datum, range); alarm = limit.evaluate(datum, range);
return { return {
cssClass: alarm && alarm.cssClass, cssClass: alarm && alarm.cssClass,
text: telemetryFormatter.formatRangeValue(value) text: this.telemetryFormatter.formatRangeValue(value)
}; };
}
}; };
}
return RangeColumn; return RangeColumn;
} }

View File

@ -39,8 +39,6 @@ define(
* @constructor * @constructor
*/ */
function ScrollingListController($scope, formatter) { function ScrollingListController($scope, formatter) {
var populator;
// Get a set of populated, ready-to-display rows for the // Get a set of populated, ready-to-display rows for the
// latest data values. // latest data values.
@ -129,6 +127,31 @@ define(
$scope.$watch("telemetry.getMetadata()", setupColumns); $scope.$watch("telemetry.getMetadata()", setupColumns);
} }
/**
* A description of how to display a certain column of data in a
* Scrolling List view.
* @interface platform/features/scrolling.ScrollingColumn
* @private
*/
/**
* Get the title to display in this column's header.
* @returns {string} the title to display
* @method platform/features/scrolling.ScrollingColumn#getTitle
*/
/**
* Get the text to display inside a row under this
* column.
* @param {DomainObject} domainObject the domain object associated
* with this row
* @param {TelemetrySeries} series the telemetry data associated
* with this row
* @param {number} index the index of the telemetry datum associated
* with this row
* @returns {string} the text to display
* @method platform/features/scrolling.ScrollingColumn#getValue
*/
return ScrollingListController; return ScrollingListController;
} }
); );

View File

@ -35,6 +35,9 @@ define(
* @param {Column[]} columns the columns to be populated * @param {Column[]} columns the columns to be populated
*/ */
function ScrollingListPopulator(columns) { function ScrollingListPopulator(columns) {
this.columns = columns;
}
/** /**
* Look up the most recent values from a set of data objects. * Look up the most recent values from a set of data objects.
* Returns an array of objects in the order in which data * Returns an array of objects in the order in which data
@ -51,7 +54,8 @@ define(
* data objects; expected to be in the same order * data objects; expected to be in the same order
* as the domain objects provided at constructor * as the domain objects provided at constructor
* @param {number} count the number of rows to provide * @param {number} count the number of rows to provide
* @memberof platform/features/scrolling.ScrollingListPopulator# * @returns {Array} latest data values in display order
* @private
*/ */
function getLatestDataValues(datas, count) { function getLatestDataValues(datas, count) {
var latest = [], var latest = [],
@ -113,6 +117,32 @@ define(
return latest; return latest;
} }
/**
* Get the text which should appear in headers for the
* provided columns.
* @returns {string[]} column headers
*/
ScrollingListPopulator.prototype.getHeaders = function () {
return this.columns.map(function (column) {
return column.getTitle();
});
};
/**
* Get the contents of rows for the scrolling list view.
* @param {TelemetrySeries[]} datas the data sets
* @param {DomainObject[]} objects the domain objects which
* provided the data sets; these should match
* index-to-index with the `datas` argument
* @param {number} count the number of rows to populate
* @returns {string[][]} an array of rows, each of which
* is an array of values which should appear
* in that row
*/
ScrollingListPopulator.prototype.getRows = function (datas, objects, count) {
var values = getLatestDataValues(datas, count),
self = this;
// From a telemetry series, retrieve a single data point // From a telemetry series, retrieve a single data point
// containing all fields for domains/ranges // containing all fields for domains/ranges
function makeDatum(domainObject, series, index) { function makeDatum(domainObject, series, index) {
@ -133,33 +163,6 @@ define(
return result; return result;
} }
return {
/**
* Get the text which should appear in headers for the
* provided columns.
* @returns {string[]} column headers
* @memberof platform/features/scrolling.ScrollingListPopulator#
*/
getHeaders: function () {
return columns.map(function (column) {
return column.getTitle();
});
},
/**
* Get the contents of rows for the scrolling list view.
* @param {TelemetrySeries[]} datas the data sets
* @param {DomainObject[]} objects the domain objects which
* provided the data sets; these should match
* index-to-index with the `datas` argument
* @param {number} count the number of rows to populate
* @returns {string[][]} an array of rows, each of which
* is an array of values which should appear
* in that row
* @memberof platform/features/scrolling.ScrollingListPopulator#
*/
getRows: function (datas, objects, count) {
var values = getLatestDataValues(datas, count);
// Each value will become a row, which will contain // Each value will become a row, which will contain
// some value in each column (rendering by the // some value in each column (rendering by the
// column object itself) // column object itself)
@ -170,16 +173,14 @@ define(
value.pointIndex value.pointIndex
); );
return columns.map(function (column) { return self.columns.map(function (column) {
return column.getValue( return column.getValue(
objects[value.objectIndex], objects[value.objectIndex],
datum datum
); );
}); });
}); });
}
}; };
}
return ScrollingListPopulator; return ScrollingListPopulator;