- Expansion panel for FAQ
- Collection owner can indicate which questions for their user they want to be displayed in the date (data table?); these labels and keys are saved
- //TODO change to 3000 once testing is complete a feature is good to go
- Autocomplete for lots of the dropdown menu item in create match
- write test for navigating away from user-info after deleting collection and returning to collection form page and then going back, you should not see the collection re-appear
- write "what kind of information about the videos do you want to collect from your users?" form
- [] Meta-form? May have to attach an input box(es) to a dropdown menu with types (e.g., datepicker, input, etc. etc.) to populate form; maybe display the form that the user is creating in real time??
- Add ability to delete and edit collections and categories
- Delete collection
- Admin has ability to constrict which collections can be shared for free, shared behind pay-wall, or not shared
-
Users can submit feedback about the site (which automatically captures which page the feedback was sent from?)
- Feedback form implemented
- Capture user's email address
- Decode the snapshot image
- Admin can mark feedback as completed or delete it if not useful
-
The new match and create account forms are refactored to use dynamic forms
-
People can earn the privilege to be able to comment on moves or matches
-
Users can create collections
- Form
- They can name their collection
- They can designate any number of collection-details that they want their videos to have
- Tests written to ensure you have to be logged in to see collection form
- Tests written to make sure form cannot be submitted without collection name and at least one category
- Their videos are displayed in a table
- Form
-
Write tests for isAnnotated status changing if so many users vote high enough
- Too few votes and not isAnnotated
- Enough and isAnnotated is true
- Once isAnnotated is true, reputation awarded to majority annotator
- Doesn't continue to award if there are more upvotes (i.e., if isAnnotated has already been marked true)
-
Set up a dev project in firebase and hook up there instead
-
Write tests for stripe subscription and cancellation
-
Users can create their own collections of annotated videos
- Can customize the name of the individuals (e.g., "athlete, animal, instructor")
- Can customize the number of individuals (e.g., pod of dolphins)
- Can download a csv of their data table
- Can customize the details of the video (location, date, etc.)? Seems very difficult
-
They can share and collaborate on collections if they pay subscription
- Admin can bypass subscription share for particular collections
-
Store local preferences for items per page in all-matches
-
Some annotation manipulations affect video play for another person's instance (test using aws version and localhost version?)
- Characterize the problem better
-
write test for annotation rating of new match
-
Enter should be submit click on custom items for match creation
-
Change annotated-moves-display to annotated-events (after all of the current issues have been resolved)
-
Turn these into github issues
-
Some annotation manipulations affect video play for another person's instance (test using aws version and localhost version?)
- Characterize the problem better
-
Set up a dev project in firebase and hook up there instead
-
Write tests for stripe subscription and cancellation
-
Reputation log filters by most recent X with option to view all
-
Add new move options to every section
-
Display flagged moves in admin after they have been flagged X times (define in constants.ts)
-
Stripe follow-up
- Zip code validation
- Webhook
- Let user know that bill will appear as Fisher Dynamic
-
//TODO this is the only part that is not in base component...experiment with putting it in there
-
Add interesting exchange or something like that
-
If someone removes a flag from an annotation, and that changes the reputation scoring, reward them those points back
-
Add a minimum number of flags before it modifies the annotation chip to constants.ts and then to the key
-
Maybe make a go to end icon on the chips for individual annotations?
-
Once you have internet
- Update faq component link to different divs in the FAQ
- TODO link to how to lose them
- //TODO flesh out getMainAnnotatorOfMatch
- Update faq component link to different divs in the FAQ
-
Improve eventCategory capture with a getCategoryFromItem method... it should use moves.ts, I think
-
Add way to handle when someone is not connected
-
Track who flags things
-
What happens when a user tries to rate their own annotation currently?
-
Test the new root node works (by annotating multiple times deep in the tree)
-
Test isWin and isDraw?
-
Test for annotation flag on and off
-
Test for five annotation flags
-
Finish writing the double annotation test
- Get rid of subscription errors so that tests can pass
-
Troubleshoot/edit the currently existing tests
-
Snackbars for annotation and for annotation already exists need to come up at the relevant times
-
Set up tutorial mode
-
Make new user-status report behave in the ways it's supposed to since its move to a menu
-
Add component for adding names to matches with people with unknown names
-
If they are majority annotator, they cannot rate the annotation
- get everything to work except getMainAnnotatorOfMatch
- //TODO flesh out getMainAnnotatorOfMatch
-
//TODO accommodate vimeo, etc?
-
Tracks who deletes matches and annotations in user node
-
Iron out paidStatus vs. things like canViewAllMatches and somehow manage them easily
- Paying attention to the annotatedEnoughOverride and how this is affected
-
Think about and possibly implement users submitting videos that don't appear in the main table but still get used for analytics
-
Edit any annotation they themselves made
-
Update the check for annotation merge
-
Edit user details page
-
Update reputation should include an update to privileges and an onChange snackbar to alert user of new privileges
-
User page; badge with reputation points
-
F.A.Q. section
- Document how to annotate a win or draw somewhere (i.e., specify that it should be worth no points, not be called a submission, and should be marked successful even if draw)
- Why did I lose reputation points?
- What do various tiers of reputations points get me?
- Add new move names
- Audit names of moves proposed (TODO check how wikipedia deals with profanity edits, etc.)
- Rate annotations (x per day increases as reputation increases)
- Flag annotations for removal
- Remove annotations
- Search by different criteria? (also available to paying user)
- Edit move details
- How do I earn reputation?
- Submitting matches
- Approving new move names
- Flagging new move names as vulgar or inappropriate
- Annotating matches
- You get more points for well-rated annotations
- Rating matches?
-
Update spec list
-
TODO make the signs up a new user test pass (currently does not)
-
Need a way to handle things like missing uid in users
-
Submission status and success status in the form stays imprinted on the previously annotated move
-
cannot make the same exact annotation twice test
-
Tests to tell whether someone with paidStatus true can see matches but not delete, someone who has not paid cannot see matches
-
Write a test to annotate two moves in a row, both with a move deep in the tree
-
info for ratings (1 annotation hasn't been rated or is annotated mostly incorrectly, 4 is annotated everything that the ref scores, 5 is annotated beyond that with more details)
-
Figure out why creating a new user works fine manually but not with the cypress test in login.spec
-
Add some way of preventing users from simply making one shitty annotation and getting in
- Add some way of disabling them for a punishingly long time if they do it
-
Add branching/if statements to cypress login as admin test
-
Either have a question on the form about whether the match uses points or somehow automate that to prevent users from assigning points in tournament types that don't reward them
-
getMainAnnotatorOfMatch doesn't work as expected yet
-
reset annotationVotesCastToday at midnight every night
-
Add a paid status guard to all matches and stats (when there are stats)
-
Add onDestroy handling for the memory leakers?
-
When you rate an annotation with a four and it's not your own, it awards the majority annotator x reputation points TODO hackable (do you unreward if diluted by crap?)
- TODO && current rater is not the main annotator
-
When you rate an annotation with a four and it's not your own, it awards the majority annotator x reputation points TODO hackable? (do you unreward if diluted by crap?)
-
Monitor user's reputation points and enable privileges when things change
-
Dialog for adding move names (if certain privileges; else, notify not enough privileges)
-
Admin and moderators have a special area only they can access and do administrative things in
-
Separate and gitignore the admin email and password and then go back through and erase
-
Detect when the link url is different but other match specs are the same
-
Tests
- Improve deleting a match test
- Flesh out 'created match appears on table' test
-
Reset attemptStatus to true after every finished annotation
-
Figure out a way to remove the api key and admin email and password from the repo (in an automated way)
-
Set up CircleCI deploy to S3
-
Test logging out from individual match
-
Test rating the match and annotation (possibly as two different users)
-
Add date annotated to move in match
-
Make the match card display more info. (including date)
-
//@TODO test whether trying to create a second account under the same email messes up
-
//TODO I couldn't get the takeWhile to work, so hacked with a counter
- Add spinner while annotation deletion occurs (nvm it's for admins and therefore low priority)
- Whether the user has verified their email address or not doesn't matter yet
- Put number of stars and star votes that result in various reputation rewards in constant.ts
- //TODO && submissionStatusValue stuff && attemptStatusValue stuff
- Flesh out README with details about what it is and how it works
- Add more passes to moves.ts
- Expansion panel for FAQ
- Change 'newmatch' paths to 'newvideo' paths
- Have custom no gi rank option, and add unknown to it
- Passing tests
- Have custom age class, and add unknown to it
- Passing tests
- Have custom location option, and add unknown to it
- Passing tests
- Have custom tournament option, and add unknown to it
- Passing tests
- write tests for collection form
- fills out simple collection form, does not see submit button enabled until all three filled out, and can see collection in user section, and deletes collection with confirmation that it disappears
- cannot create duplicate collection upon refresh/re-entry into the collection form page
- can create collection form with 2 additional items
- can create collection form with 2 additional items and one additional category LEFT OFF HERE
- can create collection form with 2 additional items and two additional categories and a goes back to add 2 more items from second category group, leaving a third blank
- User can delete personal collections
- Re-activate addCollectionToDatabase after you're done messing around with it
- collection form allows you to add categories with items attached to each category
- Re-write repopulateFormWithPreviousPayload to get desired results
- Custom categories
- weight class
- Dropdown
- Dialogue
- Dialogue adds approval display for admin
- Form validation in dialog
- Doesn't add it and sends a little snackbar saying move name already exists if so
- Approval adds to db and removes from candidate list, and awards reputation points
- Disapproval removes from candidate list and substitutes, "flag me"
- Feature to delete move name from move list
- Renames move in the other matches that used it since? ...NOPE not needed, I don't think
- Put delete feature under control of isAdmin (or isModerator?)
- Standardize how these things are capitalized
- Test written to make sure name addition is seen in match
- Test written to make sure name approval is seen in admin list; delete name at the end
- Test written to make sure name disapproval displays flagged message
- Test written to make sure you can't add a duplicate name
- tournament
- Dropdown
- Dialogue
- Dialogue adds approval display for admin
- Form validation in dialog
- Doesn't add it and sends a little snackbar saying move name already exists if so
- Approval adds to db and removes from candidate list, and awards reputation points
- Disapproval removes from candidate list and substitutes, "flag me"
- Feature to delete move name from move list
- Put delete feature under control of isAdmin (or isModerator?)
- Added in alphabetical order
- Standardize how these things are capitalized
- Test written to make sure name addition is seen in match
- Test written to make sure name approval is seen in admin list; delete name at the end
- Test written to make sure name disapproval displays flagged message
- Test written to make sure you can't add a duplicate name
- age class
- Dropdown
- Dialogue
- Dialogue adds approval display for admin
- Form validation in dialog
- Doesn't add it and sends a little snackbar saying move name already exists if so
- Approval adds to db and removes from candidate list, and awards reputation points
- Disapproval removes from candidate list and substitutes, "flag me"
- Feature to delete move name from move list
- Put delete feature under control of isAdmin (or isModerator?)
- Added in alphabetical order
- Standardize how these things are capitalized
- Test written to make sure name addition is seen in match
- Test written to make sure name approval is seen in admin list; delete name at the end
- Test written to make sure name disapproval displays flagged message
- Test written to make sure you can't add a duplicate name
- weight class
- Have custom no gi rank option, and add unknown to it
- Passing tests
- Have custom age class, and add unknown to it
- Passing tests
- Have custom location option, and add unknown to it
- Passing tests
- Have custom tournament option, and add unknown to it
- Passing tests
- Add new move options to every section
- Have custom weight class options, and add unknown to it
- ADDING FEATURE WHERE DISAPPROVED NAME GETS SUBSTITUTED and check whether the same exists for tournament name cross listed in spec file
- Enter upon password completion for login should trigger login button
- See what happens when you try to add new submission name
- Set up stripe
- Subscriptions
- Cancellation
- All of this in user section
- Color-code match start and end chips
- Track reasons for reputation awards and deductions (date, note/flag, points)
- Sort moves in dialog dropdown menu
- Sort weight classes other new match categories
- Track reasons for reputation awards and deductions (date, note/flag, points)
- Add moves
- Dropdown
- Dialogue
- Dialogue adds approval display for admin
- Form validation in dialog
- Form select is dynamic for subcategory
- Doesn't add it and sends a little snackbar saying move name already exists if so
- Approval adds to db and removes from candidate list, and awards reputation points
- Disapproval removes from candidate list and substitutes, "flag me"
- Feature to delete move name from move list
- Renames move in the other matches that used it since? ...NOPE not needed, I don't think
- Put delete feature under control of isAdmin (or isModerator?)
- Added eventNames not in alphabetical order
- Standardize how these things are capitalized
- Test written to make sure name addition is seen in match
- Test written to make sure name approval is seen in admin list; delete name at the end
- Test written to make sure name disapproval displays flagged message
- Test written to make sure you can't add a duplicate name
- Change match outcome to match logistics and add match start as well as point mistake
- Move the info. icon next to Annotations because you keep accidentally scrolling over it (or just make it clickable instead)
- Alphabetize the moves in annotation lists
- Change athlete names to dropdown menu with option to add more in a dialogue
- Dropdown
- Dialogue
- Dialogue adds approval display for admin
- Form validation in dialog
- Doesn't add it and sends a little snackbar saying athlete already exists if so
- Approval adds to db and removes from candidate list
- Disapproval removes from candidate list and substitutes, "Unnamed Athlete"
- Feature to delete athlete name from athlete list (but leaves them as legacy in existing matches [otherwise, have to track?])
- Put delete feature under control of isAdmin (or isModerator?)
- Added names not in alphabetical order (caps issue? Yes... make it so that Capital letters for first and last name is forced)
- Displays the name in the field after it is typed (sort of)
- Test written to make sure name addition is seen in table
- Test written to make sure name addition is seen in admin list; delete name at the end
- 3 sec. rewind and ff buttons
- Get current tests to pass
- Add non-binary gender options
- Track categories as well as move names (//TODO get category from item)
- add videoUrl form validation that seems to look good but button enabling and disabling as well as database functionality need to be confirmed
- Bring annotations closer to video
- extend baseComponent in other components
- Add confirm password field
- Make password toggleable to be visible
- Improve form validation for create account form
- Make it so that annotations appear in match chronological order not addition chronological order
- Update the check for annotation similarity
- Add way to prevent ppl from seeing matches if they haven't earned it yet
- Make chips deletable if isAdmin is true (or if certain reputation points exist)
- Make annotations clickable to take user to that part of the video
- Crudely visualize all annotations
- Maybe put a delay between the user creation and the user login to avoid the alert popup
- When you submit a match, it asks you if you want to annotate, and if you click annotate, it doesn't take you anywhere
- Update the weight classes and belts of the matches that have already been made
- Fix bugs with logging out (sometimes you have to do it multiply)
- Get login to display and to successfully navigate both for login and for logout
- Set up new email login dialog box
- Add match annotations to user upon successful annotation; use this to resolve bug of most recent annotation
- Annotation includes the annotator's user id
- Have table auto-update when move details are revised
- Add cannot create duplicate match test
- Indicate to the user that a match was created
- Check for and prevent duplicate videos from being added
- Have logout reload the page and/or resetAll from the tracker
- Set up admin email and password on circleCI
- Test adding a new match
- Delete a match only as an admin
- Add was this a successful attempt functionality
- Record ratings in user
- Creating a new match isn't working??
- Test clicking deeper into the tree
- Add test for starting and stopping an annotation
- Add test for cancelling annotation (making sure certain buttons are and are not visible)
- Add guard jump
- Add advantages to moves list
- Add move to the user who made it, and include a timestamp in the entry as well
- //TODO make record of video here
- Fix test for clicking pause
- Remove match and annotation rating from videoDeets because they live elsewhere now
- An annotation is not made if a similar enough one has already been made by someone else
- Admin status is tracked and admin can remove matches
- User can filter annotations by ones that scored points
- There's a way for a user to undo the most recent annotation they made?
- Users can look back 5 seconds or forward 5 seconds in a match
- Users see the advice to annotate what the ref awards points to if the match was reffed (can included other positions/moves that didn't score points, but can't disagree with ref)
- Set up unit testing, especially for database stuff
- Users can view embedded videos that are annotated with moves
- Users can sort videos to view by any combination of:
- Belt/rank
- Tournament
- Date (y, m ,d)
- Athlete name
- Second athlete name
- Rule set
- Move executed in the match
- Rating from other users
- Annotation Rating
- Users can view summary statistics by athlete:
- Most common points scored
- Most common points lost
- Most effective submission
- Most frequent thing they tap to
- Users can view summary statistics by rank:
- Most common points scored
- Most common points lost
- Most effective submission
- Users are required to annotate a video each month or pay $2/month or $6/6 months or $10/yr.
- A video is provided for them
- The first time they annotate, a tutorial is provided
- A refresher tutorial is available
- For every annotated video, the user is given more experience Points
- For every time a users' annotated video is flagged as poorly-annotated or edited and then the edit is confirmed, they lose some experience points
- Which annotations were done by which user is known to the database, but not to other users (to avoid personal vendettas)
- while a user is annotating a video, that video is "locked" for annotation by other users?
- alternatively, there is some way of dealing with two users simultaneously annotating the same video
- Whether the user manually skips ahead in the video is tracked with the timestamp, is flagged for their annotation, and/or is not permitted in the app.
- Experience points are visible by other users
- Users are granted more responsibility and more data access if they:
- Rate videos
- Vet other users' new/alternative names of moves
- Confirm dead links
- While viewing a video, users can:
- Flag a link as dead
- In which case, it immediately goes into a "is this link dead" pool
- Flag a poorly-annotated video
- Edit details of the video
- In which case, it immediately goes into a "to be reviewed" pool
- Flag a link as dead
- Users can annotate a video by:
- User clicks "annotate" while the video is in play
- If a move exists in that time point, that move is displayed to user. User is given option to:
- Edit the existing move
- The old move is replaced, but stored in the db but flagged as old
- Immediately goes into a queue to be confirmed by others
- Flag it for removal
- Add a new move overlapping the original
- Beginning time
- End time
- Points scored (if any)
- Name of the performer of the move (which athlete did it)
- Whether it was a submission
- The name of the move
- Users can create a new move name if it doesn't exist
- This name must be vetted by other users
- Edit the existing move
- If a move exists in that time point, that move is displayed to user. User is given option to:
- User clicks "annotate" while the video is in play
-
Users can log in
-
Users can create an account
- Name
- Rank (gi)
- Rank (no gi)
- Affiliation
- Age
- Gender
- Date last annotated (defaults to null)
- paidStatus
- Weight (find a way for the input to be in kilos or lbs.)
- Reputation points (defaults to 100)
-
Users can add a brand new video with match details:
- Tournament name
- Location
- Date
- Athlete 1 name
- Athlete 2 name
- Weight class
- Gender
- Age class
- Gi status
- Rank
- Video url
- Gets validated?
A match is composed of match details and moves.
- Migrate to firestore?