Code Monkey home page Code Monkey logo

ait-gui's People

Contributors

aywaldron avatar bkseto avatar futabay avatar jannismain avatar jasonmlkang avatar jordanpadams avatar lorsposto avatar mejiro-mcqueen avatar mjjoyce avatar nttoole avatar seanlu99 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ait-gui's Issues

Additional page routes and Bottle templates

@jordanpadams ran into an issue with templates rendering when trying to make an additional page. Adding another page (such as /query.html) that contains a template results in the template rendering as the include tag instead of the content.

% include('navbar.html')

Not sure if this is related to the way we're handling pages (currently only / returns a page) and static files, file naming conventions (E.g., .tpl instead of .html), or both.

Telemetry Playback

Add UI support for telemetry playback and viewing a snapshot of telemetry at a particular point in time.

Update Time display formats to reflect changes in Clock format

It would be great if we could update the time display formats to match the display format of the Clock component. For instance, if the user changes from the default GPS time display to UTC time on the clock, updating the message timestamps to display in the same formats would be helpful for consistency. Should consider if this would be confusing for users considering that any time telemetry fields would not update to reflect this change.

Potential update points:

  • Messages time label
  • MnemonicSearch time display/log value

Bad ait-plot-config JSON object crashes the GUI

I was missing a quote in one of my plot configs, and it started throwing continuous errors. We should probably catch a bad JSON object and just move on.

Config

                <ait-plot-config>
                  {
                    "foobar": "CCE AC Voltage,
                    "ylabel": "Voltage (DN)"
                  }
                </ait-plot-config>

Error

Uncaught SyntaxError: Unexpected token 
 in JSON at position 67
    at JSON.parse (<anonymous>)
    at Object.processTag (ait.bundle.js:22937)
    at ait.bundle.js:23006
    at Array.forEach (<anonymous>)
    at Object.oninit (ait.bundle.js:23005)
    at initLifecycle (ait.bundle.js:1034)
    at initComponent (ait.bundle.js:577)
    at createComponent (ait.bundle.js:583)
    at createNode (ait.bundle.js:499)
    at createNodes (ait.bundle.js:483)

Display command being created to the user

Consider displaying the typed out command as it's being constructed in the command configuration component somewhere near the send button. This would mirror how the command would look if the user was to type it out in the commanding input field

Duplicate script execution from UI

Ran into an issue with the monitoring UI where two instances of the same script executed when clicking the run button from the script control widget. The only way I could duplicate this was by double clicking the run button quickly before events propagated from the backend to the frontend and disabled the button functionality.

We should update 2 things on this. First, the backend should prevent attempts at running a script when another script is executing. This is arguably more useful to avoid two people from trying to run scripts and overlapping, but it also solves the encountered problem. Second, the execution control should be more intelligent about state tracking and preventing duplicate reactions. At the minimum, this should be on the script execute button.

Add option to bliss-field so field name is rendered

From a conversation with @jordanpadams regarding getting the telemetry tooltips to display over the field name:

It wouldn't hurt to have a flag on bliss-field that causes it to render the usual field name: tag that we put before a field. This would potentially help us keep the html more compact and it would allow us to display the telemetry tooltip/popup when the user hovers over the field name

Add when clause support

Add when clause support to the GUI. This includes when clauses at the Field level and DN-to-EU level.

HTTP connection handling and browser limitations

The current approach to SSE connections means that any UI component requiring backend connections are unusable if a user has the GUI open in 3 or more tabs. We should investigate alternatives if this is a common enough use case.

  • Subdomains to avoid this limit. Will likely require switching to Flask (bottlepy/bottle#1019)
  • Reuse the same connections if the user opens a new tab through the GUI. Something with window.opener perhaps?

Update package versions so npm ci is usable

TravisCI seems to have recently switched to defaulting to npm ci for installs if package-lock.json is present. Some of our versions aren't pinned properly so this errors out at the moment and breaks the builds.

npm ERR!
npm ERR! Invalid: lock file's [email protected] does not satisfy sinon@^1.17.6
npm ERR!

Better string type display

Add better support for string-type telemetry point display in the GUI. Displaying useful characters instead of numerical values would be better.

Script component cleanup

Need to remove extraneous script components (E.g., ScriptLoadModal) and merge unnecessarily split components (E.g., ScriptLoadButton with ScriptSelect)

Update CHANGELOG

The CHANGELOG changes for the 1.0.0 release is missing previous release changes. Need to call it with the --since-tag version from the docs.

Maintaining backend state and updating the frontend

Our current backend <-> frontend communication paradigms can result in disconnects between the frontend(s) and backend, specifically if a client drops or a new client joins midway through some backend operation.

  • Field values are updated each packet receipt if the Field is present in the received packet and the value has changed in comparison to the previously cached packet. If a field doesn't update after a client connects they will see N/A and have no info on Limit status. We used to get around this by replaying the last few minutes of telemetry through the browser to "catch the client up" but that has since been removed. The plans to move limit checkout out of the frontend would alleviate part of this issue
  • If a long sequence is run and a client disconnects / connects midway through execution they will have no information regarding the current "in execution" state. This means that commanding and sequencing will not be properly disabled and the client will remain out of sync until another event can pull it up to the latest state.
  • Scripts suffer from a similar problem as the above. If a client drops / joins midway through script execution there is no way to control / interact with the previously executed script. If you had a script that required user input to stop (via abort or a UI popup) you could potentially end up with no way of stopping it outside of restarting the backend.
  • UI notifications (I.e., ui.confirm and the like) toggle a modal via the util.Modal component. Clients that join after the corresponding events that trigger the modal have fired will not see the modal. Similar to the scripts above, if a modal is required for user interaction (E.g., to continue script execution) you could end up needing to reboot the backend to regain control.

GUI Plot seems to drop packets

I'm sending packets (each 270 bytes) from a remote machine to another machine running AIT. When I plot the sequence count from the space packet header not all of the packets are plotted. I've verified with Wireshark that all of the packets are being sent and the AIT machine receives all of the packets. I also ran bliss-bsc and looking at the pcap file all of the packets are there. I've attached a picture of the plot, in this one there should be 32 packets.

screenshot from 2018-04-20 14-20-24

Flesh out TlmQuery tools

Per @jordanpadams

  • Add Start / Stop Time defaults to GPS Epoch and utc.NOW() as defaults
  • Allow upload of TLM list
  • Allow selection of TLM list from some directory in our repo (subsystem leads can deliver these to us)
  • Figure out another way to specify data path. Will become moot point when we have database backend, but the data path config doesn't really work if you have other PCAPs that are not 1553 (i.e. all our LEHX data). I pointed to a datapath /gds/int/data/oco3-sim1/2018/ which caused it to try to query all the LEHX data as well.

Mnemonic word split is counterintuitive

The current word splitting in the mnemonic search overlooks some expected cases when splitting words, such as CamelCasing, which makes it clunky to use.

For instance, AnalogsVoltage_PCE_VCC would not be located by searching for Voltage. However, searching for just V would pick it up due to VCC and the V in Voltage would be marked as part of search match (see below).

screen shot 2018-03-28 at 06 34 54

Expanding the above search to Vo would result in the result getting dropped from the results list

Sort script file list

The script file list is sorted by directory vs file but is jumbled beyond that. Need to fix the sorting so the sorting carries throughout.

Update index.html with better default examples

The default index.html layout does a poor job of showing off the GUI. We should add further fields from the 1553_HS_Packet example and include plots to flesh out the main page a bit.

Clock tests fail after GPS additions

Looks like I failed to notice that I dropped some important stuff from format.js when cleaning up before committing and the tests are breaking.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.