gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/hosts/tables/inbound-hosts/index.tsx · v0.5.4
Source
1 3b7feef Mrdn 2y ago import {
2 3b7feef Mrdn 2y ago HostType,
3 4cebd65 Mardin 2y ago fetchHosts
4 4cebd65 Mardin 2y ago } from '@marzneshin/features/hosts';
5 4cebd65 Mardin 2y ago import { useNavigate } from "@tanstack/react-router";
6 4cebd65 Mardin 2y ago import { useState } from 'react';
7 4cebd65 Mardin 2y ago import {
8 4cebd65 Mardin 2y ago useInboundsQuery,
9 4cebd65 Mardin 2y ago } from '@marzneshin/features/inbounds';
10 4cebd65 Mardin 2y ago import { SidebarEntityTable } from '@marzneshin/features/entity-table';
11 4cebd65 Mardin 2y ago import { columns } from './columns';
12 4cebd65 Mardin 2y ago import { useDialog } from '@marzneshin/hooks';
13 4cebd65 Mardin 2y ago import {
14 4cebd65 Mardin 2y ago InboundNotSelectedAlertDialog
15 4cebd65 Mardin 2y ago } from './inbound-not-selected-alert-dialog';
16 4cebd65 Mardin 2y ago import {
17 4cebd65 Mardin 2y ago InboundCardHeader,
18 4cebd65 Mardin 2y ago InboundCardContent,
19 4cebd65 Mardin 2y ago } from "./inbound-sidebar-card";
20 3b7feef Mrdn 2y ago
21 3b7feef Mrdn 2y ago export const InboundHostsTable = () => {
22 3b7feef Mrdn 2y ago const { data: inbounds } = useInboundsQuery()
23 7683c69 Mrdn 2y ago const [selectedInbound, setSelectedInbound] = useState<string | undefined>(inbounds[0]?.id !== undefined ? String(inbounds[0].id) : undefined)
24 03b3dbc Mardin 2y ago const navigate = useNavigate({ from: "/hosts" })
25 7428e12 Mrdn 2y ago const [inboundSelectionAlert, setInboundSelectionAlert] = useDialog();
26 3b7feef Mrdn 2y ago
27 03b3dbc Mardin 2y ago const onEdit = (entity: HostType) => navigate({ to: "/hosts/$hostId/edit", params: { hostId: String(entity.id) } });
28 03b3dbc Mardin 2y ago const onDelete = (entity: HostType) => navigate({ to: "/hosts/$hostId/delete", params: { hostId: String(entity.id) } });
29 03b3dbc Mardin 2y ago const onOpen = (entity: HostType) => navigate({ to: "/hosts/$hostId", params: { hostId: String(entity.id) } });
30 3b7feef Mrdn 2y ago
31 3b7feef Mrdn 2y ago const onCreate = () => {
32 7428e12 Mrdn 2y ago if (selectedInbound) {
33 03b3dbc Mardin 2y ago navigate({
34 03b3dbc Mardin 2y ago to: "/hosts/$inboundId/create",
35 03b3dbc Mardin 2y ago params: {
36 03b3dbc Mardin 2y ago inboundId: selectedInbound,
37 03b3dbc Mardin 2y ago }
38 03b3dbc Mardin 2y ago })
39 7428e12 Mrdn 2y ago } else {
40 7428e12 Mrdn 2y ago setInboundSelectionAlert(true)
41 7428e12 Mrdn 2y ago }
42 3b7feef Mrdn 2y ago };
43 3b7feef Mrdn 2y ago
44 3b7feef Mrdn 2y ago return (
45 3b7feef Mrdn 2y ago <div>
46 7428e12 Mrdn 2y ago <InboundNotSelectedAlertDialog
47 7428e12 Mrdn 2y ago open={inboundSelectionAlert}
48 7428e12 Mrdn 2y ago onOpenChange={setInboundSelectionAlert}
49 7428e12 Mrdn 2y ago />
50 4cebd65 Mardin 2y ago <SidebarEntityTable
51 4cebd65 Mardin 2y ago fetchEntity={fetchHosts}
52 4cebd65 Mardin 2y ago entityKey="inbounds"
53 4cebd65 Mardin 2y ago secondaryEntityKey="hosts"
54 4cebd65 Mardin 2y ago sidebarEntities={inbounds}
55 4cebd65 Mardin 2y ago sidebarEntityId={selectedInbound}
56 4cebd65 Mardin 2y ago columnsFn={columns}
57 3b7feef Mrdn 2y ago filteredColumn='remark'
58 4cebd65 Mardin 2y ago setSidebarEntityId={setSelectedInbound}
59 3b7feef Mrdn 2y ago onCreate={onCreate}
60 3b7feef Mrdn 2y ago onOpen={onOpen}
61 4cebd65 Mardin 2y ago onEdit={onEdit}
62 4cebd65 Mardin 2y ago onDelete={onDelete}
63 4cebd65 Mardin 2y ago sidebarCardProps={{
64 4cebd65 Mardin 2y ago header: InboundCardHeader,
65 4cebd65 Mardin 2y ago content: InboundCardContent
66 4cebd65 Mardin 2y ago }}
67 3b7feef Mrdn 2y ago />
68 3b7feef Mrdn 2y ago </div>
69 3b7feef Mrdn 2y ago )
70 3b7feef Mrdn 2y ago }