From 768d99d928175d09d1e10b2f07c8896722335f8c Mon Sep 17 00:00:00 2001 From: Deep Tailor Date: Thu, 25 Jul 2019 13:47:40 -0700 Subject: [PATCH] Select, Mark and export selected table rows (#2420) * first pass * add a unmark all rows button * enable shift click to select multiple rows * support row selection backwards * Styling for marked table rows - CSS class applied; - Export button label modified; * working pause * working multi select tables are paused when user selects a row * Layout improvements for table and control bar elements - Table markup re-org'd; - New .c-separator css class; - Renamed .c-table__control-bar to .c-table-control-bar; - Added label to Pause button; - TODO: refine styling for table within frame in Layouts; * Refined styling for c-button in an object frame - More compact, better alignment, font sizing and padding; * change logic to marking/selecting * use command key to mark multiple * Fixed regression errors in markup * add isSelectable functionality * make reviewer requested changes * remove key from v-for in table.vue --- src/plugins/telemetryTable/TelemetryTable.js | 17 +- .../telemetryTable/TelemetryTableColumn.js | 6 +- .../TelemetryTableViewProvider.js | 2 +- .../collections/BoundedTableRowCollection.js | 13 +- .../telemetryTable/components/table-row.vue | 84 +++-- .../telemetryTable/components/table.vue | 343 +++++++++++++----- src/styles-new/_controls.scss | 8 +- src/styles-new/_table.scss | 32 +- src/ui/components/ObjectFrame.vue | 7 +- 9 files changed, 383 insertions(+), 129 deletions(-) diff --git a/src/plugins/telemetryTable/TelemetryTable.js b/src/plugins/telemetryTable/TelemetryTable.js index e65ff41c96..c7c2d12457 100644 --- a/src/plugins/telemetryTable/TelemetryTable.js +++ b/src/plugins/telemetryTable/TelemetryTable.js @@ -49,6 +49,7 @@ define([ this.telemetryObjects = []; this.outstandingRequests = 0; this.configuration = new TelemetryTableConfiguration(domainObject, openmct); + this.paused = false; this.keyString = this.openmct.objects.makeKeyString(this.domainObject.identifier); this.addTelemetryObject = this.addTelemetryObject.bind(this); @@ -219,7 +220,10 @@ define([ if (!this.telemetryObjects.includes(telemetryObject)) { return; } - this.processRealtimeDatum(datum, columnMap, keyString, limitEvaluator); + + if (!this.paused) { + this.processRealtimeDatum(datum, columnMap, keyString, limitEvaluator); + } }, subscribeOptions); } @@ -255,6 +259,17 @@ define([ } } + pause() { + this.paused = true; + this.boundedRows.unsubscribeFromBounds(); + } + + unpause() { + this.paused = false; + this.boundedRows.subscribeToBounds(); + this.refreshData(); + } + destroy() { this.boundedRows.destroy(); this.filteredRows.destroy(); diff --git a/src/plugins/telemetryTable/TelemetryTableColumn.js b/src/plugins/telemetryTable/TelemetryTableColumn.js index 15185f159a..ad157832c4 100644 --- a/src/plugins/telemetryTable/TelemetryTableColumn.js +++ b/src/plugins/telemetryTable/TelemetryTableColumn.js @@ -21,10 +21,11 @@ *****************************************************************************/ define(function () { class TelemetryTableColumn { - constructor (openmct, metadatum) { + constructor (openmct, metadatum, options = {selectable: false}) { this.metadatum = metadatum; this.formatter = openmct.telemetry.getValueFormatter(metadatum); this.titleValue = this.metadatum.name; + this.selectable = options.selectable; } getKey() { @@ -55,8 +56,7 @@ define(function () { return formattedValue; } } - - }; + } return TelemetryTableColumn; }); diff --git a/src/plugins/telemetryTable/TelemetryTableViewProvider.js b/src/plugins/telemetryTable/TelemetryTableViewProvider.js index b5b3238932..2c7bd19a4a 100644 --- a/src/plugins/telemetryTable/TelemetryTableViewProvider.js +++ b/src/plugins/telemetryTable/TelemetryTableViewProvider.js @@ -67,7 +67,7 @@ define([ table }, el: element, - template: '' + template: '' }); }, onEditModeChange(isEditing) { diff --git a/src/plugins/telemetryTable/collections/BoundedTableRowCollection.js b/src/plugins/telemetryTable/collections/BoundedTableRowCollection.js index 77238d4412..e5c98f44b4 100644 --- a/src/plugins/telemetryTable/collections/BoundedTableRowCollection.js +++ b/src/plugins/telemetryTable/collections/BoundedTableRowCollection.js @@ -43,7 +43,8 @@ define( this.sortByTimeSystem(openmct.time.timeSystem()); this.lastBounds = openmct.time.bounds(); - openmct.time.on('bounds', this.bounds); + + this.subscribeToBounds(); } addOne(item) { @@ -140,9 +141,17 @@ define( return this.parseTime(row.datum[this.sortOptions.key]); } - destroy() { + unsubscribeFromBounds() { this.openmct.time.off('bounds', this.bounds); } + + subscribeToBounds() { + this.openmct.time.on('bounds', this.bounds); + } + + destroy() { + this.unsubscribeFromBounds(); + } } return BoundedTableRowCollection; }); diff --git a/src/plugins/telemetryTable/components/table-row.vue b/src/plugins/telemetryTable/components/table-row.vue index ed2642cd50..7e1a185ed9 100644 --- a/src/plugins/telemetryTable/components/table-row.vue +++ b/src/plugins/telemetryTable/components/table-row.vue @@ -20,22 +20,36 @@ * at runtime from the About dialog for additional information. *****************************************************************************/