Giter Club home page Giter Club logo

elastic-dashboard's Introduction

Elastic Logo

Elastic

A simple and modern dashboard for FRC.

Download files can be found here, the supported platforms are Windows, MacOS, and Linux.

Important Notes/Warnings:

  • Your robot code must be using WPILib version 2023.3.1 or higher, otherwise you might not be able to add widgets.
    • WPILib v2023.3.1 fixed a bug in Network Tables where values wouldn't be sent to a client after subscribing topics only. Since the program subscribes topics only to everything, any widget that is built using a sendable will not be possible to add since the program will not be able to retrieve the widget's type. See wpilibsuite/allwpilib#4991 for more info.

About

Elastic is a simple and modern Shuffleboard alternative made by Team 353. It is meant to serve as a dashboard for competition but can also be used for testing. Some features include

  • Viewing data from different NT4 topics and widgets
  • Draggable and resizable card widgets
  • Customizable color scheme
  • Automatic IP retrieval from the FRC Driver Station
  • Compatibility with the WPILib Shuffleboard API

Example Layout

Documentation

View the online documentation here

Special Thanks

This dashboard wouldn't have been made without the help and inspiration from the following people

elastic-dashboard's People

Contributors

emeraldwither avatar gold872 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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

elastic-dashboard's Issues

Use radians for swerve drive angles

I have no idea why I decided to go with degrees, but it should be in radians to stick with WPILib and math conventions. To prevent everyone's code from displaying incorrect information, there will be an option for which units to use (radians or degrees)

Feature request: shape differences for booleans

Is your feature request related to a problem? Please describe.
Color options for Boolean values are great for many of us. But for those who are color-blind, this is more difficult. While colors are configurable to perhaps avoid specific issues, changing shapes could also be helpful.

Describe the solution you'd like
Instead of just "box of green" and "box of red", how about "green checkmark" and "red x", etc. Or "green/red circle/square with black x or checkmark inlaid", etc. Such a solution could be quickly perceived both by those with full color perception and those who are color blind.

Describe alternatives you've considered
Picking a different color palette; reasonable, but I think we could go further.

Add ability to add raw network table Entries/paths Via Shuffleboard API

Currently if you load load Elastic from a file you are able to display and view values directly out of network tables. However this is not possible to do programmatically via the Shuffleboard api. Where it is required to publish a second duplicate record of the data to network tables to be viewable within the dashboard. This is specifically a problem when wanting to view vision data or values from a co-processor publishing to network tables directly. Where the only way to programmatically publish these would be to read the data from network tables and republish it to shuffleboard on the robot adding unneeded latency.

It would be nice to be able to just tell elastic to look at a particular network table entry/path by only publishing the string of the path itself vs needing to send a copy of the value.

Shuffleboard-metadata widgets are added to tab even if they already exist

Hi, I'm testing Elastic with code-generated layouts, and I'm seeing that every time I restart sim, all the widgets are added again to the tab, so that I have several sets of widgets all piling up in the corner grid square. I'm not using size or position metadata, just PreferredComponent. Is this intentional?

Changing grid size un-aligns widgets

If you go from let's say 128 to 140 grid size the grid moves but the widgets don't.

Proposed solution:
the widgets x, y, width, and height should be proportionally scaled.
var * (newGridSize/oldGridSize)

Color Theme Limited Range

Describe the bug
Selecting bright colors, i.e., orange, defaults to a relatively muted hue.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Settings, and go to color theme wheel
  2. Pick a bright color and exit settings
  3. See that the bright color gets changes to something else.

State management redesign

Stateless widgets should not be managing their own states, which is what is happening right now. What needs to be done is instead of widgets themselves being created and modified by other widgets, their models need to be stored in memory, and everything is operated directly on their models.

Submit a HomeBrew Cask

HomeBrew is a widely used package manager on macOS. It would be very convenient for macOS users to install if Elastic Dashboard is published on HomeBrew cask.

Add the option to switch tabs based on some condition

One way to implement that is to have a constant entry that holds the name of the tab which should be active/in focus.
A few use cases I thought of:

  • Before the match starts, switch to "Autonomous Configuration" tab (switch when DriverStation.isFMSAttached() is true).
  • When teleop starts switch to another tab than the one displayed in auto.
  • When running test functions in the pit that check subsystems, switch between subsystem-specific tabs when each subsystem check is finished (another way is to use the same tab and between every subsystem delete widgets and add others, but that may be harder to implement).

