You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

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