Skip to content

Commit c053827

Browse files
committed
react-app: Integrate sectioned table to dummy screen
refs oursky#127
1 parent 16fed65 commit c053827

File tree

1 file changed

+108
-12
lines changed

1 file changed

+108
-12
lines changed

react-app/src/components/DummyScreen/DummyScreen.tsx

Lines changed: 108 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,59 @@ import {
1717
import { useAuth } from "../../providers/AuthProvider";
1818
import { useQueryClient } from "../../providers/QueryClientProvider";
1919
import { ConnectionStatus, useWallet } from "../../providers/WalletProvider";
20+
import * as SectionedTable from "../SectionedTable/SectionedTable";
21+
import AppButton from "../common/Buttons/AppButton";
22+
23+
interface DummyTableItem {
24+
identity: {
25+
name: string;
26+
role: string;
27+
};
28+
value: string;
29+
}
30+
31+
const dummyTableItems: SectionedTable.SectionItem<DummyTableItem>[] = [
32+
{
33+
titleId: "AppSideBar.navigation.overview",
34+
className: cn("bg-likecoin-secondarygreen", "text-likecoin-green"),
35+
items: [
36+
{
37+
identity: {
38+
name: "John Doe",
39+
role: "Developer",
40+
},
41+
value: "NO",
42+
},
43+
{
44+
identity: {
45+
name: "Sam Tsui",
46+
role: "Developer",
47+
},
48+
value: "Yes",
49+
},
50+
],
51+
},
52+
{
53+
titleId: "AppSideBar.navigation.portfolio",
54+
className: cn("bg-[#F0ECDA]", "text-[#666666]"),
55+
items: [
56+
{
57+
identity: {
58+
name: "John Doe",
59+
role: "Developer",
60+
},
61+
value: "NO",
62+
},
63+
{
64+
identity: {
65+
name: "Sam Tsui",
66+
role: "Developer",
67+
},
68+
value: "Yes",
69+
},
70+
],
71+
},
72+
];
2073

2174
const DummyScreen: React.FC = () => {
2275
const { setLocale } = useLocale();
@@ -25,12 +78,20 @@ const DummyScreen: React.FC = () => {
2578
const wallet = useWallet();
2679

2780
const [profile, setProfile] = useState<Profile | null>(null);
81+
const [dummyTableSort, setDummyTableSort] =
82+
useState<SectionedTable.ColumnOrder | null>(null);
2883

2984
// Fetch block height every 6 seconds (i.e average block time)
30-
const { loading, data, error } = useQuery<TestQueryQuery>(TestQuery, {
85+
const { data } = useQuery<TestQueryQuery>(TestQuery, {
3186
pollInterval: 6000,
3287
});
3388

89+
const onDummyItemClick = useCallback((item: DummyTableItem) => {
90+
return () => {
91+
console.log(item);
92+
};
93+
}, []);
94+
3495
const [loadMe, { loading: meLoading, data: meData, error: meError }] =
3596
useLazyQuery<MeQueryQuery>(MeQuery, {});
3697

@@ -76,14 +137,6 @@ const DummyScreen: React.FC = () => {
76137
}
77138
}, [setProfile, wallet, desmosQuery]);
78139

79-
if (loading) {
80-
return <div>Loading...</div>;
81-
}
82-
83-
if (error) {
84-
return <div>Failed to fetch data</div>;
85-
}
86-
87140
return (
88141
<div
89142
className={cn(
@@ -105,9 +158,11 @@ const DummyScreen: React.FC = () => {
105158
>
106159
<LocalizedText messageID="App.title" />
107160

108-
<h1>
109-
Block Height: <span>{data?.latestBlock?.height ?? -1}</span>
110-
</h1>
161+
{data && (
162+
<h1>
163+
Block Height: <span>{data.latestBlock?.height ?? -1}</span>
164+
</h1>
165+
)}
111166
</div>
112167
<div className={cn("flex", "flex-col", "gap-y-5")}>
113168
<button
@@ -244,6 +299,47 @@ const DummyScreen: React.FC = () => {
244299
{meData && <div>Signed In As: {meData.me}</div>}
245300

246301
{meError && <div>Failed to sign in: {meError.message}</div>}
302+
303+
<SectionedTable.Table
304+
sections={dummyTableItems}
305+
sortOrder={dummyTableSort ?? undefined}
306+
onSort={setDummyTableSort}
307+
>
308+
<SectionedTable.Column<DummyTableItem>
309+
id="title"
310+
titleId="App.title"
311+
sortable={true}
312+
>
313+
{(item) => (
314+
<div className={cn("flex", "flex-col", "gap-y-2")}>
315+
<span className={cn("font-bold")}>{item.identity.name}</span>
316+
<span>{item.identity.role}</span>
317+
</div>
318+
)}
319+
</SectionedTable.Column>
320+
<SectionedTable.Column<DummyTableItem>
321+
id="name"
322+
titleId="App.title"
323+
sortable={true}
324+
>
325+
{(item) => (
326+
<span className={cn("text-likecoin-green")}>{item.value}</span>
327+
)}
328+
</SectionedTable.Column>
329+
<SectionedTable.Column<DummyTableItem>
330+
id="action"
331+
className={cn("text-right")}
332+
>
333+
{(item) => (
334+
<AppButton
335+
theme="primary"
336+
size="regular"
337+
messageID="AppSideBar.title"
338+
onClick={onDummyItemClick(item)}
339+
/>
340+
)}
341+
</SectionedTable.Column>
342+
</SectionedTable.Table>
247343
</div>
248344
);
249345
};

0 commit comments

Comments
 (0)