@ostup17
Начинающий программист (flutter dev - frontend de)

Почему при динамическом добавлении данных график не рисуется?

Есть статичный вариант графика:

// create data
var data = [
  [Date.UTC(2007, 07, 23), 23.55, 23.88, 23.38, 23.62],
  [Date.UTC(2007, 07, 24), 22.65, 23.7, 22.65, 23.36],
  [Date.UTC(2007, 07, 25), 22.75, 23.7, 22.69, 23.44],
  [Date.UTC(2007, 07, 26), 23.2, 23.39, 22.87, 22.92],
  [Date.UTC(2007, 07, 27), 23.98, 24.49, 23.47, 23.49],
  [Date.UTC(2007, 07, 30), 23.55, 23.88, 23.38, 23.62],
  [Date.UTC(2007, 07, 31), 23.88, 23.93, 23.24, 23.25],
  [Date.UTC(2007, 08, 01), 23.17, 23.4, 22.85, 23.25],
  [Date.UTC(2007, 08, 02), 22.65, 23.7, 22.65, 23.36],
  [Date.UTC(2007, 08, 03), 23.2, 23.39, 22.87, 22.92],
  [Date.UTC(2007, 08, 06), 23.03, 23.15, 22.44, 22.97],
  [Date.UTC(2007, 08, 07), 22.75, 23.7, 22.69, 23.44]
];

// create a chart
chart = anychart.candlestick();

// create a japanese candlestick series and set the data
var series = chart.candlestick(data);

// set the container id
chart.container("container");

// initiate drawing the chart
chart.draw();

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

async function requestAndTreatment() {
        const response = await fetch(requestURL);
        const res = await response.json();
        console.log(res);
        //Получаем дату с апишки
        let time = res.timestamp;
        let date = new Date(time);
        //Получаем цены с апишки
        let open = res.data[0].open;
        let high = res.data[0].high;
        let low = res.data[0].low;
        let close = res.data[0].close;

        //Переводим миллисекунды в год, месяц...

        let year = date.getFullYear();
        let month = date.getMonth();
        let day = date.getDate();
        let hours = date.getHours();
        let minutes = date.getMinutes();
        //Добавляем "0" перед цифрой, если в месяце цифра, а не число
        if (month < 10) {
          month = "0" + month;
        }
        //заполняет массив информацией.
        data.push([Date.UTC(year, month, day), open, high, low, close]);
        console.log(data);
      }

      let data = [];

      // create a chart
      chart = anychart.candlestick();

      // create a japanese candlestick series and set the data
      var series = chart.candlestick(data);

      // set the container id
      chart.container("container");

      // initiate drawing the chart
      chart.draw();

      setInterval(requestAndTreatment, 10000);
      // request();
      //Проверяю, заполнен ли массив
      // function ara () {
      //     console.log(data)
      // };
      // setInterval(ara, 1200)
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
GlazOtca
@GlazOtca
Не в бровь, а в глаз!
попробуйте chart.draw(); вызывать внутри в конце функции requestAndTreatment()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы