gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/hosts/tables/inbound-hosts/index.tsx · v0.3.0-alpha8
Source
1 3b7feef Mrdn 2y ago
2 3b7feef Mrdn 2y ago import {
3 3b7feef Mrdn 2y ago HostType,
4 3b7feef Mrdn 2y ago HostsDeleteConfirmationDialog,
5 3b7feef Mrdn 2y ago HostsMutationDialog,
6 3b7feef Mrdn 2y ago useHostsQuery
7 3b7feef Mrdn 2y ago } from '@marzneshin/features/hosts'
8 3b7feef Mrdn 2y ago import { InboundHostsDataTable } from './table'
9 3b7feef Mrdn 2y ago import { useState } from 'react'
10 3b7feef Mrdn 2y ago import { useInboundsQuery } from '@marzneshin/features/inbounds'
11 3b7feef Mrdn 2y ago import { columns } from './columns'
12 3b7feef Mrdn 2y ago import { HostSettingsDialog } from '../../dialogs/settings'
13 7428e12 Mrdn 2y ago import { useDialog } from '@marzneshin/components'
14 7428e12 Mrdn 2y ago import { InboundNotSelectedAlertDialog } from './inbound-not-selected-alert-dialog'
15 3b7feef Mrdn 2y ago
16 3b7feef Mrdn 2y ago export const InboundHostsTable = () => {
17 3b7feef Mrdn 2y ago const { data: inbounds } = useInboundsQuery()
18 3b7feef Mrdn 2y ago const [selectedInbound, setSelectedInbound] = useState<string>(String(inbounds[0]?.id))
19 3b7feef Mrdn 2y ago const { data } = useHostsQuery(Number(selectedInbound))
20 3b7feef Mrdn 2y ago
21 7428e12 Mrdn 2y ago const [mutationDialogOpen, setMutationDialogOpen] = useDialog();
22 7428e12 Mrdn 2y ago const [deleteDialogOpen, setDeleteDialogOpen] = useDialog();
23 7428e12 Mrdn 2y ago const [settingsDialogOpen, setSettingsDialogOpen] = useDialog();
24 7428e12 Mrdn 2y ago const [inboundSelectionAlert, setInboundSelectionAlert] = useDialog();
25 3b7feef Mrdn 2y ago const [selectedEntity, selectEntity] = useState<HostType | null>(null);
26 3b7feef Mrdn 2y ago
27 3b7feef Mrdn 2y ago const onEdit = (entity: HostType) => {
28 3b7feef Mrdn 2y ago selectEntity(entity);
29 3b7feef Mrdn 2y ago setMutationDialogOpen(true);
30 3b7feef Mrdn 2y ago };
31 3b7feef Mrdn 2y ago
32 3b7feef Mrdn 2y ago const onDelete = (entity: HostType) => {
33 3b7feef Mrdn 2y ago selectEntity(entity);
34 3b7feef Mrdn 2y ago setDeleteDialogOpen(true);
35 3b7feef Mrdn 2y ago };
36 3b7feef Mrdn 2y ago
37 3b7feef Mrdn 2y ago const onCreate = () => {
38 7428e12 Mrdn 2y ago if (selectedInbound) {
39 7428e12 Mrdn 2y ago selectEntity(null);
40 7428e12 Mrdn 2y ago setMutationDialogOpen(true);
41 7428e12 Mrdn 2y ago } else {
42 7428e12 Mrdn 2y ago setInboundSelectionAlert(true)
43 7428e12 Mrdn 2y ago }
44 3b7feef Mrdn 2y ago };
45 3b7feef Mrdn 2y ago
46 3b7feef Mrdn 2y ago const onOpen = (entity: HostType) => {
47 3b7feef Mrdn 2y ago selectEntity(entity);
48 3b7feef Mrdn 2y ago setSettingsDialogOpen(true);
49 3b7feef Mrdn 2y ago };
50 3b7feef Mrdn 2y ago
51 3b7feef Mrdn 2y ago return (
52 3b7feef Mrdn 2y ago <div>
53 7428e12 Mrdn 2y ago <InboundNotSelectedAlertDialog
54 7428e12 Mrdn 2y ago open={inboundSelectionAlert}
55 7428e12 Mrdn 2y ago onOpenChange={setInboundSelectionAlert}
56 7428e12 Mrdn 2y ago />
57 3b7feef Mrdn 2y ago <HostSettingsDialog
58 3b7feef Mrdn 2y ago open={settingsDialogOpen}
59 3b7feef Mrdn 2y ago onOpenChange={setSettingsDialogOpen}
60 3b7feef Mrdn 2y ago entity={selectedEntity}
61 3b7feef Mrdn 2y ago />
62 3b7feef Mrdn 2y ago <HostsDeleteConfirmationDialog
63 3b7feef Mrdn 2y ago open={deleteDialogOpen}
64 3b7feef Mrdn 2y ago onOpenChange={setDeleteDialogOpen}
65 3b7feef Mrdn 2y ago entity={selectedEntity}
66 3b7feef Mrdn 2y ago />
67 3b7feef Mrdn 2y ago <HostsMutationDialog
68 3b7feef Mrdn 2y ago open={mutationDialogOpen}
69 3b7feef Mrdn 2y ago onOpenChange={setMutationDialogOpen}
70 3b7feef Mrdn 2y ago entity={selectedEntity}
71 3b7feef Mrdn 2y ago inboundId={Number(selectedInbound)}
72 3b7feef Mrdn 2y ago />
73 3b7feef Mrdn 2y ago <InboundHostsDataTable
74 3b7feef Mrdn 2y ago data={data}
75 3b7feef Mrdn 2y ago inbounds={inbounds}
76 3b7feef Mrdn 2y ago selectedInbound={selectedInbound}
77 3b7feef Mrdn 2y ago columns={columns({ onDelete, onOpen, onEdit })}
78 3b7feef Mrdn 2y ago filteredColumn='remark'
79 3b7feef Mrdn 2y ago setSelectedInbound={setSelectedInbound}
80 3b7feef Mrdn 2y ago onCreate={onCreate}
81 3b7feef Mrdn 2y ago onOpen={onOpen}
82 3b7feef Mrdn 2y ago />
83 3b7feef Mrdn 2y ago </div>
84 3b7feef Mrdn 2y ago )
85 3b7feef Mrdn 2y ago }