need to figure out ranger

This commit is contained in:
Scott Bell 2024-08-14 17:32:26 -05:00
parent 9e3e7394d2
commit dcc893880b
5 changed files with 27 additions and 21 deletions

View File

@ -18,12 +18,14 @@ export default class CompsManager extends EventEmitter {
this.#domainObject = domainObject;
}
addParameter(keyString) {
addParameter(telemetryObject) {
const keyString = this.#openmct.objects.makeKeyString(telemetryObject.identifier);
const metaData = this.#openmct.telemetry.getMetadata(telemetryObject);
const random4Digit = Math.floor(1000 + Math.random() * 9000);
this.#domainObject.configuration.comps.parameters.push({
keyString,
name: `New_Parameter_${random4Digit}`,
valueToUse: 'sin',
name: `${telemetryObject.name}_${random4Digit}`,
valueToUse: metaData.valueMetadatas[0].key,
testValue: 0
});
this.persist(this.#domainObject);
@ -225,7 +227,7 @@ export default class CompsManager extends EventEmitter {
(parameter) => parameter.keyString === keyString
);
if (!parameterExists) {
this.addParameter(keyString);
this.addParameter(telemetryObject);
}
};

View File

@ -32,23 +32,24 @@ onconnect = function (e) {
};
};
function getFullDataFrame(telemetryForComps) {
function getFullDataFrame(telemetryForComps, parameters) {
const dataFrame = {};
Object.keys(telemetryForComps).forEach((key) => {
const parameter = parameters.find((p) => p.keyString === key);
const dataSet = telemetryForComps[key];
const telemetryMap = new Map(dataSet.map((item) => [item.utc, item]));
const telemetryMap = new Map(dataSet.map((item) => [item[parameter.timeKey], item]));
dataFrame[key] = telemetryMap;
});
return dataFrame;
}
function calculateSubscription(telemetryForComps, parameters, expression) {
const dataFrame = getFullDataFrame(telemetryForComps);
const dataFrame = getFullDataFrame(telemetryForComps, parameters);
return calculate(dataFrame, parameters, expression);
}
function calculateRequest(telemetryForComps, parameters, expression) {
const dataFrame = getFullDataFrame(telemetryForComps);
const dataFrame = getFullDataFrame(telemetryForComps, parameters);
return calculate(dataFrame, parameters, expression);
}

View File

@ -21,8 +21,12 @@
*****************************************************************************/
export default class CompsMetadataProvider {
constructor(openmct) {
this.openmct = openmct;
#openmct = null;
#compsManagerPool = null;
constructor(openmct, compsManagerPool) {
this.#openmct = openmct;
this.#compsManagerPool = compsManagerPool;
}
supportsMetadata(domainObject) {
@ -30,7 +34,7 @@ export default class CompsMetadataProvider {
}
getDomains(domainObject) {
return this.openmct.time.getAllTimeSystems().map(function (ts, i) {
return this.#openmct.time.getAllTimeSystems().map(function (ts, i) {
return {
key: ts.key,
name: ts.name,
@ -43,6 +47,9 @@ export default class CompsMetadataProvider {
}
getMetadata(domainObject) {
const keyString = this.#openmct.objects.makeKeyString(domainObject.identifier);
const specificCompsManager = this.#compsManagerPool[keyString];
console.debug('📦 CompsMetadataProvider: getMetadata', specificCompsManager);
return {
values: this.getDomains().concat([
{
@ -53,14 +60,6 @@ export default class CompsMetadataProvider {
hints: {
range: 1
}
},
{
key: 'utc',
name: 'Time',
format: 'utc',
hints: {
domain: 1
}
}
])
};

View File

@ -125,7 +125,11 @@ export default class CompsTelemetryProvider {
onSharedWorkerMessage(event) {
const { type, result, callbackID, error } = event.data;
if (type === 'calculationSubscriptionResult' && this.#subscriptionCallbacks[callbackID]) {
if (
type === 'calculationSubscriptionResult' &&
this.#subscriptionCallbacks[callbackID] &&
result.length
) {
console.debug('📝 Shared worker subscription message:', event.data);
this.#subscriptionCallbacks[callbackID](result);
} else if (type === 'calculationRequestResult' && this.#requestPromises[callbackID]) {

View File

@ -51,7 +51,7 @@ export default function CompsPlugin() {
}
return true;
});
openmct.telemetry.addProvider(new CompsMetadataProvider(openmct));
openmct.telemetry.addProvider(new CompsMetadataProvider(openmct, compsManagerPool));
openmct.telemetry.addProvider(new CompsTelemetryProvider(openmct, compsManagerPool));
openmct.objectViews.addProvider(new CompsViewProvider(openmct, compsManagerPool));
};