From 9e3e7394d293ec4e096b068afc7ff4aee9c78529 Mon Sep 17 00:00:00 2001 From: Scott Bell Date: Wed, 14 Aug 2024 16:34:37 -0500 Subject: [PATCH] ui works kinda --- src/plugins/comps/CompsManager.js | 14 +++--- src/plugins/comps/CompsMathWorker.js | 22 ++++++---- src/plugins/comps/CompsTelemetryProvider.js | 12 +++--- src/plugins/comps/components/CompsView.vue | 48 ++++++++++----------- src/styles/vue-styles.scss | 1 + 5 files changed, 51 insertions(+), 46 deletions(-) diff --git a/src/plugins/comps/CompsManager.js b/src/plugins/comps/CompsManager.js index 41fefe085d..5880684b5e 100644 --- a/src/plugins/comps/CompsManager.js +++ b/src/plugins/comps/CompsManager.js @@ -26,7 +26,7 @@ export default class CompsManager extends EventEmitter { valueToUse: 'sin', testValue: 0 }); - this.persist(); + this.persist(this.#domainObject); } getParameters() { @@ -65,15 +65,15 @@ export default class CompsManager extends EventEmitter { this.persist(); } - persist() { + persist(passedDomainObject) { this.#openmct.objects.mutate( this.#domainObject, 'configuration.comps', - this.#domainObject.configuration.comps + passedDomainObject.configuration.comps ); console.debug( `📦 CompsManager: persisted domain object`, - this.#domainObject.configuration.comps + passedDomainObject.configuration.comps ); } @@ -133,9 +133,9 @@ export default class CompsManager extends EventEmitter { return dataFrame; } - #removeTelemetryObject = (telemetryObject) => { - console.debug('❌ CompsManager: removeTelemetryObject', telemetryObject); - const keyString = this.#openmct.objects.makeKeyString(telemetryObject.identifier); + #removeTelemetryObject = (telemetryObjectIdentifier) => { + console.debug('❌ CompsManager: removeTelemetryObject', telemetryObjectIdentifier); + const keyString = this.#openmct.objects.makeKeyString(telemetryObjectIdentifier); delete this.#telemetryObjects[keyString]; this.#telemetryCollections[keyString]?.destroy(); delete this.#telemetryCollections[keyString]; diff --git a/src/plugins/comps/CompsMathWorker.js b/src/plugins/comps/CompsMathWorker.js index 7d9c78673d..0db335ff15 100644 --- a/src/plugins/comps/CompsMathWorker.js +++ b/src/plugins/comps/CompsMathWorker.js @@ -7,24 +7,28 @@ onconnect = function (e) { port.onmessage = function (event) { console.debug('🧮 Comps Math Worker message:', event); + const { type, callbackID, telemetryForComps, expression, parameters } = event.data; + let responseType = 'unknown'; + let error = null; + let result = []; try { - const { type, callbackID, telemetryForComps, expression, parameters } = event.data; if (type === 'calculateRequest') { - const result = calculateRequest(telemetryForComps, parameters, expression); - port.postMessage({ type: 'calculationRequestResult', callbackID, result }); + responseType = 'calculationRequestResult'; + result = calculateRequest(telemetryForComps, parameters, expression); } else if (type === 'calculateSubscription') { - const result = calculateSubscription(telemetryForComps, parameters, expression); - if (result.length) { - port.postMessage({ type: 'calculationSubscriptionResult', callbackID, result }); - } + responseType = 'calculationSubscriptionResult'; + result = calculateSubscription(telemetryForComps, parameters, expression); } else if (type === 'init') { port.postMessage({ type: 'ready' }); + return; } else { throw new Error('Invalid message type'); } - } catch (error) { - port.postMessage({ type: 'error', error }); + } catch (errorInCalculation) { + error = errorInCalculation; + console.error('🧮 Comps Math Worker error:', errorInCalculation); } + port.postMessage({ type: responseType, callbackID, result, error }); }; }; diff --git a/src/plugins/comps/CompsTelemetryProvider.js b/src/plugins/comps/CompsTelemetryProvider.js index d6e292f408..0446c064fe 100644 --- a/src/plugins/comps/CompsTelemetryProvider.js +++ b/src/plugins/comps/CompsTelemetryProvider.js @@ -32,7 +32,7 @@ export default class CompsTelemetryProvider { constructor(openmct, compsManagerPool) { this.#openmct = openmct; this.#compsManagerPool = compsManagerPool; - this.#startSharedWorker(); + this.#openmct.on('start', this.#startSharedWorker.bind(this)); } isTelemetryObject(domainObject) { @@ -124,16 +124,18 @@ export default class CompsTelemetryProvider { } onSharedWorkerMessage(event) { - const { type, result, callbackID } = event.data; + const { type, result, callbackID, error } = event.data; if (type === 'calculationSubscriptionResult' && this.#subscriptionCallbacks[callbackID]) { console.debug('📝 Shared worker subscription message:', event.data); this.#subscriptionCallbacks[callbackID](result); } else if (type === 'calculationRequestResult' && this.#requestPromises[callbackID]) { console.debug('📝 Shared worker request message:', event.data); - this.#requestPromises[callbackID].resolve(result); + if (error) { + this.#requestPromises[callbackID].reject(error); + } else { + this.#requestPromises[callbackID].resolve(result); + } delete this.#requestPromises[callbackID]; - } else if (type === 'error') { - console.error('❌ Shared worker error:', event.data); } } diff --git a/src/plugins/comps/components/CompsView.vue b/src/plugins/comps/components/CompsView.vue index d8cb4f349e..8d03860b5c 100644 --- a/src/plugins/comps/components/CompsView.vue +++ b/src/plugins/comps/components/CompsView.vue @@ -54,28 +54,26 @@ class="hint" :class="{ 's-status-icon-warning-lo': !domainObject.configuration.comps.parameters }" > -
-
- Reference - - - {{ compsManager.getTelemetryObjectForParameter(parameter.keyString).name }} - - - -
+
+ Reference + + + {{ compsManager.getTelemetryObjectForParameter(parameter.keyString).name }} + + +
{ telemetryProcessor(data); }); outputTelemetryCollection.on('clear', clearData); - await outputTelemetryCollection.load(); await compsManager.load(); parameters.value = compsManager.getParameters(); expression.value = compsManager.getExpression(); + outputTelemetryCollection.load(); }); function persistParameters() { domainObject.configuration.comps.parameters = parameters.value; - compsManager.persist(); + compsManager.persist(domainObject); } function persistExpression() { domainObject.configuration.comps.expression = expression.value; - compsManager.persist(); + compsManager.persist(domainObject); } function applyTestData() {} diff --git a/src/styles/vue-styles.scss b/src/styles/vue-styles.scss index 295b3585b1..c0b15ec14c 100644 --- a/src/styles/vue-styles.scss +++ b/src/styles/vue-styles.scss @@ -2,6 +2,7 @@ @import '../api/overlays/components/overlay-component.scss'; @import '../api/tooltips/components/tooltip-component.scss'; @import '../plugins/condition/components/conditionals.scss'; +@import '../plugins/comps/components/comps.scss'; @import '../plugins/conditionWidget/components/condition-widget.scss'; @import '../plugins/condition/components/inspector/conditional-styles.scss'; @import '../plugins/displayLayout/components/box-and-line-views';