Skip to content

Commit 32d0548

Browse files
committed
feat(web): add courts dropdown
1 parent c7eeeb3 commit 32d0548

File tree

5 files changed

+84
-234
lines changed

5 files changed

+84
-234
lines changed

web/src/components/DisputeCard/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { Card } from "@kleros/ui-components-library";
77
import { Periods } from "consts/periods";
88
import { useGetMetaEvidence } from "queries/useGetMetaEvidence";
99
import { useCourtPolicy } from "queries/useCourtPolicy";
10-
import { useIPFSQuery } from "hooks/useIPFSQuery";
1110
import { CasesPageQuery } from "queries/useCasesQuery";
1211
import PeriodBanner from "./PeriodBanner";
1312
import DisputeInfo from "./DisputeInfo";

web/src/graphql/generated.ts

Lines changed: 25 additions & 228 deletions
Original file line numberDiff line numberDiff line change
@@ -1683,97 +1683,6 @@ export enum Evidence_OrderBy {
16831683
Sender = "sender",
16841684
}
16851685

1686-
export type GatewayDispute = {
1687-
__typename?: "GatewayDispute";
1688-
arbitrationCost: Scalars["BigInt"];
1689-
arbitrator: Scalars["Bytes"];
1690-
disputeHash: Scalars["Bytes"];
1691-
homeDispute: Dispute;
1692-
id: Scalars["ID"];
1693-
relayer: Scalars["Bytes"];
1694-
};
1695-
1696-
export type GatewayDispute_Filter = {
1697-
/** Filter for the block changed event. */
1698-
_change_block?: InputMaybe<BlockChangedFilter>;
1699-
arbitrationCost?: InputMaybe<Scalars["BigInt"]>;
1700-
arbitrationCost_gt?: InputMaybe<Scalars["BigInt"]>;
1701-
arbitrationCost_gte?: InputMaybe<Scalars["BigInt"]>;
1702-
arbitrationCost_in?: InputMaybe<Array<Scalars["BigInt"]>>;
1703-
arbitrationCost_lt?: InputMaybe<Scalars["BigInt"]>;
1704-
arbitrationCost_lte?: InputMaybe<Scalars["BigInt"]>;
1705-
arbitrationCost_not?: InputMaybe<Scalars["BigInt"]>;
1706-
arbitrationCost_not_in?: InputMaybe<Array<Scalars["BigInt"]>>;
1707-
arbitrator?: InputMaybe<Scalars["Bytes"]>;
1708-
arbitrator_contains?: InputMaybe<Scalars["Bytes"]>;
1709-
arbitrator_gt?: InputMaybe<Scalars["Bytes"]>;
1710-
arbitrator_gte?: InputMaybe<Scalars["Bytes"]>;
1711-
arbitrator_in?: InputMaybe<Array<Scalars["Bytes"]>>;
1712-
arbitrator_lt?: InputMaybe<Scalars["Bytes"]>;
1713-
arbitrator_lte?: InputMaybe<Scalars["Bytes"]>;
1714-
arbitrator_not?: InputMaybe<Scalars["Bytes"]>;
1715-
arbitrator_not_contains?: InputMaybe<Scalars["Bytes"]>;
1716-
arbitrator_not_in?: InputMaybe<Array<Scalars["Bytes"]>>;
1717-
disputeHash?: InputMaybe<Scalars["Bytes"]>;
1718-
disputeHash_contains?: InputMaybe<Scalars["Bytes"]>;
1719-
disputeHash_gt?: InputMaybe<Scalars["Bytes"]>;
1720-
disputeHash_gte?: InputMaybe<Scalars["Bytes"]>;
1721-
disputeHash_in?: InputMaybe<Array<Scalars["Bytes"]>>;
1722-
disputeHash_lt?: InputMaybe<Scalars["Bytes"]>;
1723-
disputeHash_lte?: InputMaybe<Scalars["Bytes"]>;
1724-
disputeHash_not?: InputMaybe<Scalars["Bytes"]>;
1725-
disputeHash_not_contains?: InputMaybe<Scalars["Bytes"]>;
1726-
disputeHash_not_in?: InputMaybe<Array<Scalars["Bytes"]>>;
1727-
homeDispute?: InputMaybe<Scalars["String"]>;
1728-
homeDispute_?: InputMaybe<Dispute_Filter>;
1729-
homeDispute_contains?: InputMaybe<Scalars["String"]>;
1730-
homeDispute_contains_nocase?: InputMaybe<Scalars["String"]>;
1731-
homeDispute_ends_with?: InputMaybe<Scalars["String"]>;
1732-
homeDispute_ends_with_nocase?: InputMaybe<Scalars["String"]>;
1733-
homeDispute_gt?: InputMaybe<Scalars["String"]>;
1734-
homeDispute_gte?: InputMaybe<Scalars["String"]>;
1735-
homeDispute_in?: InputMaybe<Array<Scalars["String"]>>;
1736-
homeDispute_lt?: InputMaybe<Scalars["String"]>;
1737-
homeDispute_lte?: InputMaybe<Scalars["String"]>;
1738-
homeDispute_not?: InputMaybe<Scalars["String"]>;
1739-
homeDispute_not_contains?: InputMaybe<Scalars["String"]>;
1740-
homeDispute_not_contains_nocase?: InputMaybe<Scalars["String"]>;
1741-
homeDispute_not_ends_with?: InputMaybe<Scalars["String"]>;
1742-
homeDispute_not_ends_with_nocase?: InputMaybe<Scalars["String"]>;
1743-
homeDispute_not_in?: InputMaybe<Array<Scalars["String"]>>;
1744-
homeDispute_not_starts_with?: InputMaybe<Scalars["String"]>;
1745-
homeDispute_not_starts_with_nocase?: InputMaybe<Scalars["String"]>;
1746-
homeDispute_starts_with?: InputMaybe<Scalars["String"]>;
1747-
homeDispute_starts_with_nocase?: InputMaybe<Scalars["String"]>;
1748-
id?: InputMaybe<Scalars["ID"]>;
1749-
id_gt?: InputMaybe<Scalars["ID"]>;
1750-
id_gte?: InputMaybe<Scalars["ID"]>;
1751-
id_in?: InputMaybe<Array<Scalars["ID"]>>;
1752-
id_lt?: InputMaybe<Scalars["ID"]>;
1753-
id_lte?: InputMaybe<Scalars["ID"]>;
1754-
id_not?: InputMaybe<Scalars["ID"]>;
1755-
id_not_in?: InputMaybe<Array<Scalars["ID"]>>;
1756-
relayer?: InputMaybe<Scalars["Bytes"]>;
1757-
relayer_contains?: InputMaybe<Scalars["Bytes"]>;
1758-
relayer_gt?: InputMaybe<Scalars["Bytes"]>;
1759-
relayer_gte?: InputMaybe<Scalars["Bytes"]>;
1760-
relayer_in?: InputMaybe<Array<Scalars["Bytes"]>>;
1761-
relayer_lt?: InputMaybe<Scalars["Bytes"]>;
1762-
relayer_lte?: InputMaybe<Scalars["Bytes"]>;
1763-
relayer_not?: InputMaybe<Scalars["Bytes"]>;
1764-
relayer_not_contains?: InputMaybe<Scalars["Bytes"]>;
1765-
relayer_not_in?: InputMaybe<Array<Scalars["Bytes"]>>;
1766-
};
1767-
1768-
export enum GatewayDispute_OrderBy {
1769-
ArbitrationCost = "arbitrationCost",
1770-
Arbitrator = "arbitrator",
1771-
DisputeHash = "disputeHash",
1772-
HomeDispute = "homeDispute",
1773-
Id = "id",
1774-
Relayer = "relayer",
1775-
}
1776-
17771686
export type JurorTokensPerCourt = {
17781687
__typename?: "JurorTokensPerCourt";
17791688
court: Court;
@@ -1868,70 +1777,6 @@ export enum OrderDirection {
18681777
Desc = "desc",
18691778
}
18701779

1871-
export type OutgoingBatch = {
1872-
__typename?: "OutgoingBatch";
1873-
batchMerkleRoot: Scalars["String"];
1874-
epoch: Scalars["BigInt"];
1875-
id: Scalars["ID"];
1876-
size: Scalars["BigInt"];
1877-
};
1878-
1879-
export type OutgoingBatch_Filter = {
1880-
/** Filter for the block changed event. */
1881-
_change_block?: InputMaybe<BlockChangedFilter>;
1882-
batchMerkleRoot?: InputMaybe<Scalars["String"]>;
1883-
batchMerkleRoot_contains?: InputMaybe<Scalars["String"]>;
1884-
batchMerkleRoot_contains_nocase?: InputMaybe<Scalars["String"]>;
1885-
batchMerkleRoot_ends_with?: InputMaybe<Scalars["String"]>;
1886-
batchMerkleRoot_ends_with_nocase?: InputMaybe<Scalars["String"]>;
1887-
batchMerkleRoot_gt?: InputMaybe<Scalars["String"]>;
1888-
batchMerkleRoot_gte?: InputMaybe<Scalars["String"]>;
1889-
batchMerkleRoot_in?: InputMaybe<Array<Scalars["String"]>>;
1890-
batchMerkleRoot_lt?: InputMaybe<Scalars["String"]>;
1891-
batchMerkleRoot_lte?: InputMaybe<Scalars["String"]>;
1892-
batchMerkleRoot_not?: InputMaybe<Scalars["String"]>;
1893-
batchMerkleRoot_not_contains?: InputMaybe<Scalars["String"]>;
1894-
batchMerkleRoot_not_contains_nocase?: InputMaybe<Scalars["String"]>;
1895-
batchMerkleRoot_not_ends_with?: InputMaybe<Scalars["String"]>;
1896-
batchMerkleRoot_not_ends_with_nocase?: InputMaybe<Scalars["String"]>;
1897-
batchMerkleRoot_not_in?: InputMaybe<Array<Scalars["String"]>>;
1898-
batchMerkleRoot_not_starts_with?: InputMaybe<Scalars["String"]>;
1899-
batchMerkleRoot_not_starts_with_nocase?: InputMaybe<Scalars["String"]>;
1900-
batchMerkleRoot_starts_with?: InputMaybe<Scalars["String"]>;
1901-
batchMerkleRoot_starts_with_nocase?: InputMaybe<Scalars["String"]>;
1902-
epoch?: InputMaybe<Scalars["BigInt"]>;
1903-
epoch_gt?: InputMaybe<Scalars["BigInt"]>;
1904-
epoch_gte?: InputMaybe<Scalars["BigInt"]>;
1905-
epoch_in?: InputMaybe<Array<Scalars["BigInt"]>>;
1906-
epoch_lt?: InputMaybe<Scalars["BigInt"]>;
1907-
epoch_lte?: InputMaybe<Scalars["BigInt"]>;
1908-
epoch_not?: InputMaybe<Scalars["BigInt"]>;
1909-
epoch_not_in?: InputMaybe<Array<Scalars["BigInt"]>>;
1910-
id?: InputMaybe<Scalars["ID"]>;
1911-
id_gt?: InputMaybe<Scalars["ID"]>;
1912-
id_gte?: InputMaybe<Scalars["ID"]>;
1913-
id_in?: InputMaybe<Array<Scalars["ID"]>>;
1914-
id_lt?: InputMaybe<Scalars["ID"]>;
1915-
id_lte?: InputMaybe<Scalars["ID"]>;
1916-
id_not?: InputMaybe<Scalars["ID"]>;
1917-
id_not_in?: InputMaybe<Array<Scalars["ID"]>>;
1918-
size?: InputMaybe<Scalars["BigInt"]>;
1919-
size_gt?: InputMaybe<Scalars["BigInt"]>;
1920-
size_gte?: InputMaybe<Scalars["BigInt"]>;
1921-
size_in?: InputMaybe<Array<Scalars["BigInt"]>>;
1922-
size_lt?: InputMaybe<Scalars["BigInt"]>;
1923-
size_lte?: InputMaybe<Scalars["BigInt"]>;
1924-
size_not?: InputMaybe<Scalars["BigInt"]>;
1925-
size_not_in?: InputMaybe<Array<Scalars["BigInt"]>>;
1926-
};
1927-
1928-
export enum OutgoingBatch_OrderBy {
1929-
BatchMerkleRoot = "batchMerkleRoot",
1930-
Epoch = "epoch",
1931-
Id = "id",
1932-
Size = "size",
1933-
}
1934-
19351780
export enum Period {
19361781
Appeal = "appeal",
19371782
Commit = "commit",
@@ -1978,12 +1823,8 @@ export type Query = {
19781823
evidenceGroup?: Maybe<EvidenceGroup>;
19791824
evidenceGroups: Array<EvidenceGroup>;
19801825
evidences: Array<Evidence>;
1981-
gatewayDispute?: Maybe<GatewayDispute>;
1982-
gatewayDisputes: Array<GatewayDispute>;
19831826
jurorTokensPerCourt?: Maybe<JurorTokensPerCourt>;
19841827
jurorTokensPerCourts: Array<JurorTokensPerCourt>;
1985-
outgoingBatch?: Maybe<OutgoingBatch>;
1986-
outgoingBatches: Array<OutgoingBatch>;
19871828
round?: Maybe<Round>;
19881829
rounds: Array<Round>;
19891830
tokenAndETHShift?: Maybe<TokenAndEthShift>;
@@ -2270,22 +2111,6 @@ export type QueryEvidencesArgs = {
22702111
where?: InputMaybe<Evidence_Filter>;
22712112
};
22722113

2273-
export type QueryGatewayDisputeArgs = {
2274-
block?: InputMaybe<Block_Height>;
2275-
id: Scalars["ID"];
2276-
subgraphError?: _SubgraphErrorPolicy_;
2277-
};
2278-
2279-
export type QueryGatewayDisputesArgs = {
2280-
block?: InputMaybe<Block_Height>;
2281-
first?: InputMaybe<Scalars["Int"]>;
2282-
orderBy?: InputMaybe<GatewayDispute_OrderBy>;
2283-
orderDirection?: InputMaybe<OrderDirection>;
2284-
skip?: InputMaybe<Scalars["Int"]>;
2285-
subgraphError?: _SubgraphErrorPolicy_;
2286-
where?: InputMaybe<GatewayDispute_Filter>;
2287-
};
2288-
22892114
export type QueryJurorTokensPerCourtArgs = {
22902115
block?: InputMaybe<Block_Height>;
22912116
id: Scalars["ID"];
@@ -2302,22 +2127,6 @@ export type QueryJurorTokensPerCourtsArgs = {
23022127
where?: InputMaybe<JurorTokensPerCourt_Filter>;
23032128
};
23042129

2305-
export type QueryOutgoingBatchArgs = {
2306-
block?: InputMaybe<Block_Height>;
2307-
id: Scalars["ID"];
2308-
subgraphError?: _SubgraphErrorPolicy_;
2309-
};
2310-
2311-
export type QueryOutgoingBatchesArgs = {
2312-
block?: InputMaybe<Block_Height>;
2313-
first?: InputMaybe<Scalars["Int"]>;
2314-
orderBy?: InputMaybe<OutgoingBatch_OrderBy>;
2315-
orderDirection?: InputMaybe<OrderDirection>;
2316-
skip?: InputMaybe<Scalars["Int"]>;
2317-
subgraphError?: _SubgraphErrorPolicy_;
2318-
where?: InputMaybe<OutgoingBatch_Filter>;
2319-
};
2320-
23212130
export type QueryRoundArgs = {
23222131
block?: InputMaybe<Block_Height>;
23232132
id: Scalars["ID"];
@@ -2549,12 +2358,8 @@ export type Subscription = {
25492358
evidenceGroup?: Maybe<EvidenceGroup>;
25502359
evidenceGroups: Array<EvidenceGroup>;
25512360
evidences: Array<Evidence>;
2552-
gatewayDispute?: Maybe<GatewayDispute>;
2553-
gatewayDisputes: Array<GatewayDispute>;
25542361
jurorTokensPerCourt?: Maybe<JurorTokensPerCourt>;
25552362
jurorTokensPerCourts: Array<JurorTokensPerCourt>;
2556-
outgoingBatch?: Maybe<OutgoingBatch>;
2557-
outgoingBatches: Array<OutgoingBatch>;
25582363
round?: Maybe<Round>;
25592364
rounds: Array<Round>;
25602365
tokenAndETHShift?: Maybe<TokenAndEthShift>;
@@ -2841,22 +2646,6 @@ export type SubscriptionEvidencesArgs = {
28412646
where?: InputMaybe<Evidence_Filter>;
28422647
};
28432648

2844-
export type SubscriptionGatewayDisputeArgs = {
2845-
block?: InputMaybe<Block_Height>;
2846-
id: Scalars["ID"];
2847-
subgraphError?: _SubgraphErrorPolicy_;
2848-
};
2849-
2850-
export type SubscriptionGatewayDisputesArgs = {
2851-
block?: InputMaybe<Block_Height>;
2852-
first?: InputMaybe<Scalars["Int"]>;
2853-
orderBy?: InputMaybe<GatewayDispute_OrderBy>;
2854-
orderDirection?: InputMaybe<OrderDirection>;
2855-
skip?: InputMaybe<Scalars["Int"]>;
2856-
subgraphError?: _SubgraphErrorPolicy_;
2857-
where?: InputMaybe<GatewayDispute_Filter>;
2858-
};
2859-
28602649
export type SubscriptionJurorTokensPerCourtArgs = {
28612650
block?: InputMaybe<Block_Height>;
28622651
id: Scalars["ID"];
@@ -2873,22 +2662,6 @@ export type SubscriptionJurorTokensPerCourtsArgs = {
28732662
where?: InputMaybe<JurorTokensPerCourt_Filter>;
28742663
};
28752664

2876-
export type SubscriptionOutgoingBatchArgs = {
2877-
block?: InputMaybe<Block_Height>;
2878-
id: Scalars["ID"];
2879-
subgraphError?: _SubgraphErrorPolicy_;
2880-
};
2881-
2882-
export type SubscriptionOutgoingBatchesArgs = {
2883-
block?: InputMaybe<Block_Height>;
2884-
first?: InputMaybe<Scalars["Int"]>;
2885-
orderBy?: InputMaybe<OutgoingBatch_OrderBy>;
2886-
orderDirection?: InputMaybe<OrderDirection>;
2887-
skip?: InputMaybe<Scalars["Int"]>;
2888-
subgraphError?: _SubgraphErrorPolicy_;
2889-
where?: InputMaybe<OutgoingBatch_Filter>;
2890-
};
2891-
28922665
export type SubscriptionRoundArgs = {
28932666
block?: InputMaybe<Block_Height>;
28942667
id: Scalars["ID"];
@@ -3343,7 +3116,31 @@ export type CourtTreeQueryVariables = Exact<{ [key: string]: never }>;
33433116

33443117
export type CourtTreeQuery = {
33453118
__typename?: "Query";
3346-
court?: { __typename?: "Court"; id: string } | null;
3119+
court?: {
3120+
__typename?: "Court";
3121+
name?: string | null;
3122+
id: string;
3123+
children: Array<{
3124+
__typename?: "Court";
3125+
name?: string | null;
3126+
id: string;
3127+
children: Array<{
3128+
__typename?: "Court";
3129+
name?: string | null;
3130+
id: string;
3131+
children: Array<{
3132+
__typename?: "Court";
3133+
name?: string | null;
3134+
id: string;
3135+
children: Array<{
3136+
__typename?: "Court";
3137+
name?: string | null;
3138+
id: string;
3139+
}>;
3140+
}>;
3141+
}>;
3142+
}>;
3143+
} | null;
33473144
};
33483145

33493146
export type DisputeDetailsQueryVariables = Exact<{

web/src/hooks/queries/useCourtTree.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,28 @@ export type { CourtTreeQuery };
66
const courtTreeQuery = gql`
77
query CourtTree {
88
court(id: "1") {
9+
name
910
id
11+
children(orderBy: name) {
12+
name
13+
id
14+
children {
15+
name
16+
id
17+
children {
18+
name
19+
id
20+
children {
21+
name
22+
id
23+
children {
24+
name
25+
id
26+
}
27+
}
28+
}
29+
}
30+
}
1031
}
1132
}
1233
`;

web/src/pages/Courts/TopSearch.tsx

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,39 @@
1-
import React from "react";
2-
import { DropdownCascader, Searchbar } from "@kleros/ui-components-library";
1+
import React, { useMemo } from "react";
2+
import { useNavigate } from "react-router-dom";
3+
import { DropdownCascader } from "@kleros/ui-components-library";
4+
import { useCourtTree, CourtTreeQuery } from "queries/useCourtTree";
35

4-
const TopSearch: React.FC = () => {};
6+
const TopSearch: React.FC = () => {
7+
const { data } = useCourtTree();
8+
const navigate = useNavigate();
9+
const items = useMemo(
10+
() => typeof data !== "undefined" && [rootToItems(data.court)],
11+
[data]
12+
);
13+
return items ? (
14+
<DropdownCascader
15+
items={items}
16+
onSelect={(path: string) => navigate(path)}
17+
placeholder="Select Court"
18+
/>
19+
) : (
20+
<></>
21+
);
22+
};
23+
24+
interface IItem {
25+
label: string;
26+
value: string;
27+
children?: IItem[];
28+
}
29+
30+
const rootToItems = (court: CourtTreeQuery["court"]): IItem => ({
31+
label: court!.name ? court!.name : "Unnamed Court",
32+
value: `/courts/${court!.id}`,
33+
children:
34+
court!.children.length > 0
35+
? court!.children.map((child) => rootToItems(child))
36+
: undefined,
37+
});
538

639
export default TopSearch;

0 commit comments

Comments
 (0)