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];
- });
-
- });
-
- });
- }
-);