SystemInfomationTable.jsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import { withUnstatedContainers } from '../../UnstatedUtils';
  5. import AppContainer from '~/client/services/AppContainer';
  6. import AdminHomeContainer from '~/client/services/AdminHomeContainer';
  7. class SystemInformationTable extends React.Component {
  8. render() {
  9. const { adminHomeContainer } = this.props;
  10. const {
  11. growiVersion, nodeVersion, npmVersion, yarnVersion,
  12. } = adminHomeContainer.state;
  13. if (growiVersion == null || nodeVersion == null || npmVersion == null || yarnVersion == null) {
  14. return <></>;
  15. }
  16. return (
  17. <table data-testid="admin-system-information-table" className="table table-bordered">
  18. <tbody>
  19. <tr>
  20. <th>GROWI</th>
  21. <td data-hide-in-vrt>{ growiVersion }</td>
  22. </tr>
  23. <tr>
  24. <th>node.js</th>
  25. <td>{ nodeVersion }</td>
  26. </tr>
  27. <tr>
  28. <th>npm</th>
  29. <td>{ npmVersion }</td>
  30. </tr>
  31. <tr>
  32. <th>yarn</th>
  33. <td>{ yarnVersion }</td>
  34. </tr>
  35. </tbody>
  36. </table>
  37. );
  38. }
  39. }
  40. SystemInformationTable.propTypes = {
  41. t: PropTypes.func.isRequired, // i18next
  42. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  43. adminHomeContainer: PropTypes.instanceOf(AdminHomeContainer).isRequired,
  44. };
  45. /**
  46. * Wrapper component for using unstated
  47. */
  48. const SystemInformationTableWrapper = withUnstatedContainers(SystemInformationTable, [AppContainer, AdminHomeContainer]);
  49. export default withTranslation()(SystemInformationTableWrapper);