No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

99 líneas
2.9 KiB

  1. // material-ui
  2. import * as React from 'react';
  3. import {
  4. DataGrid,
  5. GridRowModes
  6. } from "@mui/x-data-grid";
  7. import {useEffect} from "react";
  8. import {
  9. Stack, useMediaQuery
  10. } from '@mui/material';
  11. import {useTheme} from "@emotion/react";
  12. import {useIntl} from "react-intl";
  13. import { createDeleteFileColumn } from 'utils/fileListColumns';
  14. // ==============================|| EVENT TABLE ||============================== //
  15. export default function UploadFileTable({recordList, setRecordList,}) {
  16. const [rows, setRows] = React.useState(recordList);
  17. const [rowModesModel,setRowModesModel] = React.useState({});
  18. const theme = useTheme();
  19. const isMdOrLg = useMediaQuery(theme.breakpoints.up('md'));
  20. const intl = useIntl();
  21. // const theme = useTheme();
  22. // const navigate = useNavigate()
  23. useEffect(() => {
  24. setRows(recordList);
  25. // console.log(disableDelete);
  26. }, [recordList]);
  27. function NoRowsOverlay() {
  28. return (
  29. <Stack height="100%" alignItems="center" justifyContent="center">
  30. No File Record
  31. {/* <pre>(rows=&#123;[]&#125;)</pre> */}
  32. </Stack>
  33. );
  34. }
  35. const handleCancelClick = (id) => () => {
  36. setRowModesModel({
  37. ...rowModesModel,
  38. [id]: { mode: GridRowModes.View, ignoreModifications: true },
  39. });
  40. // console.log("Starting Delete")
  41. // const editedRow = rows.find((row) => row.id === id);
  42. // console.log(editedRow)
  43. // console.log(editedRow.isNew)
  44. setRecordList(rows.filter((row) => row.id !== id));
  45. setRows(rows.filter((row) => row.id !== id));
  46. }
  47. const deleteColumn = createDeleteFileColumn((id) => handleCancelClick(id));
  48. const columns = [
  49. deleteColumn,
  50. {
  51. id: 'name',
  52. field: 'name',
  53. headerName: intl.formatMessage({id: 'fileName'}),
  54. width: isMdOrLg ? 'auto' : 160,
  55. flex: isMdOrLg ? 1 : undefined,
  56. },
  57. {
  58. id: 'size',
  59. field: 'size',
  60. headerName: intl.formatMessage({id: 'fileSize'}),
  61. valueGetter: (params) => {
  62. // console.log(params)
  63. return Math.ceil(params.value/1024)+" KB";
  64. },
  65. width: isMdOrLg ? 'auto' : 160,
  66. flex: isMdOrLg ? 1 : undefined,
  67. },
  68. ];
  69. return (
  70. <div
  71. style={{ height: '200px', width: '95%',overflowX: 'auto', }}
  72. >
  73. <DataGrid
  74. rows={rows}
  75. columns={columns}
  76. editMode="row"
  77. sx={{border:1}}
  78. rowModesModel={rowModesModel}
  79. components={{ NoRowsOverlay, }}
  80. // hideFooterPagination={true}
  81. disablePagination
  82. disableSelectionOnClick
  83. disableColumnMenu
  84. disableColumnSelector
  85. hideFooter
  86. />
  87. </div>
  88. );
  89. }