Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 

168 rindas
5.1 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 { createDeleteFileColumn } from 'utils/fileListColumns';
  9. // import {useNavigate} from "react-router-dom";
  10. // import { useTheme } from '@mui/material/styles';
  11. import {
  12. Box,
  13. Stack,
  14. Button
  15. } from '@mui/material';
  16. // ==============================|| EVENT TABLE ||============================== //
  17. export default function UploadFileTable({ recordList, setRecordList, showPageColumn, _checkCode, _expectedCode }) {
  18. const [rows, setRows] = React.useState(recordList);
  19. const [rowModesModel, setRowModesModel] = React.useState({});
  20. const [showPage, setShowPage] = React.useState(false);
  21. const [checkCode, setCheckCode] = React.useState("");
  22. const [expectedCode, setExpectedCode] = React.useState("");
  23. // const theme = useTheme();
  24. // const navigate = useNavigate()
  25. useEffect(() => {
  26. setCheckCode(_checkCode)
  27. }, [_checkCode]);
  28. useEffect(() => {
  29. setExpectedCode(_expectedCode)
  30. }, [_expectedCode]);
  31. useEffect(() => {
  32. setRows(recordList);
  33. // console.log(disableDelete);
  34. }, [recordList]);
  35. useEffect(() => {
  36. setShowPage(showPageColumn);
  37. // console.log(disableDelete);
  38. }, [showPageColumn]);
  39. function NoRowsOverlay() {
  40. return (
  41. <Stack height="100%" alignItems="center" justifyContent="center">
  42. No File Record
  43. {/* <pre>(rows=&#123;[]&#125;)</pre> */}
  44. </Stack>
  45. );
  46. }
  47. const handleCancelClick = (id) => () => {
  48. setRowModesModel({
  49. ...rowModesModel,
  50. [id]: { mode: GridRowModes.View, ignoreModifications: true },
  51. });
  52. // console.log("Starting Delete")
  53. // const editedRow = rows.find((row) => row.id === id);
  54. // console.log(editedRow)
  55. // console.log(editedRow.isNew)
  56. setRecordList(rows.filter((row) => row.id !== id));
  57. setRows(rows.filter((row) => row.id !== id));
  58. }
  59. const deleteColumn = createDeleteFileColumn((id) => handleCancelClick(id));
  60. const handlePreviewClick = (param) => () => {
  61. var reader = new FileReader();
  62. reader.onload = function () {
  63. let path = reader.result;
  64. var pdf_newTab = window.open("");
  65. pdf_newTab.document.write(
  66. "<html>"
  67. + "<head><title>" + param.row.name + "</title></head>"
  68. + "<body>"
  69. + "<iframe title='" + param.row.name + "' width='100%' height='100%' src='" + path + "" + "'></iframe>"
  70. + "</body>"
  71. + "</html>"
  72. );
  73. };
  74. reader.readAsDataURL(param.row);
  75. }
  76. const columns = showPage?[
  77. deleteColumn,
  78. {
  79. field: 'name',
  80. headerName: 'File Name',
  81. flex: 1,
  82. renderCell: (params) => {
  83. return <Button onClick={handlePreviewClick(params)}><u>{params.row.name}</u></Button>;
  84. },
  85. },
  86. {
  87. id: 'size',
  88. field: 'size',
  89. headerName: 'File Size',
  90. valueGetter: (params) => {
  91. // console.log(params)
  92. return Math.ceil(params.value / 1024) + " KB";
  93. },
  94. flex: 1,
  95. },
  96. {
  97. id: 'no_of_page',
  98. field: 'no_of_page',
  99. headerName: 'Page',
  100. flex: 1,
  101. hide: true
  102. },
  103. ]:[
  104. deleteColumn,
  105. {
  106. field: 'name',
  107. headerName: 'File Name',
  108. flex: 1,
  109. renderCell: (params) => {
  110. return <Button onClick={handlePreviewClick(params)}><u>{params.row.name}</u></Button>;
  111. },
  112. },
  113. {
  114. id: 'check_code',
  115. field: 'check_code',
  116. headerName: 'File Code',
  117. flex: 1,
  118. hide: true,
  119. renderCell: () => {
  120. return (expectedCode == checkCode)?checkCode:<div style={{ margin: 4, color:"red" }}>Warning, File Code not match.<br/>File Code: {checkCode}<br/>Expected Code: {expectedCode}</div>;
  121. },
  122. },
  123. {
  124. id: 'size',
  125. field: 'size',
  126. headerName: 'File Size',
  127. valueGetter: (params) => {
  128. // console.log(params)
  129. return Math.ceil(params.value / 1024) + " KB";
  130. },
  131. flex: 1,
  132. },
  133. ];
  134. return (
  135. <Box style={{ height: '200px', width: '100%' }}>
  136. <DataGrid
  137. rows={rows}
  138. columns={columns}
  139. editMode="row"
  140. sx={{ border: 1 }}
  141. rowModesModel={rowModesModel}
  142. disablePagination
  143. components={{ NoRowsOverlay, }}
  144. // hideFooterPagination={true}
  145. disableSelectionOnClick
  146. disableColumnMenu
  147. disableColumnSelector
  148. hideFooter
  149. getRowHeight={() => 'auto'}
  150. />
  151. </Box>
  152. );
  153. }