Open larkin opened 7 years ago
Want me to work on this @larkin ?
@ev1stensberg , you beat me to this! I've made a very basic start following the Open MCT integration tutorial. I tried pushing my branch but realised I hadn't signed the ICLA. Once I have access, I'll push up what I have.
@tobiasbrown @ev1stensberg work on it as you like, let us know if you have questions.
@tobiasbrown if you wanna work on this, I'll let you 👍 Available for back-up assistance if you need anything!
I've been trying to use the xml2js library but can't seem to get the right configuration. I end up with the following error in the Console:
Uncaught Error: Module name "defaults" has not been loaded yet for context: _. Use require([])
I've tried to work through some suggestions in the requirejs documentation but haven't had any success. Do I need to add a path in the requirejs.config for every dependency that xml2js references? You can see what I'm trying to do in this commit.
Where am I going wrong @larkin and @ev1stensberg ?
On a side note, is this plugin better off in a separate repo like the Kerbal and YAMCS plugins?
@tobiasbrown Try looking at rollup.config.js
in the yamcs plugin. You'd need to add external dependencies in either require.js config or rollup
Thanks @ev1stensberg. I managed to use plain old JavaScript to achieve what I wanted to but I will have a look at the YAMCS config for future reference.
@larkin, what's the best approach to dynamically add and remove new domain objects like DSN signals and targets as new data comes in?
I've tried to update the object tree by calling:
openmct.objects.mutate(parentDomainObject, 'composition', newComposition);
This mutation results in a save error (possibly related to #1382?).
I've also tried:
openmct.composition.get(parentDomainObject).add(newChildDomainObject, false);
This calls add
on my composition provider but I'm not sure what should happen next? A call to load
?
@tobiasbrown This seems to have slipped through the cracks and gone unanswered for a while, apologies for that.
The short answer right now is that there is not a great way to support this, so for first pass at this static composition will work.
The longer answer is that in future this will work via events emitted by composition providers. The composition provider interface will support registering listeners for added
and removed
events. This will allow composition providers to track listeners and to alert them when the composition changes. The wiring for this is in place in the API, but the object tree currently does not listen for changes emitted by composition providers, so it will not be updated.
@tobiasbrown Hi! Just wanted to check in on this issue. Aside from the dynamic composition issue, is there any way we can help you out on this?
I can pick up on this if wanted
Thanks for checking in @akhenry and your previous response in regards to the composition of dynamic objects. I was originally thinking of creating domain objects for each signal type but maybe the signal data can be easily expressed under each dish.
Apologies for the lack of action on this! I'll try and submit a PR soon.
Telemetry table for a dish's antenna
Telemetry table for a dish's signals
Telemetry table for a dish's targets
@tobiasbrown
Thanks for all of your work with this, it's looking really awesome.
Hi @tobiasbrown 👋. Good to see dev work is going strong. Let me know if you need a helping hand.
Hi @tobiasbrown 👋. Good to see dev work is going strong. Let me know if you need a helping hand.
Thanks @naknode , I think I'm almost ready to open a PR for this. Will ask for a review when I do.
@akhenry
I discovered the telemetry formats in the API documentation and have experimented with them to display units. I thought this might be better than adding units to the column headers as some of these units can change (eg. data rate, power).
The tables are displaying data but the individual telemetry items are not displaying any values. Do you think this might be related to #2258 ?
@tobiasbrown Any update on this? What is left to wrap this PR up?
Thanks for the prompt @naknode . I've had a look at the problem I was experiencing displaying data for individual telemetry items with fresh eyes and fixed some key names in my dictionary. Stay tuned for the PR.
@tobiasbrown This seems to have slipped through the cracks and gone unanswered for a while, apologies for that.
The short answer right now is that there is not a great way to support this, so for first pass at this static composition will work.
The longer answer is that in future this will work via events emitted by composition providers. The composition provider interface will support registering listeners for
added
andremoved
events. This will allow composition providers to track listeners and to alert them when the composition changes. The wiring for this is in place in the API, but the object tree currently does not listen for changes emitted by composition providers, so it will not be updated.
Hi @tobiasbrown, are you aware of any plans to implement support for dynamic composition/object providers. In a comment you posted a few years ago, you mentioned that the Composition API does emit events that can be listened to. Therefore allowing other providers to essentially be 'regenerated' dynamically.
Here are some other examples of where the inability to have dynamic providers can be seen: https://github.com/nasa/openmct/issues/1656#issuecomment-414799410 https://github.com/nasa/openmct/issues/2546
Sorry for the late reply @pharapeti. This repo has changed significantly since I last looked at dynamic composition providers and I'm not sure whether it's possible or not. Perhaps @akhenry or @jvigliotta might be able to help?
There's a website which shows you real time status for DSN called DSN now. It would be great to write a plugin that integrates this telemetry data into Open MCT.
https://eyes.nasa.gov/dsn/dsn.html