From 85902b878e87a9a7baa28f57c20576b676f73979 Mon Sep 17 00:00:00 2001 From: Deep Tailor Date: Thu, 27 Feb 2020 10:27:58 -0800 Subject: [PATCH] Update telemetry table for multisession (#2686) * update telemetry table to ingest marked row data, add a new alterntate bar with includes row name, selected rows and show selected rows toggle * Enhancements for alternate toolbar in telem tables - .c-control-bar adds style enhancements and `__label` element; - Added `label` prop, markup and styling to ToggleSwitch; - ToggleSwitch layout enhanced; - Unit tested in main view and placed in Display Layout; * made improvements to row marking * bug fixes for marking * fix linting issues * -Make reviewer requested changes -Clarify prop for marking -Include alternateControlBar in the marking prop - - since it only makes sense for making Co-authored-by: Charles Hacskaylo --- src/plugins/telemetryTable/TelemetryTable.js | 22 +++- .../TelemetryTableViewProvider.js | 4 +- .../telemetryTable/components/table.vue | 120 ++++++++++++++---- src/styles/_legacy.scss | 10 ++ src/ui/components/ToggleSwitch.vue | 31 +++-- src/ui/components/toggle-switch.scss | 50 +++++--- 6 files changed, 184 insertions(+), 53 deletions(-) diff --git a/src/plugins/telemetryTable/TelemetryTable.js b/src/plugins/telemetryTable/TelemetryTable.js index 494a13272e..2bf4e1c700 100644 --- a/src/plugins/telemetryTable/TelemetryTable.js +++ b/src/plugins/telemetryTable/TelemetryTable.js @@ -47,6 +47,7 @@ define([ this.subscriptions = {}; this.tableComposition = undefined; this.telemetryObjects = []; + this.datumCache = []; this.outstandingRequests = 0; this.configuration = new TelemetryTableConfiguration(domainObject, openmct); this.paused = false; @@ -155,6 +156,7 @@ define([ processHistoricalData(telemetryData, columnMap, keyString, limitEvaluator) { let telemetryRows = telemetryData.map(datum => new TelemetryTableRow(datum, columnMap, keyString, limitEvaluator)); this.boundedRows.add(telemetryRows); + this.emit('historical-rows-processed'); } /** @@ -227,12 +229,28 @@ define([ return; } - if (!this.paused) { + if (this.paused) { + let realtimeDatum = { + datum, + columnMap, + keyString, + limitEvaluator + }; + + this.datumCache.push(realtimeDatum); + } else { this.processRealtimeDatum(datum, columnMap, keyString, limitEvaluator); } }, subscribeOptions); } + processDatumCache() { + this.datumCache.forEach(cachedDatum => { + this.processRealtimeDatum(cachedDatum.datum, cachedDatum.columnMap, cachedDatum.keyString, cachedDatum.limitEvaluator); + }); + this.datumCache = []; + } + processRealtimeDatum(datum, columnMap, keyString, limitEvaluator) { this.boundedRows.add(new TelemetryTableRow(datum, columnMap, keyString, limitEvaluator)); } @@ -272,8 +290,8 @@ define([ unpause() { this.paused = false; + this.processDatumCache(); this.boundedRows.subscribeToBounds(); - this.refreshData(); } destroy() { diff --git a/src/plugins/telemetryTable/TelemetryTableViewProvider.js b/src/plugins/telemetryTable/TelemetryTableViewProvider.js index 78269b2fef..7750736720 100644 --- a/src/plugins/telemetryTable/TelemetryTableViewProvider.js +++ b/src/plugins/telemetryTable/TelemetryTableViewProvider.js @@ -68,7 +68,7 @@ define([ table, objectPath }, - template: '' + template: '' }); }, onEditModeChange(editMode) { @@ -86,7 +86,7 @@ define([ priority() { return 1; } - } + }; } return TelemetryTableViewProvider; }); diff --git a/src/plugins/telemetryTable/components/table.vue b/src/plugins/telemetryTable/components/table.vue index 0e41447750..c1dc41a113 100644 --- a/src/plugins/telemetryTable/components/table.vue +++ b/src/plugins/telemetryTable/components/table.vue @@ -21,7 +21,10 @@ *****************************************************************************/