mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-19 09:49:11 -05:00
* Read in x rank placements script
* Xsearch initial
* XSearch initial
* XSearch with select
* Add badges
* XSearch player page initial
* Consider only one build by user for popular builds Closes #1312
* Revert "Side nav labels on hover (#1290)"
This reverts commit 6e839c6c2d.
* Added and fixed DAnish translations (#1315)
* Added Danish translations
Added Danish translations for the builds.json file.
Translations for the following variables have been added
stats.count.title # used the Danish word for "average" instead of "stats", as it makes more sense in Danish.
stats.ap.title
stats.percentage.title
stats.all
linkButton.abilityStats
linkButton.popularBuilds
noPopularBuilds
* Added Danish translations
Added Danish translations in the calander.json file
tag.desc.SZ
tag.desc.TW
tag.desc.S1
tag.desc.S2
tag.desc.SR
tag.desc.CARDS
* Added Danish translations
Added Danish translations in the common.json file
The following translations have been added
pages.vods
tag.name.SZ
tag.name.TW
tag.name.S1
tag.name.S2
tag.name.SR
tag.name.CARDS
* Added Danish translations in the faq.json file
Added the following Danish translations in the faq.json file
q7
a7
* Updated the DA/game-misc.json file
Added the names for the 3.0 maps.
* Added Danish translation for team.json
Added the following Danish translations for team.json file
- roles.MIDLINE
Fixed the following translation for the team.json file
- "roles.FRONTLINE": # fixed a typo
* Created a vods.json file for the Danish trans
* Fixed typo
Fixed the following translation in the Da\contributions.json file
"yaga" # fixed a Typo of "våben"
* Add Chinese Translation (#1314)
* Update contributions.json
* Update contributions.json
* Update faq.json
* Update user.json
* Create team.json
* Update common.json
* Update analyzer.json
* Prettier
* Prettier
* Prettier
* Update builds.json
* Update calendar.json
* Update common.json
* Update faq.json
* Update team.json
* Create vods.json
* Admin link player action
* Make PlacementTable rounded if only child
* Fix arrow disappeared
* Placements on user page initial
* Remove S2 site link
* Add badge
* Add feature to README
* Fix type error
* Different badge text if XP badge
* Add badge winners script
* Better user avatar + name wrapping for mobile
* Allow script to skip users
* Fix bad align when no weapons in weapon pool
* Add aliases to player name
* Add division icon to placements table
* Link to user page
* Link to xsearch on player details page
* Top 500 icons to user build page
* Working query but slow for weapons page
* Fix lint complaints
* Add cache to builds
* Remove useless SWR value
* Group months in xsearch
* Add xsearch to nav
* Add meta
* Remove TW for now
* Add splatoon3.ink as contributor
* Remove unneeded TODO
* Fix TODOs related to fetching monthYears
* Add FAQ question
* Leaderboards to nav
* Fix sploosh build stat pages returning 404
* Add badge
* Add article
* Patch 3.1
* Fix Prettier issue
* Add badge
* Add April SR gear
* Add badges
* Rename badge
* Add badge
* Add zh badge translation (#1322)
* Splatoon Competitive Guide article (#1316)
* Create splatoon-competitive-guide.md
* Update splatoon-competitive-guide.md
* Fix ToC Issues
* Update splatoon-competitive-guide.md
* Update splatoon-competitive-guide.md
* Update splatoon-competitive-guide.md
* Corrections
* Formatting
---------
Co-authored-by: Kalle <38327916+Sendouc@users.noreply.github.com>
* Fix typos
* Rename table and adjust columns
* Make cache ttl 0 in dev
* Make placements container a bit nicer for mobile
* Rename leftover xxx
* Placements script allow passing number as arg
* Skip leaderboards for now
* Add translations
* Rename placements folder to top-search
* Add placements to seed
* Add E2E tests
* Read in x rank placements script
* Xsearch initial
* XSearch initial
* XSearch with select
* XSearch player page initial
* Admin link player action
* Make PlacementTable rounded if only child
* Fix arrow disappeared
* Placements on user page initial
* Fix bad align when no weapons in weapon pool
* Add aliases to player name
* Add division icon to placements table
* Link to user page
* Link to xsearch on player details page
* Top 500 icons to user build page
* Working query but slow for weapons page
* Fix lint complaints
* Add cache to builds
* Remove useless SWR value
* Group months in xsearch
* Add xsearch to nav
* Add meta
* Remove TW for now
* Add splatoon3.ink as contributor
* Remove unneeded TODO
* Fix TODOs related to fetching monthYears
* Add FAQ question
* Leaderboards to nav
* Fix sploosh build stat pages returning 404
* Rename table and adjust columns
* Make cache ttl 0 in dev
* Make placements container a bit nicer for mobile
* Rename leftover xxx
* Placements script allow passing number as arg
* Skip leaderboards for now
* Add translations
* Rename placements folder to top-search
* Add placements to seed
* Add E2E tests
* Rename url variable and unify
* Tweaks
---------
Co-authored-by: Frederik <112972665+FrederikFraJylland@users.noreply.github.com>
Co-authored-by: Gell <61431488+gellneko@users.noreply.github.com>
Co-authored-by: Zen <99558412+zenpk@users.noreply.github.com>
Co-authored-by: Teddi <83455454+teddinotteddy@users.noreply.github.com>
325 lines
6.5 KiB
TypeScript
325 lines
6.5 KiB
TypeScript
import type { TEAM_MEMBER_ROLES } from "~/features/team";
|
|
import type {
|
|
Ability,
|
|
MainWeaponId,
|
|
ModeShort,
|
|
RankedModeShort,
|
|
StageId,
|
|
} from "~/modules/in-game-lists";
|
|
import type allTags from "../routes/calendar/tags.json";
|
|
|
|
export interface User {
|
|
id: number;
|
|
discordId: string;
|
|
discordName: string;
|
|
discordDiscriminator: string;
|
|
discordAvatar: string | null;
|
|
twitch: string | null;
|
|
twitter: string | null;
|
|
youtubeId: string | null;
|
|
bio: string | null;
|
|
css: string | null;
|
|
country: string | null;
|
|
customUrl: string | null;
|
|
stickSens: number | null;
|
|
motionSens: number | null;
|
|
inGameName: string | null;
|
|
patronTier: number | null;
|
|
patronSince: number | null;
|
|
/** Used to overwrite normal patron giving process and force give the patron status till this date */
|
|
patronTill: number | null;
|
|
isVideoAdder: number;
|
|
}
|
|
|
|
/** User table after joined with PlusTier table */
|
|
export interface UserWithPlusTier extends User {
|
|
plusTier: PlusTier["tier"] | null;
|
|
}
|
|
|
|
export interface UserWeapon {
|
|
userId: number;
|
|
weaponSplId: MainWeaponId;
|
|
createdAt: number;
|
|
order: number;
|
|
}
|
|
|
|
export interface PlusSuggestion {
|
|
id: number;
|
|
text: string;
|
|
authorId: number;
|
|
suggestedId: number;
|
|
month: number;
|
|
year: number;
|
|
tier: number;
|
|
createdAt: number;
|
|
}
|
|
|
|
export interface PlusVote {
|
|
month: number;
|
|
year: number;
|
|
tier: number;
|
|
authorId: number;
|
|
votedId: number;
|
|
score: number;
|
|
validAfter: number;
|
|
}
|
|
|
|
export interface PlusVotingResult {
|
|
votedId: number;
|
|
tier: number;
|
|
score: number;
|
|
month: number;
|
|
year: number;
|
|
wasSuggested: number;
|
|
passedVoting: number;
|
|
}
|
|
|
|
export interface PlusTier {
|
|
userId: number;
|
|
tier: number;
|
|
}
|
|
|
|
export interface Badge {
|
|
id: number;
|
|
code: string;
|
|
displayName: string;
|
|
hue?: number;
|
|
}
|
|
|
|
/** View that is union of TournamentBadgeOwner and Patreon badges */
|
|
export interface BadgeOwner {
|
|
badgeId: number;
|
|
userId: number;
|
|
}
|
|
|
|
export interface TournamentBadgeOwner {
|
|
badgeId: number;
|
|
userId: number;
|
|
}
|
|
|
|
export interface BadgeManager {
|
|
badgeId: number;
|
|
userId: number;
|
|
}
|
|
|
|
export interface CalendarEvent {
|
|
id: number;
|
|
name: string;
|
|
authorId: number;
|
|
tags: string | null;
|
|
description: string | null;
|
|
discordInviteCode: string | null;
|
|
// generated column
|
|
discordUrl: string | null;
|
|
bracketUrl: string;
|
|
participantCount: number | null;
|
|
customUrl: string | null;
|
|
/** Is tournament tools page visible */
|
|
toToolsEnabled: number;
|
|
}
|
|
|
|
export type CalendarEventTag = keyof typeof allTags;
|
|
|
|
export interface CalendarEventDate {
|
|
id: number;
|
|
eventId: number;
|
|
startTime: number;
|
|
}
|
|
|
|
export interface CalendarEventResultTeam {
|
|
id: number;
|
|
eventId: number;
|
|
name: string;
|
|
placement: number;
|
|
}
|
|
|
|
export interface CalendarEventResultPlayer {
|
|
teamId: number;
|
|
userId: number | null;
|
|
name: string | null;
|
|
}
|
|
|
|
export interface CalendarEventBadge {
|
|
eventId: number;
|
|
badgeId: number;
|
|
}
|
|
|
|
export interface Build {
|
|
id: number;
|
|
ownerId: number;
|
|
title: string;
|
|
description: string | null;
|
|
modes: string | null;
|
|
headGearSplId: number;
|
|
clothesGearSplId: number;
|
|
shoesGearSplId: number;
|
|
updatedAt: number;
|
|
}
|
|
|
|
export interface BuildWeapon {
|
|
buildId: number;
|
|
weaponSplId: MainWeaponId;
|
|
}
|
|
|
|
export type GearType = "HEAD" | "CLOTHES" | "SHOES";
|
|
|
|
export interface BuildAbility {
|
|
buildId: number;
|
|
gearType: "HEAD" | "CLOTHES" | "SHOES";
|
|
ability: Ability;
|
|
slotIndex: 0 | 1 | 2 | 3;
|
|
abilityPoints: number; // 3 or 10
|
|
}
|
|
|
|
export interface MapPoolMap {
|
|
calendarEventId: number | null; // Part of tournament's map pool
|
|
tournamentTeamId: number | null; // Part of team's map pool
|
|
tieBreakerCalendarEventId: number | null; // Part of the tournament's tiebreaker pool
|
|
stageId: StageId;
|
|
mode: ModeShort;
|
|
}
|
|
|
|
export interface TournamentTeam {
|
|
id: number;
|
|
name: string | null;
|
|
friendCode: string | null;
|
|
createdAt: number;
|
|
seed: number | null;
|
|
calendarEventId: number;
|
|
inviteCode: string;
|
|
checkedInAt?: number;
|
|
}
|
|
|
|
export interface TournamentTeamMember {
|
|
tournamentTeamId: number;
|
|
userId: number;
|
|
isOwner: number;
|
|
createdAt: number;
|
|
}
|
|
|
|
export type BracketType = "SE" | "DE";
|
|
|
|
export interface TournamentBracket {
|
|
id: number;
|
|
calendarEventId: number;
|
|
type: BracketType;
|
|
}
|
|
|
|
export interface TournamentRound {
|
|
id: number;
|
|
// position of the round 1 for Round 1, 2 for Round 2, -1 for Losers Round 1 etc.
|
|
position: number;
|
|
bracketId: number;
|
|
bestOf: number;
|
|
}
|
|
|
|
export interface TournamentMatch {
|
|
id: number;
|
|
roundId: number;
|
|
// TODO tournament: why we need both?
|
|
number: number | null;
|
|
position: number;
|
|
winnerDestinationMatchId: number | null;
|
|
loserDestinationMatchId: number | null;
|
|
}
|
|
|
|
export type TeamOrder = "UPPER" | "LOWER";
|
|
|
|
export interface TournamentMatchParticipant {
|
|
order: TeamOrder;
|
|
teamId: number;
|
|
matchId: number;
|
|
}
|
|
|
|
export interface TournamentMatchGameResult {
|
|
id: number;
|
|
matchId: number;
|
|
stageId: StageId;
|
|
mode: ModeShort;
|
|
winnerTeamId: number;
|
|
reporterId: number;
|
|
createdAt: number;
|
|
}
|
|
|
|
export interface UserSubmittedImage {
|
|
id: number;
|
|
validatedAt: number | null;
|
|
url: string;
|
|
submitterUserId: number;
|
|
}
|
|
|
|
export interface Team {
|
|
id: number;
|
|
name: string;
|
|
customUrl: string;
|
|
inviteCode: string;
|
|
css: string | null;
|
|
twitter: string | null;
|
|
bio: string | null;
|
|
avatarImgId: number | null;
|
|
bannerImgId: number | null;
|
|
createdAt: number;
|
|
deletedAt: number | null;
|
|
}
|
|
|
|
export type MemberRole = (typeof TEAM_MEMBER_ROLES)[number];
|
|
|
|
export interface TeamMember {
|
|
teamId: number;
|
|
userId: number;
|
|
role: MemberRole | null;
|
|
isOwner: number;
|
|
createdAt: number;
|
|
leftAt: number | null;
|
|
}
|
|
|
|
export interface Video {
|
|
id: number;
|
|
title: string;
|
|
type: "SCRIM" | "TOURNAMENT" | "MATCHMAKING" | "CAST";
|
|
youtubeDate: number;
|
|
eventId: number | null;
|
|
youtubeId: string;
|
|
submitterUserId: number;
|
|
validatedAt: number | null;
|
|
}
|
|
|
|
export interface VideoMatch {
|
|
id: number;
|
|
videoId: number;
|
|
startsAt: number;
|
|
stageId: StageId;
|
|
mode: ModeShort;
|
|
}
|
|
|
|
export interface VideoMatchPlayer {
|
|
videoMatchId: number;
|
|
playerUserId: number | null;
|
|
playerName: string | null;
|
|
weaponSplId: MainWeaponId;
|
|
player: number;
|
|
}
|
|
|
|
export interface XRankPlacement {
|
|
id: number;
|
|
weaponSplId: MainWeaponId;
|
|
name: string;
|
|
nameDiscriminator: string;
|
|
power: number;
|
|
rank: number;
|
|
title: string;
|
|
badges: string; // badge id's separated by comma
|
|
bannerSplId: number;
|
|
playerId: number;
|
|
month: number;
|
|
year: number;
|
|
mode: RankedModeShort;
|
|
region: "WEST" | "JPN";
|
|
}
|
|
|
|
export interface SplatoonPlayer {
|
|
id: number;
|
|
userId: number;
|
|
splId: string;
|
|
}
|