trithuc-mvc-react 3.1.6 → 3.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,7 @@ import { TableRowRenderSM } from "./TableRowRenderSM";
14
14
  import TableToolbar from "./TableToolbar";
15
15
  import { useDataTable } from "./hooks";
16
16
  import DeleteConfirmationDialog from "./DeleteConfirmationDialog";
17
+ import DeleteMultipleConfirmationDialog from "./DeleteMultipleConfirmationDialog";
17
18
  const defaultQueryOptions = {
18
19
  staleTime: 1000 * 60 * 1, // Thời gian dữ liệu có thể sử dụng lại trước khi gọi lại API
19
20
  cacheTime: 1000 * 60 * 30, // Thời gian dữ liệu được lưu trong cache trước khi bị xóa
@@ -3,6 +3,9 @@ import { Box, Button, Card, Grid, IconButton, Stack, Tooltip, Typography, useMed
3
3
  import { useEffect, useMemo, useState } from "react";
4
4
 
5
5
  import { Add, Refresh } from "@mui/icons-material";
6
+ import BarChartIcon from "@mui/icons-material/BarChart";
7
+ import PieChartIcon from "@mui/icons-material/PieChart";
8
+ import TableChartIcon from "@mui/icons-material/TableChart";
6
9
  import PropTypes from "prop-types";
7
10
  import { DataTableContext } from "./context";
8
11
  import DataTable from "./DataTable";
@@ -60,7 +63,9 @@ DataManagement.propTypes = {
60
63
  onAddClick: PropTypes.func,
61
64
  onEditClick: PropTypes.func,
62
65
  tabPanel: PropTypes.node,
63
- titleAddButton: PropTypes.string
66
+ titleAddButton: PropTypes.string,
67
+ thongKe: PropTypes.object,
68
+ bieuDo: PropTypes.object
64
69
  };
65
70
  const getDefaultValues = (filters = []) => {
66
71
  const defaultValues = {};
@@ -101,13 +106,18 @@ function DataManagement({
101
106
  }
102
107
  },
103
108
  defaultRowsPerPage = 5,
104
- titleAddButton = "Thêm"
109
+ titleAddButton = "Thêm",
110
+ thongKe,
111
+ bieuDo
105
112
  }) {
106
113
  const [openEditorDialog, setOpenEditorDialog] = useState(false);
107
114
  const [selectedEditItem, setSelectedEditItem] = useState(null);
108
115
  const [openViewDialog, setOpenViewDialog] = useState(false);
109
116
 
110
- const { canCreate } = usePermission(apiUrl ? apiUrl : tableName);
117
+ const { canCreate, canThongKe, canBieuDo } = usePermission(apiUrl ? apiUrl : tableName);
118
+
119
+ const [viewMode, setViewMode] = useState("table"); // "table" | "thongke" | "bieudo"
120
+
111
121
  const { defaults, filters } = useMemo(() => {
112
122
  const filters = tableFilters.filter(({ type }) => type !== "default");
113
123
  const defaultFilters = tableFilters.filter(({ type }) => type === "default");
@@ -165,7 +175,9 @@ function DataManagement({
165
175
  hasTabpanel,
166
176
  backParentNavigator,
167
177
  defaultRowsPerPage,
168
- titleAddButton
178
+ titleAddButton,
179
+ thongKe,
180
+ bieuDo
169
181
  };
170
182
  }, [
171
183
  reserPage,
@@ -184,7 +196,9 @@ function DataManagement({
184
196
  setOpenViewDialog,
185
197
  onEditClick,
186
198
  backParentNavigator,
187
- defaultRowsPerPage
199
+ defaultRowsPerPage,
200
+ thongKe,
201
+ bieuDo
188
202
  ]);
189
203
  const isSmallScreen = useMediaQuery(theme.breakpoints.down("sm")); // Xác định màn hình nhỏ
190
204
  const methods = useForm({ defaultValues: getDefaultValues(filters) });
@@ -319,6 +333,40 @@ function DataManagement({
319
333
  width: rightBoxMinWidth ? `${rightBoxMinWidth}px` : "auto" // Sử dụng chiều rộng đo được
320
334
  }}
321
335
  >
336
+ {(viewMode === "thongke" || viewMode === "bieudo") && (
337
+ <Tooltip title="Danh sách dữ liệu">
338
+ <IconButton size={elementSize} color="primary" onClick={() => setViewMode("table")} sx={{ ml: 0.5, mr: 0.5 }}>
339
+ <TableChartIcon fontSize="inherit" />
340
+ </IconButton>
341
+ </Tooltip>
342
+ )}
343
+
344
+ {canThongKe && (
345
+ <Tooltip title="Thống kê">
346
+ <IconButton
347
+ size={elementSize}
348
+ color={viewMode === "thongke" ? "secondary" : "primary"}
349
+ onClick={() => setViewMode("thongke")}
350
+ sx={{ ml: 0.5, mr: 0.5 }}
351
+ >
352
+ <BarChartIcon fontSize="inherit" />
353
+ </IconButton>
354
+ </Tooltip>
355
+ )}
356
+
357
+ {canBieuDo && (
358
+ <Tooltip title="Biểu đồ">
359
+ <IconButton
360
+ size={elementSize}
361
+ color={viewMode === "bieudo" ? "secondary" : "primary"}
362
+ onClick={() => setViewMode("bieudo")}
363
+ sx={{ ml: 0.5, mr: 0.5 }}
364
+ >
365
+ <PieChartIcon fontSize="inherit" />
366
+ </IconButton>
367
+ </Tooltip>
368
+ )}
369
+
322
370
  <HuongDanButton tableName={tableName} size={elementSize} />
323
371
  <Tooltip title="Làm mới">
324
372
  <IconButton
@@ -370,25 +418,32 @@ function DataManagement({
370
418
 
371
419
  <Card className="custom-card-DataManagement">
372
420
  {tabPanel}
373
- <FilterGod tableName={tableName} filters={filters} elementSize={elementSize} setPage={setPage} />
374
- {backParentNavigator}
375
- {!isSmallScreen ? (
376
- <DataTable
377
- multipleActions={multipleActions}
378
- page={page}
379
- setPage={setPage}
380
- disableEdit={disableEdit}
381
- disableDelete={disableDelete}
382
- />
383
- ) : (
384
- <DataTableSM
385
- multipleActions={multipleActions}
386
- page={page}
387
- setPage={setPage}
388
- disableEdit={disableEdit}
389
- disableDelete={disableDelete}
390
- />
421
+ {viewMode === "table" && (
422
+ <>
423
+ <FilterGod tableName={tableName} filters={filters} elementSize={elementSize} setPage={setPage} />
424
+ {backParentNavigator}
425
+ {!isSmallScreen ? (
426
+ <DataTable
427
+ multipleActions={multipleActions}
428
+ page={page}
429
+ setPage={setPage}
430
+ disableEdit={disableEdit}
431
+ disableDelete={disableDelete}
432
+ />
433
+ ) : (
434
+ <DataTableSM
435
+ multipleActions={multipleActions}
436
+ page={page}
437
+ setPage={setPage}
438
+ disableEdit={disableEdit}
439
+ disableDelete={disableDelete}
440
+ />
441
+ )}
442
+ </>
391
443
  )}
444
+ {viewMode === "thongke" && thongKe}
445
+
446
+ {viewMode === "bieudo" && bieuDo}
392
447
  </Card>
393
448
  </FormProvider>
394
449
 
@@ -11,7 +11,20 @@ const usePermission = (tableName) => {
11
11
  }
12
12
  const { permissionMap, setPermission } = context;
13
13
  const permission = permissionMap[tableName];
14
- const { canEdit, canDelete, canDeleteMulti, canSave, canCreate, canAction, canView, canImport, canExportWord } = useMemo(() => {
14
+ const {
15
+ canEdit,
16
+ canDelete,
17
+ canDeleteMulti,
18
+ canSave,
19
+ canCreate,
20
+ canAction,
21
+ canView,
22
+ canImport,
23
+ canExportWord,
24
+ canPayment,
25
+ canThongKe,
26
+ canBieuDo
27
+ } = useMemo(() => {
15
28
  if (permission) {
16
29
  if (permission.TrangThaiXuLy !== undefined && permission.ObjTrangThai) {
17
30
  const status = permission.ObjTrangThai.find((t) => t.StatusId === permission.TrangThaiXuLy) || {};
@@ -24,7 +37,10 @@ const usePermission = (tableName) => {
24
37
  canAction: status.Action ?? false,
25
38
  canView: status.View ?? false,
26
39
  canImport: status.ImportFile ?? false,
27
- canExportWord: status.ExportWord ?? false
40
+ canExportWord: status.ExportWord ?? false,
41
+ canPayment: status.Payment ?? false,
42
+ canThongKe: status.ThongKe ?? false,
43
+ canBieuDo: status.BieuDo ?? false
28
44
  };
29
45
  } else {
30
46
  return {
@@ -36,7 +52,10 @@ const usePermission = (tableName) => {
36
52
  canAction: permission.Action ?? false,
37
53
  canView: permission.View ?? false,
38
54
  canImport: permission.ImportFile ?? false,
39
- canExportWord: permission.ExportWord ?? false
55
+ canExportWord: permission.ExportWord ?? false,
56
+ canPayment: permission.Payment ?? false,
57
+ canThongKe: permission.ThongKe ?? false,
58
+ canBieuDo: permission.BieuDo ?? false
40
59
  };
41
60
  }
42
61
  } else {
@@ -50,7 +69,10 @@ const usePermission = (tableName) => {
50
69
  canAction: false,
51
70
  canView: false,
52
71
  canImport: false,
53
- canExportWord: false
72
+ canExportWord: false,
73
+ canPayment: false,
74
+ canThongKe: false,
75
+ canBieuDo: false
54
76
  };
55
77
  }
56
78
  }, [permission]);
@@ -70,7 +92,10 @@ const usePermission = (tableName) => {
70
92
  canAction,
71
93
  canView,
72
94
  canImport,
73
- canExportWord
95
+ canExportWord,
96
+ canPayment,
97
+ canThongKe,
98
+ canBieuDo
74
99
  };
75
100
  };
76
101
  export default usePermission;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trithuc-mvc-react",
3
- "version": "3.1.6",
3
+ "version": "3.1.8",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"