add icons and fix errant telemetry

This commit is contained in:
Scott Bell 2024-09-04 15:28:00 +02:00
parent 1c68c7e044
commit 5894363ba5
5 changed files with 40 additions and 14 deletions

View File

@ -485,9 +485,9 @@ export default class TelemetryCollection extends EventEmitter {
this.boundedTelemetry = []; this.boundedTelemetry = [];
this.futureBuffer = []; this.futureBuffer = [];
this.emit('clear'); const telemetryLoadPromise = this._requestHistoricalTelemetry();
this._requestHistoricalTelemetry(); this.emit('clear', telemetryLoadPromise);
} }
/** /**

View File

@ -9,12 +9,14 @@ export default class CompsManager extends EventEmitter {
#dataFrame = {}; #dataFrame = {};
#telemetryLoadedPromises = []; #telemetryLoadedPromises = [];
#loaded = false; #loaded = false;
#compositionLoaded = false;
#telemetryProcessors = {}; #telemetryProcessors = {};
constructor(openmct, domainObject) { constructor(openmct, domainObject) {
super(); super();
this.#openmct = openmct; this.#openmct = openmct;
this.#domainObject = domainObject; this.#domainObject = domainObject;
this.clearData = this.clearData.bind(this);
} }
isValid() { isValid() {
@ -110,13 +112,16 @@ export default class CompsManager extends EventEmitter {
this.#domainObject = passedDomainObject; this.#domainObject = passedDomainObject;
} }
isLoaded() { isReady() {
return this.#loaded; return this.isValid() && this.#loaded;
} }
async load() { async load() {
if (!this.#loaded) { if (!this.#compositionLoaded) {
await this.#loadComposition(); await this.#loadComposition();
this.#compositionLoaded = true;
}
if (!this.#loaded) {
await Promise.all(this.#telemetryLoadedPromises); await Promise.all(this.#telemetryLoadedPromises);
this.#telemetryLoadedPromises = []; this.#telemetryLoadedPromises = [];
this.#loaded = true; this.#loaded = true;
@ -130,7 +135,7 @@ export default class CompsManager extends EventEmitter {
if (!this.#telemetryCollections[keyString].loaded) { if (!this.#telemetryCollections[keyString].loaded) {
const specificTelemetryProcessor = this.#getTelemetryProcessor(keyString); const specificTelemetryProcessor = this.#getTelemetryProcessor(keyString);
this.#telemetryCollections[keyString].on('add', specificTelemetryProcessor); this.#telemetryCollections[keyString].on('add', specificTelemetryProcessor);
this.#telemetryCollections[keyString].on('clear', this.#clearData); this.#telemetryCollections[keyString].on('clear', this.clearData);
this.#telemetryCollections[keyString].load(); this.#telemetryCollections[keyString].load();
} }
}); });
@ -142,7 +147,7 @@ export default class CompsManager extends EventEmitter {
const specificTelemetryProcessor = this.#telemetryProcessors[keyString]; const specificTelemetryProcessor = this.#telemetryProcessors[keyString];
delete this.#telemetryProcessors[keyString]; delete this.#telemetryProcessors[keyString];
this.#telemetryCollections[keyString].off('add', specificTelemetryProcessor); this.#telemetryCollections[keyString].off('add', specificTelemetryProcessor);
this.#telemetryCollections[keyString].off('clear', this.#clearData); this.#telemetryCollections[keyString].off('clear', this.clearData);
this.#telemetryCollections[keyString].destroy(); this.#telemetryCollections[keyString].destroy();
}); });
} }
@ -236,8 +241,10 @@ export default class CompsManager extends EventEmitter {
this.emit('underlyingTelemetryUpdated', { [keyString]: newTelemetry }); this.emit('underlyingTelemetryUpdated', { [keyString]: newTelemetry });
}; };
#clearData() { clearData(telemetryLoadedPromise) {
console.debug('Clear Data'); console.debug('💨 Clear Data fired, need to wait for all telemetry collections to load');
this.#loaded = false;
this.#telemetryLoadedPromises.push(telemetryLoadedPromise);
} }
getOutputFormat() { getOutputFormat() {
@ -256,7 +263,7 @@ export default class CompsManager extends EventEmitter {
this.#openmct.telemetry.requestCollection(telemetryObject); this.#openmct.telemetry.requestCollection(telemetryObject);
this.#telemetryCollections[keyString].on('add', this.#getTelemetryProcessor(keyString)); this.#telemetryCollections[keyString].on('add', this.#getTelemetryProcessor(keyString));
this.#telemetryCollections[keyString].on('clear', this.#clearData); this.#telemetryCollections[keyString].on('clear', this.clearData);
const telemetryLoadedPromise = this.#telemetryCollections[keyString].load(); const telemetryLoadedPromise = this.#telemetryCollections[keyString].load();
this.#telemetryLoadedPromises.push(telemetryLoadedPromise); this.#telemetryLoadedPromises.push(telemetryLoadedPromise);
console.debug('📢 CompsManager: loaded telemetry collection', keyString); console.debug('📢 CompsManager: loaded telemetry collection', keyString);

View File

@ -77,17 +77,17 @@ export default class CompsTelemetryProvider {
callbackID callbackID
}; };
this.#sharedWorker.port.postMessage(payload); this.#sharedWorker.port.postMessage(payload);
console.debug('🧮 Comps Telemetry Provider: sending request request (bleh)', payload);
}); });
}); });
} }
#computeOnNewTelemetry(specificCompsManager, newTelemetry, callbackID) { #computeOnNewTelemetry(specificCompsManager, newTelemetry, callbackID) {
if (!specificCompsManager.isValid() || !specificCompsManager.isLoaded()) { if (!specificCompsManager.isReady()) {
return; return;
} }
const expression = specificCompsManager.getExpression(); const expression = specificCompsManager.getExpression();
const telemetryForComps = specificCompsManager.getFullDataFrame(newTelemetry); const telemetryForComps = specificCompsManager.getFullDataFrame(newTelemetry);
// TODO: this is nasty. instead figure out why a proxy is getting in here
const parameters = JSON.parse(JSON.stringify(specificCompsManager.getParameters())); const parameters = JSON.parse(JSON.stringify(specificCompsManager.getParameters()));
const payload = { const payload = {
type: 'calculateSubscription', type: 'calculateSubscription',
@ -96,7 +96,7 @@ export default class CompsTelemetryProvider {
parameters, parameters,
callbackID callbackID
}; };
console.debug('🧮 Comps Telemetry Provider: sending calculation request', payload); console.debug('🧮 Comps Telemetry Provider: sending subscription request', payload);
this.#sharedWorker.port.postMessage(payload); this.#sharedWorker.port.postMessage(payload);
} }

View File

@ -62,7 +62,17 @@
<ObjectPath <ObjectPath
:domain-object="compsManager.getTelemetryObjectForParameter(parameter.keyString)" :domain-object="compsManager.getTelemetryObjectForParameter(parameter.keyString)"
/> />
{{ compsManager.getTelemetryObjectForParameter(parameter.keyString)?.name }} <div class="parametery-telemetry">
<div
class="parameter-telemetry-icon"
:class="
getIconForType(compsManager.getTelemetryObjectForParameter(parameter.keyString))
"
/>
<div class="parametery-telemetry-name">
{{ compsManager.getTelemetryObjectForParameter(parameter.keyString)?.name }}
</div>
</div>
<!-- drop down to select value from telemetry --> <!-- drop down to select value from telemetry -->
<select v-if="isEditing" v-model="parameter.valueToUse" @change="updateParameters"> <select v-if="isEditing" v-model="parameter.valueToUse" @change="updateParameters">
<option <option
@ -176,6 +186,10 @@ function updateParameters() {
applyTestData(); applyTestData();
} }
function getIconForType(telemetryObject) {
return openmct.types.get(telemetryObject.type).definition.cssClass;
}
function toggleTestData() { function toggleTestData() {
testDataApplied.value = !testDataApplied.value; testDataApplied.value = !testDataApplied.value;
if (testDataApplied.value) { if (testDataApplied.value) {

View File

@ -30,6 +30,11 @@
padding-top: 10px; padding-top: 10px;
} }
.parametery-telemetry {
display: flex;
flex-direction: row;
}
.expression-input { .expression-input {
width: 100%; width: 100%;
margin-right: 10px; margin-right: 10px;