Home.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import * as React from 'react';
  2. import Box from "@mui/material/Box";
  3. import 'handsontable/dist/handsontable.full.min.css';
  4. //import 'handsontable/styles/ht-theme-main.min.css';
  5. import { HandsonTable } from 'handsontable/base';
  6. import {HotTable} from "@handsontable/react";
  7. //import { registerAllModules } from 'handsontable/registry';
  8. import {RichTreeView } from "@mui/x-tree-view/RichTreeView";
  9. import { Grid } from '@mui/material';
  10. import Tab from "@mui/material/Tab";
  11. import TabContext from "@mui/lab/TabContext";
  12. import TabList from "@mui/lab/TabList";
  13. import TabPanel from "@mui/lab/TabPanel";
  14. //import { registerPlugin, NestedRows } from 'handsontable/plugins';
  15. //registerPlugin(NestedRows);
  16. import { textRenderer, registerRenderer } from 'handsontable/renderers';
  17. import useWebSocket, { ReadyState } from 'react-use-websocket';
  18. import Zjcs from './Zjcs';
  19. import Djcs from './Djcs';
  20. import Service from './Service';
  21. import {useNavigate, useLocation} from "react-router";
  22. //registerAllModules();
  23. export default function Home() {
  24. const { sendMessage, lastMessage, readyState } = useWebSocket('ws://127.0.0.1:8000/ws', {
  25. shouldReconnect: (closeEvent) => true
  26. });
  27. function coverRenderer(_instance, td, _row, _col, _prop, value, _cellProperties) {
  28. const button = document.createElement('button');
  29. button.innerText="打开";
  30. if (_col == 2) {
  31. button.innerText="解析";
  32. }
  33. //img.src = value;
  34. /*button.addEventListener('click', (event) => {
  35. console.log(hotRef.current?.hotInstance?.getData()[selectedRow.current]);
  36. hotRef.current?.hotInstance?.alter('remove_row', selectedRow.current, 1);
  37. //console.log(plugin);
  38. event.preventDefault();
  39. });*/
  40. button.addEventListener('mousedown', (event) => {
  41. //console.log(plugin);
  42. event.preventDefault();
  43. });
  44. td.innerText = '';
  45. td.appendChild(button);
  46. return td;
  47. }
  48. const hotRef = React.useRef(null);
  49. const navigate = useNavigate();
  50. let location = useLocation();
  51. const [detail, setDetail] = React.useState([["File Name"]]);
  52. React.useEffect(
  53. () => {
  54. Service.generateFiles().then(x=>{
  55. setDetail(x);
  56. });
  57. }, []
  58. );
  59. React.useEffect(() => {
  60. console.log(lastMessage);
  61. }, [lastMessage]);
  62. registerRenderer('highlightRowRenderer', (hotInstance, TD, row, column, ...rest) => {
  63. coverRenderer(hotInstance, TD, row, column, ...rest);
  64. });
  65. return (
  66. <HotTable nestedRows={false}
  67. data={detail
  68. }
  69. ref={hotRef}
  70. afterSelection={(row, column)=>{
  71. console.log(row);
  72. let selected = hotRef.current?.hotInstance?.getData()[row];
  73. console.log(selected[0]);
  74. if (column == 1) {
  75. //navigate("/qingdan", {state: {name: selected[0]}});
  76. } else {
  77. //sendMessage(selected[0]);
  78. }
  79. }}
  80. rowHeaders={true}
  81. colHeaders={false}
  82. height="800"
  83. readOnly={true}
  84. autoWrapRow={false}
  85. autoWrapCol={false}
  86. /*cells={(row, col, prop) => {
  87. if (col >= 1) {
  88. return {
  89. // row options, which apply to each cell of the second row
  90. // and to each cell of the fifth row
  91. renderer: "highlightRowRenderer"
  92. };
  93. }
  94. }
  95. }*/
  96. licenseKey="non-commercial-and-evaluation" // for non-commercial use only
  97. />
  98. );
  99. }