mtg-tolaria's People
Forkers
gordonanderssonmtg-tolaria's Issues
New Event Modal
I want to be able to add a custom banner to my event.
- Create an upload, crop, and save functionality
- fix the CSs for Dark theme
Fix the dark theme styling on modal dialogs
Modal styling does not look that good in dark mode.
Especially settings modal need to be looked into but also the close buttons and more general styling.
Batch Tournament
Tolaria should support batch tournament with the following structure: Batch Rounds > Single Elimination Bracket
As an organizer,
-
I should be able to add new batches on demand.
-
I should be able to define the number of random pairings for each batch.
-
I should be able to define the number of standings-based pairings for each batch.
Messages
Players should be able to chat with one another in private groups or one on one.
Message Document
The chat documents should be created in the root collection messages
export interface MessageDocument {
docId?: string;
name?: string;
createdByUid: string;
createdDate: number; // timestamp
latestMessage: number; // timestamp
playerDocIds: Array<string>;
isSingle: boolean;
}
Messages
Sub collection of a chat document in the root collection messages
export interface Message {
timestamp: number;
playerDocId: string;
message: string;
content?: MessageContent;
type: string;
cardName?: string;
}
export interface MessageContent {
cardName?: string;
setCode?: string;
setName?: string;
imageUrl?: string;
rulings?: any;
}
- Add parser to parse chat messages and add emojis on known expressions (regEx?)
- Add a function to select emoji on :typing...
- Add parser to parse chat messages and add emojis on :string:
- Add @ tagging user functionality
- Create logic for handling unread messages (this should be reflected as a badge on the Messages on the left panel
- Make message groups with unread messages have another appearance
- Add player linking to player list in the info panel
- Bind new data to be populated in the player details panel
- Add function to rename chat which is not a single chat (isSingle = false)
- Add functionality to add additional players to the group
- Move all logic into the message-service and fix all the components depending on the new service
- Create a player details popover panel
- Add emoji selection popover in the text-area
- Message Section: Header > add players button
- Message Section: Header > add details button
- Create details panel
- Make sure the chat names are shown instead of docId (should be either chat name or the player names (e.g. Slanfan, Bonnie, Seb, and 4 others OR Masters of the Multiverse)
- Combine the messageList and PlayerList to be able to show player information without reloading the data whenever a new message is shown @JonnieHedkvist
- Add search for message groups in the left section
Maintain peer connections locally
All peer connections need to be maintained locally and not within the peer itself to be able to handle disconnection and such events.
Move Settings into dynamically loaded component
Should be dynamically loaded instead of fixed inside the top component
Event Invitation
Create some form of a template to send the email invite.
In addition, also create a new Message Type that can hold information about the event + accept/decline options directly in the message.
Manual Pairings
For swiss tournaments, the organizer needs the possibility to manually change the pairings if needed.
Group Tournament
Tolaria should support group/multi-stage tournaments with the following structure: Round Robin > Single Elimination Bracket
As an organizer,
-
I should be able to define the group sizes and the number of matches that each player within a group shall play.
-
I should be able to define the number of players that advance to the next stage
Don't cross the streams
When opening a specatating tab for a match then open another the new videostreams actually goes to the earlier opened tab. So the old match tab actually keeps names, life and such from the originally opened match, but the cameras will be from the newly opened match.
Filter events
I want to be able to filter events on:
- Date Interval
- Structure
- [ ] OrganizerAs of today, we are not storing organizer name and therefore not possible to search or filter unless LISTING all organizers which is not wanted as of today.
- [ ] RulesetThis will be too complex for the user and most likely only confuse - Online/Offline
- Public/Private
- Format
- Status
- Attending/Not attending
- [ ] Invited/not InvitedAs of today, we have not activated the invitation features due to emailing templates not done. Will look at this at a later stage.
Request to become organizer
Create a form for requesting to become an organizer. This should create a "Become an organizer" request document which should be accessible within the admin panel and for the user via support.
export interface SupportTicket {
ticketTypeId: string;
ticketTypeName: string;
timestamp: number;
senderPlayerId: string;
senderUid: string;
comments: Array<string>;
closedByUid: string;
closedByPlayerId: string;
assignedToUid: string;
assignedToPlayerId: string;
statusCode: number;
statusText: string;
isApproved: boolean;
isRejected: boolean;
isClosed: boolean;
metadata: any;
}
Reset Round
Whenever a round is reset, the hasByeMatch-flag needs to be updated in addition to the matches deleted.
New Message notifications
Web push notification when a new message has arrived.
-
Notification Icon in the top-bar should increment
-
Message Group should be marked as unread
-
Push Notification Popup should contain:
-
Tolaria Image
-
Parsed Message Group Name (either player names or the chat name)
-
Message preview (max 100 characters)
-
Sender information
https://github.com/angular/angularfire/blob/master/docs/messaging/messaging.md
Spectator can change life total
As a spectator, I am able to change the top player's life by pressing up/down arrows!
Social Sharing
As an organizer, I want to be able to share my newly created event on various social media's to have players join the festivities.
Casual Matches
- As a player I wish to play casual games with my friends.
- As a player I wish to announce that I'm free for play during a set time interval and anyone could initiate a game with me.
- As a player I would like to be able to send a play invitation to someone else.
Announcement Messages in Match
Whenever the organizer pushes a new announcement in an event all ongoing matches need to display the announcement in the message panel and the panel needs to pop open so that the players get notified.
The same is true for spectators.
Local Time is showing incorrect time
PlayerDocIds on Match Documents should always be correctly updated
Whenever a Match document is changed, the following properties need to be updated:
playerDocIds (array)
player1.playerDocId
player1.playerUid
player2.playerDocId
player2.playerUid
Chat component
- Make the scrollbar scroll in the correct direction
- Add emoji selector popover
- Add emoji "pipe" or similar to show emojis in messages
- Add @ tagging user functionality
- Add autoscroll to new messages
- Change the CSS to match new auto-scroll functionality
- Add new message sound
- Add sound controller for the chat
Call all players active in the match room
Whenever the players of a match initiate the room the system needs to call all players active in the room.
As of today we only call newly arrived players but we also need to call all present spectators.
Event list is not loaded correctly
Keyboard Navigation
Re-structure and put all the keyboard shortcuts into one component/service.
The HostListener needs to work cross-components.
@HostListener('document:keydown', ['$event'])
handleKeyboardEvent(event: KeyboardEvent) {
}
Re-Focus input when adding Tolaria players
When I add a player with Tolaria search I expect the input field to be focused again.
Players panel can’t be closed with the button
The players panel in an event can't be closed by the button in the upper right corner.
Keyboard select when adding players via Tolaria search
Whenever I search for a player via the Tolaria search I expect to be able to arrow down and select the player to add via Enter press on the keyboard.
Organizer action: Hold all matches
Add a function for the organizer to put HOLD on all ongoing matches from the OrganizerComponent.
The feature should take an optional message that can be displayed in the overlay visible for the players in the room.
Audio Output selector
Add feature to be able to toggle and change the output device for audio.
Move the event details into its own component
Full name header should appear on new message from same sender after x min.
Label = Improvement
When posting messages in the event chat, if the same sender posts two messages in a row, the full name header doesn't show.
This is fine and intended to not clog up the space.
But this should be time dependent so that if there are two messages from the same sender (e.g the tournament organizer) with a long delay in between, it is hard to understand that there might have been hours, days, weeks between if the context is not clear.
So there should be a function that adds the full name header again for the first new chat message if x time has passed between the previous and new message.
Refactor PlayerService and all Dependencies
Refactor the PlayerService and remove the local array of players and only rely on the players$ Observable.
All references to the local players array need to pipe into the Observable instead.
Autoscroll to Report Slip when selecting a match
Whenever I select a match to report, I expect that the report slip gets visible right away and not hidden behind the horizontal container which I need to scroll into.
Inform players about newly arrived spectators
Whenever a new spectator arrives at a match webcam room, the players need to get notified with a MessageToast displaying the test "[player.displayName] started spectating your match"
Disable “local” players for online events
In an event with isPublic:true the Tolaria search needs to be the default method of adding players and adding players in another way should be disabled as non-registered users should not be able to play in an online event.
Player Details not updating with new selection
The player details in events do not update when I select another player. It stays at the previously selected player. I need to close the player details to be able to show another player.
Change of Media Device need to be applied to the current stream
I want to be able to change the camera or microphone and the new input device should be attached to my stream going to all the other players I have a WebRTC call with.
New player registered
Whenever a new player has been registered, the backend needs to go through all the open and non-public events to check if the email registered has been invited. If so, the invite information needs to be updated with playerDocId and playerUid.
Switch Event list to load as observable in EventsComponent
The events list does not update whenever a new event is added. this is kinda annoying.
In addition, whenever a user presses the Attend button, this does not change the button as the data isn't updated.
Open my online match and not only the report slip
When organizers are also playing an online event, the opening of their own webcam room is somewhat unintuitive.
I expect that I as an organizer can open my match room when I press the match in the pairings view in addition to the report slip being opened.
Communication with invited players
As an organizer I would like to have the possibility to update the invites players with information. Therefore I need to be able to send them an email and/or Tolaria message with new information.
Player Documents need to have correcty opponentIds:array
Whenever pairings change or similar, the opponentIds array needs to be updated as well.
Undo/Delete Pairings
- Change the button in OrganizerComponent to Delete Pairings
- If pairings are deleted, any user in the WebRTC room should be notified with a prompt
Organizer Hang Up
The showing of the organizer stream is now part of the MatchDocument and should only be connected to the peer connection itself. Whenever a player gets a stream from the organizer this should tell the template to show the wrapper with the video element showing the organizers stream.
When the organizer press close call the template should be updated and the overlay closed.
Setting for message sounds
There should be a setting to turn off the sound for messages.
The Announcement messages should of course override this setting as organizers need to notify somehow.
PlayerDisplayNameComponent
Fix display name for not found. Add Nameless Race as the name and also a title that state Player name could not be found and therefore assigned to Nameless Race
Video elements resizing
Move Create Events Dialog into Dynamic Component
Should be dynamically loaded instead of fixed in the top component
Deck Builder
A full blown deck builder.
__Detailed requirements and specification to be created.
It's possible to add a player without a name
When adding manual players to an event, it is possible to add a player without any name.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.