test-task-sws
39 строк · 1.1 Кб
1import quantityRowsWithLessNesting from "../../lib/quantityRowsWithLessNesting";
2import { CiwCreateData, CiwUpdateData } from "../../ts/ApiData";
3import { TreeNode } from "../../ts/TreeNode";
4import { Row } from "../row/Row";
5
6type ITreeNode = {
7nodes: TreeNode[];
8onAddChildRow: (id: number) => void;
9onCreateNewRow: (data: CiwCreateData, key: string) => void;
10onUpdateRow: (data: CiwUpdateData, key: string) => void;
11onDeleteRow: (id: number) => void;
12};
13
14export function TreeRows({ nodes, onAddChildRow, onCreateNewRow, onUpdateRow, onDeleteRow }: ITreeNode) {
15const rows: JSX.Element[] = [];
16
17const renderRows = (node: TreeNode) => {
18const qRowsWithLessNesting = quantityRowsWithLessNesting(nodes, node.key);
19rows.push(
20<Row
21key={node.data.id}
22qRowsWithLessNesting={qRowsWithLessNesting}
23node={node}
24onCreateNewRow={onCreateNewRow}
25onAddChildRow={onAddChildRow}
26onUpdateRow={onUpdateRow}
27onDeleteRow={onDeleteRow}
28/>,
29);
30
31if (node.children.length > 0) {
32node.children.forEach((node) => renderRows(node));
33}
34};
35
36nodes.forEach((node) => renderRows(node));
37
38return rows;
39}
40