Skip to content

Commit 1b22294

Browse files
committed
feat: filter by totalresolvedvotes bigger than 0, types fix
1 parent ed63810 commit 1b22294

File tree

8 files changed

+36
-27
lines changed

8 files changed

+36
-27
lines changed

web/src/hooks/queries/useTopUsersByCoherenceScore.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export type { TopUsersByCoherenceScoreQuery };
99

1010
const topUsersByCoherenceScoreQuery = graphql(`
1111
query TopUsersByCoherenceScore($first: Int!, $orderBy: User_orderBy, $orderDirection: OrderDirection) {
12-
users(first: $first, orderBy: $orderBy, orderDirection: $orderDirection) {
12+
users(first: $first, orderBy: $orderBy, orderDirection: $orderDirection, where: { totalResolvedVotes_gt: 0 }) {
1313
id
1414
coherenceScore
1515
totalCoherentVotes

web/src/pages/Home/CourtOverview/Stats.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const StyledCard = styled(Card)`
3737
)}
3838
`;
3939

40-
const getLastOrZero = (src: HomePageQuery["counters"], stat: HomePageQueryDataPoints) =>
40+
export const getLastOrZero = (src: HomePageQuery["counters"], stat: HomePageQueryDataPoints) =>
4141
src.length > 0 ? src.at(-1)?.[stat] : 0n.toString();
4242

4343
interface IStat {

web/src/pages/Home/TopJurors/JurorCard/Coherence.tsx

+8-5
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,24 @@ const Container = styled.div`
1111
justify-content: center;
1212
`;
1313

14+
const getPercent = (num: number, den: number): string => {
15+
if (den === 0) return "0%";
16+
return `${Math.floor((num * 100) / den)}%`;
17+
};
18+
1419
interface ICoherence {
15-
totalCoherentVotes: number;
16-
totalResolvedVotes: number;
20+
totalCoherentVotes: string;
21+
totalResolvedVotes: string;
1722
}
1823

1924
const Coherence: React.FC<ICoherence> = ({ totalCoherentVotes, totalResolvedVotes }) => {
2025
const coherenceRatio = `${totalCoherentVotes}/${totalResolvedVotes}`;
2126

2227
return (
2328
<Container>
24-
<Tooltip text={coherenceRatio}>{getPercent(totalCoherentVotes, totalResolvedVotes)}</Tooltip>
29+
<Tooltip text={coherenceRatio}>{getPercent(Number(totalCoherentVotes), Number(totalResolvedVotes))}</Tooltip>
2530
</Container>
2631
);
2732
};
2833

29-
const getPercent = (num: number, den: number): string => `${Math.floor((num * 100) / den)}%`;
30-
3134
export default Coherence;

web/src/pages/Home/TopJurors/JurorCard/DesktopCard.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ const Container = styled.div`
3939
interface IDesktopCard {
4040
rank: number;
4141
address: string;
42-
totalCoherentVotes: number;
43-
totalResolvedVotes: number;
44-
totalResolvedDisputes: number;
45-
coherenceScore: number;
42+
totalCoherentVotes: string;
43+
totalResolvedVotes: string;
44+
totalResolvedDisputes: string;
45+
coherenceScore: string;
4646
}
4747

