diff --git a/example/generator/GeneratorProvider.js b/example/generator/GeneratorProvider.js index c0ad5d9627..f38aefb280 100644 --- a/example/generator/GeneratorProvider.js +++ b/example/generator/GeneratorProvider.js @@ -76,6 +76,7 @@ define([ workerRequest[prop] = Number(workerRequest[prop]); }); + workerRequest.name = domainObject.name; return workerRequest; diff --git a/example/generator/generatorWorker.js b/example/generator/generatorWorker.js index f4ba3c3792..0313cbaab3 100644 --- a/example/generator/generatorWorker.js +++ b/example/generator/generatorWorker.js @@ -108,7 +108,6 @@ for (; nextStep < end && data.length < 5000; nextStep += step) { data.push({ - name: request.name, utc: nextStep, yesterday: nextStep - 60 * 60 * 24 * 1000, sin: sin(nextStep, period, amplitude, offset, phase, randomness), diff --git a/src/plugins/telemetryTable/TelemetryTable.js b/src/plugins/telemetryTable/TelemetryTable.js index 16dfa7b1f9..b2772c3f59 100644 --- a/src/plugins/telemetryTable/TelemetryTable.js +++ b/src/plugins/telemetryTable/TelemetryTable.js @@ -25,6 +25,7 @@ define([ 'lodash', './collections/BoundedTableRowCollection', './collections/FilteredTableRowCollection', + './TelemetryTableNameColumn', './TelemetryTableRow', './TelemetryTableColumn', './TelemetryTableUnitColumn', @@ -34,6 +35,7 @@ define([ _, BoundedTableRowCollection, FilteredTableRowCollection, + TelemetryTableNameColumn, TelemetryTableRow, TelemetryTableColumn, TelemetryTableUnitColumn, @@ -71,6 +73,24 @@ define([ openmct.time.on('timeSystem', this.refreshData); } + /** + * @private + */ + addNameColumn(telemetryObject, metadataValues) { + let metadatum = metadataValues.find(m => m.key === 'name'); + if (!metadatum) { + metadatum = { + format: 'string', + key: 'name', + name: 'Name' + }; + } + + const column = new TelemetryTableNameColumn(this.openmct, telemetryObject, metadatum); + + this.configuration.addSingleColumnForObject(telemetryObject, column); + } + initialize() { if (this.domainObject.type === 'table') { this.filterObserver = this.openmct.objects.observe(this.domainObject, 'configuration.filters', this.updateFilters); @@ -212,7 +232,13 @@ define([ addColumnsForObject(telemetryObject) { let metadataValues = this.openmct.telemetry.getMetadata(telemetryObject).values(); + + this.addNameColumn(telemetryObject, metadataValues); metadataValues.forEach(metadatum => { + if (metadatum.key === 'name') { + return; + } + let column = this.createColumn(metadatum); this.configuration.addSingleColumnForObject(telemetryObject, column); // add units column if available diff --git a/src/plugins/telemetryTable/TelemetryTableNameColumn.js b/src/plugins/telemetryTable/TelemetryTableNameColumn.js new file mode 100644 index 0000000000..9b37d5fbea --- /dev/null +++ b/src/plugins/telemetryTable/TelemetryTableNameColumn.js @@ -0,0 +1,44 @@ +/***************************************************************************** + * Open MCT, Copyright (c) 2014-2018, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT 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 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. + *****************************************************************************/ +define([ + './TelemetryTableColumn.js' +], function ( + TelemetryTableColumn +) { + class TelemetryTableNameColumn extends TelemetryTableColumn { + constructor(openmct, telemetryObject, metadatum) { + super(openmct, metadatum); + + this.telemetryObject = telemetryObject; + } + + getRawValue() { + return this.telemetryObject.name; + } + + getFormattedValue() { + return this.telemetryObject.name; + } + } + + return TelemetryTableNameColumn; +}); diff --git a/src/plugins/telemetryTable/pluginSpec.js b/src/plugins/telemetryTable/pluginSpec.js index cf77609631..e6e5df55f9 100644 --- a/src/plugins/telemetryTable/pluginSpec.js +++ b/src/plugins/telemetryTable/pluginSpec.js @@ -183,10 +183,11 @@ describe("the plugin", () => { it("Renders a column for every item in telemetry metadata", () => { let headers = element.querySelectorAll('span.c-telemetry-table__headers__label'); - expect(headers.length).toBe(3); - expect(headers[0].innerText).toBe('Time'); - expect(headers[1].innerText).toBe('Some attribute'); - expect(headers[2].innerText).toBe('Another attribute'); + expect(headers.length).toBe(4); + expect(headers[0].innerText).toBe('Name'); + expect(headers[1].innerText).toBe('Time'); + expect(headers[2].innerText).toBe('Some attribute'); + expect(headers[3].innerText).toBe('Another attribute'); }); it("Supports column reordering via drag and drop", () => {