From 68ce3e6904d356d5bc0b5d615324c5da768cf91c Mon Sep 17 00:00:00 2001 From: dhaverd Date: Tue, 21 Jul 2026 15:04:37 +0800 Subject: [PATCH] =?UTF-8?q?feature:=20=D0=BF=D0=B5=D1=80=D0=B5=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B0=D0=BB=20=D0=BA=D0=B0=D1=87=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B0=20=D0=B2=20=D1=80=D0=B5=D0=B9=D1=82=D0=B8?= =?UTF-8?q?=D0=BD=D0=B3=20=D0=BA=D0=B0=D1=87=D0=B5=D1=81=D1=82=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api.ts | 18 +++---- app/assets/mui/themes/home.ts | 11 ++++ app/assets/styles/home.css | 63 ++++++++++++++-------- app/classes/blacklistReport.ts | 14 ++--- app/components/itemDialog/tag.tsx | 20 +++++-- app/components/itemList.tsx | 8 +-- app/components/reportDialog.tsx | 90 ++++++++++++------------------- 7 files changed, 122 insertions(+), 102 deletions(-) diff --git a/app/api.ts b/app/api.ts index b512903..2d3b8f7 100644 --- a/app/api.ts +++ b/app/api.ts @@ -13,15 +13,15 @@ const getReportData = (data: AxiosResponse): BlacklistItem[] => { let blacklistItems: BlacklistItem[] = []; for (const [key, value] of Object.entries(result)) { let blacklistItem: BlacklistItem = new BlacklistItem( - value.link, - value.nicknames, - value.comments, - value.afk, - value.cheater, - value.griefer, - value.toxic, - value.useless, - value.smurf + value.blacklistItem.link, + value.blacklistItem.nicknames, + value.blacklistItem.comments, + value.blacklistItem.afk, + value.blacklistItem.cheater, + value.blacklistItem.griefer, + value.blacklistItem.toxic, + value.blacklistItem.useless, + value.blacklistItem.smurf ); blacklistItems.push(blacklistItem); } diff --git a/app/assets/mui/themes/home.ts b/app/assets/mui/themes/home.ts index 4f72983..ba94a58 100644 --- a/app/assets/mui/themes/home.ts +++ b/app/assets/mui/themes/home.ts @@ -117,6 +117,17 @@ const customTheme = (outerTheme: Theme) => }, } } + }, + MuiRating: { + styleOverrides: { + root: { + + }, + iconEmpty: { + color: '#E0E3E7', + opacity: 0.5, + } + } } } }); diff --git a/app/assets/styles/home.css b/app/assets/styles/home.css index bb727a1..eb917c7 100644 --- a/app/assets/styles/home.css +++ b/app/assets/styles/home.css @@ -49,20 +49,26 @@ border: 1px solid var(--main-color); color: var(--main-color); margin-right: 10px; + > .report-rating { + display: flex; + align-items: center; + } &:hover { border: 1px solid var(--hover-color); color: var(--hover-color); - > .report-tag-count-good { - color: var(--tag-color-good); - } - > .report-tag-count-ok { - color: var(--tag-color-ok); - } - > .report-tag-count-bad { - color: var(--tag-color-bad); - } - > .report-tag-count-very-bad { - color: var(--tag-color-very-bad); + > .report-rating { + > .report-tag-count-good { + color: var(--tag-color-good); + } + > .report-tag-count-ok { + color: var(--tag-color-ok); + } + > .report-tag-count-bad { + color: var(--tag-color-bad); + } + > .report-tag-count-very-bad { + color: var(--tag-color-very-bad); + } } } } @@ -101,6 +107,11 @@ color: #6F7E8C; } +.qualities-header { + font-size: 1.5rem; + margin-bottom: 10px; +} + @media (width <= 570px) { @@ -111,17 +122,21 @@ } .report-tag { - > .report-tag-count-good { - color: var(--tag-color-good); - } - > .report-tag-count-ok { - color: var(--tag-color-ok); - } - > .report-tag-count-bad { - color: var(--tag-color-bad); - } - > .report-tag-count-very-bad { - color: var(--tag-color-very-bad); + > .report-rating { + display: flex; + align-items: center; + > .report-tag-count-good { + color: var(--tag-color-good); + } + > .report-tag-count-ok { + color: var(--tag-color-ok); + } + > .report-tag-count-bad { + color: var(--tag-color-bad); + } + > .report-tag-count-very-bad { + color: var(--tag-color-very-bad); + } } } @@ -138,4 +153,8 @@ .title-header-link { text-decoration: underline; } + + .qualities-header { + font-size: 1.2rem!important; + } } \ No newline at end of file diff --git a/app/classes/blacklistReport.ts b/app/classes/blacklistReport.ts index ab3977f..72fbc6e 100644 --- a/app/classes/blacklistReport.ts +++ b/app/classes/blacklistReport.ts @@ -2,14 +2,14 @@ export class BlacklistReport { steam_link: string; steam_nickname: string; comment: string; - afk: boolean; - cheater: boolean; - griefer: boolean; - toxic: boolean; - useless: boolean; - smurf: boolean; + afk: number; + cheater: number; + griefer: number; + toxic: number; + useless: number; + smurf: number; - constructor(steam_link: string, steam_nickname: string, comment: string, afk: boolean, cheater: boolean, griefer: boolean, toxic: boolean, useless: boolean, smurf: boolean) { + constructor(steam_link: string, steam_nickname: string, comment: string, afk: number, cheater: number, griefer: number, toxic: number, useless: number, smurf: number) { this.steam_link = steam_link; this.steam_nickname = steam_nickname; this.comment = comment; diff --git a/app/components/itemDialog/tag.tsx b/app/components/itemDialog/tag.tsx index 2eaa7a3..0c28b5c 100644 --- a/app/components/itemDialog/tag.tsx +++ b/app/components/itemDialog/tag.tsx @@ -1,22 +1,34 @@ +import {Rating} from "@mui/material"; + export default function Tag({tag, name}:{tag: number|undefined, name: string}){ let classColor = "report-tag-count-good"; + console.log(tag); if (tag){ if (tag < 2){ classColor = "report-tag-count-good"; - } else if (tag >= 2 && tag <= 4) { + } else if (tag >= 2 && tag <= 3) { classColor = "report-tag-count-ok"; - } else if (tag > 4 && tag <= 10) { + } else if (tag > 3 && tag <= 4) { classColor = "report-tag-count-bad"; } else { classColor = "report-tag-count-very-bad"; } } + console.log(classColor); return ( <>
- {tag} - {name} + {name}
+
+ {tag} + +
) diff --git a/app/components/itemList.tsx b/app/components/itemList.tsx index efbbbd2..8db8b34 100644 --- a/app/components/itemList.tsx +++ b/app/components/itemList.tsx @@ -17,13 +17,13 @@ export default function ItemList({ isFetching, blacklistItems, showDialog }: { i
{blacklistItems.map((item) => { - let summary = item.afk + item.cheater + item.griefer + item.toxic + item.useless + item.smurf; + let summary = (item.afk + item.cheater + item.griefer + item.toxic + item.useless + item.smurf) / 6; let color = 'rgb(255 255 255 / 17%)'; - if (summary < 2){ + if (summary < 1){ color = 'rgba(48,255,0,0.1)'; - } else if (summary >= 2 && summary <= 4) { + } else if (summary >= 1 && summary <= 2) { color = 'rgba(255,235,0,0.1)'; - } else if (summary > 4 && summary <= 10) { + } else if (summary > 2 && summary <= 3) { color = 'rgba(255,136,0,0.1)'; } else { color = 'rgba(255,0,0,0.1)'; diff --git a/app/components/reportDialog.tsx b/app/components/reportDialog.tsx index 3be7d30..123ae58 100644 --- a/app/components/reportDialog.tsx +++ b/app/components/reportDialog.tsx @@ -1,41 +1,48 @@ import { Button, - Checkbox, Dialog, DialogContent, DialogTitle, Divider, - FormControlLabel, TextField } from "@mui/material"; import {useState} from "react"; import TitleHeader from "~/components/itemDialog/titleHeader"; import {BlacklistReport} from "~/classes/blacklistReport"; import {sendReport} from '~/api'; +import QualityItem from "~/components/reportDialog/qualityItem"; +import { + afkLabels, + cheaterLabels, + grieferLabels, + smurfLabels, + toxicLabels, + uselessLabels +} from "~/collections/qualityRatingLabelText"; export default function ReportDialog({ open, handleClose }: { open: boolean, handleClose: Function }){ const [link, setLink] = useState(''); const [nickname, setNickname] = useState(''); const [comment, setComment] = useState(''); - const [afk, setAfk] = useState(false); - const [cheater, setCheater] = useState(false); - const [griefer, setGriefer] = useState(false); - const [toxic, setToxic] = useState(false); - const [useless, setUseless] = useState(false); - const [smurf, setSmurf] = useState(false); + const [afk, setAfk] = useState(0); + const [cheater, setCheater] = useState(0); + const [griefer, setGriefer] = useState(0); + const [toxic, setToxic] = useState(0); + const [useless, setUseless] = useState(0); + const [smurf, setSmurf] = useState(0); const [loading, setLoading] = useState(false); const clearValues = () => { setLink(''); setNickname(''); setComment(''); - setAfk(false); - setCheater(false); - setGriefer(false); - setToxic(false); - setUseless(false); - setSmurf(false); + setAfk(0); + setCheater(0); + setGriefer(0); + setToxic(0); + setUseless(0); + setSmurf(0); }; const handleSend = async () => { @@ -52,12 +59,12 @@ export default function ReportDialog({ open, handleClose }: { open: boolean, han cleanLink, nickname, comment, - afk, - cheater, - griefer, - toxic, - useless, - smurf + afk * 2, + cheater * 2, + griefer * 2, + toxic * 2, + useless * 2, + smurf * 2 ); await sendReport(blacklistReport).then((result: boolean) => { @@ -108,42 +115,13 @@ export default function ReportDialog({ open, handleClose }: { open: boolean, han sx={{marginBottom: '20px', color: '#E0E3E7'}} />
- } - checked={afk} - onChange={(e) => setAfk((e.target as HTMLInputElement).checked)} - label="AFK" - /> - } - checked={cheater} - onChange={(e) => setCheater((e.target as HTMLInputElement).checked)} - label="Cheater" - /> - } - checked={griefer} - onChange={(e) => setGriefer((e.target as HTMLInputElement).checked)} - label="Griefer" - /> - } - checked={toxic} - onChange={(e) => setToxic((e.target as HTMLInputElement).checked)} - label="Toxic" - /> - } - checked={useless} - onChange={(e) => setUseless((e.target as HTMLInputElement).checked)} - label="Useless" - /> - } - checked={smurf} - onChange={(e) => setSmurf((e.target as HTMLInputElement).checked)} - label="Smurf" - /> + Rate the player's negative qualities on a scale of 0 to 5 + + + + + +