From e13e630cd6e4fc0b1ff92098a28a770794c7bb9a Mon Sep 17 00:00:00 2001
From: gabrhr <73925454+gabrhr@users.noreply.github.com>
Date: Wed, 20 Apr 2022 10:19:29 -0500
Subject: =?UTF-8?q?A=C3=B1adir=20plantilla?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Base para front
---
.../odiparpack/app/components/Tables/TreeTable.js | 190 +++++++++++++++++++++
1 file changed, 190 insertions(+)
create mode 100644 front/odiparpack/app/components/Tables/TreeTable.js
(limited to 'front/odiparpack/app/components/Tables/TreeTable.js')
diff --git a/front/odiparpack/app/components/Tables/TreeTable.js b/front/odiparpack/app/components/Tables/TreeTable.js
new file mode 100644
index 0000000..12eeb19
--- /dev/null
+++ b/front/odiparpack/app/components/Tables/TreeTable.js
@@ -0,0 +1,190 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { withStyles } from '@material-ui/core/styles';
+import ExpandLess from '@material-ui/icons/KeyboardArrowRight';
+import ExpandMore from '@material-ui/icons/ExpandMore';
+import Add from '@material-ui/icons/AddCircle';
+import Remove from '@material-ui/icons/RemoveCircleOutline';
+
+import { Table, TableBody, TableCell, TableHead, TableRow } from '@material-ui/core';
+
+const styles = theme => ({
+ root: {
+ width: '100%',
+ marginTop: theme.spacing(3),
+ overflowX: 'auto',
+ },
+ table: {
+ minWidth: 700,
+ },
+ hideRow: {
+ display: 'none'
+ },
+ anchor: {
+ cursor: 'pointer'
+ },
+ icon: {
+ top: 5,
+ position: 'relative',
+ left: -5
+ }
+});
+
+let RenderRow = props => {
+ const {
+ classes,
+ toggleTree,
+ treeOpen,
+ item,
+ parent,
+ arrowMore,
+ icon,
+ branch
+ } = props;
+
+ const keyID = item.id;
+ const dataBody = Object.keys(item);
+ const dataBodyVal = Object.values(item);
+
+ const renderIconMore = (iconName) => {
+ if (iconName === 'arrow') {
+ return ;
+ }
+ return ;
+ };
+
+ const renderIconLess = (iconName) => {
+ if (iconName === 'arrow') {
+ return ;
+ }
+ return ;
+ };
+
+ const renderCell = (dataArray, parentCell) => dataArray.map((itemCell, index) => {
+ if (index < 1) {
+ if (parentCell) {
+ return (
+
+ {arrowMore.indexOf(keyID) > -1 ? renderIconMore(icon) : renderIconLess(icon)}
+ {keyID}
+
+ );
+ }
+ return (
+ {keyID}
+ );
+ }
+
+ if (itemCell !== 'child') {
+ return (
+ {dataBodyVal[index]}
+ );
+ }
+
+ return false;
+ });
+
+ const row = parent ? (
+ -1 ? classes.hideRow : classes.anchor}
+ onClick={() => toggleTree(keyID, item.child, branch)}
+ >
+ {renderCell(dataBody, true)}
+
+ ) : (
+ -1 ? classes.hideRow : ''}
+ >
+ {renderCell(dataBody, false)}
+
+ );
+
+ return [row];
+};
+
+RenderRow.propTypes = {
+ classes: PropTypes.object.isRequired,
+ item: PropTypes.object.isRequired,
+ parent: PropTypes.bool.isRequired,
+ toggleTree: PropTypes.func.isRequired,
+ treeOpen: PropTypes.object.isRequired,
+ arrowMore: PropTypes.object.isRequired,
+ branch: PropTypes.string.isRequired,
+ icon: PropTypes.string.isRequired
+};
+
+RenderRow = withStyles(styles)(RenderRow);
+
+class TreeTable extends React.Component {
+ render() {
+ const {
+ classes,
+ dataTable,
+ icon,
+ treeOpen,
+ arrowMore,
+ toggleTree,
+ branch
+ } = this.props;
+ const parentRow = true;
+ const getData = dataArray => dataArray.map((item, index) => {
+ if (item.child) {
+ return [
+ ,
+ getData(item.child)
+ ];
+ }
+ return (
+
+ );
+ });
+
+ const getHead = dataArray => dataArray.map((item, index) => {item.label}
+ );
+
+ return (
+
+
+
+ { getHead(dataTable.head) }
+
+
+
+ { getData(dataTable.body) }
+
+
+ );
+ }
+}
+
+TreeTable.propTypes = {
+ classes: PropTypes.object.isRequired,
+ dataTable: PropTypes.object.isRequired,
+ treeOpen: PropTypes.object.isRequired,
+ toggleTree: PropTypes.func.isRequired,
+ arrowMore: PropTypes.object.isRequired,
+ branch: PropTypes.string.isRequired,
+ icon: PropTypes.string.isRequired
+};
+
+export default withStyles(styles)(TreeTable);
--
cgit v1.2.3