Go to Post When a team is a team, anything is possible - Bharat Nain [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
 
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 07-09-2016, 10:55
ErikBoesen's Avatar
ErikBoesen ErikBoesen is offline
Registered User
FRC #1418 (Vae Victis)
Team Role: Programmer
 
Join Date: Aug 2016
Rookie Year: 2011
Location: Falls Church, VA
Posts: 14
ErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud of
Full release of FRC Dashboard

TL;DR: This $@#$@#$@#$@# is mother$@#$@#$@#$@#ing dope.

For the past two years our team has been using a web-based robot UI to control and monitor certain aspects of our robot, like our flashlight, autoaim, climbing winch, etc. etc. Here's a screenshot of our rebuilt 2016 interface (and the original from earlier this year, and 2015's interface), if you're curious. We've won a total of three Innovation in Control awards over the past two years for our UIs.
Anyway, at the end of the season, I decided to go through all the code and clean it up, remove unnecessary and unused code, and add lots of comments, in order to make something of a boilerplate for other teams to build their own UIs.
The result is FRC Dashboard, which I've designed with ease of modification in mind. It's built in HTML/CSS/JS, with a Python webserver. I've spun off most of the widgets and systems we used into addons which you can easily add on to your own UI. And as I said before, the code is full of lots of comments (and I mean lots) explaining everything to help you add and tweak your own widgets and code without wanting to pull out your hair.
You can get FRC Dashboard and all the addons I've prebuilt at this website.
(Or, here's the main GitHub repo, and a list of addons.)
This program is in (stable) beta, so if anyone has any suggestions, feel free to voice them in the comments, or start a pull request on GitHub. Thanks!
Reply With Quote
  #2   Spotlight this post!  
Unread 07-09-2016, 11:02
marshall's Avatar
marshall marshall is offline
My pants are louder than yours.
FRC #0900 (The Zebracorns)
Team Role: Mentor
 
Join Date: Jan 2012
Rookie Year: 2003
Location: North Carolina
Posts: 1,257
marshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond repute
Re: Full release of FRC Dashboard

This is awesome. Great work!
__________________
"La mejor salsa del mundo es la hambre" - Miguel de Cervantes
"The future is unwritten" - Joe Strummer
"Simplify, then add lightness" - Colin Chapman
Reply With Quote
  #3   Spotlight this post!  
Unread 14-09-2016, 00:13
euhlmann's Avatar
euhlmann euhlmann is offline
CTO, Programmer
AKA: Erik Uhlmann
FRC #2877 (LigerBots)
Team Role: Leadership
 
Join Date: Dec 2015
Rookie Year: 2015
Location: United States
Posts: 318
euhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud of
Re: Full release of FRC Dashboard

While this is certainly a cool idea, I think it could benefit from better addon integration - copying and pasting code isn't really the best way to do addons IMO.

Self-contained addons could include all of their own html, css, and javascript code, and your dashboard could do the heavy lifting to import them instead of the user
__________________
Creator of SmartDashboard.js, an extensible nodejs/webkit replacement for SmartDashboard


https://ligerbots.org
Reply With Quote
  #4   Spotlight this post!  
Unread 14-09-2016, 08:11
ErikBoesen's Avatar
ErikBoesen ErikBoesen is offline
Registered User
FRC #1418 (Vae Victis)
Team Role: Programmer
 
Join Date: Aug 2016
Rookie Year: 2011
Location: Falls Church, VA
Posts: 14
ErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud ofErikBoesen has much to be proud of
Re: Full release of FRC Dashboard

I've looked at doing this a lot of times, but I can't figure out a good way to do it while preserving the customizability of the addons.

Also, since most of the addons require adding a case to a switch statement, I haven't figured out how to begin.

Any ideas?
Reply With Quote
  #5   Spotlight this post!  
Unread 14-09-2016, 09:43
euhlmann's Avatar
euhlmann euhlmann is offline
CTO, Programmer
AKA: Erik Uhlmann
FRC #2877 (LigerBots)
Team Role: Leadership
 
Join Date: Dec 2015
Rookie Year: 2015
Location: United States
Posts: 318
euhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud ofeuhlmann has much to be proud of
Re: Full release of FRC Dashboard

Welcome to software design! Where you try to make sure to retain features while nailing things down into a concrete framework.

You can create an add-ons folder, and within that a folder for each add-on you want to load. In each add-on folder you put an html file with the add-on snippet, a css file, and a js file with the code.
Each js file could look like this
Code:
module.exports = {
   name: "MyAddon",
   tag: "my-addon",
   init: function(htmlNode, etc) {
        // js code here
   }
}
Then you could have some custom tags that people can add in their html
Code:
<!-- other dash stuff -->
<my-addon></my-addon>
and you can scan for these custom tags and if one matches an addon's tag, replace it with the addon (inject the html and css, then require() and call init)

Just an idea
__________________
Creator of SmartDashboard.js, an extensible nodejs/webkit replacement for SmartDashboard


https://ligerbots.org
Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 12:13.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi