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.
 
 

137 rivejä
4.9 KiB

  1. // material-ui
  2. import * as React from 'react';
  3. import {FiDataGrid} from "components/FiDataGrid";
  4. import {
  5. Button,
  6. // Typography,
  7. useMediaQuery
  8. } from '@mui/material';
  9. import * as DateUtils from "utils/DateUtils"
  10. import {useNavigate} from "react-router-dom";
  11. import {
  12. isORGLoggedIn,
  13. isDummyLoggedIn,
  14. } from "utils/Utils";
  15. import {useTheme} from "@emotion/react";
  16. import {getStatusIntl,getModeEng} from "utils/statusUtils/PublicNoteStatusUtils";
  17. import {FormattedMessage, useIntl} from "react-intl";
  18. // ==============================|| EVENT TABLE ||============================== //
  19. export default function BaseGrid({setCount, url}) {
  20. const navigate = useNavigate()
  21. const theme = useTheme();
  22. const isMdOrLg = useMediaQuery(theme.breakpoints.up('md'));
  23. const intl = useIntl();
  24. const handleDetailClick = (params) => () => {
  25. navigate('/publicNotice/'+ params.id);
  26. };
  27. const columns = [
  28. {
  29. id: 'appNo',
  30. field: 'appNo',
  31. headerName: intl.formatMessage({id: 'applicationId'}),
  32. width: isMdOrLg ? 'auto' : 160,
  33. flex: isMdOrLg ? 1 : undefined,
  34. },
  35. {
  36. id: 'mode',
  37. field: 'mode',
  38. headerName: intl.formatMessage({ id: 'applicationMode' }),
  39. width: isMdOrLg ? 'auto' : 100,
  40. flex: isMdOrLg ? 1 : undefined,
  41. renderCell: (params) => {
  42. return [getModeEng(params)]
  43. },
  44. },
  45. {
  46. id: 'created',
  47. field: 'created',
  48. headerName: intl.formatMessage({id: 'submitDate'}),
  49. width: isMdOrLg ? 'auto' : 300,
  50. flex: isMdOrLg ? 1 : undefined,
  51. valueGetter:(params)=>{
  52. return DateUtils.datetimeStr(params?.value);
  53. }
  54. },
  55. {
  56. id: 'remarks',
  57. field: 'remarks',
  58. headerName: isORGLoggedIn()? intl.formatMessage({id: 'gazetteCount2_1'}) : intl.formatMessage({id: 'myRemarks'}),
  59. width: isMdOrLg ? 'auto' : 400,
  60. flex: isMdOrLg ? 3 : undefined,
  61. renderCell: (params) => (
  62. isORGLoggedIn()?
  63. isDummyLoggedIn()?
  64. <div>
  65. <FormattedMessage id="gazetteCount" />: {params.row.issueVolume + "/" + params.row.issueYear
  66. + " No. " + params.row.issueNo}<br />
  67. GLD: {params.row.custName} <br />
  68. <FormattedMessage id="careOf" />: {params.row.careOf} <br />
  69. <FormattedMessage id="myRemarks" />: {params.row.remarks}
  70. </div>:
  71. <div>
  72. <FormattedMessage id="gazetteCount" />: {params.row.issueVolume + "/" + params.row.issueYear
  73. + " No. " + params.row.issueNo}<br />
  74. <FormattedMessage id="careOf" />: {params.row.careOf} <br />
  75. <FormattedMessage id="myRemarks" />: {params.row.remarks}
  76. </div>
  77. :
  78. <div>
  79. <FormattedMessage id="gazetteCount" />: {params.row.issueVolume + "/" + params.row.issueYear
  80. + " No. " + params.row.issueNo}<br />
  81. <FormattedMessage variant="pnspsNormalText" id="myRemarks"/>:{params.row.remarks}
  82. {/* <Typography variant="pnspsNormalText">{params.row.remarks}</Typography> */}
  83. </div>
  84. )
  85. },
  86. {
  87. id: 'status',
  88. field: 'status',
  89. headerName: intl.formatMessage({id: 'status'}),
  90. width: isMdOrLg ? 'auto' : 160,
  91. flex: isMdOrLg ? 1 : undefined,
  92. renderCell: (params) => {
  93. return [getStatusIntl(params,intl)]
  94. },
  95. },
  96. {
  97. field: 'actions',
  98. headerName: '',
  99. width: 160,
  100. cellClassName: 'actions',
  101. renderCell: (params) => {
  102. return <Button aria-label={intl.formatMessage({id: 'viewDetail'})} onClick={handleDetailClick(params)}>
  103. <FormattedMessage id="viewDetail"/>
  104. </Button>;
  105. },
  106. }
  107. ];
  108. function handleRowDoubleClick(params) {
  109. navigate('/publicNotice/'+ params.id);
  110. }
  111. return (
  112. <div style={{minHeight: 400, height:"100%", width: '100%', padding: 4}}>
  113. <FiDataGrid
  114. columns={columns}
  115. customPageSize={10}
  116. onRowDoubleClick={handleRowDoubleClick}
  117. getRowHeight={() => 'auto'}
  118. doLoad={React.useMemo(() => ({
  119. url: url,
  120. params:{},
  121. callback:(responseData)=>{
  122. setCount(responseData.count??0);
  123. }
  124. }), [url])}
  125. />
  126. </div>
  127. );
  128. }