4848
const DesktopCard: React.FC<IDesktopCard> = ({

web/src/pages/Home/TopJurors/JurorCard/JurorLevel.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ const StyledLabel = styled.label`
3939
`;
4040

4141
interface IJurorLevel {
42-
coherenceScore: number;
43-
totalResolvedDisputes: number;
42+
coherenceScore: string;
43+
totalResolvedDisputes: string;
4444
}
4545

4646
const JurorLevel: React.FC<IJurorLevel> = ({ coherenceScore, totalResolvedDisputes }) => {
47-
const userLevelData = getUserLevelData(coherenceScore, totalResolvedDisputes);
47+
const userLevelData = getUserLevelData(Number(coherenceScore), Number(totalResolvedDisputes));
4848
const level = userLevelData.level;
4949

5050
return (

web/src/pages/Home/TopJurors/JurorCard/MobileCard.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ const HeaderCoherenceAndCoherence = styled.div`
8080
interface IMobileCard {
8181
rank: number;
8282
address: string;
83-
coherenceScore: number;
84-
totalCoherentVotes: number;
85-
totalResolvedVotes: number;
86-
totalResolvedDisputes: number;
83+
coherenceScore: string;
84+
totalCoherentVotes: string;
85+
totalResolvedVotes: string;
86+
totalResolvedDisputes: string;
8787
}
8888

8989
const MobileCard: React.FC<IMobileCard> = ({

web/src/pages/Home/TopJurors/JurorCard/index.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import MobileCard from "./MobileCard";
66
interface IJurorCard {
77
rank: number;
88
address: `0x${string}`;
9-
coherenceScore: number;
10-
totalCoherentVotes: number;
11-
totalResolvedVotes: number;
12-
totalResolvedDisputes: number;
9+
coherenceScore: string;
10+
totalCoherentVotes: string;
11+
totalResolvedVotes: string;
12+
totalResolvedDisputes: string;
1313
}
1414

1515
const JurorCard: React.FC<IJurorCard> = ({

web/src/pages/Jurors/index.tsx

+11-5
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,18 @@ import { MAX_WIDTH_LANDSCAPE, landscapeStyle } from "styles/landscapeStyle";
55
import { responsiveSize } from "styles/responsiveSize";
66

77
import { isUndefined } from "utils/index";
8+
import { getOneYearAgoTimestamp } from "utils/date";
89

910
import { useTopUsersByCoherenceScore } from "queries/useTopUsersByCoherenceScore";
11+
import { useHomePageQuery } from "queries/useHomePageQuery";
1012

1113
import { SkeletonDisputeListItem } from "components/StyledSkeleton";
1214
import Search from "./Search";
1315
import StatsAndFilters from "./StatsAndFilters";
1416
import JurorCard from "../Home/TopJurors/JurorCard";
1517
import { ListContainer, StyledLabel } from "../Home/TopJurors";
1618
import Header from "../Home/TopJurors/Header";
19+
import { getLastOrZero } from "../Home/CourtOverview/Stats";
1720

1821
const Container = styled.div`
1922
width: 100%;
@@ -37,25 +40,28 @@ const StyledTitle = styled.h1`
3740
const Jurors: React.FC = () => {
3841
const { data: queryJurors } = useTopUsersByCoherenceScore(1000);
3942

40-
const topJurors = queryJurors?.users?.map((juror, index) => ({
43+
const jurors = queryJurors?.users?.map((juror, index) => ({
4144
...juror,
4245
rank: index + 1,
4346
}));
4447

48+
// const { data } = useHomePageQuery(getOneYearAgoTimestamp());
49+
// const totalActiveJurors = data && getLastOrZero(data["counters"], "activeJurors");
50+
4551
return (
4652
<Container>
4753
<StyledTitle>Jurors Leaderboard</StyledTitle>
4854
<Search />
4955
<StatsAndFilters totalJurors={0} />
5056

51-
{!isUndefined(topJurors) && topJurors.length === 0 ? (
57+
{!isUndefined(jurors) && jurors.length === 0 ? (
5258
<StyledLabel>There are no jurors staked yet.</StyledLabel>
5359
) : (
5460
<ListContainer>
5561
<Header />
56-
{!isUndefined(topJurors)
57-
? topJurors.map((juror) => <JurorCard key={juror.rank} address={juror.id} {...juror} />)
58-
: [...Array(5)].map((_, i) => <SkeletonDisputeListItem key={i} />)}
62+
{!isUndefined(jurors)
63+
? jurors.map((juror) => <JurorCard key={juror.rank} address={juror.id} {...juror} />)
64+
: [...Array(14)].map((_, i) => <SkeletonDisputeListItem key={i} />)}
5965
</ListContainer>
6066
)}
6167
</Container>

0 commit comments

Comments
 (0)