Giter Club home page Giter Club logo

victiscout's Introduction

VictiScout

Application for FRC scouting. Written using Electron for easy customization.

Get the newest compiled version here!

Get the newest data-compiler version here!

Screenshot

Development dependencies

Development Installation

  1. cd into VictiScout directory
  2. Run npm install to install node dependencies.

Usage in Development

While in VictiScout directory, run

npm start

Transferring Data

The flow for using the Transfer Data window is as follows

  1. Team members will combine any scouting data files on their computers into a CSV using the combine files section of the data page.
  2. In the transfer data section, one member will select the "Hub Device" checkbox and provide an output directory for received files in the box below.
  3. All other team members will select the CSV file they created in step 1 using their input box.
  4. The team member with the "Hub Device" should go down the list of available devices and select "Receive" on each until all of them say "Received."
  5. Then, the team member with the "Hub Device" will return to the data page to combine all received CSV files into one using the combine files section.

Packaging

While in VictiScout directory, run

npm run-script package-mac
npm run-script package-win
npm run-script package-linux

Choose the suffix appropriate for your target OS.

See here for an explanation of how to modify your packaging settings.

Authors

This software was created by Erik Boesen for Team 1418. See Contributors for further information.

License

VictiScout is available under the MIT License.

victiscout's People

Contributors

adam-schultz avatar aderhall avatar andrewlester avatar archduketim avatar bobbymi11er avatar brandonwerbel avatar dave-oregan avatar erikboesen avatar ianzullo avatar josephcarpenter avatar just243 avatar moonmoon2 avatar myataheri avatar wardbenjamin 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

victiscout's Issues

Dynamically generate +- buttons for number inputs

This would be a test of your JavaScript skills. It seems a little pointless to be writing

<button class="decrease">-</button>

and

<button class="increase">+</button>

around every <input> with type="number" when we could just be generating them automatically for any such input (exempting those with the class large, like the input for team and match numbers) and inserting them appropriately into the DOM. This is not as hard as it may sound.

NPM on windows <10

Without the bash for windows you can't just install npm with apt-get or cURL. Maybe included into the readme a link to download npm

Create a nice README header

I'm thinking of something like the one we use for VictiBot. It could be quite similar, but with black text. We use the font ADAM.CG PRO, same as on the website, FYI.

Make window not square

I suggest fitting auto on one line, widening the screen, and making notes much larger.

Use better data naming scheme than just `data.json`

Perhaps include the date and username. The problem we were running into during competition was that people weren't deleting their data.json and it was being duplicated the next day. With some new vs improvements (conflict-removal) this issue should be mitigated, but it would at least be nice to not have to rename files when putting them on the pendrive.

No file output on Linux

When using "export" the file doesn't say where or that it saved at all.

When looking, it doesn't show up on my desktop, my home folder, or my documents.

OS: Ubuntu Linux 16.04 LTS.

Does not build binaries

Ran command npm run-script package-win, got error

Fatal error: Unable to parse version string
 undefined
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] package-win: electron-packager . --platform=win32 --arch=all --out ~/Desktop/Scout --overwrite --ignore=\.gitignore
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] package-win script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Owen Salter\AppData\Roaming\npm-cache\_logs\2017-12-01T23_30_27_652Z-debug.log

Default save folder and location for the folder

As a suggestion, perhaps create a folder in the default home directory of the user called something like scouting-data. This way, you know that you are saving to a valid location. Also, have the ability for the user to change the saved directory for the json output file so that it is convenient for the user, as well toggle whether or not the user gets notified of the data being saved to the json file along with it's directory location.

Keep all data in memory for now

This isn't a terrific idea in the long term, but it would make a lot of things simpler. Plus, it's not like we're storing high-resolution images. One could scout every team for an entire competition and still not have more than 200-some kilobytes of data.

Use a superior spreadsheet viewing system?

It's not really practical to maintain our own system for viewing and manipulating data. If there's a third party library for managing data, we should use that instead.

Get rid of images

They made sense last year for Stronghold, but not anymore really.

Fix root ownership of dist/*

When we use electron-packager to build packages for macOS, the directories it outputs into dist/ are not owned by the proper user and require admin permissions to delete in Finder. Very weird.

Organize filesystem

We shouldn't be keeping all files in root.

One idea for simplifying our current layout would be to move all the app icons into images/logo/ or something like that.

Create field position selector

During competitions, we choose who will scout each robot based on that robot's position on the field relative to the bleachers. For example, "Furthest blue," "Middle Red," or "Closest blue."

This allows us to not have to worry about who's going to scout whom before every individual game. However, it can still become a headache as people leave the stands and new ones join. In the past, we've tried to counter this by handing out physical tokens (laminated notecards) designating each position, such that a scouter has to give their token to another person before leaving and nobody will ever forget which position they are to be scouting. These tokens, however, are easy to break, drop, and lose, and occasionally a distraction while scouting. I don't think we should abandon the idea yet, but we should experiment with a better way to handle scouting positions.

My proposal is to add an option to the VictiScout dashboard which would allow scouters to select which field position they're scouting. When selected, their position would be displayed in a prominent position such that other scouters can easily see it.

Update inputs for Power Up

Every year we have to modify the scouting interface for the new game. This is quite an easy task, all you have to do is look at all the methods of scoring there are and change the elements in index.html accordingly. Right now, you can see from our main screenshot that we have inputs relating to high and low boiler scores and climbs. The methods of scoring in this game are different, so you'll need to follow the current code and replace those inputs. You won't need to touch things like the notes input or anything on the top bar. You may wish to incorporate images into the application if there are lots of ways to score. We did this in 2016 when there were nine types of defense for robots to cross.

You'll only need to know basic HTML for this, and you'll probably be able to comprehend it better if you know some CSS or even JavaScript.

As always, ask if you have any questions.

Here are some sample images of past years' interfaces:
2016:
2016
2017 (Current):
2017

No application icon

Take a look at package.json, specifically the package* scripts. See if you can figure out how to make electron-packager use a custom icon when building the app. Just use logo.png, of course.

Add Climb Assist Checkbox(es?)

We should know if the robot can assist other robots in climbing. We should be able to track whether it can lift two robots at the same time, also.

Ability to send data to a server over Bluetooth or other means

We're not allowed to host WiFi networks at competitions. One method some teams have used to circumvent this and avoid the time-suck involved in collecting data via USB drive (as we do currently) is to communicate via Bluetooth instead. I'd like to find some way we can replicate this (or use some other wireless transfer method).

In case you need it, I wrote a broken server for VictiScout last preseason. You can find that repository here. However, I think we'd be better off integrating the server capabilities of VictiScout directly into the app itself, such that anyone with their MacBook could click some buttons and become the host.

This is an advanced task, but it shouldn't be too difficult. Here are some resources which may help you start:

Alternatively, it might be a neat idea to handle some backend things in a lower-level language and drop JS to the extent that we can while still using (or at least being able to edit the GUI in HTML/CSS). Maybe Go?

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.