rudimentary expression editor

This commit is contained in:
Scott Bell 2024-08-12 17:18:25 -05:00
parent 0113ec08db
commit a0a2ead5e7
4 changed files with 27 additions and 3 deletions

View File

@ -24,6 +24,14 @@ export default class CompsManager extends EventEmitter {
this.#telemetryLoadedPromises = []; this.#telemetryLoadedPromises = [];
} }
persist() {
this.#openmct.objects.mutate(
this.#domainObject,
'configuration.comps',
this.#domainObject.configuration.comps
);
}
getTelemetryObjects() { getTelemetryObjects() {
return this.#telemetryObjects; return this.#telemetryObjects;
} }
@ -132,7 +140,7 @@ export default class CompsManager extends EventEmitter {
} }
getExpression() { getExpression() {
return 'a + b '; return this.#domainObject.configuration.expression;
} }
#waitForDebounce() { #waitForDebounce() {

View File

@ -68,6 +68,7 @@ export default class CompsTelemetryProvider {
'🏟️ 2 Telemetry for comps:', '🏟️ 2 Telemetry for comps:',
specificCompsManager.requestUnderlyingTelemetry() specificCompsManager.requestUnderlyingTelemetry()
); );
console.debug('🏟️ expression:', expression);
this.#requestPromises[callbackID] = { resolve, reject }; this.#requestPromises[callbackID] = { resolve, reject };
this.#sharedWorker.port.postMessage({ this.#sharedWorker.port.postMessage({
type: 'calculateRequest', type: 'calculateRequest',

View File

@ -65,7 +65,17 @@
<div class="c-cs__header c-section__header"> <div class="c-cs__header c-section__header">
<div class="c-cs__header-label c-section__label">Expression</div> <div class="c-cs__header-label c-section__label">Expression</div>
</div> </div>
<div class="c-cs__content"></div> <div class="c-cs__content">
<div v-if="!isEditing">{{ domainObject.configuration.expression }}</div>
<div v-else>
<textarea
v-model="domainObject.configuration.expression"
class="c-cs__expression__input"
placeholder="Enter an expression"
@change="compsManager.persist"
></textarea>
</div>
</div>
</section> </section>
</div> </div>
</template> </template>

View File

@ -35,7 +35,12 @@ export default function CompsPlugin() {
creatable: true, creatable: true,
cssClass: 'icon-telemetry', cssClass: 'icon-telemetry',
initialize: function (domainObject) { initialize: function (domainObject) {
domainObject.configuration = {}; domainObject.configuration = {
comps: {
expression: '',
parameters: []
}
};
domainObject.composition = []; domainObject.composition = [];
domainObject.telemetry = {}; domainObject.telemetry = {};
} }