test-task-sws

Форк
0
39 строк · 1.1 Кб
1
import quantityRowsWithLessNesting from "../../lib/quantityRowsWithLessNesting";
2
import { CiwCreateData, CiwUpdateData } from "../../ts/ApiData";
3
import { TreeNode } from "../../ts/TreeNode";
4
import { Row } from "../row/Row";
5

6
type ITreeNode = {
7
	nodes: TreeNode[];
8
	onAddChildRow: (id: number) => void;
9
	onCreateNewRow: (data: CiwCreateData, key: string) => void;
10
	onUpdateRow: (data: CiwUpdateData, key: string) => void;
11
	onDeleteRow: (id: number) => void;
12
};
13

14
export function TreeRows({ nodes, onAddChildRow, onCreateNewRow, onUpdateRow, onDeleteRow }: ITreeNode) {
15
	const rows: JSX.Element[] = [];
16

17
	const renderRows = (node: TreeNode) => {
18
		const qRowsWithLessNesting = quantityRowsWithLessNesting(nodes, node.key);
19
		rows.push(
20
			<Row
21
				key={node.data.id}
22
				qRowsWithLessNesting={qRowsWithLessNesting}
23
				node={node}
24
				onCreateNewRow={onCreateNewRow}
25
				onAddChildRow={onAddChildRow}
26
				onUpdateRow={onUpdateRow}
27
				onDeleteRow={onDeleteRow}
28
			/>,
29
		);
30

31
		if (node.children.length > 0) {
32
			node.children.forEach((node) => renderRows(node));
33
		}
34
	};
35

36
	nodes.forEach((node) => renderRows(node));
37

38
	return rows;
39
}
40

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.