diff --git a/main.js b/main.js index 452fe3e823..db0b3ed84e 100644 --- a/main.js +++ b/main.js @@ -70,12 +70,10 @@ define([ './platform/exporters/bundle', './platform/telemetry/bundle', './platform/features/clock/bundle', - './platform/features/events/bundle', './platform/features/imagery/bundle', './platform/features/layout/bundle', './platform/features/pages/bundle', './platform/features/plot/bundle', - './platform/features/scrolling/bundle', './platform/features/timeline/bundle', './platform/features/table/bundle', './platform/forms/bundle', diff --git a/platform/features/events/bundle.js b/platform/features/events/bundle.js deleted file mode 100644 index f494784eff..0000000000 --- a/platform/features/events/bundle.js +++ /dev/null @@ -1,83 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define*/ - -define([ - "./src/EventListController", - "./src/directives/MCTDataTable", - "./src/policies/MessagesViewPolicy", - "text!./res/templates/messages.html", - 'legacyRegistry' -], function ( - EventListController, - MCTDataTable, - MessagesViewPolicy, - messagesTemplate, - legacyRegistry -) { - "use strict"; - - legacyRegistry.register("platform/features/events", { - "name": "Event Messages", - "description": "List of time-ordered event messages", - "extensions": { - "views": [ - { - "key": "messages", - "name": "Messages", - "glyph": "5", - "description": "Scrolling list of messages.", - "template": messagesTemplate, - "needs": [ - "telemetry" - ], - "delegation": true - } - ], - "controllers": [ - { - "key": "EventListController", - "implementation": EventListController, - "depends": [ - "$scope", - "telemetryFormatter" - ] - } - ], - "directives": [ - { - "key": "mctDataTable", - "implementation": MCTDataTable, - "depends": [ - "$window" - ] - } - ], - "policies": [ - { - "category": "view", - "implementation": MessagesViewPolicy - } - ] - } - }); -}); diff --git a/platform/features/events/res/templates/mct-data-table.html b/platform/features/events/res/templates/mct-data-table.html deleted file mode 100644 index 5b8dd786bc..0000000000 --- a/platform/features/events/res/templates/mct-data-table.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - -
- {{header}} -
- {{cell}} -
\ No newline at end of file diff --git a/platform/features/events/res/templates/messages.html b/platform/features/events/res/templates/messages.html deleted file mode 100644 index 82db5d0f9c..0000000000 --- a/platform/features/events/res/templates/messages.html +++ /dev/null @@ -1,29 +0,0 @@ - -
-
- -
-
- - diff --git a/platform/features/events/src/DomainColumn.js b/platform/features/events/src/DomainColumn.js deleted file mode 100644 index 5ea23fa804..0000000000 --- a/platform/features/events/src/DomainColumn.js +++ /dev/null @@ -1,63 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,moment*/ - -/** - * Module defining DomainColumn. Created by vwoeltje on 11/18/14. - */ -define( - [], - function () { - "use strict"; - - /** - * A column which will report telemetry domain values - * (typically, timestamps.) Used by the ScrollingListController. - * - * @memberof platform/features/events - * @constructor - * @implements {platform/features/events.EventsColumn} - * @param domainMetadata an object with the machine- and human- - * readable names for this domain (in `key` and `name` - * fields, respectively.) - * @param {TelemetryFormatter} telemetryFormatter the telemetry - * formatting service, for making values human-readable. - */ - function DomainColumn(domainMetadata, telemetryFormatter) { - this.domainMetadata = domainMetadata; - this.telemetryFormatter = telemetryFormatter; - } - - DomainColumn.prototype.getTitle = function () { - return this.domainMetadata.name; - }; - - DomainColumn.prototype.getValue = function (domainObject, data, index) { - var domainKey = this.domainMetadata.key; - return this.telemetryFormatter.formatDomainValue( - data.getDomainValue(index, domainKey) - ); - }; - - return DomainColumn; - } -); diff --git a/platform/features/events/src/EventListController.js b/platform/features/events/src/EventListController.js deleted file mode 100644 index dbb76712bd..0000000000 --- a/platform/features/events/src/EventListController.js +++ /dev/null @@ -1,164 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define*/ - -/* - * Module defining EventListController. - * Created by chacskaylo on 06/18/2015. - * Modified by shale on 06/23/2015. - */ - -/** - * This bundle implements the "Events" view of string telemetry. - * @namespace platform/features/events - */ -define( - ["./DomainColumn", "./RangeColumn", "./EventListPopulator"], - function (DomainColumn, RangeColumn, EventListPopulator) { - "use strict"; - - var ROW_COUNT = 100; - - /** - * The EventListController is responsible for populating - * the contents of the event list view. - * @memberof platform/features/events - * @constructor - */ - function EventListController($scope, formatter) { - var populator; - - // Get a set of populated, ready-to-display rows for the - // latest data values. - function getRows(telemetry) { - var datas = telemetry.getResponse(), - objects = telemetry.getTelemetryObjects(); - - return populator.getRows(datas, objects, ROW_COUNT); - } - - // Update the contents - function updateRows() { - var telemetry = $scope.telemetry; - $scope.rows = telemetry ? getRows(telemetry) : []; - } - - // Set up columns based on telemetry metadata. This will - // include one column for each domain and range type, as - // well as a column for the domain object name. - function setupColumns(telemetry) { - var domainKeys = {}, - rangeKeys = {}, - columns = [], - metadata; - - // Add a domain to the set of columns, if a domain - // with the same key has not yet been inclued. - function addDomain(domain) { - var key = domain.key; - if (key && !domainKeys[key]) { - domainKeys[key] = true; - columns.push(new DomainColumn(domain, formatter)); - } - } - - // Add a range col to the set of columns, if a range - // with the same key has not yet been included. - function addRange(range) { - var key = range.key; - if (key && !rangeKeys[key]) { - rangeKeys[key] = true; - columns.push(new RangeColumn(range, formatter)); - } - } - - // We cannot proceed if the telemetry controller - // is not available; clear all rows/columns. - if (!telemetry) { - columns = []; - $scope.rows = []; - $scope.headers = []; - return; - } - - // Add domain, range, event msg columns - metadata = telemetry.getMetadata(); - (metadata || []).forEach(function (metadata) { - (metadata.domains || []).forEach(addDomain); - }); - (metadata || []).forEach(function (metadata) { - (metadata.ranges || []).forEach(addRange); - }); - - // Add default domain and range columns if none - // were described in metadata. - if (Object.keys(domainKeys).length < 1) { - columns.push(new DomainColumn({name: "Time"}, formatter)); - } - if (Object.keys(rangeKeys).length < 1) { - columns.push(new RangeColumn({name: "Message"}, formatter)); - } - - // We have all columns now; use them to initializer - // the populator, which will use them to generate - // actual rows and headers. - populator = new EventListPopulator(columns); - - // Initialize headers - $scope.headers = populator.getHeaders(); - - // Fill in the contents of the rows. - updateRows(); - } - - $scope.$on("telemetryUpdate", updateRows); - $scope.$watch("telemetry", setupColumns); - } - - return EventListController; - - /** - * A description of how to display a certain column of data in an - * Events view. - * @interface platform/features/events.EventColumn - * @private - */ - /** - * Get the title to display in this column's header. - * @returns {string} the title to display - * @method platform/features/events.EventColumn#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/events.EventColumn#getValue - */ - } -); - diff --git a/platform/features/events/src/EventListPopulator.js b/platform/features/events/src/EventListPopulator.js deleted file mode 100644 index fca5bea74d..0000000000 --- a/platform/features/events/src/EventListPopulator.js +++ /dev/null @@ -1,165 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define*/ - -define( - [], - function () { - "use strict"; - - /** - * The EventListPopulator is responsible for filling in the - * values which should appear within columns of a event list - * view, based on received telemetry data. - * @constructor - * @memberof platform/features/events - * @param {Column[]} columns the columns to be populated - */ - function EventListPopulator(columns) { - this.columns = columns; - } - - /* - * Look up the most recent values from a set of data objects. - * Returns an array of objects in the order in which data - * should be displayed; each element is an object with - * two properties: - * - * * objectIndex: The index of the domain object associated - * with the data point to be displayed in that - * row. - * * pointIndex: The index of the data point itself, within - * its data set. - * - * @param {Array} datas an array of the most recent - * data objects; expected to be in the same order - * as the domain objects provided at constructor - * @param {number} count the number of rows to provide - */ - function getLatestDataValues(datas, count) { - var latest = [], - candidate, - candidateTime, - used = datas.map(function () { return 0; }); - - // This algorithm is O(nk) for n rows and k telemetry elements; - // one O(k) linear search for a max is made for each of n rows. - // This could be done in O(n lg k + k lg k), using a priority - // queue (where priority is max-finding) containing k initial - // values. For n rows, pop the max from the queue and replenish - // the queue with a value from the data at the same - // objectIndex, if available. - // But k is small, so this might not give an observable - // improvement in performance. - - // Find the most recent unused data point (this will be used - // in a loop to find and the N most recent data points) - function findCandidate(data, i) { - var nextTime, - pointCount = data.getPointCount(), - pointIndex = pointCount - used[i] - 1; - if (data && pointIndex >= 0) { - nextTime = data.getDomainValue(pointIndex); - if (nextTime > candidateTime) { - candidateTime = nextTime; - candidate = { - objectIndex: i, - pointIndex: pointIndex - }; - } - } - } - - // Assemble a list of the most recent data points - while (latest.length < count) { - // Reset variables pre-search - candidateTime = Number.NEGATIVE_INFINITY; - candidate = undefined; - - // Linear search for most recent - datas.forEach(findCandidate); - - if (candidate) { - // Record this data point - it is the most recent - latest.push(candidate); - - // Track the data points used so we can look farther back - // in the data set on the next iteration - used[candidate.objectIndex] = used[candidate.objectIndex] + 1; - } else { - // Ran out of candidates; not enough data points - // available to fill all rows. - break; - } - } - - return latest; - } - - /** - * Get the text which should appear in headers for the - * provided columns. - * @memberof platform/features/events.EventListPopulator - * @returns {string[]} column headers - */ - EventListPopulator.prototype.getHeaders = function () { - return this.columns.map(function (column) { - return column.getTitle(); - }); - }; - - /** - * Get the contents of rows for the event 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 - * @memberof platform/features/events.EventListPopulator - * @returns {string[][]} an array of rows, each of which - * is an array of values which should appear - * in that row - */ - EventListPopulator.prototype.getRows = function (datas, objects, count) { - var values = getLatestDataValues(datas, count), - columns = this.columns; - - // Each value will become a row, which will contain - // some value in each column (rendering by the - // column object itself) - // Additionally, we want to display the rows in reverse - // order. (i.e. from the top to the bottom of the page) - return values.map(function (value) { - return columns.map(function (column) { - return column.getValue( - objects[value.objectIndex], - datas[value.objectIndex], - value.pointIndex - ); - }); - }).reverse(); - }; - - return EventListPopulator; - - } -); diff --git a/platform/features/events/src/RangeColumn.js b/platform/features/events/src/RangeColumn.js deleted file mode 100644 index f31e1d9550..0000000000 --- a/platform/features/events/src/RangeColumn.js +++ /dev/null @@ -1,62 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,Promise*/ - -/** - * Module defining DomainColumn. Created by vwoeltje on 11/18/14. - */ -define( - [], - function () { - "use strict"; - - /** - * A column which will report telemetry range values - * (typically, measurements.) Used by the ScrollingListController. - * - * @memberof platform/features/events - * @constructor - * @implements {platform/features/events.EventsColumn} - * @param rangeMetadata an object with the machine- and human- - * readable names for this range (in `key` and `name` - * fields, respectively.) - * @param {TelemetryFormatter} telemetryFormatter the telemetry - * formatting service, for making values human-readable. - */ - function RangeColumn(rangeMetadata, telemetryFormatter) { - this.rangeMetadata = rangeMetadata; - this.telemetryFormatter = telemetryFormatter; - } - - RangeColumn.prototype.getTitle = function () { - return this.rangeMetadata.name; - }; - RangeColumn.prototype.getValue = function (domainObject, data, index) { - var rangeKey = this.rangeMetadata.key; - return this.telemetryFormatter.formatRangeValue( - data.getRangeValue(index, rangeKey) - ); - }; - - return RangeColumn; - } -); diff --git a/platform/features/events/src/directives/MCTDataTable.js b/platform/features/events/src/directives/MCTDataTable.js deleted file mode 100644 index 0ea0946fe8..0000000000 --- a/platform/features/events/src/directives/MCTDataTable.js +++ /dev/null @@ -1,74 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,Promise*/ - -/** - * Module defining MCTDataTable. Created by shale on 06/22/2015. - */ -define( - ['text!../../res/templates/mct-data-table.html'], - function (dataTableTemplate) { - "use strict"; - - function MCTDataTable($window) { - return { - restrict: "E", - template: dataTableTemplate, - scope: { - headers: "=", - rows: "=", - ascendingScroll: "=" - }, - link: function ($scope, $element) { - var currentHeight, - previousHeight, - scrollParent; - - // If the scroll is set to ascending, we want to - // check when elements are added to the table, and move the scroll - // bar accordingly. - // (When viewing at the bottom of the page, the scroll bar will - // stay at the bottom despite additions to the table) - if ($scope.ascendingScroll) { - $scope.$watch("rows", function () { - // Wait until the page as been repainted (otherwise the - // height will always be zero) - $window.requestAnimationFrame(function () { - previousHeight = currentHeight; - // The height of the table body - currentHeight = $element[0].firstElementChild.firstElementChild.nextElementSibling.clientHeight; - - // One of the parents is a div that has vscroll - scrollParent = $element[0].parentElement.parentElement.parentElement.parentElement.parentElement; - - // Move the scrollbar down the amount that the height has changed - scrollParent.scrollTop = scrollParent.scrollTop + (currentHeight - previousHeight); - }); - }); - } - } - }; - } - - return MCTDataTable; - } -); diff --git a/platform/features/events/src/policies/MessagesViewPolicy.js b/platform/features/events/src/policies/MessagesViewPolicy.js deleted file mode 100644 index 712992c0a2..0000000000 --- a/platform/features/events/src/policies/MessagesViewPolicy.js +++ /dev/null @@ -1,67 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define*/ - -/** - * Module defining MessagesViewPolicy. Created by shale on 06/24/2015. - */ -define( - [], - function () { - "use strict"; - - /** - * Policy controlling when the Messages view should be avaliable. - * @memberof platform/features/events - * @constructor - * @implements {Policy.} - */ - function MessagesViewPolicy() {} - - function hasStringTelemetry(domainObject) { - var telemetry = domainObject && - domainObject.getCapability('telemetry'), - metadata = telemetry ? telemetry.getMetadata() : {}, - ranges = metadata.ranges || []; - - return ranges.some(function (range) { - return range.format === 'string'; - }); - } - - MessagesViewPolicy.prototype.allow = function (view, domainObject) { - // This policy only applies for the Messages view - if (view.key === 'messages') { - // The Messages view is allowed only if the domain - // object has string telemetry - if (!hasStringTelemetry(domainObject)) { - return false; - } - } - - // Like all policies, allow by default. - return true; - }; - - return MessagesViewPolicy; - } -); diff --git a/platform/features/events/test/DomainColumnSpec.js b/platform/features/events/test/DomainColumnSpec.js deleted file mode 100644 index 29c896cd5b..0000000000 --- a/platform/features/events/test/DomainColumnSpec.js +++ /dev/null @@ -1,84 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ - -/** - * EventSpec. Created by vwoeltje on 11/6/14. Modified by shale on 06/23/2015. - */ -define( - ["../src/DomainColumn"], - function (DomainColumn) { - "use strict"; - - var TEST_DOMAIN_VALUE = "some formatted domain value"; - - describe("An event list domain column", function () { - var mockDataSet, - testMetadata, - mockFormatter, - column; - - beforeEach(function () { - mockDataSet = jasmine.createSpyObj( - "data", - [ "getDomainValue" ] - ); - mockFormatter = jasmine.createSpyObj( - "formatter", - [ "formatDomainValue", "formatRangeValue" ] - ); - testMetadata = { - key: "testKey", - name: "Test Name" - }; - mockFormatter.formatDomainValue.andReturn(TEST_DOMAIN_VALUE); - - column = new DomainColumn(testMetadata, mockFormatter); - }); - - it("reports a column header from domain metadata", function () { - expect(column.getTitle()).toEqual("Test Name"); - }); - - it("looks up data from a data set", function () { - column.getValue(undefined, mockDataSet, 42); - expect(mockDataSet.getDomainValue) - .toHaveBeenCalledWith(42, "testKey"); - }); - - it("formats domain values as time", function () { - mockDataSet.getDomainValue.andReturn(402513731000); - - // Should have just given the value the formatter gave - expect(column.getValue(undefined, mockDataSet, 42)) - .toEqual(TEST_DOMAIN_VALUE); - - // Make sure that service interactions were as expected - expect(mockFormatter.formatDomainValue) - .toHaveBeenCalledWith(402513731000); - expect(mockFormatter.formatRangeValue) - .not.toHaveBeenCalled(); - }); - - }); - } -); \ No newline at end of file diff --git a/platform/features/events/test/EventListControllerSpec.js b/platform/features/events/test/EventListControllerSpec.js deleted file mode 100644 index 63a762e4d4..0000000000 --- a/platform/features/events/test/EventListControllerSpec.js +++ /dev/null @@ -1,110 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ - -/** - * EventSpec. Created by shale on 06/24/2015. - */ -define( - ["../src/EventListController"], - function (EventListController) { - "use strict"; - - describe("The event list controller", function () { - var mockScope, - mockTelemetry, - testMetadata, - controller; - - beforeEach(function () { - mockScope = jasmine.createSpyObj( - "$scope", - [ "$on", "$watch" ] - ); - mockTelemetry = jasmine.createSpyObj( - "telemetryController", - [ "getResponse", "getMetadata", "getTelemetryObjects" ] - ); - testMetadata = [ - { - domains: [ - { key: "d0", name: "D0" }, - { key: "d1", name: "D1" } - ], - ranges: [ - { key: "r0", name: "R0" }, - { key: "r1", name: "R1" } - ] - }, - { - domains: [ - { key: "d0", name: "D0" }, - { key: "d2", name: "D2" } - ], - ranges: [ - { key: "r0", name: "R0" } - ] - } - ]; - mockTelemetry.getMetadata.andReturn(testMetadata); - mockTelemetry.getResponse.andReturn([]); - mockTelemetry.getTelemetryObjects.andReturn([]); - mockScope.telemetry = mockTelemetry; - controller = new EventListController(mockScope); - }); - - it("listens for telemetry data updates", function () { - expect(mockScope.$on).toHaveBeenCalledWith( - "telemetryUpdate", - jasmine.any(Function) - ); - }); - - it("watches for telemetry controller changes", function () { - expect(mockScope.$watch).toHaveBeenCalledWith( - "telemetry", - jasmine.any(Function) - ); - }); - - it("provides a column for each unique domain and range", function () { - // Should have five columns based on metadata above, - // (d0, d1, d2, r0, r1) - mockScope.$watch.mostRecentCall.args[1](mockTelemetry); - expect(mockScope.headers).toEqual(["D0", "D1", "D2", "R0", "R1"]); - }); - - it("does not throw if telemetry controller is undefined", function () { - // Just a general robustness check - mockScope.telemetry = undefined; - expect(mockScope.$watch.mostRecentCall.args[1]) - .not.toThrow(); - }); - - it("provides default columns if domain/range metadata is unavailable", function () { - mockTelemetry.getMetadata.andReturn([]); - mockScope.$watch.mostRecentCall.args[1](mockTelemetry); - expect(mockScope.headers).toEqual(["Time", "Message"]); - }); - }); - } -); \ No newline at end of file diff --git a/platform/features/events/test/EventListPopulatorSpec.js b/platform/features/events/test/EventListPopulatorSpec.js deleted file mode 100644 index 7937714fec..0000000000 --- a/platform/features/events/test/EventListPopulatorSpec.js +++ /dev/null @@ -1,103 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ - -/** - * EventSpec. Created by shale on 06/24/2015. - */ -define( - ["../src/EventListPopulator"], - function (EventListPopulator) { - "use strict"; - - describe("The event list populator", function () { - var mockColumns, - mockDatas, - mockDomainObjects, - populator; - - function makeMockColumn(name, index) { - var mockColumn = jasmine.createSpyObj( - "column" + index, - [ "getTitle", "getValue" ] - ); - mockColumn.getTitle.andReturn(name); - mockColumn.getValue.andCallFake(function (obj, data, i) { - return data.getDomainValue(i); - }); - return mockColumn; - } - - function makeMockData(bias, index) { - var mockData = jasmine.createSpyObj( - "data" + index, - [ "getDomainValue", "getPointCount" ] - ); - mockData.getPointCount.andReturn(1000); - mockData.getDomainValue.andCallFake(function (i) { - return i + bias; - }); - return mockData; - } - - function makeMockDomainObject(name, index) { - var mockDomainObject = jasmine.createSpyObj( - "domainObject" + index, - [ "getId", "getModel" ] - ); - return mockDomainObject; - } - - beforeEach(function () { - mockColumns = ["A", "B", "C", "D"].map(makeMockColumn); - mockDatas = [ 10, 0, 3 ].map(makeMockData); - mockDomainObjects = ["A", "B", "C"].map(makeMockDomainObject); - populator = new EventListPopulator(mockColumns); - }); - - it("returns column headers", function () { - expect(populator.getHeaders()).toEqual(["A", "B", "C", "D"]); - }); - - it("provides rows on request, with all columns in each row", function () { - var rows = populator.getRows(mockDatas, mockDomainObjects, 84); - expect(rows.length).toEqual(84); - rows.forEach(function (row) { - expect(row.length).toEqual(4); // number of columns - }); - }); - - it("returns rows in most-recent-last order", function () { - var rows = populator.getRows(mockDatas, mockDomainObjects, 84), - previous = Number.NEGATIVE_INFINITY; - - // Should always be most-recent-last - rows.forEach(function (row) { - expect(row[0]).not.toBeLessThan(previous); - previous = row[0]; - }); - - }); - - }); - } -); \ No newline at end of file diff --git a/platform/features/events/test/RangeColumnSpec.js b/platform/features/events/test/RangeColumnSpec.js deleted file mode 100644 index 99c5ceb6f4..0000000000 --- a/platform/features/events/test/RangeColumnSpec.js +++ /dev/null @@ -1,81 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ - -/** - * EventSpec. Created by vwoeltje on 11/6/14. Modified by shale on 06/23/2015. - */ -define( - ["../src/RangeColumn"], - function (RangeColumn) { - "use strict"; - - var TEST_RANGE_VALUE = "some formatted range value"; - - describe("An event list range column", function () { - var mockDataSet, - testMetadata, - mockFormatter, - column; - - beforeEach(function () { - mockDataSet = jasmine.createSpyObj( - "data", - [ "getRangeValue" ] - ); - mockFormatter = jasmine.createSpyObj( - "formatter", - [ "formatDomainValue", "formatRangeValue" ] - ); - testMetadata = { - key: "testKey", - name: "Test Name" - }; - mockFormatter.formatRangeValue.andReturn(TEST_RANGE_VALUE); - - column = new RangeColumn(testMetadata, mockFormatter); - }); - - it("reports a column header from range metadata", function () { - expect(column.getTitle()).toEqual("Test Name"); - }); - - it("looks up data from a data set", function () { - column.getValue(undefined, mockDataSet, 42); - expect(mockDataSet.getRangeValue) - .toHaveBeenCalledWith(42, "testKey"); - }); - - it("formats range values as time", function () { - mockDataSet.getRangeValue.andReturn(123.45678); - expect(column.getValue(undefined, mockDataSet, 42)) - .toEqual(TEST_RANGE_VALUE); - - // Make sure that service interactions were as expected - expect(mockFormatter.formatRangeValue) - .toHaveBeenCalledWith(123.45678); - expect(mockFormatter.formatDomainValue) - .not.toHaveBeenCalled(); - }); - }); - } -); \ No newline at end of file diff --git a/platform/features/events/test/policies/MessagesViewPolicySpec.js b/platform/features/events/test/policies/MessagesViewPolicySpec.js deleted file mode 100644 index c803cf91ed..0000000000 --- a/platform/features/events/test/policies/MessagesViewPolicySpec.js +++ /dev/null @@ -1,81 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,jasmine*/ - -/** - * EventSpec. Created by shale on 06/24/2015. - */ -define( - ["../../src/policies/MessagesViewPolicy"], - function (MessagesViewPolicy) { - "use strict"; - - describe("The messages view policy", function () { - var mockDomainObject, - mockTelemetry, - telemetryType, - testType, - testView, - testMetadata, - policy; - - beforeEach(function () { - - testView = { key: "string" }; - testMetadata = {}; - - mockDomainObject = jasmine.createSpyObj( - 'domainObject', - ['getModel', 'getCapability'] - ); - mockTelemetry = jasmine.createSpyObj( - 'telemetry', - ['getMetadata'] - ); - - mockDomainObject.getModel.andCallFake(function (c) { - return {type: testType}; - }); - mockDomainObject.getCapability.andCallFake(function (c) { - return c === 'telemetry' ? mockTelemetry : undefined; - }); - mockTelemetry.getMetadata.andReturn(testMetadata); - - policy = new MessagesViewPolicy(); - }); - - it("disallows the message view for objects without string telemetry", function () { - testMetadata.ranges = [ { format: 'notString' } ]; - expect(policy.allow({ key: 'messages' }, mockDomainObject)).toBeFalsy(); - }); - - it("allows the message view for objects with string telemetry", function () { - testMetadata.ranges = [ { format: 'string' } ]; - expect(policy.allow({ key: 'messages' }, mockDomainObject)).toBeTruthy(); - }); - - it("returns true when the current view is not the Messages view", function () { - expect(policy.allow({ key: 'notMessages' }, mockDomainObject)).toBeTruthy(); - }); - }); - } -); \ No newline at end of file diff --git a/platform/features/rtevents/bundle.js b/platform/features/rtevents/bundle.js deleted file mode 100644 index 25142d7dc6..0000000000 --- a/platform/features/rtevents/bundle.js +++ /dev/null @@ -1,84 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define*/ - -define([ - "./src/RTEventListController", - "./src/directives/MCTRTDataTable", - "./src/policies/RTMessagesViewPolicy", - "text!./res/templates/rtmessages.html", - 'legacyRegistry' -], function ( - RTEventListController, - MCTRTDataTable, - RTMessagesViewPolicy, - rtmessagesTemplate, - legacyRegistry -) { - "use strict"; - - legacyRegistry.register("platform/features/rtevents", { - "name": "Event Messages", - "description": "List of time-ordered event messages", - "extensions": { - "views": [ - { - "key": "rtmessages", - "name": "RT Messages", - "glyph": "5", - "description": "Scrolling list of real time messages.", - "template": rtmessagesTemplate, - "needs": [ - "telemetry" - ], - "delegation": true - } - ], - "controllers": [ - { - "key": "RTEventListController", - "implementation": RTEventListController, - "depends": [ - "$scope", - "telemetryHandler", - "telemetryFormatter" - ] - } - ], - "directives": [ - { - "key": "mctRtDataTable", - "implementation": MCTRTDataTable, - "depends": [ - "$window" - ] - } - ], - "policies": [ - { - "category": "view", - "implementation": RTMessagesViewPolicy - } - ] - } - }); -}); diff --git a/platform/features/rtevents/res/templates/mct-rt-data-table.html b/platform/features/rtevents/res/templates/mct-rt-data-table.html deleted file mode 100644 index 5b8dd786bc..0000000000 --- a/platform/features/rtevents/res/templates/mct-rt-data-table.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - -
- {{header}} -
- {{cell}} -
\ No newline at end of file diff --git a/platform/features/rtevents/res/templates/rtmessages.html b/platform/features/rtevents/res/templates/rtmessages.html deleted file mode 100644 index f17a44fe8c..0000000000 --- a/platform/features/rtevents/res/templates/rtmessages.html +++ /dev/null @@ -1,29 +0,0 @@ - -
-
- -
-
- - diff --git a/platform/features/rtevents/src/DomainColumn.js b/platform/features/rtevents/src/DomainColumn.js deleted file mode 100644 index ea2e039634..0000000000 --- a/platform/features/rtevents/src/DomainColumn.js +++ /dev/null @@ -1,75 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,moment*/ - -/** - * Module defining DomainColumn. Created by vwoeltje on 11/18/14. - */ -define( - [], - function () { - "use strict"; - - /** - * A column which will report telemetry domain values - * (typically, timestamps.) Used by the ScrollingListController. - * - * @memberof platform/features/rtevents - * @constructor - * @param domainMetadata an object with the machine- and human- - * readable names for this domain (in `key` and `name` - * fields, respectively.) - * @param {TelemetryFormatter} telemetryFormatter the telemetry - * formatting service, for making values human-readable. - */ - function DomainColumn(telemetryFormatter) { - return { - /** - * Get the title to display in this column's header. - * @returns {string} the title to display - * @memberof platform/features/rtevents.DomainColumn# - */ - getTitle: function () { - // At the moment there does not appear to be a way to get the - // column's title through metadata for real time telemetry - return "Time"; - }, - /** - * Get the text to display inside a row under this - * column. - * @returns {string} the text to display - * @memberof platform/features/rtevents.DomainColumn# - */ - getValue: function (domainObject, handle) { - return { - text: telemetryFormatter.formatDomainValue( - handle.getDomainValue(domainObject) - ) - }; - } - }; - } - - return DomainColumn; - } -); - diff --git a/platform/features/rtevents/src/RTEventListController.js b/platform/features/rtevents/src/RTEventListController.js deleted file mode 100644 index 93441f2635..0000000000 --- a/platform/features/rtevents/src/RTEventListController.js +++ /dev/null @@ -1,140 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define*/ - -/** - * Module defining RTEventListController. - * Created by shale on 06/25/2014. Based on RT Scrolling lists. - */ -define( - ["./DomainColumn", "./RangeColumn"], - function (DomainColumn, RangeColumn) { - "use strict"; - - var ROW_COUNT = 100; - - /** - * The RTEventListController is responsible for populating - * the contents of the messages view. - * @memberof platform/features/rtevents - * @constructor - */ - function RTEventListController($scope, telemetryHandler, telemetryFormatter) { - var handle, - lastUpdated = {}, - lastIds = [], - columns = [], - headers = [], - rows = []; - - function getTelemetryObjects() { - //console.log("handle.getTelemetryObjects() ", handle.getTelemetryObjects()); - return handle ? handle.getTelemetryObjects() : []; - } - - function idsChanged(telemetryObjects) { - function mismatch(id, index) { - return id !== telemetryObjects[index].getId(); - } - - return lastIds.length !== telemetryObjects.length || - lastIds.some(mismatch); - } - - function setupColumns(telemetryObjects) { - var id = $scope.domainObject && $scope.domainObject.getId(), - firstId = - telemetryObjects[0] && telemetryObjects[0].getId(); - - columns = []; - - columns.push(new DomainColumn(telemetryFormatter)); - columns.push(new RangeColumn()); - - headers = columns.map(function (column) { - return column.getTitle(); - }); - } - - function updateObjects(telemetryObjects) { - if (idsChanged(telemetryObjects)) { - setupColumns(telemetryObjects); - lastIds = telemetryObjects.map(function (telemetryObject) { - return telemetryObject.getId(); - }); - } - } - - function addRow(telemetryObject) { - var id = telemetryObject.getId(), - domainValue = handle.getDomainValue(telemetryObject); - if (lastUpdated[id] !== domainValue && - domainValue !== undefined) { - // Instead of unshift (scrolling), use push (messages) - rows.push(columns.map(function (column) { - return column.getValue(telemetryObject, handle).text; - })); - // Remove first rows when adding past the max rows limit - rows.splice(0, rows.length - ROW_COUNT); - lastUpdated[id] = domainValue; - } - } - - function updateValues() { - getTelemetryObjects().forEach(addRow); - } - - function releaseSubscription() { - if (handle) { - handle.unsubscribe(); - } - } - - function makeSubscription(domainObject) { - releaseSubscription(); - rows = []; - handle = telemetryHandler.handle( - domainObject, - updateValues, - true - ); - } - - $scope.$on("$destroy", releaseSubscription); - - $scope.$watch("domainObject", makeSubscription); - $scope.$watch(getTelemetryObjects, updateObjects); - - return { - rows: function () { - return rows; - }, - headers: function () { - return headers; - } - }; - } - - return RTEventListController; - } -); - diff --git a/platform/features/rtevents/src/RangeColumn.js b/platform/features/rtevents/src/RangeColumn.js deleted file mode 100644 index 1c398ddd44..0000000000 --- a/platform/features/rtevents/src/RangeColumn.js +++ /dev/null @@ -1,72 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,moment*/ - -/** - * Module defining DomainColumn. - * Created by vwoeltje on 11/18/14. Modified by shale on 06/25/2015. - */ -define( - [], - function () { - "use strict"; - - /** - * A column which will report telemetry range values - * (typically, measurements.) Used by the RTEventListController. - * - * @memberof platform/features/rtevents - * @constructor - * @param rangeMetadata an object with the machine- and human- - * readable names for this range (in `key` and `name` - * fields, respectively.) - * @param {TelemetryFormatter} telemetryFormatter the telemetry - * formatting service, for making values human-readable. - */ - function RangeColumn() { - return { - /** - * Get the title to display in this column's header. - * @returns {string} the title to display - * @memberof platform/features/rtevents.RangeColumn# - */ - getTitle: function () { - return "Message"; - }, - /** - * Get the text to display inside a row under this - * column. - * @returns {string} the text to display - * @memberof platform/features/rtevents.RangeColumn# - */ - getValue: function (domainObject, handle) { - return { - text: handle.getRangeValue(domainObject) - }; - } - }; - } - - return RangeColumn; - } -); - diff --git a/platform/features/rtevents/src/directives/MCTRTDataTable.js b/platform/features/rtevents/src/directives/MCTRTDataTable.js deleted file mode 100644 index 6f0cc38913..0000000000 --- a/platform/features/rtevents/src/directives/MCTRTDataTable.js +++ /dev/null @@ -1,74 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,Promise*/ - -/** - * Module defining MCTRTDataTable. Created by shale on 06/25/2015. - */ -define( - ['text!../../res/templates/mct-rt-data-table.html'], - function (dataTableTemplate) { - "use strict"; - - function MCTRTDataTable($window) { - return { - restrict: "E", - template: dataTableTemplate, - scope: { - headers: "=", - rows: "=", - ascendingScroll: "=" - }, - link: function ($scope, $element) { - var currentHeight, - previousHeight, - scrollParent; - - // If the scroll is set to ascending, we want to - // check when elements are added to the table, and move the scroll - // bar accordingly. - // (When viewing at the bottom of the page, the scroll bar will - // stay at the bottom despite additions to the table) - if ($scope.ascendingScroll) { - $scope.$watchCollection("rows", function () { - // Wait until the page as been repainted (otherwise the - // height will always be zero) - $window.requestAnimationFrame(function () { - previousHeight = currentHeight; - // The height of the table body - currentHeight = $element[0].firstElementChild.firstElementChild.nextElementSibling.clientHeight; - - // One of the parents is a div that has vscroll - scrollParent = $element[0].parentElement.parentElement.parentElement.parentElement.parentElement; - - // Move the scrollbar down the amount that the height has changed - scrollParent.scrollTop = scrollParent.scrollTop + (currentHeight - previousHeight); - }); - }); - } - } - }; - } - - return MCTRTDataTable; - } -); diff --git a/platform/features/rtevents/src/policies/RTMessagesViewPolicy.js b/platform/features/rtevents/src/policies/RTMessagesViewPolicy.js deleted file mode 100644 index a5a2373fb8..0000000000 --- a/platform/features/rtevents/src/policies/RTMessagesViewPolicy.js +++ /dev/null @@ -1,76 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define*/ - -/** - * Module defining MessagesViewPolicy. Created by shale on 06/24/2015. - */ -define( - [], - function () { - "use strict"; - - /** - * Policy controlling when the real time Messages view should be avaliable. - * @memberof platform/features/rtevents - * @constructor - */ - function RTMessagesViewPolicy() { - - function hasStringTelemetry(domainObject) { - var telemetry = domainObject && - domainObject.getCapability('telemetry'), - metadata = telemetry ? telemetry.getMetadata() : {}, - ranges = metadata.ranges || []; - - return ranges.some(function (range) { - return range.format === 'string'; - }); - } - return { - /** - * Check whether or not a given action is allowed by this - * policy. - * @param {Action} action the action - * @param domainObject the domain object which will be viewed - * @returns {boolean} true if not disallowed - * @memberof platform/features/rtevents.RTMessagesViewPolicy# - */ - allow: function (view, domainObject) { - // This policy only applies for the RT Messages view - if (view.key === 'rtmessages') { - // The Messages view is allowed only if the domain - // object has string telemetry - if (!hasStringTelemetry(domainObject)) { - return false; - } - } - - // Like all policies, allow by default. - return true; - } - }; - } - - return RTMessagesViewPolicy; - } -); diff --git a/platform/features/rtevents/test/DomainColumnSpec.js b/platform/features/rtevents/test/DomainColumnSpec.js deleted file mode 100644 index b40a5e0331..0000000000 --- a/platform/features/rtevents/test/DomainColumnSpec.js +++ /dev/null @@ -1,88 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ - -/** - * RTEventSpec. Created by vwoeltje on 11/6/14. Modified by shale on 06/25/2015. - */ -define( - ["../src/DomainColumn"], - function (DomainColumn) { - "use strict"; - - var TEST_DOMAIN_VALUE = "some formatted domain value"; - - describe("A real time event list domain column", function () { - var mockDomainObject, - mockTelemetryHandler, - mockHandle, - mockFormatter, - column; - - beforeEach(function () { - mockDomainObject = jasmine.createSpyObj( - "domainObject", - ["getModel", "getCapability"] - ); - mockTelemetryHandler = jasmine.createSpyObj( - "telemetryHandler", - ["handle"] - ); - mockHandle = jasmine.createSpyObj( - "handle", - ["getDomainValue", "getRangeValue"] - ); - mockFormatter = jasmine.createSpyObj( - "formatter", - ["formatDomainValue", "formatRangeValue"] - ); - mockFormatter.formatDomainValue.andReturn(TEST_DOMAIN_VALUE); - - column = new DomainColumn(mockFormatter); - }); - - it("reports the domain column header as 'Time'", function () { - expect(column.getTitle()).toEqual("Time"); - }); - - it("retrives data from a telemetry provider", function () { - column.getValue(mockDomainObject, mockHandle); - expect(mockHandle.getDomainValue).toHaveBeenCalled(); - }); - - it("formats domain values as time", function () { - mockHandle.getDomainValue.andReturn(402513731000); - - // Should have just given the value the formatter gave - expect(column.getValue(mockDomainObject, mockHandle).text) - .toEqual(TEST_DOMAIN_VALUE); - - // Make sure that service interactions were as expected - expect(mockFormatter.formatDomainValue) - .toHaveBeenCalledWith(402513731000); - expect(mockFormatter.formatRangeValue) - .not.toHaveBeenCalled(); - }); - - }); - } -); \ No newline at end of file diff --git a/platform/features/rtevents/test/RTEventListControllerSpec.js b/platform/features/rtevents/test/RTEventListControllerSpec.js deleted file mode 100644 index a614d38e21..0000000000 --- a/platform/features/rtevents/test/RTEventListControllerSpec.js +++ /dev/null @@ -1,130 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ - -/** - * RTEventSpec. Created by shale on 06/25/2015. - */ -define( - ["../src/RTEventListController"], - function (RTEventListController) { - "use strict"; - - describe("The real time event list controller", function () { - var mockDomainObject, - mockScope, - mockTelemetryHandler, - mockHandle, - mockTelemetryFormatter, - controller; - - beforeEach(function () { - mockDomainObject = jasmine.createSpyObj( - "domainObject", - [ "getId", "getModel", "getCapability" ] - ); - mockScope = jasmine.createSpyObj( - "$scope", - [ "$on", "$watch" ] - ); - mockTelemetryHandler = jasmine.createSpyObj( - "telemetryHandler", - ["handle"] - ); - mockHandle = jasmine.createSpyObj( - "handle", - ["getDomainValue", "getRangeValue", "getTelemetryObjects", "unsubscribe"] - ); - mockTelemetryFormatter = jasmine.createSpyObj( - "formatter", - ["formatDomainValue", "formatRangeValue"] - ); - - controller = new RTEventListController(mockScope, mockTelemetryHandler, mockTelemetryFormatter); - - mockHandle.getDomainValue.andReturn("domain value"); - mockHandle.getRangeValue.andReturn("range value"); - - mockTelemetryHandler.handle.andReturn(mockHandle); - mockHandle.getTelemetryObjects.andReturn([mockDomainObject]); - - // Subscribe to the RT telemetry - // second argument of: $scope.$watch("domainObject", makeSubscription); - mockScope.$watch.calls.forEach(function (c) { - // There are two possible calls of $watch, so we need to filter - // through the calls to get the correct kind - if (c.args[0] === 'domainObject') { - c.args[1](); - } - }); - - // callback, passed into telemetry handler - mockTelemetryHandler.handle.mostRecentCall.args[1](); - - // Update the telemetry objects - // second argument of: $scope.$watch(getTelemetryObjects, updateObjects); - mockScope.$watch.calls.forEach(function (c) { - // There are two possible calls of $watch, so we need to filter - // through the calls to get the correct kind - if (c.args[0] !== 'domainObject') { - c.args[1]([mockDomainObject]); - } - }); - - }); - - it("provides a domain and a range column", function () { - // Should have two columns with these headers - expect(controller.headers()).toEqual(["Time", "Message"]); - }); - - it("listens for telemetry data updates", function () { - // Of the two possible $watch calls, this corresponds to - // $scope.$watch(getTelemetryObjects, updateObjects); - expect(mockScope.$watch).toHaveBeenCalledWith( - jasmine.any(Function), - jasmine.any(Function) - ); - }); - - it("makes telemetry subscriptions", function () { - // Of the two possible $watch calls, this corresponds to - // $scope.$watch("domainObject", makeSubscription); - expect(mockScope.$watch).toHaveBeenCalledWith( - "domainObject", - jasmine.any(Function) - ); - }); - - it("releases telemetry subscriptions on destruction", function () { - // Call the second argument of - // $scope.$on("$destroy", releaseSubscription); - mockScope.$on.mostRecentCall.args[1](); - - expect(mockScope.$on).toHaveBeenCalledWith( - "$destroy", - jasmine.any(Function) - ); - }); - }); - } -); \ No newline at end of file diff --git a/platform/features/rtevents/test/RangeColumnSpec.js b/platform/features/rtevents/test/RangeColumnSpec.js deleted file mode 100644 index fa196618f0..0000000000 --- a/platform/features/rtevents/test/RangeColumnSpec.js +++ /dev/null @@ -1,84 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ - -/** - * RTEventSpec. Created by vwoeltje on 11/6/14. Modified by shale on 06/25/2015. - */ -define( - ["../src/RangeColumn"], - function (RangeColumn) { - "use strict"; - - var TEST_RANGE_VALUE = "some formatted range value"; - - describe("A real time event list range column", function () { - var mockDomainObject, - mockTelemetryHandler, - mockHandle, - mockFormatter, - column; - - beforeEach(function () { - mockDomainObject = jasmine.createSpyObj( - "domainObject", - ["getModel", "getCapability"] - ); - mockTelemetryHandler = jasmine.createSpyObj( - "telemetryHandler", - ["handle"] - ); - mockHandle = jasmine.createSpyObj( - "handle", - ["getDomainValue", "getRangeValue"] - ); - mockFormatter = jasmine.createSpyObj( - "formatter", - ["formatDomainValue", "formatRangeValue"] - ); - mockFormatter.formatRangeValue.andReturn(TEST_RANGE_VALUE); - - column = new RangeColumn(); - }); - - it("reports a range column header as 'Message'", function () { - expect(column.getTitle()).toEqual("Message"); - }); - - it("retrives data from a telemetry provider", function () { - column.getValue(mockDomainObject, mockHandle); - expect(mockHandle.getRangeValue).toHaveBeenCalled(); - }); - - it("does not format range values", function () { - mockHandle.getRangeValue.andReturn(123.45678); - // Does not format range value as time - expect(column.getValue(mockDomainObject, mockHandle).text) - .not.toEqual(TEST_RANGE_VALUE); - // There should be no additional formatting - // i.e. the message string stays a string - expect(column.getValue(mockDomainObject, mockHandle).text) - .toEqual(123.45678); - }); - }); - } -); \ No newline at end of file diff --git a/platform/features/rtevents/test/policies/RTMessagesViewPolicySpec.js b/platform/features/rtevents/test/policies/RTMessagesViewPolicySpec.js deleted file mode 100644 index c89770da63..0000000000 --- a/platform/features/rtevents/test/policies/RTMessagesViewPolicySpec.js +++ /dev/null @@ -1,82 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,jasmine*/ - -/** - * RTEventSpec. Created by shale on 06/25/2015. - */ -define( - ["../../src/policies/RTMessagesViewPolicy"], - function (RTMessagesViewPolicy) { - "use strict"; - - describe("The real time Messages view policy", function () { - var testView, - mockDomainObject, - mockTelemetry, - testMetadata, - policy; - - beforeEach(function () { - testView = { key: "rtmessages" }; - testMetadata = {}; - mockDomainObject = jasmine.createSpyObj( - 'domainObject', - ['getId', 'getModel', 'getCapability'] - ); - mockTelemetry = jasmine.createSpyObj( - 'telemetry', - ['getMetadata'] - ); - mockDomainObject.getCapability.andCallFake(function (c) { - return c === 'telemetry' ? mockTelemetry : undefined; - }); - mockTelemetry.getMetadata.andReturn(testMetadata); - - policy = new RTMessagesViewPolicy(); - }); - - it("allows the real time messages view for domain objects with string telemetry", function () { - testMetadata.ranges = [ { key: "foo", format: "string" } ]; - expect(policy.allow(testView, mockDomainObject)).toBeTruthy(); - }); - - it("disallows the real time messages view for domain objects without string telemetry", function () { - testMetadata.ranges = [ { key: "foo", format: "somethingElse" } ]; - expect(policy.allow(testView, mockDomainObject)).toBeFalsy(); - }); - - it("disallows the real time messages view for domain objects without telemetry", function () { - testMetadata.ranges = [ { key: "foo", format: "string" } ]; - mockDomainObject.getCapability.andReturn(undefined); - expect(policy.allow(testView, mockDomainObject)).toBeFalsy(); - }); - - it("allows other views", function () { - testView.key = "somethingElse"; - testMetadata.ranges = [ { key: "foo", format: "somethingElse" } ]; - expect(policy.allow(testView, mockDomainObject)).toBeTruthy(); - }); - - }); - } -); \ No newline at end of file diff --git a/platform/features/rtscrolling/README.md b/platform/features/rtscrolling/README.md deleted file mode 100644 index 955329129e..0000000000 --- a/platform/features/rtscrolling/README.md +++ /dev/null @@ -1,2 +0,0 @@ -This is a placeholder implementation of a Scrolling List view -which is compatible with realtime-only data. diff --git a/platform/features/rtscrolling/bundle.js b/platform/features/rtscrolling/bundle.js deleted file mode 100644 index 3466dc44f1..0000000000 --- a/platform/features/rtscrolling/bundle.js +++ /dev/null @@ -1,65 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define*/ - -define([ - "./src/RTScrollingListController", - "text!./res/templates/rtscrolling.html", - 'legacyRegistry' -], function ( - RTScrollingListController, - rtscrollingTemplate, - legacyRegistry -) { - "use strict"; - - legacyRegistry.register("platform/features/rtscrolling", { - "name": "Scrolling Lists", - "description": "Time-ordered list of latest data.", - "extensions": { - "views": [ - { - "key": "scrolling", - "name": "Scrolling", - "glyph": "5", - "description": "Scrolling list of data values.", - "template": rtscrollingTemplate, - "needs": [ - "telemetry" - ], - "delegation": true - } - ], - "controllers": [ - { - "key": "RTScrollingListController", - "implementation": RTScrollingListController, - "depends": [ - "$scope", - "telemetryHandler", - "telemetryFormatter" - ] - } - ] - } - }); -}); diff --git a/platform/features/rtscrolling/res/templates/rtscrolling.html b/platform/features/rtscrolling/res/templates/rtscrolling.html deleted file mode 100644 index 213d1b146b..0000000000 --- a/platform/features/rtscrolling/res/templates/rtscrolling.html +++ /dev/null @@ -1,51 +0,0 @@ - -
-
- - - - - - - - - - - - - -
- {{header}} -
- {{cell.text}} -
-
-
- - diff --git a/platform/features/rtscrolling/src/DomainColumn.js b/platform/features/rtscrolling/src/DomainColumn.js deleted file mode 100644 index 95f262515d..0000000000 --- a/platform/features/rtscrolling/src/DomainColumn.js +++ /dev/null @@ -1,73 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,moment*/ - -/** - * Module defining DomainColumn. Created by vwoeltje on 11/18/14. - */ -define( - [], - function () { - "use strict"; - - /** - * A column which will report telemetry domain values - * (typically, timestamps.) Used by the ScrollingListController. - * - * @memberof platform/features/rtscrolling - * @constructor - * @param domainMetadata an object with the machine- and human- - * readable names for this domain (in `key` and `name` - * fields, respectively.) - * @param {TelemetryFormatter} telemetryFormatter the telemetry - * formatting service, for making values human-readable. - */ - function DomainColumn(telemetryFormatter) { - return { - /** - * Get the title to display in this column's header. - * @returns {string} the title to display - * @memberof platform/features/rtscrolling.DomainColumn# - */ - getTitle: function () { - return "Time"; - }, - /** - * Get the text to display inside a row under this - * column. - * @returns {string} the text to display - * @memberof platform/features/rtscrolling.DomainColumn# - */ - getValue: function (domainObject, handle) { - return { - text: telemetryFormatter.formatDomainValue( - handle.getDomainValue(domainObject) - ) - }; - } - }; - } - - return DomainColumn; - } -); - diff --git a/platform/features/rtscrolling/src/NameColumn.js b/platform/features/rtscrolling/src/NameColumn.js deleted file mode 100644 index b30891341b..0000000000 --- a/platform/features/rtscrolling/src/NameColumn.js +++ /dev/null @@ -1,66 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,Promise*/ - -/** - * Module defining NameColumn. Created by vwoeltje on 11/18/14. - */ -define( - [], - function () { - "use strict"; - - /** - * A column which will report the name of the domain object - * which exposed specific telemetry values. - * - * @memberof platform/features/rtscrolling - * @constructor - */ - function NameColumn() { - return { - /** - * Get the title to display in this column's header. - * @returns {string} the title to display - * @memberof platform/features/rtscrolling.NameColumn# - */ - getTitle: function () { - return "Name"; - }, - /** - * Get the text to display inside a row under this - * column. This returns the domain object's name. - * @returns {string} the text to display - * @memberof platform/features/rtscrolling.NameColumn# - */ - getValue: function (domainObject) { - return { - text: domainObject.getModel().name - }; - } - }; - } - - return NameColumn; - } -); - diff --git a/platform/features/rtscrolling/src/RTScrollingListController.js b/platform/features/rtscrolling/src/RTScrollingListController.js deleted file mode 100644 index 282ccd145c..0000000000 --- a/platform/features/rtscrolling/src/RTScrollingListController.js +++ /dev/null @@ -1,139 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,Promise*/ - -/** - * Module defining ListController. Created by vwoeltje on 11/18/14. - */ -define( - ["./NameColumn", "./DomainColumn", "./RangeColumn"], - function (NameColumn, DomainColumn, RangeColumn) { - "use strict"; - - var ROW_COUNT = 100; - - /** - * The RTScrollingListController is responsible for populating - * the contents of the scrolling list view. - * @memberof platform/features/rtscrolling - * @constructor - */ - function RTScrollingListController($scope, telemetryHandler, telemetryFormatter) { - var handle, - lastUpdated = {}, - lastIds = [], - columns = [], - headers = [], - rows = []; - - function getTelemetryObjects() { - return handle ? handle.getTelemetryObjects() : []; - } - - function idsChanged(telemetryObjects) { - function mismatch(id, index) { - return id !== telemetryObjects[index].getId(); - } - - return lastIds.length !== telemetryObjects.length || - lastIds.some(mismatch); - } - - function setupColumns(telemetryObjects) { - var id = $scope.domainObject && $scope.domainObject.getId(), - firstId = - telemetryObjects[0] && telemetryObjects[0].getId(); - - columns = []; - - if (telemetryObjects > 1 || id !== firstId) { - columns.push(new NameColumn()); - } - columns.push(new DomainColumn(telemetryFormatter)); - columns.push(new RangeColumn()); - - headers = columns.map(function (column) { - return column.getTitle(); - }); - } - - function updateObjects(telemetryObjects) { - if (idsChanged(telemetryObjects)) { - setupColumns(telemetryObjects); - lastIds = telemetryObjects.map(function (telemetryObject) { - return telemetryObject.getId(); - }); - } - } - - function addRow(telemetryObject) { - var id = telemetryObject.getId(), - domainValue = handle.getDomainValue(telemetryObject); - if (lastUpdated[id] !== domainValue && - domainValue !== undefined) { - rows.unshift(columns.map(function (column) { - return column.getValue(telemetryObject, handle); - })); - rows.splice(ROW_COUNT, Number.MAX_VALUE); - lastUpdated[id] = domainValue; - } - } - - function updateValues() { - getTelemetryObjects().forEach(addRow); - } - - function releaseSubscription() { - if (handle) { - handle.unsubscribe(); - } - } - - function makeSubscription(domainObject) { - releaseSubscription(); - rows = []; - handle = telemetryHandler.handle( - domainObject, - updateValues, - true - ); - } - - $scope.$on("$destroy", releaseSubscription); - - $scope.$watch("domainObject", makeSubscription); - $scope.$watch(getTelemetryObjects, updateObjects); - - return { - rows: function () { - return rows; - }, - headers: function () { - return headers; - } - }; - } - - return RTScrollingListController; - } -); - diff --git a/platform/features/rtscrolling/src/RangeColumn.js b/platform/features/rtscrolling/src/RangeColumn.js deleted file mode 100644 index 79c6cb8c73..0000000000 --- a/platform/features/rtscrolling/src/RangeColumn.js +++ /dev/null @@ -1,87 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,moment*/ - -/** - * Module defining DomainColumn. Created by vwoeltje on 11/18/14. - */ -define( - [], - function () { - "use strict"; - - /** - * A column which will report telemetry range values - * (typically, measurements.) Used by the RTScrollingListController. - * - * @memberof platform/features/rtscrolling - * @constructor - * @param rangeMetadata an object with the machine- and human- - * readable names for this range (in `key` and `name` - * fields, respectively.) - * @param {TelemetryFormatter} telemetryFormatter the telemetry - * formatting service, for making values human-readable. - */ - function RangeColumn() { - function findRange(domainObject) { - var telemetry = domainObject.getCapability('telemetry'), - metadata = telemetry ? telemetry.getMetadata() : {}, - ranges = metadata.ranges || [{}]; - return ranges[0].key; - } - - return { - /** - * Get the title to display in this column's header. - * @returns {string} the title to display - * @memberof platform/features/rtscrolling.RangeColumn# - */ - getTitle: function () { - return "Value"; - }, - /** - * Get the text to display inside a row under this - * column. - * @returns {string} the text to display - * @memberof platform/features/rtscrolling.RangeColumn# - */ - getValue: function (domainObject, handle) { - var range = findRange(domainObject), - limit = domainObject.getCapability('limit'), - value = handle.getRangeValue(domainObject), - alarm = limit && limit.evaluate( - handle.getDatum(domainObject), - range - ); - - return { - cssClass: alarm && alarm.cssClass, - text: value - }; - } - }; - } - - return RangeColumn; - } -); - diff --git a/platform/features/scrolling/bundle.js b/platform/features/scrolling/bundle.js deleted file mode 100644 index 567330e165..0000000000 --- a/platform/features/scrolling/bundle.js +++ /dev/null @@ -1,64 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define*/ - -define([ - "./src/ScrollingListController", - "text!./res/templates/scrolling.html", - 'legacyRegistry' -], function ( - ScrollingListController, - scrollingTemplate, - legacyRegistry -) { - "use strict"; - - legacyRegistry.register("platform/features/scrolling", { - "name": "Scrolling Lists", - "description": "Time-ordered list of latest data.", - "extensions": { - "views": [ - { - "key": "scrolling", - "name": "Scrolling", - "glyph": "5", - "description": "Scrolling list of data values.", - "template": scrollingTemplate, - "needs": [ - "telemetry" - ], - "delegation": true - } - ], - "controllers": [ - { - "key": "ScrollingListController", - "implementation": ScrollingListController, - "depends": [ - "$scope", - "telemetryFormatter" - ] - } - ] - } - }); -}); diff --git a/platform/features/scrolling/res/templates/scrolling.html b/platform/features/scrolling/res/templates/scrolling.html deleted file mode 100644 index 629c3472cd..0000000000 --- a/platform/features/scrolling/res/templates/scrolling.html +++ /dev/null @@ -1,51 +0,0 @@ - -
-
- - - - - - - - - - - - - -
- {{header}} -
- {{cell.text}} -
-
-
- - diff --git a/platform/features/scrolling/src/DomainColumn.js b/platform/features/scrolling/src/DomainColumn.js deleted file mode 100644 index 3824098118..0000000000 --- a/platform/features/scrolling/src/DomainColumn.js +++ /dev/null @@ -1,65 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,moment*/ - -/** - * Module defining DomainColumn. Created by vwoeltje on 11/18/14. - */ -define( - [], - function () { - "use strict"; - - /** - * A column which will report telemetry domain values - * (typically, timestamps.) Used by the ScrollingListController. - * - * @memberof platform/features/scrolling - * @implements {platform/features/scrolling.ScrollingColumn} - * @constructor - * @param domainMetadata an object with the machine- and human- - * readable names for this domain (in `key` and `name` - * fields, respectively.) - * @param {TelemetryFormatter} telemetryFormatter the telemetry - * formatting service, for making values human-readable. - */ - 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 { - text: this.telemetryFormatter.formatDomainValue( - datum[this.domainMetadata.key], - this.domainMetadata.format - ) - }; - }; - - return DomainColumn; - } -); diff --git a/platform/features/scrolling/src/NameColumn.js b/platform/features/scrolling/src/NameColumn.js deleted file mode 100644 index 8947b279f0..0000000000 --- a/platform/features/scrolling/src/NameColumn.js +++ /dev/null @@ -1,55 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,Promise*/ - -/** - * Module defining NameColumn. Created by vwoeltje on 11/18/14. - */ -define( - [], - function () { - "use strict"; - - /** - * A column which will report the name of the domain object - * which exposed specific telemetry values. - * - * @memberof platform/features/scrolling - * @implements {platform/features/scrolling.ScrollingColumn} - * @constructor - */ - function NameColumn() { - } - - NameColumn.prototype.getTitle = function () { - return "Name"; - }; - - NameColumn.prototype.getValue = function (domainObject) { - return { - text: domainObject.getModel().name - }; - }; - - return NameColumn; - } -); diff --git a/platform/features/scrolling/src/RangeColumn.js b/platform/features/scrolling/src/RangeColumn.js deleted file mode 100644 index 0b76fbfda0..0000000000 --- a/platform/features/scrolling/src/RangeColumn.js +++ /dev/null @@ -1,68 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,Promise*/ - -/** - * Module defining DomainColumn. Created by vwoeltje on 11/18/14. - */ -define( - [], - function () { - "use strict"; - - /** - * A column which will report telemetry range values - * (typically, measurements.) Used by the ScrollingListController. - * - * @memberof platform/features/scrolling - * @implements {platform/features/scrolling.ScrollingColumn} - * @constructor - * @param rangeMetadata an object with the machine- and human- - * readable names for this range (in `key` and `name` - * fields, respectively.) - * @param {TelemetryFormatter} telemetryFormatter the telemetry - * formatting service, for making values human-readable. - */ - function RangeColumn(rangeMetadata, telemetryFormatter) { - this.rangeMetadata = rangeMetadata; - this.telemetryFormatter = telemetryFormatter; - } - - RangeColumn.prototype.getTitle = function () { - return this.rangeMetadata.name; - }; - - RangeColumn.prototype.getValue = function (domainObject, datum) { - var range = this.rangeMetadata.key, - limit = domainObject.getCapability('limit'), - value = datum[range], - alarm = limit && limit.evaluate(datum, range); - - return { - cssClass: alarm && alarm.cssClass, - text: this.telemetryFormatter.formatRangeValue(value) - }; - }; - - return RangeColumn; - } -); diff --git a/platform/features/scrolling/src/ScrollingListController.js b/platform/features/scrolling/src/ScrollingListController.js deleted file mode 100644 index 7ca6312369..0000000000 --- a/platform/features/scrolling/src/ScrollingListController.js +++ /dev/null @@ -1,159 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,Promise*/ - -/** - * This bundle implements a "Scrolling List" view of telemetry data. - * @namespace platform/features/scrolling - */ -define( - ["./NameColumn", "./DomainColumn", "./RangeColumn", "./ScrollingListPopulator"], - function (NameColumn, DomainColumn, RangeColumn, ScrollingListPopulator) { - "use strict"; - - var ROW_COUNT = 18; - - /** - * The ScrollingListController is responsible for populating - * the contents of the scrolling list view. - * @memberof platform/features/scrolling - * @constructor - */ - function ScrollingListController($scope, formatter) { - var populator = new ScrollingListPopulator([]); - - // Get a set of populated, ready-to-display rows for the - // latest data values. - function getRows(telemetry) { - var datas = telemetry.getResponse(), - objects = telemetry.getTelemetryObjects(); - - return populator.getRows(datas, objects, ROW_COUNT); - } - - // Update the contents - function updateRows() { - var telemetry = $scope.telemetry; - $scope.rows = telemetry ? getRows(telemetry) : []; - } - - // Set up columns based on telemetry metadata. This will - // include one column for each domain and range type, as - // well as a column for the domain object name. - function setupColumns(metadatas) { - var domainKeys = {}, - rangeKeys = {}, - columns = []; - - // Add a domain to the set of columns, if a domain - // with the same key has not yet been inclued. - function addDomain(domain) { - var key = domain.key; - if (key && !domainKeys[key]) { - domainKeys[key] = true; - columns.push(new DomainColumn(domain, formatter)); - } - } - - // Add a range to the set of columns, if a range - // with the same key has not yet been inclued. - function addRange(range) { - var key = range.key; - if (key && !rangeKeys[key]) { - rangeKeys[key] = true; - columns.push(new RangeColumn(range, formatter)); - } - } - - // We cannot proceed if metadata is not available; - // clear all rows/columns. - if (!Array.isArray(metadatas)) { - columns = []; - $scope.rows = []; - $scope.headers = []; - return; - } - - columns = [ new NameColumn() ]; - - // Add domain, range columns - metadatas.forEach(function (metadata) { - (metadata.domains || []).forEach(addDomain); - }); - metadatas.forEach(function (metadata) { - (metadata.ranges || []).forEach(addRange); - }); - - // Add default domain, range columns if none - // were described in metadata. - if (Object.keys(domainKeys).length < 1) { - columns.push(new DomainColumn({name: "Time"}, formatter)); - } - if (Object.keys(rangeKeys).length < 1) { - columns.push(new RangeColumn({name: "Value"}, formatter)); - } - - // We have all columns now; use them to initializer - // the populator, which will use them to generate - // actual rows and headers. - populator = new ScrollingListPopulator(columns); - - // Initialize headers - $scope.headers = populator.getHeaders(); - - // Fill in the contents of the rows. - updateRows(); - } - - $scope.$on("telemetryUpdate", updateRows); - $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; - } -); - diff --git a/platform/features/scrolling/src/ScrollingListPopulator.js b/platform/features/scrolling/src/ScrollingListPopulator.js deleted file mode 100644 index b5995d65ba..0000000000 --- a/platform/features/scrolling/src/ScrollingListPopulator.js +++ /dev/null @@ -1,189 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define*/ - -define( - [], - function () { - "use strict"; - - /** - * The ScrollingListPopulator is responsible for filling in the - * values which should appear within columns of a scrolling list - * view, based on received telemetry data. - * @memberof platform/features/scrolling - * @constructor - * @param {Column[]} columns the columns to be populated - */ - function ScrollingListPopulator(columns) { - this.columns = columns; - } - - /** - * Look up the most recent values from a set of data objects. - * Returns an array of objects in the order in which data - * should be displayed; each element is an object with - * two properties: - * - * * objectIndex: The index of the domain object associated - * with the data point to be displayed in that - * row. - * * pointIndex: The index of the data point itself, within - * its data set. - * - * @param {Array} datas an array of the most recent - * data objects; expected to be in the same order - * as the domain objects provided at constructor - * @param {number} count the number of rows to provide - * @returns {Array} latest data values in display order - * @private - */ - function getLatestDataValues(datas, count) { - var latest = [], - candidate, - candidateTime, - used = datas.map(function () { return 0; }); - - // This algorithm is O(nk) for n rows and k telemetry elements; - // one O(k) linear search for a max is made for each of n rows. - // This could be done in O(n lg k + k lg k), using a priority - // queue (where priority is max-finding) containing k initial - // values. For n rows, pop the max from the queue and replenish - // the queue with a value from the data at the same - // objectIndex, if available. - // But k is small, so this might not give an observable - // improvement in performance. - - // Find the most recent unused data point (this will be used - // in a loop to find and the N most recent data points) - function findCandidate(data, i) { - var nextTime, - pointCount = data.getPointCount(), - pointIndex = pointCount - used[i] - 1; - if (data && pointIndex >= 0) { - nextTime = data.getDomainValue(pointIndex); - if (nextTime > candidateTime) { - candidateTime = nextTime; - candidate = { - objectIndex: i, - pointIndex: pointIndex - }; - } - } - } - - // Assemble a list of the most recent data points - while (latest.length < count) { - // Reset variables pre-search - candidateTime = Number.NEGATIVE_INFINITY; - candidate = undefined; - - // Linear search for most recent - datas.forEach(findCandidate); - - if (candidate) { - // Record this data point - it is the most recent - latest.push(candidate); - - // Track the data points used so we can look farther back - // in the data set on the next iteration - used[candidate.objectIndex] = used[candidate.objectIndex] + 1; - } else { - // Ran out of candidates; not enough data points - // available to fill all rows. - break; - } - } - - 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 - // 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; - } - - // Each value will become a row, which will contain - // some value in each column (rendering by the - // column object itself) - return values.map(function (value) { - var datum = makeDatum( - objects[value.objectIndex], - datas[value.objectIndex], - value.pointIndex - ); - - return self.columns.map(function (column) { - return column.getValue( - objects[value.objectIndex], - datum - ); - }); - }); - }; - - return ScrollingListPopulator; - - } -); - diff --git a/platform/features/scrolling/test/DomainColumnSpec.js b/platform/features/scrolling/test/DomainColumnSpec.js deleted file mode 100644 index bb15f9d55e..0000000000 --- a/platform/features/scrolling/test/DomainColumnSpec.js +++ /dev/null @@ -1,84 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine,xit*/ - -/** - * MergeModelsSpec. Created by vwoeltje on 11/6/14. - */ -define( - ["../src/DomainColumn"], - function (DomainColumn) { - "use strict"; - - var TEST_DOMAIN_VALUE = "some formatted domain value"; - - describe("A domain column", function () { - var mockDataSet, - testMetadata, - mockFormatter, - column; - - beforeEach(function () { - mockDataSet = jasmine.createSpyObj( - "data", - [ "getDomainValue" ] - ); - mockFormatter = jasmine.createSpyObj( - "formatter", - [ "formatDomainValue", "formatRangeValue" ] - ); - testMetadata = { - key: "testKey", - name: "Test Name" - }; - mockFormatter.formatDomainValue.andReturn(TEST_DOMAIN_VALUE); - - column = new DomainColumn(testMetadata, mockFormatter); - }); - - it("reports a column header from domain metadata", function () { - expect(column.getTitle()).toEqual("Test Name"); - }); - - xit("looks up data from a data set", function () { - column.getValue(undefined, mockDataSet, 42); - expect(mockDataSet.getDomainValue) - .toHaveBeenCalledWith(42, "testKey"); - }); - - xit("formats domain values as time", function () { - mockDataSet.getDomainValue.andReturn(402513731000); - - // Should have just given the value the formatter gave - expect(column.getValue(undefined, mockDataSet, 42).text) - .toEqual(TEST_DOMAIN_VALUE); - - // Make sure that service interactions were as expected - expect(mockFormatter.formatDomainValue) - .toHaveBeenCalledWith(402513731000); - expect(mockFormatter.formatRangeValue) - .not.toHaveBeenCalled(); - }); - - }); - } -); diff --git a/platform/features/scrolling/test/NameColumnSpec.js b/platform/features/scrolling/test/NameColumnSpec.js deleted file mode 100644 index 355ebef545..0000000000 --- a/platform/features/scrolling/test/NameColumnSpec.js +++ /dev/null @@ -1,58 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ - -/** - * MergeModelsSpec. Created by vwoeltje on 11/6/14. - */ -define( - ["../src/NameColumn"], - function (NameColumn) { - "use strict"; - - describe("A name column", function () { - var mockDomainObject, - column; - - beforeEach(function () { - mockDomainObject = jasmine.createSpyObj( - "domainObject", - [ "getModel" ] - ); - mockDomainObject.getModel.andReturn({ - name: "Test object name" - }); - column = new NameColumn(); - }); - - it("reports a column header", function () { - expect(column.getTitle()).toEqual("Name"); - }); - - it("looks up name from an object's model", function () { - expect(column.getValue(mockDomainObject).text) - .toEqual("Test object name"); - }); - - }); - } -); diff --git a/platform/features/scrolling/test/RangeColumnSpec.js b/platform/features/scrolling/test/RangeColumnSpec.js deleted file mode 100644 index b77245bb82..0000000000 --- a/platform/features/scrolling/test/RangeColumnSpec.js +++ /dev/null @@ -1,76 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine,xit*/ - -/** - * MergeModelsSpec. Created by vwoeltje on 11/6/14. - */ -define( - ["../src/RangeColumn"], - function (RangeColumn) { - "use strict"; - - var TEST_RANGE_VALUE = "some formatted range value"; - - describe("A range column", function () { - var testDatum, - testMetadata, - mockFormatter, - mockDomainObject, - column; - - beforeEach(function () { - testDatum = { testKey: 123, otherKey: 456 }; - mockFormatter = jasmine.createSpyObj( - "formatter", - [ "formatDomainValue", "formatRangeValue" ] - ); - testMetadata = { - key: "testKey", - name: "Test Name" - }; - mockDomainObject = jasmine.createSpyObj( - "domainObject", - [ "getModel", "getCapability" ] - ); - mockFormatter.formatRangeValue.andReturn(TEST_RANGE_VALUE); - - column = new RangeColumn(testMetadata, mockFormatter); - }); - - it("reports a column header from range metadata", function () { - expect(column.getTitle()).toEqual("Test Name"); - }); - - it("formats range values as numbers", function () { - expect(column.getValue(mockDomainObject, testDatum).text) - .toEqual(TEST_RANGE_VALUE); - - // Make sure that service interactions were as expected - expect(mockFormatter.formatRangeValue) - .toHaveBeenCalledWith(testDatum.testKey); - expect(mockFormatter.formatDomainValue) - .not.toHaveBeenCalled(); - }); - }); - } -); diff --git a/platform/features/scrolling/test/ScrollingListControllerSpec.js b/platform/features/scrolling/test/ScrollingListControllerSpec.js deleted file mode 100644 index 30c5405364..0000000000 --- a/platform/features/scrolling/test/ScrollingListControllerSpec.js +++ /dev/null @@ -1,110 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine,xit*/ - -/** - * MergeModelsSpec. Created by vwoeltje on 11/6/14. - */ -define( - ["../src/ScrollingListController"], - function (ScrollingListController) { - "use strict"; - - describe("The scrolling list controller", function () { - var mockScope, - mockTelemetry, - testMetadata, - controller; - - beforeEach(function () { - mockScope = jasmine.createSpyObj( - "$scope", - [ "$on", "$watch" ] - ); - mockTelemetry = jasmine.createSpyObj( - "telemetryController", - [ "getResponse", "getMetadata", "getTelemetryObjects" ] - ); - testMetadata = [ - { - domains: [ - { key: "d0", name: "D0" }, - { key: "d1", name: "D1" } - ], - ranges: [ - { key: "r0", name: "R0" }, - { key: "r1", name: "R1" } - ] - }, - { - domains: [ - { key: "d0", name: "D0" }, - { key: "d2", name: "D2" } - ], - ranges: [ - { key: "r0", name: "R0" } - ] - } - ]; - mockTelemetry.getMetadata.andReturn(testMetadata); - mockTelemetry.getResponse.andReturn([]); - mockTelemetry.getTelemetryObjects.andReturn([]); - mockScope.telemetry = mockTelemetry; - controller = new ScrollingListController(mockScope); - }); - - it("listens for telemetry data updates", function () { - expect(mockScope.$on).toHaveBeenCalledWith( - "telemetryUpdate", - jasmine.any(Function) - ); - }); - - xit("watches for telemetry controller changes", function () { - expect(mockScope.$watch).toHaveBeenCalledWith( - "telemetry", - jasmine.any(Function) - ); - }); - - xit("provides a column for each name and each unique domain, range", function () { - // Should have six columns based on metadata above, - // (name, d0, d1, d2, r0, r1) - mockScope.$watch.mostRecentCall.args[1](mockTelemetry); - expect(mockScope.headers).toEqual(["Name", "D0", "D1", "D2", "R0", "R1"]); - }); - - it("does not throw if telemetry controller is undefined", function () { - // Just a general robustness check - mockScope.telemetry = undefined; - expect(mockScope.$watch.mostRecentCall.args[1]) - .not.toThrow(); - }); - - xit("provides default columns if domain/range metadata is unavailable", function () { - mockTelemetry.getMetadata.andReturn([]); - mockScope.$watch.mostRecentCall.args[1](mockTelemetry); - expect(mockScope.headers).toEqual(["Name", "Time", "Value"]); - }); - }); - } -); diff --git a/platform/features/scrolling/test/ScrollingListPopulatorSpec.js b/platform/features/scrolling/test/ScrollingListPopulatorSpec.js deleted file mode 100644 index 8251a432be..0000000000 --- a/platform/features/scrolling/test/ScrollingListPopulatorSpec.js +++ /dev/null @@ -1,105 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,describe,it,expect,beforeEach,waitsFor,jasmine,xit*/ - -/** - * MergeModelsSpec. Created by vwoeltje on 11/6/14. - */ -define( - ["../src/ScrollingListPopulator"], - function (ScrollingListPopulator) { - "use strict"; - - describe("The scrolling list populator", function () { - var mockColumns, - mockDatas, - mockDomainObjects, - populator; - - function makeMockColumn(name, index) { - var mockColumn = jasmine.createSpyObj( - "column" + index, - [ "getTitle", "getValue" ] - ); - mockColumn.getTitle.andReturn(name); - mockColumn.getValue.andCallFake(function (obj, data, i) { - return data.getDomainValue(i); - }); - return mockColumn; - } - - function makeMockData(bias, index) { - var mockData = jasmine.createSpyObj( - "data" + index, - [ "getDomainValue", "getPointCount" ] - ); - mockData.getPointCount.andReturn(1000); - mockData.getDomainValue.andCallFake(function (i) { - return i + bias; - }); - return mockData; - } - - function makeMockDomainObject(name, index) { - var mockDomainObject = jasmine.createSpyObj( - "domainObject" + index, - [ "getId", "getModel" ] - ); - return mockDomainObject; - } - - beforeEach(function () { - mockColumns = ["A", "B", "C", "D"].map(makeMockColumn); - mockDatas = [ 10, 0, 3 ].map(makeMockData); - mockDomainObjects = ["A", "B", "C"].map(makeMockDomainObject); - populator = new ScrollingListPopulator(mockColumns); - }); - - it("returns column headers", function () { - expect(populator.getHeaders()).toEqual(["A", "B", "C", "D"]); - }); - - xit("provides rows on request, with all columns in each row", function () { - var rows = populator.getRows(mockDatas, mockDomainObjects, 84); - expect(rows.length).toEqual(84); - rows.forEach(function (row) { - expect(row.length).toEqual(4); // number of columns - }); - }); - - xit("returns rows in reverse domain order", function () { - var rows = populator.getRows(mockDatas, mockDomainObjects, 84), - previous = Number.POSITIVE_INFINITY; - - // Should always be most-recent-first; since the mockColumn - // returns the domain value, column contents should be - // non-increasing. - rows.forEach(function (row) { - expect(row[0]).not.toBeGreaterThan(previous); - previous = row[0]; - }); - - }); - - }); - } -);