Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 

111 řádky
3.1 KiB

  1. // material-ui
  2. import {
  3. DataGrid,
  4. } from "@mui/x-data-grid";
  5. import {useEffect, useState} from "react";
  6. import axios from "axios";
  7. import {apiPath} from "../../auth/utils";
  8. //import LoadingComponent from "../extra-pages/LoadingComponent";
  9. import * as React from "react";
  10. import {GET_GROUP_AUTH_LIST} from "../../utils/ApiPathConst";
  11. import Loadable from 'components/Loadable';
  12. import { lazy } from 'react';
  13. const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent')));
  14. // ==============================|| EVENT TABLE ||============================== //
  15. export default function GroupAuthTable({setSelectedRow, userAuth,isNewRecord, editMode}) {
  16. const [authData, setAuthData] = useState([]);
  17. const [onReady, setOnReady] = useState(false);
  18. const [currentSelectedRow, setCurrentSelectedRow] = useState(userAuth);
  19. const [_editMode, setEditMode] = useState(editMode);
  20. useEffect(()=>{
  21. setEditMode(editMode);
  22. },[editMode])
  23. const _sx = {
  24. ml: 3,
  25. mb: 3,
  26. mr: 3,
  27. padding: "4 2 4 2",
  28. boxShadow: 1,
  29. border: 1,
  30. borderColor: '#DDD',
  31. '& .MuiDataGrid-cell': {
  32. borderTop: 1,
  33. borderBottom: 1,
  34. borderColor: "#EEE"
  35. },
  36. '& .MuiDataGrid-footerContainer': {
  37. border: 1,
  38. borderColor: "#EEE"
  39. }
  40. }
  41. useEffect(() => {
  42. axios.get(`${apiPath}${GET_GROUP_AUTH_LIST}`)
  43. .then((response) => {
  44. if (response.status === 200) {
  45. setAuthData(response.data.records);
  46. }
  47. })
  48. .catch(error => {
  49. console.log(error);
  50. return false;
  51. });
  52. }, []);
  53. useEffect(() => {
  54. //if state data are ready and assign to different field
  55. if (authData.length > 0||isNewRecord) {
  56. setOnReady(true);
  57. }
  58. }, [authData]);
  59. const columns = [
  60. {
  61. id: 'module',
  62. field: 'module',
  63. headerName: 'Module',
  64. flex: 1,
  65. },
  66. {
  67. id: 'authority',
  68. field: 'name',
  69. headerName: 'Authority',
  70. flex: 2,
  71. },
  72. ];
  73. return (
  74. !onReady ?
  75. <LoadingComponent/>
  76. :
  77. <div style={{height: '100%', width: '100%'}}>
  78. <DataGrid
  79. rows={authData}
  80. columns={columns}
  81. editMode="row"
  82. initialState={{
  83. pagination: {
  84. paginationModel: {page: 0, pageSize: 20},
  85. },
  86. }}
  87. pageSizeOptions={[10, 20, 30]}
  88. checkboxSelection
  89. rowSelectionModel={currentSelectedRow}
  90. onRowSelectionModelChange={(ids) => {
  91. if(_editMode){
  92. setSelectedRow(ids);
  93. setCurrentSelectedRow(ids);
  94. }
  95. }}
  96. autoHeight
  97. sx={_sx}
  98. />
  99. </div>
  100. );
  101. }