Есть ли какой-либо способ оптимизировать расширение дерева табуляторов с большим количеством дочерних элементов?

#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 при расширении строки