the-blue-alliance / the-blue-alliance-ios Goto Github PK
View Code? Open in Web Editor NEWAn iOS app for accessing information about the FIRST Robotics Competition.
License: MIT License
An iOS app for accessing information about the FIRST Robotics Competition.
License: MIT License
- (NSArray *)groupEventsByWeek
seems to build the list of event groups iteratively, so when events are filtered by searching, the iterative process misses the events excluded from the search results, and can assign later events to early weeks.
Ultimately, it might be better if we can calculate the groups not-iteratively, i.e. as a function only of an individual event.
@ZachOrr can you help with this?
If we could find something nice to show images from the media collection view cells the way Twitter or Tweetbot shows images, that would be cool. We could write it ourselves if we wanted, but I'm not sure it's entirely worth it. If anyone is up for the task, you could probably do this using UIViewControllerTransitioningDelegate
Need more details on how to replicate this. A TBAEventsViewController's FRC won't sort events by hybrid type all the time.
We make sure to grab the current year first, in order to show data quicker, but we don't actually reload the event list to show the data until the very end. Is it an issue with when we save the managed object context?
In the app, there are 2 teams with the team number 4. One, the legitimate team, "Team 4 ELEMENT." The other is just called "Team 4." When clicking on the "Team 4," the app crashes. There may be other glitched teams, but Team 4 is the most noticeable because they are at the top of the list.
Per #59 team sponsors got nuked from team summary view which isn't a bad thing since most of the time it's a wall of text, but we could figure out a way display the information without it hogging screen space.
Some options include:
Right now we're assigning event week's based on start dates of all other events. With the addition of b945773 we should be able to determine the week for an event individually
I'm having a problem when trying to import teams from the CSV. Here's the error message I get
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSDictionary initWithObjects:forKeys:]: count of objects (2) differs from count of keys (5)'
This is a feature open to discussion, but I think it might be nice if we remember what week a user was previously viewing for a year while switching between years and default to that week. Even if we only keep this around for the current session.
Right now it's white and impossible to see on the white background.
the-blue-alliance:ios:vX
Where X can be however you choose to version it. For reference, the Android app uses x.y(.z)
I'd love to move forward with iOS 11 (since right now TBA's target is iOS 10 only - I don't see a reason not to only support 1 OS for an app like this). This is more a note to self for when I go to update things later... anyone else should feel free to add on
Table view cells are now automatically self-sizing
, which means we can remove UITableViewAutomaticDimension
largeTitleDisplayMode
. Also can have integrated search bars (UINavigationBar.searchController
). Keep in mind we need to make sure we're using the new safeAreaLayoutGuide
(https://www.bignerdranch.com/blog/wwdc-2017-large-titles-and-safe-area-layout-guides/)topLayoutGuide
and bottomLayoutGuide
are now deprecated, so we should replace any uses of themsetCustomSpacing
method - if we're ever doing a stack view inside a stack view for custom spacing between items (which I'm not entirely sure we're doing), we can remove that level of nestingSwift 4 things include...
characters[..<3]
We currently don't store tiebreaker data from the event points call, but I'm not sure we need to? I believe the API handles all tiebreaker data when calculating rankings, and there's no UI around showing tiebreakers if rankings are tied (although we could build some if we wanted)
The Android implementation is a little heavy - we might look to see if we could clean it up a little https://github.com/the-blue-alliance/the-blue-alliance-android/blob/c4948c3a560e3b73833197b92d24295027004afe/android/src/main/java/com/thebluealliance/androidclient/helpers/MatchHelper.java#L203
The view is only set up for post-event right now. We'll probably have to get all the different states from the Android codebase and build them (I'm not entirely sure where to find all states though - paging @phil-lopreiato)
Neels-MacBook-Pro-2:~ NeelPatel$ cd /Users/NeelPatel/Downloads/the-blue-alliance-ios-swift/the-blue-alliance-ios
Neels-MacBook-Pro-2:the-blue-alliance-ios NeelPatel$ pod install
[in /Users/NeelPatel/Downloads/the-blue-alliance-ios-swift]
Analyzing dependencies
Fetching podspec for React
from js/node_modules/react-native
[!] No podspec found for React
in js/node_modules/react-native
Neels-MacBook-Pro-2:the-blue-alliance-ios NeelPatel$
Inserting all 5000ish team objects all at once takes about 10-20 seconds on my phone, and its happening on the main thread.
It is not the downloading that is a problem, it is already on a background thread. I haven't yet setup any concurrency in Core Data though, and just the insertion of that many objects takes a long time. At some point it needs to get moved to a background thread.
I removed a lot of (gross) code for synchronously fetching a team object when we didn't have it and instead create stub teams to work on in ec7d23c. This worked out well from a data standpoint, but is very confusing form a UI standpoint.
My thought is we could approach this a few different ways. We could add back in the synchronous fetching code, we could do a fetch for teams periodically on launch to make sure they're up to date, or (my favorite option) we could create a background task that gets fired off when creating a stub Team object to fetch the rest of the data and resolve the missing data for the object.
This might be a bit of work - we need to make sure team objects will update in their contexts when the object is changed. I believe we'll get this for free anywhere we're using a FRC, but we need to make sure in places we're not using a FRC but are using team data (like the Info view) we register for changes.
Should we plan on including a list of contributors, like the Android team is:
the-blue-alliance/the-blue-alliance-android#32
We might be able to make use of this helper method to clean up the groupEventByWeeks method https://github.com/the-blue-alliance/the-blue-alliance-android/blob/c4948c3a560e3b73833197b92d24295027004afe/android/src/main/java/com/thebluealliance/androidclient/helpers/EventHelper.java#L98
Looks like 6f0b666 caused an issue with the event list. Before merging the new event model (a3e9ebc), the list wasn't blank. @donald-pinckney Would you mind taking a look?
I wanted to move the discussion to an issue
Do we not want to have the screen automatically close after a user select a new year? I don't think they'll be going back and forth selecting years, so removing it shouldn't be an issue, right?
While following the ReadMe, the pod install
command results in this error:
Austins-MacBook-Pro:js austin$ pod install
[in /Users/austin/the-blue-alliance-ios]
Setting up CocoaPods master repo
$ /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progress
Cloning into 'master'...
remote: Counting objects: 1416611, done.
remote: Compressing objects: 100% (7191/7191), done.
remote: Total 1416611 (delta 5468), reused 6128 (delta 2336), pack-reused 1406611
Receiving objects: 100% (1416611/1416611), 413.01 MiB | 13.57 MiB/s, done.
Resolving deltas: 100% (722899/722899), done.
Checking out files: 100% (170046/170046), done.
CocoaPods 1.3.0.beta.3 is available.
To update use: `sudo gem install cocoapods --pre`
[!] This is a test version we'd love you to try.
For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.3.0.beta.3
Setup completed
Analyzing dependencies
Fetching podspec for `React` from `js/node_modules/react-native`
Fetching podspec for `Yoga` from `js/node_modules/react-native/ReactCommon/yoga`
Downloading dependencies
Installing AppAuth (0.9.1)
Installing GTMAppAuth (0.6.1)
Installing GTMSessionFetcher (1.1.11)
Installing PureLayout (3.0.2)
Installing React (0.43.0)
Installing TBAKit (2.0.0)
Installing Yoga (0.43.0.React)
Installing youtube-ios-player-helper (0.1.6)
Generating Pods project
[!] An error occurred while processing the post-install hook of the Podfile.
unknown file type: Pods/Target Support Files/Pods-the-blue-alliance-ios/Pods-the-blue-alliance-ios-acknowledgements.plist
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1375:in `copy'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:463:in `block in copy_entry'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1485:in `call'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1485:in `wrap_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:460:in `copy_entry'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:435:in `block in cp_r'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1558:in `block in fu_each_src_dest'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1574:in `fu_each_src_dest0'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:1556:in `fu_each_src_dest'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:434:in `cp_r'
/Users/austin/the-blue-alliance-ios/Podfile:25:in `block (2 levels) in from_ruby'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-core-1.2.1/lib/cocoapods-core/podfile.rb:179:in `call'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-core-1.2.1/lib/cocoapods-core/podfile.rb:179:in `post_install!'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.2.1/lib/cocoapods/installer.rb:670:in `run_podfile_post_install_hook'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.2.1/lib/cocoapods/installer.rb:658:in `block in run_podfile_post_install_hooks'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.2.1/lib/cocoapods/user_interface.rb:142:in `message'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.2.1/lib/cocoapods/installer.rb:657:in `run_podfile_post_install_hooks'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.2.1/lib/cocoapods/installer.rb:181:in `block in generate_pods_project'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.2.1/lib/cocoapods/user_interface.rb:64:in `section'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.2.1/lib/cocoapods/installer.rb:178:in `generate_pods_project'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.2.1/lib/cocoapods/installer.rb:115:in `install!'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.2.1/lib/cocoapods/command/install.rb:41:in `run'
/Library/Ruby/Gems/2.0.0/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.2.1/lib/cocoapods/command.rb:52:in `run'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.2.1/bin/pod:55:in `<top (required)>'
/usr/local/bin/pod:23:in `load'
/usr/local/bin/pod:23:in `<main>'
I'm not sure if this is something I did or just a standard during the install on a fresh build. Does anybody have any suggestions? Also, I'm mostly looking to utilize this as a method for pulling TBA data into my own iOS app later on.
I'm thinking we could probably get 3 wide on a 6+, maybe 2 everywhere else. Might take a little math.
TBA doesn't have an endpoint for a list of all teams (although it's been proposed - the-blue-alliance/the-blue-alliance#727). Should we load in the CSV file and parse it, or wait on getting an API endpoint to get a list of teams? I've got the model started for this.
Besides tweaking visuals for the side menu, at some point we need icons for the side menu options. Not high priority for now, but something to remember for later.
I'm wondering if this will be up and running any time this season? Week 1 of competitions are done, but there's still lots of competitions left and having a TBA iOS app would be awesome! I don't know anything about iOS development so I can't tell how far away this is from being finished. I wish I could help you guys finish this -- if I knew how to make iOS apps, I would definitely help!
In a team's media, if it's a YouTube video load the video inside of a YTPlayerView inside of a collection view cell
Just need to implement the delegate methods YTPlayerView gives us and add an activity indicator to the proper views (TBAMatchView and TBAMediaCollectionViewCell should both need activity indicators)
We need to make a controller summarizing a team's performance at a given event. This can be linked to via an accessory control in cells in the list of events for a team and the list of teams at an event. In terms of functionality, the Android app has these tabs:
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.