cl
5 天以前 c4bba32b20f0869b45ed14be04543869dd91ee6c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import React, { useMemo, useState } from "react";
import {
    List,
    DatagridConfigurable,
    SearchInput,
    TopToolbar,
    SelectColumnsButton,
    EditButton,
    FilterButton,
    TextField,
    FunctionField,
    SelectInput,
    WrapperField,
    DeleteButton,
    useTranslate,
} from 'react-admin';
import { Box } from '@mui/material';
import { styled } from '@mui/material/styles';
import HttpAuditRuleCreate from "./HttpAuditRuleCreate";
import EmptyData from "@/page/components/EmptyData";
import MyCreateButton from "@/page/components/MyCreateButton";
import { OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
 
const StyledDatagrid = styled(DatagridConfigurable)(() => ({
    '& .RaDatagrid-row': { cursor: 'auto' },
    '& .opt': { width: 140 },
}));
 
const HttpAuditRuleList = () => {
    const [createDialog, setCreateDialog] = useState(false);
    const translate = useTranslate();
 
    const filters = useMemo(() => [
        <SearchInput source="condition" alwaysOn />,
        <SelectInput
            source="ruleType"
            label="table.field.httpAuditRule.ruleTypeLabel"
            choices={[
                { id: 'URI', name: translate('table.field.httpAuditRule.ruleType.URI') },
                { id: 'IP', name: translate('table.field.httpAuditRule.ruleType.IP') },
                { id: 'REQUEST_BODY', name: translate('table.field.httpAuditRule.ruleType.REQUEST_BODY') },
            ]}
        />,
        <SelectInput
            source="enabled"
            label="table.field.httpAuditRule.enabled"
            choices={[
                { id: 1, name: translate('table.field.httpAuditRule.enabledOn') },
                { id: 0, name: translate('table.field.httpAuditRule.enabledOff') },
            ]}
        />,
    ], [translate]);
 
    return (
        <Box display="flex">
            <List
                title="menu.httpAuditRule"
                empty={<EmptyData onClick={() => setCreateDialog(true)} />}
                filters={filters}
                sort={{ field: "sortOrder", order: "asc" }}
                actions={(
                    <TopToolbar>
                        <FilterButton />
                        <MyCreateButton onClick={() => setCreateDialog(true)} />
                        <SelectColumnsButton preferenceKey="httpAuditRule" />
                    </TopToolbar>
                )}
                perPage={DEFAULT_PAGE_SIZE}
            >
                <StyledDatagrid
                    preferenceKey="httpAuditRule"
                    bulkActionButtons={() => <DeleteButton mutationMode={OPERATE_MODE} />}
                    rowClick={false}
                >
                    <TextField source="id" label="common.field.id" />
                    <FunctionField
                        source="ruleType"
                        label="table.field.httpAuditRule.ruleTypeLabel"
                        render={(r) => translate(`table.field.httpAuditRule.ruleType.${r.ruleType}`)}
                    />
                    <FunctionField
                        source="matchMode"
                        label="table.field.httpAuditRule.matchModeLabel"
                        render={(r) => translate(`table.field.httpAuditRule.matchMode.${r.matchMode}`)}
                    />
                    <TextField source="pattern" label="table.field.httpAuditRule.pattern" />
                    <FunctionField
                        source="direction"
                        label="table.field.httpAuditRule.directionLabel"
                        render={(r) => translate(`table.field.httpAuditRule.direction.${r.direction || 'IN'}`)}
                    />
                    <FunctionField
                        source="recordAll"
                        label="table.field.httpAuditRule.recordAll"
                        render={(r) => (r.recordAll === 1
                            ? translate('table.field.httpAuditRule.recordAllOn')
                            : translate('table.field.httpAuditRule.recordAllOff'))}
                    />
                    <TextField source="requestMaxChars" label="table.field.httpAuditRule.requestMaxChars" />
                    <TextField source="responseMaxChars" label="table.field.httpAuditRule.responseMaxChars" />
                    <FunctionField
                        source="enabled"
                        label="table.field.httpAuditRule.enabled"
                        render={(r) => (r.enabled === 1
                            ? translate('table.field.httpAuditRule.enabledOn')
                            : translate('table.field.httpAuditRule.enabledOff'))}
                    />
                    <TextField source="sortOrder" label="table.field.httpAuditRule.sortOrder" />
                    <TextField source="remark" label="table.field.httpAuditRule.remark" />
                    <WrapperField cellClassName="opt" label="common.field.opt">
                        <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
                        <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                    </WrapperField>
                </StyledDatagrid>
            </List>
            <HttpAuditRuleCreate open={createDialog} setOpen={setCreateDialog} />
        </Box>
    );
};
 
export default HttpAuditRuleList;