2015-04-08 3 views
2

Я сделал небольшую диаграмму, используя D3.js.Ожидание рендеринга диаграммы до загрузки данных

  1. Существует 3 различных типа функций нагрузки для различных типов входных данных.

  2. Моя диаграмма может быть отображена на любом из этих наборов данных по одному на основе параметра, переданного функции рендеринга.

  3. Код загрузки данных является асинхронным, что создает проблему, потому что моя функция рендеринга начинает рисовать даже до того, как данные полностью загружены.

  4. Я дал отдельные функции загрузки вместо вызова их внутри функции рендеринга, потому что пользователь может сначала просто загрузить наборы данных и отобразить диаграмму позже.

  5. Я думал о том, чтобы ждать флага перед началом рисования и установить этот флаг, когда все наборы данных выгрузили, но выглядит уродливым ко мне бесконечного цикла.

Любые идеи с точки зрения дизайна, которые я мог бы использовать для выполнения этой работы?

var visualization = new Chart() 
          .width(1000) 
          .height(1000) 
          .loadDissimilarityMatrix('dataSet1.csv') 
          .loadAdjacencyMatrix('dataSet2.csv') 
          .loadLaplacianMatrix('dataSet3.csv') 
          .render('Dissimilarity') 
          // .render('Adjacency') for using the adjacency dataset. 
+0

Да, вы не можете этого сделать, вам нужно поставить код d3 на обратный вызов csv. –

ответ

0

Я придумал решение.

Я понимаю, что часть загрузки данных должна быть оставлена ​​с пользователем API. Вместо того, чтобы запрашивать URL-адрес для загрузки файлов, я должен просто запросить прямые данные. Ответственность за отображение «занятого экрана» и т. Д. Должна принадлежать пользователю API.

Он должен вызвать код создания и рендеринга диаграммы при его обратном вызове, когда наборы данных полностью загружены. Моя диаграмма может отображать их непосредственно, не заботясь о том, что данные все еще загружаются.

Я проверил некоторые API, и я не нашел ни одного, который нести ответственность за разбор и загрузку данных.

P.S. Открыть для предложений.

Смежные вопросы