Giter VIP home page Giter VIP logo

competiwatch's Introduction

competiwatch's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

competiwatch's Issues

Allow signing in on non-primary, linked account

Jamie had this problem: WhiskeySlim is linked to his user + primary account, MrSoftServe. While signed into Battle.net as WhiskeySlim, he was unable to sign into Competiwatch because "That account is already linked to another user." If the user lookup fails in Users::OmniauthCallbacksController, need to look up an OauthAccount and choose the user attached to it.

Show stats across seasons

Could have some charts showing your win/loss/draws by group member, by hero, by map, etc. across all seasons with data.

Mobile support

Alasdair on Discord says:

It's messed up a little on mobile, but everything still works and it all looks simple enough

It'd be nice to have the app work well and not look weird on mobile. Maybe don't support some views, like Trends, at all on mobile because they need a lot of width. Probably need a different version of the table that removes some columns entirely, to make it more compact.

Rework the match forms so they display well on mobile.

Could make the match form the default view on mobile, for easy access to log games from your phone while Overwatch is open on your desktop.

Add GraphQL API

I want to try implementing a new API from scratch using GraphQL. :3 Might as well use it to let you query your competitive match data.

Normalize match_friends

Instead of having the name in match_friends:

  • Add friends table with user_id and name
  • Add belongs_to :friend to MatchFriend

Change definition of an active user

User.active is currently accounts that have signed in, shared a season, or logged a match in the last month. I think I should drop the "signed in" check since so many new users signed in from Reddit recently. Just seeing if a user has logged matches or shared their season in the past month seems like a good estimate.

Add ability to block users

Thinking this could be useful if someone is spammy or otherwise trying to be malicious. A new table, user_blocks would be good, with fields user_id, comment for why they're blocked.

If a user signs in and a user block record exists for them, they should see some generic message and not be able to use any of the app.

Show stats across accounts

Like how the season selector has 'All seasons', want an 'All accounts' option in the account switcher. Could allow you to see meta trends, like "all my accounts did terribly when Junkrat was buffed," etc.

404 trying to edit a failed match save

I entered a match without SR which failed to save. Submitting the form on the create page then failed with a 404. Maybe the form on that page has the wrong URL?

Linking second account required me to click the connect button twice

Hmm, I just tried adding my alt, and I noticed a possible bug!

Steps:

  1. Have an existing account
  2. Click the connect button in your settings and go through the auth process
  3. Be redirected back to competiwatch and see a flash message saying its linked
  4. Observe that the other account isn't listed under "Your Accounts", even after refreshing
  5. Click the connect button again and see that the account is now added under "Your Accounts"

Track who you group with

@pseudobeard points out tracking your win rate based on who you group with of your friends could be useful. Even just knowing if you duo-queued versus solo-queued versus six-stacked, and the associated win rates, could be helpful.

Track it:

  • Add new interface to the match forms, except the SR-only placement log form, that allows specifying who you grouped with.
  • Could do a new table with unique friend names and join that to users, but probably not necessary. Just a new string field (max length 255) on matches would be fine. Index it, expect it to be comma-separated.
  • Could add auto-completion so if I've listed "Rob" as a person I've grouped with before, when I type "R" later it wants to autocomplete to "Rob".

Surface it:

When I get around to adding a trends/insights page for showing off lots of graphs based on your matches, there should be a graph that shows wins/losses by number of people in your group. Another graph should show wins/losses by who you play with.

Switch off Sidekiq

Using Sidekiq requires an extra worker dyno on Heroku.

Rails by default comes with an asynchronous queuing implementation that runs jobs with an in-process thread pool. Jobs will run asynchronously, but any jobs in the queue will be dropped upon restart.

-- http://edgeguides.rubyonrails.org/active_job_basics.html

Since the only thing I'm using jobs for right now is asynchronously fetching a user's hero list and avatar from the unofficial OW API, I think it's not critical enough to warrant a separate dyno and use of Sidekiq. Switch to using just plain ActiveJob in Rails, how it was before I added Sidekiq + Redis.

Chart showing win rate by rank

@RobThePM suggests:

If your app had a graph to show win rate at certain SR levels I think that would super helpful. Maybe be increments of 100.

For example, between 2500-2599 a person could have a win rate of like 90%. But then when they get to 3000-3100 maybe their win rate is 25%. This would make the win rate measurement more meaningful and informative.

Could be further broken down by specific hero and/or map.

The reason this is important is because it identifies which heroes you are actually winning with at high SR.

it is more meaningful to say “my win percentage with DVA between 3600-3700 SR is X” vs “I’m at 3700 SR and my win percentage is X”.

I think this would help users better identify which heroes they are winning with at higher SR.

Allow linking to other Battle.net accounts

On the Settings page, need to be able to connect my alt accounts. Store them in oauth_accounts table.

On the matches page, need to be able to switch between accounts for viewing matches and logging matches.

List heroes by match count on profile

Instead of pulling the user’s hero playtime data from the unofficial OW API and storing it in account_heroes, just use existing hero data from matches they’ve logged. Can delete the whole account_heroes table then and remove the background job for fetching hero playtime. This should also be less confusing to look at since it will be the same list of heroes seen on the All Accounts and Seasons page, and hovering on hero bars anywhere will show a match count then.

Reorder roles in "Matches by Role" spider graph

So it won't look so spindly, clump up like roles.

chart

Thinking tank adjacent to off-tank, tanks adjacent to healer, defense on the other side of healer, hitscan/DPS/flanker adjacent to each other.

Could also have a custom sort based on the user, going from most to least played role clockwise. Should be consistent across a user's accounts.

Error deleting first placement match

A Redditor reports:

Sure thing! So I added my starting placement manually, worked like a charm, then I went to add a manual match. I input everything and it came up as a loss because obviously my starting placement was higher, but in reality it was a win (this was my fault, I messed up the order). I went to delete the starting placement and it gave me that error.

Fix SR gain/loss colors

The more SR gained, the darker green it should be. The more SR lost, the darker red it should be. However, here 25 is lighter than 24:

sr-colors

Editing a match gives a 404

Bellwether reports:

Chesh I'm trying to update a match I already put in and when I do it sends me to this

Organize trend pages

Would be nice to combine the 'all seasons', 'all seasons + accounts', 'all accounts' pages as part of the 'trends' page. Can stay separate actions/routes, just unify the navigation so there aren't a bunch of top-level tabs.

Can also group the charts so they aren't all just on the same page. Maybe 'when I should play', 'what I should play', 'who I should play with' categories?

Track current account

When signing in, store in session which account was used to sign in. Can then move admin flag from user to account for tighter security.

Make time/day chart into a stacked bar chart

I think it would be a more interesting split to see Weekday and Weekend, with separate win/loss/draw bars, and each bar be split by time of day. So all the weekend losses would be in one column, with different shades of red for morning, afternoon, evening, night. My hunch is I tend to lose more on the weekend, and I think a split bar chart would show that better.

Fetch account heroes earlier

SetAccountHeroesJob is only run right now if an account is deemed out of date (updated more than a week ago). That means a lot of new accounts don't have their heroes shown on their profile. Could enqueue the job somewhere in the sign-in process, or maybe as part of logging matches if it hasn't been run recently, to spread it out.

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.