From bffae446bafe56b7974c3918acaed404bc2d3ccf Mon Sep 17 00:00:00 2001 From: Andrew Henry Date: Thu, 10 Oct 2024 13:48:08 -0700 Subject: [PATCH] Move sort order boilerplate to configuration class --- src/plugins/telemetryTable/TelemetryTable.js | 29 +++++-------------- .../TelemetryTableConfiguration.js | 24 +++++++++++++++ 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/plugins/telemetryTable/TelemetryTable.js b/src/plugins/telemetryTable/TelemetryTable.js index a72ce89d9f3..917cd9f5648 100644 --- a/src/plugins/telemetryTable/TelemetryTable.js +++ b/src/plugins/telemetryTable/TelemetryTable.js @@ -53,11 +53,6 @@ export default class TelemetryTable extends EventEmitter { this.outstandingRequests = 0; this.stalenessSubscription = {}; - this.sortOptions = { - key: this.openmct.time.getTimeSystem().key, - direction: ORDER.DESCENDING - }; - this.addTelemetryObject = this.addTelemetryObject.bind(this); this.removeTelemetryObject = this.removeTelemetryObject.bind(this); this.removeTelemetryCollection = this.removeTelemetryCollection.bind(this); @@ -135,15 +130,11 @@ export default class TelemetryTable extends EventEmitter { createTableRowCollections() { this.tableRows = new TableRowCollection(); - //Fetch any persisted default sort - const configSortOptions = this.configuration.getConfiguration().sortOptions; - - //If no persisted sort order, use the in-memory sort options - this.sortOptions = configSortOptions || this.sortOptions; + const sortOptions = this.configuration.getSortOptions(); this.updateRowLimit(); - this.tableRows.sortBy(this.sortOptions); + this.tableRows.sortBy(sortOptions); this.tableRows.on('resetRowsFromAllData', this.resetRowsFromAllData); } @@ -174,8 +165,8 @@ export default class TelemetryTable extends EventEmitter { this.removeTelemetryCollection(keyString); - let sortOptions = this.configuration.getConfiguration().sortOptions; - requestOptions.order = sortOptions?.direction ?? this.sortOptions.direction; + let sortOptions = this.configuration.getSortOptions(); + requestOptions.order = sortOptions.direction; if (this.telemetryMode === MODE.PERFORMANCE) { requestOptions.size = this.rowLimit; @@ -444,19 +435,13 @@ export default class TelemetryTable extends EventEmitter { } sortBy(sortOptions) { - this.sortOptions = sortOptions; + this.configuration.setSortOptions(sortOptions); if (this.telemetryMode === MODE.PERFORMANCE) { - this.tableRows.setSortOptions(this.sortOptions); + this.tableRows.setSortOptions(sortOptions); this.clearAndResubscribe(); } else { - this.tableRows.sortBy(this.sortOptions); - } - - if (this.openmct.editor.isEditing()) { - let configuration = this.configuration.getConfiguration(); - configuration.sortOptions = this.sortOptions; - this.configuration.updateConfiguration(configuration); + this.tableRows.sortBy(sortOptions); } } diff --git a/src/plugins/telemetryTable/TelemetryTableConfiguration.js b/src/plugins/telemetryTable/TelemetryTableConfiguration.js index 6b9af55f148..1a94c96d239 100644 --- a/src/plugins/telemetryTable/TelemetryTableConfiguration.js +++ b/src/plugins/telemetryTable/TelemetryTableConfiguration.js @@ -23,7 +23,11 @@ import { EventEmitter } from 'eventemitter3'; import _ from 'lodash'; +import { ORDER } from './constants'; + export default class TelemetryTableConfiguration extends EventEmitter { + #sortOptions; + constructor(domainObject, openmct, options) { super(); @@ -44,6 +48,26 @@ export default class TelemetryTableConfiguration extends EventEmitter { this.notPersistable = !this.openmct.objects.isPersistable(this.domainObject.identifier); } + getSortOptions() { + return ( + this.#sortOptions || + this.getConfiguration().sortOptions || { + key: this.openmct.time.getTimeSystem().key, + direction: ORDER.DESCENDING + } + ); + } + + setSortOptions(sortOptions) { + this.#sortOptions = sortOptions; + + if (this.openmct.editor.isEditing()) { + let configuration = this.getConfiguration(); + configuration.sortOptions = sortOptions; + this.updateConfiguration(configuration); + } + } + getConfiguration() { let configuration = this.domainObject.configuration || {}; configuration.hiddenColumns = configuration.hiddenColumns || {};