supercilex / robot-scouter Goto Github PK
View Code? Open in Web Editor NEW:robot: Easy, efficient, and collaborative FIRST robot scouting
Home Page: https://bit.ly/RobotScouter
License: GNU General Public License v3.0
:robot: Easy, efficient, and collaborative FIRST robot scouting
Home Page: https://bit.ly/RobotScouter
License: GNU General Public License v3.0
config.xml, Android.jks, google-services.json, and keystore.properties
Add about page
A over 600 lines of code, Team.java
really needs to be refactored.
Focus on editText, rotate activity twice, focus on editText again and adjustPan is no longer working.
Also let user long press list items to delete team and maybe individual scout items while we're at it.
Can be fixed in User.java#L69
.
This is because when a new snackbar comes in, the old one is dismissed thus moving the FAB down. We need a way to know if there is still a snackbar visible.
This is because the recyclerview considers different view types to not be related and does not allow drag/dropping to happen between them.
Let user customize scout template
Make a github robot that can write issues to this repo and a report bug button in app that creates an exception in Firebase and creates the issue in github.
https://firebase.google.com/docs/database/security/
Rules in prod:
{
"rules": {
".read": "auth != null",
".write": false,
"v1": {
"scout-indices": {
"$key": {
".write": "auth != null && data.parent().parent().child('team-indices').child(auth.uid).child($key).exists()"
}
},
"scout-templates": {
".write": "auth != null"
},
"scouts": {
"$key": {
".write": "auth != null",
"views": {
"$metricKey": {
"value": {
".validate": "(newData.parent().child('type').val() === 0 && newData.isBoolean()) || (newData.parent().child('type').val() === 1 && newData.isNumber()) || (newData.parent().child('type').val() === 2) || (newData.parent().child('type').val() === 3 && newData.isString())"
}
}
}
}
},
"team-indices": {
"$uid": {
"$key": {
".write": "auth != null && $uid === auth.uid",
".validate": "newData.isNumber()"
}
}
},
"teams": {
"$key": {
".write": "auth != null && data.parent().parent().child('team-indices').child(auth.uid).child($key).exists()"
}
},
"users": {
"$uid": {
".write": "auth != null && $uid === auth.uid"
}
}
},
// START DEBUG RULES //
"debug": {
"scout-indices": {
"$key": {
".write": "auth != null && data.parent().parent().child('team-indices').child(auth.uid).child($key).exists()"
}
},
"scout-templates": {
".write": "auth != null"
},
"scouts": {
"$key": {
".write": "auth != null",
"views": {
"$metricKey": {
"value": {
".validate": "(newData.parent().child('type').val() === 0 && newData.isBoolean()) || (newData.parent().child('type').val() === 1 && newData.isNumber()) || (newData.parent().child('type').val() === 2) || (newData.parent().child('type').val() === 3 && newData.isString())"
}
}
}
}
},
"team-indices": {
"$uid": {
"$key": {
".write": "auth != null && $uid === auth.uid",
".validate": "newData.isNumber()"
}
}
},
"teams": {
"$key": {
".write": "auth != null && data.parent().parent().child('team-indices').child(auth.uid).child($key).exists()"
}
},
"users": {
"$uid": {
".write": "auth != null && $uid === auth.uid"
}
}
}
}
}
Reproduce: open CCT and go back. In ScoutActivity
, the back button no longer does anything.
Be able to get rid of teams as they are selected (alliance selection)
Robot Scouter's laser focus on empowering teams to easily and efficiently scout has helped us realize that we can significantly improve the on-site scouting experience. The two core ideas behind Auto Scout™ are minimizing friction between the lead scout and his/her scouters; and making the end-to-end scouting experience effortless.
Auto Scout provides a completely guided and self-managed scouting solution from getting devices setup all the way to the final export. Some key features include:
The main UI for Auto Scout will be the second destination in home. It'll be like Google Photos or YouTube: there will be bottom navigation to switch between the main team list and Auto Scout.
In general, the UI is card-based and provides actionable information. Wherever possible, animations are used to enhance clarity.
Cards are the user's primary mode of interaction with Auto Scout. They should be tasteful and specific to a given action.
Cards are grouped in stages, each of which is applicable to a unique period of time in the build season. Each stage will have an intro card to help the user understand how the cards are tied together. To further enhance flow clarity, the stage name will become the toolbar title when Auto Scout is focused.
The order in which cards appear is determined by the order in which they are presented in this document. Card order is not user customizable.
Completing the final action of a card is marked with a "Done" button at the bottom. Should the card include nested navigation, it will be achieved through onboarding style panels with dots at the bottom to indicate flow progress. The button at the bottom will say "Next" instead of "Done." Swiping left returns to the previous state and swiping right only proceeds if inputs are valid.
Loading states should use Facebook style fake placeholder content whenever possible. Should that not be applicable, a centered indeterminate ProgressBar
will do.
Card and stage states will be saved across devices and should be real-time like everything else in Robot Scouter.
Completed cards will be can't be restored, but their actions may be found in settings.
Intro cards explain what Auto Scout is all about and teach the user how to progress through the different stages.
If the user ventured into Auto Scout and hasn't signed in yet, the first card should be this one with the following text:
Signing in lets you sync your team's scouting data across devices and enables Auto Scout.
This card explains the what and how of Auto Scout:
Auto Scout strives to be our vision of a perfect scouting system. It aims to guide you through the baby steps of initially setting up Robot Scouter all the way through that final data export before alliance selection.
You are currently in the intro stage. To move on to the next stage, mark every card as completed by pressing “Done.” Some cards are required and cannot be marked as done without first completing their action.
Try it with this one! Press “Done.”
Setup cards help prepare the user for the competition and can be completed early in the season.
Intro card:
Setup cards help you help us—you'll be guided through device and account configuration.
This card will use The Blue Alliance API to gather a whole bunch of event info. There will be 3 steps:
To get the user's team, we'll have to check for connectivity and verify that the downloaded team data is correct. We'll display an explanation:
Help Auto Scout tailor the experience to your team and the events you will be attending. To get started, enter your team number:
Once the team is verified, we'll display the team's events with their display name, type, and city. If none are found, we'll show a message saying No events found for ${team}, enter your event keys manually.
A link to TBA events will be provided. Even if the event fetch succeeds, we'll show the link and provide a text box to add events since TBA data may not be perfectly accurate. We'll also add trash icons to the right of each event like in the spinner metric editor.
Getting all the teams should be a piece of cake, it's just displaying progress that will be unpleasant. We should show a determinate linear ProgressBar
along with which team is being downloaded.
Offline and error icons. The offline error will say Your results will be ready once you're back online.
This card lists all the devices the user has registered (simply by signing in on said device) with the option to edit each device's name. In addition, it will have the following text under the list of devices:
To add a device, simply install Robot Scouter. If you aren't automatically signed in, be sure to use your [EMAIL OR PHONE] account.
This card will have a link to download the GSheets app if it isn't installed. Text:
Exported Excel spreadsheets can be easily imported into Google Sheets and uploaded to Google Drive via the Sheets app.
Checklist cards have tips and tooling to get the most out of Robot Scouter. As opposed to setup cards, checklist cards should be most relevant immediately before leaving for a competition.
Intro card:
Checklist cards ensure you're ready to do your best at competition. These should preferably be completed right before leaving home base while you still have a reliable internet connection.
This card ensures match and pit templates are assigned. If no template is assigned to a type, it will have a red X. Otherwise, a green check.
The template type will need to be stored with the template such that both the match and pit scout templates are shown in the card. The template editor will need to add an option to change the template type via a bottom sheet. This same bottom sheet will be available with a settings icon besides each item in the card. Setting a template to a type which already has one will unassign the pre-existing template.
This card ensures that everything is wrapped up. Completing the action on it indicates that this is the master device as explained with the following text:
By continuing on this device, you are indicating that you are the head scout and plan on monitoring scouting progress with it. This device will then become the "master," allowing you to manage "slave" devices throughout the competition. If that is not the case, please inform the head scout that they must finish setting up Auto Scout on their device and bring it to competition.
The "Prepare devices" button will hide the aforementioned text and show each device's status. Prep includes:
If a device doesn't respond within 30 seconds, it will be marked as failed. Failed devices will include an info button to get details about the failure and troubleshooting steps. Until all devices pass inspection, this card cannot be marked as done.
TODO
Event cards primarily provide an overview of scouting status. They contain information and management tools to effectively coordinate active devices.
While cards' order shouldn't change dynamically, some information may be more relevant than other at different times. For example, the device status card becomes more relevant if it notices that a device lost comms or the battery is getting dangerously low. Therefore, cards may be reordered programmatically should an action or status become more important.
In a similar change, most cards won't have a primary action and therefore cannot be marked as done. The event stage should resemble a sci-fi dashboard (without the holograms 😉).
Intro card:
Event cards help you monitor scouting status throughout the competition. They provide information about your current progress and device management tools to help you get the most high quality data possible with your available devices.
TODO
ScoutActivity
is past its onStart
stageMan down! Lost comms with [DEVICE NAME].
TODO
Endgame cards provide tools to help teams competing in eliminations.
TODO
TODO
TODO
Auto Scout will have its own dedicated section with options to:
Each item will go one level deeper and use the same infrastructure as the cards.
Maybe?
Style cleanup before 1.0
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.