Git Product home page Git Product logo

archive-viewer's People

Contributors

yektay avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

archive-viewer's Issues

PV Table: Add Row Bug

Unable to add rows to PV Table after deleting a PV. This can be replicated by following these steps:

  1. Navigate to the first row of the PV Table and insert a name. A second row should appear
  2. Navigate to the second row of the PV Table and insert a name. A third row should appear
  3. Right click just left of the vertical header of the first row so that the context menu appears
  4. Select DELETE PV. The second row should disappear (see issue #11 )
  5. Navigate to the second row (should be the last row) and insert a name.

At this point the expected behavior should be a new row is added (possibly with the row header "D"), but the actual behavior is that the number of rows is unchanged.

Y-Axes Names Do Not Update

When populating the first PV Table row with a PV to monitor, the time plot adds a Y-Axis with the same name. However when changing the name of the PV, the Y-Axis does not change it's label.

Context Menu not opening on PV table

The Custom Context Menu (PVContextMenu) only opens when right clicking in a specific place on the Input Data tab. Instead it should open when right clicking anywhere on the PV Table.

Build site for documentation

We will be using a github hosted site for the projects documentation, this will need to be set up and the general format and overall look will need to be established.

The project will be using mkdocstrings to auto generate most of the documentation, this will need to be formatted to fit our needs.

Range Axis

List of Range Axis Table elements still needing to be implemented

  • Connect the range axes table with the PV table.
  • Be able to set a range axis for a pv and have that is then reflected in the graph

Software Requirements Checklist

  • PV List & Trace Properties
    • Prominent on page
      • Should be a list of PVs in table format
      • Should allow for a large number of PVs (1000) or unlimited
    • PV List should be automatically populated if Archive-Viewer is opened from a PyDM display context menu (E.g. Open history...)
    • Users should be able to copy/paste single or multiple PV names into list
    • Access to archive search panel
      • User can multi-select PVs
      • User can drag-and-drop PVs or copy/paste into list
      • User can use directory service queries (eget or meme) to generate the list (indicating the PVs listed are not in the archiver)
      • If valid PVs are requested, but aren't archived, they should be added to a 'toBeArchived' list
        • List should be emailed to controls-deputy weekly
    • Configurable trace style per PV
      • Line Style
      • Color
      • Solid/dashed (step or direct transitions)
      • Thickness
      • Area fill option
      • Which axis to plot on
      • Hide/show trace
    • Configurable data point style (E.g. circle, square, x, color, size) (should include a default)
    • Option to delete PV from the plot
    • Ability to reorder traces (assuming they are drawn on plot in order, this is useful to control which lines are drawn on top of others)
    • Formula builder to add formula to PV list
      • Need to display name and expression
      • Expression could be static or include existing PVs (referencing it's index or other format)
    • Find design solution for alarm limits & severities
  • Plot Area
    • Configurable style
      • Background Color
      • Hide/show gridlines
    • Full page mode (hide PV list and other controls) (off by default)
    • Plot should scale with window page resize
    • Plot legend should be available, with the ability to relocate it (hidden by default)
    • Display crosshairs as mouse moves over plot showing data (off by default)
      • Timestamp, value, and alarm severity ('no_alarm' if none)
      • Enum values give both number and string
    • User mouse control
      • Zoom in/out & panning
      • Same gestures on an axis should affect only that axis
    • "Back Button" and/or "Default Button" to undo user mouse control
    • Ability to toggle between autoscale and fixed scale
      • When plotting multiple PVs on autoscaled plot, there should be a stagger option to prevent overlapping
    • Ability to move different axes into separate subplots with shared x-axis, and ability to collapse back into a single plot ('explode' & 'collapse')
  • Axes Control
    • Timespan Control (x-axis)
      • Options to quick toggle between common timespans (E.g. 5min, 30min, 1hr, 1day, 1week) or define a custom range (relative or specific)
      • Scale font size should be configurable
      • Timespan should have option to be fixed (archive only) or live (combined archive + live data)
    • PV Axis Control (y-axis)
      • Ability to display a list of vertical PV axes to set specifics
        • Minimum/maximum ranges
        • Linear/log scaling
        • Reorder the axis
        • Specify the left/right side
      • Enum PVs (bi/bo, mbbi, mbbo, SEVRs, etc.) should have the option to toggle the string description instead of the numeric value
      • Axis label can be manually edited or read from a PV or PV.DESC field
      • Scale font size should be configurable
      • Users should be able to create an empty axis or remove an empty axis
      • When there is more than one y-axis, there should be an option to make one primary and hide or minimize the other(s)
  • Data Viewing and Management
    • Each trace should have a configurable buffer size (default: ~5,000) (requests that return datasets greater than the buffer size would be binned. As the plot is zoomed in, the density of the data from the optimized request should be updated to a finer resolution until it matches the raw dataset)
      • Optimized data retrieval from the archiver appliances returns the mean, min, and max for each PV at each plotted timestamp. When plotting optimized data, these min/max bands should be plotted as well as the mean and shaded in to avoid a false smoothing effect.
      • For live + archived plotting, the initial drawing would be entirely from the archiver, but then the data would fill in a live buffer. Once the live buffer size limit is reached, the live data should fall off the plot, backfilling with (likely optimized/binned) archive retrievals instead. This prevents long running plots from holding on to huge amounts of raw data
    • For cases where there is no archived data fro the time range it should draw a line from the last available point (maybe as a dotted line?)
    • NaNs should be ignored
    • Waveform data should be displayed on the plot, but on a straight line (i.e. no vertical position) but indicating there is a waveform available at that time. This works for number or character waveforms. Maybe this can be configurable through a menu in the PV list?
      • A waveform viewer should allow a user to step through the arrays of data, displaying each array as the time is changed, or optionally as a 3D waterfall plot. Character arrays would be displayed in a table format
    • There should be a View Data option where for any of the traces the data is displayed in tabular format along with any alarm severity changes. If viewing more than one trace, the data should be an option for an averaged or binned display where the timestamp of each row is at fixed intervals and the data averaged over the interval (the archiver API provides this feature)
    • Save/export data function - save to csv, either as optimized data or raw data (with warning that could be a very large set). Should also be able to save the data displayed in the View Data feature listed above.
    • Print and Save to logbook functionality (maybe replicate the functionality of the ACR Print Tool created by S. Alverson?)
    • The configured plot and all its options will need to be save-able so it could be reopened later. Ideally, these save files would be a straightforward enough format they could be human-readable or easily generated
      • It could be useful to include macros in the plots PVs so these files could be used as templates, launched from scripts or buttons that included a macro string
      • Ability to load old Archive Viewer files into NAV, or simply convert the old file format to the new one
      • Should these files be embeddable into PyDM interfaces?
      • These files should be included as part of an image snapshot that goes into the logbook, enabling the reader to easily reproduce and interact with the plot

Context Menu: Deletes Wrong PV

Context Menu -> Delete PV deletes the wrong row.

It deletes the row below the row that is right clicked (row + 1). If the user attempts to delete the last row, an error is thrown.

Write documentation and tutorials

The project will be using mkdocstrings to auto generate most of the documentation. So documentation should be written as the code is written.
Tutorials will need to be written up/recorded

Unit Tests

Add unit tests for all methods in the project under the Test folder. These tests will be run by Github Actions to ensure any new code doesn't break existing functionality.

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.