the-blue-alliance / the-blue-alliance-android Goto Github PK
View Code? Open in Web Editor NEWAn Android app for accessing information about the FIRST Robotics Competition.
License: MIT License
An Android app for accessing information about the FIRST Robotics Competition.
License: MIT License
Once we get the basic datafeeds and such working, it's time for unit tests (and integration with Travis CI for automatic test running).
Here's a good basic example: https://github.com/pestrada/android-tdd-playground
The &'s and "'s among others, don't seem to be formatted correctly when viewed from the giant list of teams.
(Android tablet isn't saving pics correctly for some reason. Had to take it with my phone.)
Also noticed teams with giant names/lots of sponsors are pushing the name down so much where the team name is at where the location should be and the location is gone.
It's formatted fine in the individual event 'Teams' tab, so it can probably can be fixed by implementing the giant list like how the individual events do it.
In the android planning docs, there was a addition for Contributors. We can add them manually, but we are better than that. Maybe we could use this https://developer.github.com/v3/repos/collaborators/
C:\Users\Bryce Matsuda\Documents\GitHub\the-blue-alliance-android\android\build.gradle
Error:(3, 0) CreateProcess error=2, The system cannot find the file specified
In idea.log:
2014-05-08 08:19:42,182 [ 44043] WARN - .project.GradleProjectImporter -
2014-05-08 08:19:42,182 [ 44043] INFO - .project.GradleProjectImporter - CreateProcess error=2, The system cannot find the file specified
Consult IDE log for more details (Help | Show Log)
Seem to get this every time I load up Android Studio and try to sync the project with the gradle files after pushing the latest commits., yet the build.gradle is still in there.
I noticed Flickr was missing from the social media bar in event / team info, and was planning on implementing it when I found this:
Don't use the Flickr trademarks, unless you have explicit written permission. This includes calling an app built for a specific platform "Flickr". Please note that using the Flickr API does not include Flickr trademarks, such as the Flickr logo, dots, or the string "Flickr". At this time, if you want to use these trademarks, you can apply via our trademark permission process.
https://secure.flickr.com/services/developer/business/
I also saw they have badges to put on your website, so I'm a bit lost as if we can use the logo or not in the app, since it will link to a Flickr search like the TBA site. The other social media sites make it pretty clear that it's okay to use their logo for social media purposes so long as you're not messing it up too much.
https://secure.flickr.com/about/goodies/
Did the TBA site have to do anything special?
For views that have their content set dynamically, we should take out the default text. When loading (it's most obvious on the Event Details), you catch a glimpse of that text (e.g. "Event Name") before its replaced with the real content.
We should bold the winning alliance and underline the selected team (if any). See http://www.thebluealliance.com/team/1124/2008 for reference.
When @plnyyanks removed the iml files and such. When you open the project all you have is the gradle files.
When an offseason event doesn't have some data set (like ranking), its fragment will show up entirely blank. We should alert the user that the date being requested doesn't exist for the event (either via the messaging framework or just by inserting a TextView in the layout saying so).
After a few days of tearing my hair out trying to get a UI testing tool to work without Gradle or the terminal complaining about something, I managed to find a easy to understand python framework called AndroidViewClient which combines all of monkeyrunner's API plus some of uiautomatorviewer's features.
I've managed to get a few tests working from my device, and it works great. My only concern/question is if it can be implemented into travis-ci/gradle, or if it'll probably have to be done independently. To be honest I never heard of either of them up until joining the project and even after reading the documentation I don't quite understand the real in's and out's of it (aside from running unit tests).
The easiest way to reproduce this is to open and close an event in one week, switch to another week, open and close another event, then switch once more to a different week, and find that tapping other events does nothing. Sometimes an event will open as seen in the YT video, but switching again to another week brings back its odd behavior.
Can be fixed by rotating screen, loading an event from a team info page, or reloading the app.
Should use what the rest of the app uses, not greg:marra:hi
In the settings activity there is no up button on the action bar. This is something that I can do. I was showing the app to people. One of the things that they complained about.
For example. If you've downloaded an event from last year, and you're currently offline, the app doesn't need to show the warning message that the content could be outdated (since the event is over, its data won't change any further)
Add instructions to get going to the readme
Should walk someone through:
After pulling the latest master, I was doing my usual stress tests when I hit an NPE crash whenever I tried viewing team info from the Awards tab, which had never happened beforehand. Adding null checks didn't seem to work, but then I noticed something odd in the title/header bar after a couple of crashes.
I checked logcat and found in each crash DataManager trying to load the URL http://thebluealliance.com/api/v2/team/[award key]
(e.g: http://thebluealliance.com/api/v2/team/2014casb_Regional Chairman's Award
)
Full logcat: http://pastebin.com/QfXU8yDE
Rather than make 15 issues for each layout, I'll list the things that need to be mocked up natively here:
http://pastie.org/private/u4oo8fhui7py3fshcczrrq
Notably happens when trying to view Results and Rankings on any of the FRC World Championship Divisions.
I thought it was only because the Championship field events can't be accessed from the Events page yet, but the district championships seem to work fine.
This would give us more flexibility and control with layout and visual appearance, for instance removing the dividers between certain items and controlling the background color of certain items (to mimic the style that Google apps use).
We need the ability to view historical team data (events attended and media) for past years. The UI should function like the Event activity - on those two tabs, there should be a spinner in the action bar to go back for the years that data exists for.
I noticed when viewing various Team @ Event pages is that the alliances for that event are always shown, even if that team wasn't picked by an alliance for elims which, to me, feels a bit pointless.
Would it be possible to hide the alliances tab if say, there isn't any data on that team for elims? Or display a text like "This team did not advance to eliminations"?
For a team that did advance to elims, displaying all 8 alliances with the current format might make it hard for users to find their team. I was thinking either bolding the team, or just displaying the alliance that team is on.
Gradle is giving me a error when refreshing the project.
"No cached version of com.astuetz:pagerslidingtabstrip:1.0.1 available for offline mode."
There seems to be an issue with the Pager Sliding Tab Library that you are using to display team numbers and week events.
There are several issues at hand here. The most important is with the caching of teams and events in the SQLite database. If there is no internet connection, loading either one fails very silently and marks the list as loaded (even though it isn't) so subsequent queries don't try to reload the list. The other is indicating to the user that they're using cached data if they do happen to be offline. This might take the form of a panel that slides in from the bottom and indicates that the data they are seeing may be out of date.
Now that we load some images from the internet (team media, video thumbnail), we should really cache them locally.
Maybe we can extend our API caching model with another SQL table that maps a URL to a local filepath (and fetches if it needs to).
We're going to want to store in internal storage, probably in the directory returned by this method. And we should also think about ways to prune the things we store to prevent disc usage from getting out of hand.
In the name of keeping threads on topic. From @nwalters512, #10 (comment)
"Looking good! Kind of a digression, but while we're talking design, what do
we think about having a lighter navigation drawer like in the various Play
apps? I like the emphasis on our branding (blue), but the nav drawer feels
overly dark to me."
As mentioned in #82:
Steps to reproduce:
I've gotten it to crash with just 2 weeks, but if that doesn't work then I tap more weeks.
Logcat: http://pastebin.com/tFC1FXFS
Not sure on the exact criteria to reproduce it. Just did a lot of spammage on the Events page.
Video: https://www.youtube.com/watch?v=WYFx2sHUGsA
Logcat: http://pastie.org/private/v4zwqiepywdfv0fsajmq
A comment was recently posted on the Facebook page:
Make the home page have all the necessary 'glanceable' info about your team. So you can see your ranking/match schedule quickly while at competition, no one has got that interface right yet.
I think this is actually a really important feature to consider. No other FIRST app has this; Spyder has the ability to "favorite" teams and events, but there's no general overview of them. Currently you have to drill down through about 3 levels of spyder to find the schedule, and finding your team's rank means you have to scroll through the entire list to find your team. If we could get this working well, this would be a game-changer.
I don't know if this is necessarily MVP-worthy, but I think we will eventually have to add this feature. It's too good for us not to.
Happens everywhere aside from the Settings and when viewing individual event info.
Viewing 2012/2013 events and then rotating the screen gives a blank events page on different tabs. Logcat gives the following when the blank page appears: http://pastebin.com/ngw76qAf
Going back to 2014 events and switching orientation seems to fix this and brings back the events.
Suspect it has something to do with the instance states if I recall correctly from CS class, though I haven't seen android code since the end of last year.
Continuing discussion from #24 (comment)
...Continued from #69, since I merged that PR.
I'm not really a fan of the 'm' prefix personally, I think it gets in the way of readability and it's usually pretty obvious when things are member variables and when they aren't. But we should definitely pick one of the other, and I don't think it really matters which.
Also, I think we should come up with a style guide and make a page in the wiki for it to document and encompass all of our coding conventions (so new users can make sure everything is properly formatted).
Steps to reproduce:
Pastie: http://pastie.org/private/xzsjretjxpwoqvsebghsg
YouTube: https://www.youtube.com/watch?v=mnaZkWE-g0w
Attempted fixes:
Null checks to convertView.findViewById(R.id.alliance_name)
and c.getString(R.string.alliance_title)
at the bugged line if (convertView != null)
didn't work. It either still NPE'd or, in one case, went mental and loaded a mixture of matches and alliances at random.
Right now, the navigation drawer can only be accessed at the top level -- not when viewing team or event details.
Google's Keep and Music are able to handle this nicely.
Our hackathon is going to be Saturday June 28! Here's a list of cool features/ideas that I've been holding on to. Feel free to implement any of these ideas yourselves, or use them as a jump point for your own. Just tag them with hackathon and get coding!
During competition season, the default tab, and the first tab in the list, should be "Current". This tab would show what events are occurring in that week. If no events are found, the tab would not appear.
As per the Settings documentation:
Note: If you're developing your application for Android 3.0 and higher, you should instead use
PreferenceFragment
. Go to the next section about Using Preference Fragments.
Nearly all of the methods in PreferenceActivity
are deprecated, and using a PreferenceFragment
is the clear recommendation.
This would also eliminate the need for Build.VERSION_CODES.HONEYCOMB
checks and related annotations.
This is a formal issue acknowledging the need to have loading indicators in fragments that need to load data from the API. We'll probably want indefinite ProgressBar
s.
STEPS TO REPRODUCE
This is obviously at least an issue with communication between the action bar spinner and the child fragments, but there is also a probably issue with the loading and storing of event data.
Search needs to be accessible from almost anywhere in the app.
Teams need to match by team number and partial team name. "254 The Cheesy Poofs" needs to match with "2(54)", "t(he)", "c(heesy)", and "p(oofs)", but not necessarily "eesy".
Events need to match by event code and partial event name. "2014 Silicon Valley Regional [CASJ]" needs to match with "2(014)", "s(ilicon)", "v(alley)", "r(egional)", and "c(asj)", but not necessarily "ilicon".
Be wary of unicode characters; "ÜberBots" needs to match with "Ü(berbots)" as well as "u(berbots)".
Currently we have just settings in there. Could we remove it temporarily and add it back if we need it?
If anyone has any ideas, how and where should we display alliance selection results?
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.