#javascript #tabulator
#javascript #табулятор
Вопрос:
Я пытаюсь использовать дерево табуляторов для отображения некоторых иерархических данных, и мне это нравится.
Теперь в моих данных много дочерних узлов, и из-за этого при расширении родительского узла это будет очень медленно. Вот скрипка, чтобы лучше описать ситуацию: https://jsfiddle.net/RonaldoC/m9gdwz86/29 /
Попробуйте щелкнуть один из родительских узлов.
Я использую эту часть кода для имитации данных (таким образом, уровень 1 имеет 5 узлов, каждый из них имеет 10000 дочерних узлов, и каждый из этих дочерних узлов имеет около 100 узлов)
let treeData = [];
for (let i = 0; i < 5; i ) {
let level1Data = {
name: "Data with a lot of Children",
data: "Something"
};
let level1Children = [];
for (let j = 0; j < 10000; j ) {
let level2Data = {
name: "Data Children level 2",
data: "Something",
};
let level2Children = [];
for (let k = 0; k < 100; k ) {
let level3Data = {
name: "Data Children level 3",
data: "Something"
};
level2Children.push(level3Data);
}
level2Data._children = level2Children;
level1Children.push(level2Data);
}
level1Data._children = level1Children;
treeData.push(level1Data);
}
Есть ли какой-либо способ его оптимизировать?
Я попытался заглянуть в код, но не могу понять, что я могу изменить, похоже, он выполняет рекурсивное расширение?
Также пытался прочитать документы для любой «конфигурации оптимизации», но и там не повезло.
Спасибо!
Комментарии:
1. Вы можете попытаться разделить свои данные на 5 миллионов записей. Это слишком много элементов DOM для создания! Похоже, что в tabulator есть несколько обратных вызовов, которые вы можете использовать, чтобы увидеть, когда строка расширяется.
2. @Calculuswhiz не могли бы вы подробнее рассказать о том, что вы подразумеваете под «un-nest»? вы пытаетесь сказать, чтобы не использовать древовидную структуру? потому что мне нужно, чтобы данные были в древовидной структуре (это главное требование).
3. как говорит Calculuswhiz, 5 миллионов дочерних элементов — это огромный объем данных для загрузки в таблицу, и это причина, по которой таблица испытывает трудности. Не было бы никакого значимого способа, которым любой из ваших пользователей мог бы поглощать столько данных из таблицы, поэтому, возможно, стоит подумать о том, как лучше их отображать.
4. @OliFolkerd хм, реальные данные на самом деле составляют около 400 тыс., я просто использую максимальное количество дочерних элементов для каждого уровня из моих реальных данных. Но да, как я уже сказал, одним из реальных требований пользователя является возможность расширения и свертывания столбцов, доступных в БД с таким огромным объемом данных, вот почему я использую таблицу дерева.
5. на этом этапе я бы предложил загружать дочерние элементы дерева поверх ajax при расширении строки