mirror of
https://github.com/nasa/openmct.git
synced 2025-02-25 19:11:35 +00:00
memory conserved
This commit is contained in:
parent
446c8119c3
commit
aa8750eb97
@ -115,6 +115,8 @@ export default class TelemetryCollection extends EventEmitter {
|
||||
}
|
||||
|
||||
this.removeAllListeners();
|
||||
console.debug('🔥 Telemetry Collection destroyed', this.domainObject?.identifier?.key);
|
||||
this.loaded = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -157,7 +159,6 @@ export default class TelemetryCollection extends EventEmitter {
|
||||
options
|
||||
);
|
||||
historicalData = await historicalProvider.request(this.domainObject, modifiedOptions);
|
||||
console.debug('👴 Requesting historical telemetry data...', historicalData);
|
||||
} catch (error) {
|
||||
if (error.name !== 'AbortError') {
|
||||
console.error('Error requesting telemetry data...');
|
||||
@ -186,7 +187,10 @@ export default class TelemetryCollection extends EventEmitter {
|
||||
const options = { ...this.options };
|
||||
//We always want to receive all available values in telemetry tables.
|
||||
options.strategy = this.openmct.telemetry.SUBSCRIBE_STRATEGY.BATCH;
|
||||
|
||||
console.debug(
|
||||
'🔊 Telemetry Collection Subscribing to telemetry data...',
|
||||
this.domainObject?.identifier?.key
|
||||
);
|
||||
this.unsubscribe = this.openmct.telemetry.subscribe(
|
||||
this.domainObject,
|
||||
(datum) => this._processNewTelemetry(datum),
|
||||
|
@ -8,6 +8,8 @@ export default class CompsManager extends EventEmitter {
|
||||
#telemetryCollections = {};
|
||||
#dataFrame = {};
|
||||
#telemetryLoadedPromises = [];
|
||||
#loaded = false;
|
||||
#telemetryProcessors = {};
|
||||
|
||||
constructor(openmct, domainObject) {
|
||||
super();
|
||||
@ -83,21 +85,33 @@ export default class CompsManager extends EventEmitter {
|
||||
}
|
||||
|
||||
async load() {
|
||||
await this.#loadComposition();
|
||||
await Promise.all(this.#telemetryLoadedPromises);
|
||||
this.#telemetryLoadedPromises = [];
|
||||
if (!this.#loaded) {
|
||||
await this.#loadComposition();
|
||||
await Promise.all(this.#telemetryLoadedPromises);
|
||||
this.#telemetryLoadedPromises = [];
|
||||
this.#loaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
startListeningToUnderlyingTelemetry() {
|
||||
console.debug('🎉 CompsManager: startListeningToUnderlyingTelemetry');
|
||||
Object.keys(this.#telemetryCollections).forEach((keyString) => {
|
||||
if (!this.#telemetryCollections[keyString].loaded) {
|
||||
const specificTelemetryProcessor = this.#getTelemetryProcessor(keyString);
|
||||
this.#telemetryCollections[keyString].on('add', specificTelemetryProcessor);
|
||||
this.#telemetryCollections[keyString].on('clear', this.#clearData);
|
||||
this.#telemetryCollections[keyString].load();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
stopListeningToUnderlyingTelemetry() {
|
||||
console.debug('🔇 CompsManager: stopListeningToUnderlyingTelemetry');
|
||||
Object.keys(this.#telemetryCollections).forEach((keyString) => {
|
||||
const specificTelemetryProcessor = this.#telemetryProcessors[keyString];
|
||||
delete this.#telemetryProcessors[keyString];
|
||||
this.#telemetryCollections[keyString].off('add', specificTelemetryProcessor);
|
||||
this.#telemetryCollections[keyString].off('clear', this.#clearData);
|
||||
this.#telemetryCollections[keyString].destroy();
|
||||
});
|
||||
}
|
||||
@ -112,7 +126,6 @@ export default class CompsManager extends EventEmitter {
|
||||
this.#composition.on('add', this.#addTelemetryObject);
|
||||
this.#composition.on('remove', this.#removeTelemetryObject);
|
||||
await this.#composition.load();
|
||||
console.debug('📚 Composition loaded');
|
||||
}
|
||||
}
|
||||
|
||||
@ -169,6 +182,18 @@ export default class CompsManager extends EventEmitter {
|
||||
return underlyingTelemetry;
|
||||
}
|
||||
|
||||
#getTelemetryProcessor(keyString) {
|
||||
if (this.#telemetryProcessors[keyString]) {
|
||||
return this.#telemetryProcessors[keyString];
|
||||
}
|
||||
|
||||
const telemetryProcessor = (newTelemetry) => {
|
||||
this.emit('underlyingTelemetryUpdated', { [keyString]: newTelemetry });
|
||||
};
|
||||
this.#telemetryProcessors[keyString] = telemetryProcessor;
|
||||
return telemetryProcessor;
|
||||
}
|
||||
|
||||
#telemetryProcessor = (newTelemetry, keyString) => {
|
||||
this.emit('underlyingTelemetryUpdated', { [keyString]: newTelemetry });
|
||||
};
|
||||
@ -187,9 +212,7 @@ export default class CompsManager extends EventEmitter {
|
||||
this.#telemetryCollections[keyString] =
|
||||
this.#openmct.telemetry.requestCollection(telemetryObject);
|
||||
|
||||
this.#telemetryCollections[keyString].on('add', (data) => {
|
||||
this.#telemetryProcessor(data, keyString);
|
||||
});
|
||||
this.#telemetryCollections[keyString].on('add', this.#getTelemetryProcessor(keyString));
|
||||
this.#telemetryCollections[keyString].on('clear', this.#clearData);
|
||||
const telemetryLoadedPromise = this.#telemetryCollections[keyString].load();
|
||||
this.#telemetryLoadedPromises.push(telemetryLoadedPromise);
|
||||
|
@ -53,7 +53,6 @@ export default class CompsMetadataProvider {
|
||||
this.#openmct,
|
||||
this.#compsManagerPool
|
||||
);
|
||||
console.debug('📦 CompsMetadataProvider: getMetadata', specificCompsManager);
|
||||
// if there are any parameters, grab the first one's timeMetaData
|
||||
const timeMetaData = specificCompsManager?.getParameters()[0]?.timeMetaData;
|
||||
const metaDataToReturn = {
|
||||
|
@ -123,9 +123,7 @@ defineProps({
|
||||
onBeforeMount(async () => {
|
||||
console.debug('🚀 CompsView: onMounted with compsManager', compsManager);
|
||||
outputTelemetryCollection = openmct.telemetry.requestCollection(domainObject);
|
||||
outputTelemetryCollection.on('add', (data) => {
|
||||
telemetryProcessor(data);
|
||||
});
|
||||
outputTelemetryCollection.on('add', telemetryProcessor);
|
||||
outputTelemetryCollection.on('clear', clearData);
|
||||
await compsManager.load();
|
||||
parameters.value = compsManager.getParameters();
|
||||
@ -133,6 +131,12 @@ onBeforeMount(async () => {
|
||||
outputTelemetryCollection.load();
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
outputTelemetryCollection.off('add', telemetryProcessor);
|
||||
outputTelemetryCollection.off('clear', clearData);
|
||||
outputTelemetryCollection.destroy();
|
||||
});
|
||||
|
||||
function persistParameters() {
|
||||
domainObject.configuration.comps.parameters = parameters.value;
|
||||
compsManager.persist(domainObject);
|
||||
@ -153,8 +157,4 @@ function telemetryProcessor(data) {
|
||||
function clearData() {
|
||||
currentCompOutput.value = null;
|
||||
}
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
outputTelemetryCollection.destroy();
|
||||
});
|
||||
</script>
|
||||
|
Loading…
x
Reference in New Issue
Block a user