Graph widget not working

Describe the bug
When I add a Graph widget to the dashboard, a blank rectangle is rendered instead.

To Reproduce
Steps to reproduce the behavior:

  1. Add a number widget
  2. Right click on it and change the widget to show as "Graph"
  3. The inside of the widget is showing a blank rectangle
  4. The same blank rectangle is shown in the widget parameters.

Expected behavior
The Graph widget is rendered and usable as in the docs.

Screenshots
image
image
image

Desktop

  • OS: Windows 10

Dashboard issues

Describe the bug
A clear and concise description of what the bug is.

I have 2 issues here:

  1. If you go to windows and change display scaling, the widgets don't resize to the size that screen is scaled to
  • For example: I made layout on 100% scaling, then on my laptop its 125% scaling and the widgets are going across the dashboard window.
  1. Whenever you make a new tab, I rename the tab to some value then I press enter on my keyboard but it doesn't close window but renames the tab to the value

To Reproduce
Steps to reproduce the behavior:

  1. Scaling issues:
  • Start by making layout in a certain scaling eg. 100%
  • Then change to 125% scaling
  1. Tab rename window
  • Create a new tab
  • Rename tab
  • Press enter button (keyboard) instead of pressing the button

Expected behavior
A clear and concise description of what you expected to happen.

  1. I expected the layout to scale and widgets to be smaller
  2. I expected the window to rename closes after pressing enter on keyboard

Screenshots
If applicable, add screenshots to help explain your problem.
(Will add some later)

Desktop (please complete the following information):

  • OS: Windows 11
  • Browser: Firefox
  • Version: Latest

Smartphone (please complete the following information):

  • Device: Samsung
  • OS: Android 13
  • Browser: Chrome
  • Version: Latest

Additional context
Add any other context about the problem here.

N/A

Unable to Create tabs via Shuffleboard API

Describe the bug
Utilizing the shuffleboard api and the getTab method fails to create a new tab. Where as the exact same code will cause a new tab to be created within shuffleboard dashboard itself.

To Reproduce
Steps to reproduce the behavior:

  1. Run Shuffleboard.getTab("test");
  2. Shuffleboard.selectTab("test");
  3. Tab is created and switched to via Shuffleboard Dashboard
  4. Elastic fails to do so.

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
Bug shown where tab Autonomous2 is not being created.
bug

Desktop (please complete the following information):

  • OS: Windows
  • WPILIb: 2024.1.1 - Java
  • Elastic 2024.0.2

Additional context
Add any other context about the problem here.

Elastic not loading layout json

We're trying to create a dashboard for our drivers, and we saved the layout in a json.
When we load the layout in elastic it just stops. Whether the simulation is running or not it doesn't load.
Did we forget something?

Incorrect field property definition for robot height in documentation.

On Widget List and Properties Page for the field widget under properties robot "height" is defined as

robot_height - The length of the robot in meters (defaults to 0.85)
Decimal number
Capture

I have found that it needs to be "robot_length", using "robot_height" for the property doesn't work.

//xxx example of how it has to be defined using Shuffleboard API with properties to make it work correctly.

frc::Shuffleboard::GetTab("Teleoperated").Add("Field", m_field).WithProperties({{"robot_width", nt::Value::MakeDouble(kTrackWidth.value())}, {"robot_length", nt::Value::MakeDouble(kWheelBase.value())}}).WithSize(10, 5).WithPosition(2, 0);

Missing Widgets from Shuffleboard and SmartDashboard

  • 3-Axis Accelerometer
  • Accelerometer
  • Encoder
  • Motor Controller
  • Profiled PID Controller
  • Relay
  • Ultrasonic
  • Compressor
  • Double Solenoid
  • Solenoid
  • Digital Input
  • Digital Output
  • Analog Input
  • Analog Output
  • Nidec Brushless

Installer

Is your feature request related to a problem? Please describe.
Currently, managing installations and updates of Elastic is difficult because it requires manually moving the downloaded folder to the Program files and manually creating a program shortcut.

Describe the solution you'd like
Create an installer (potentially using InnoSetup) to do all of this for the user.

Describe alternatives you've considered
Use the Flutter MSIX plugin to generate an MSIX and post it to the Microsoft Store.

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.