Как динамически добавлять данные в Google Timeline chart?

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

Точно. Для каждого события в базовом классе принято предоставлять защищенную функцию OnXyz или RaiseXyz, чтобы включить повышение из унаследованных классов. Например:

public event EventHandler Loading;

protected virtual void OnLoading() {
    EventHandler handler = Loading;
    if (handler != null)
        handler(this, EventArgs.Empty);
}

Вызывается в унаследованном классе:

OnLoading();
1
задан WhiteHat 19 March 2019 в 19:12
поделиться

1 ответ

график должен быть перерисован каждый раз, когда добавляются новые данные или изменяются параметры.

    function addPrenotazione() {
        dataTable.addRows(["Tavolo" + $("#tavolo").val(), new Date($("#datainizio").val()), new Date($("#datafine").val())]);
        chart.draw(dataTable, options);
    }

переместите указанную выше функцию в функцию drawChart,
это позволит функции получить доступ к переменным dataTable и chart ...

[1116 ] также не рекомендуем использовать встроенные обработчики событий для элементов ...

onclick="addPrenotazione"

, вместо этого добавьте событие и внутри функции drawChart ...

document.getElementById('prenota').addEventListener('click', addPrenotazione);  // 'prenota' or whatever the button id is...

finally при изменении элементов диаграммы подождите, пока 'ready',
не завершат рисование диаграммы ...

    // Function to remove 0 value bars
    google.visualization.events.addListener(chart, 'ready', function () {
        var el = container.getElementsByTagName("rect");
        var width = 100000000;
        var elToRem = [];
        for (var i = 0; i < el.length; i++) {
            var cwidth = parseInt(el[i].getAttribute("width"));
            if (cwidth < width) {
                elToRem = [el[i]];
                width = cwidth;
            }
            else if (cwidth == width) {
                elToRem.push(el[i]);
            }
        }
        for (var i = 0; i < elToRem.length; i++)
            elToRem[i].setAttribute("fill", "none");
    });

рекомендуем настроить аналогично следующему ...

[ 114]

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

function addPrenotazione() {
  var dateBeg = new Date($("#datainizio").val());
  var dateEnd = new Date($("#datafine").val());
  dataTable.addRow(["Tavolo" + $("#tavolo").val(), new Date(0, 0, 0, dateBeg.getHours(), dateBeg.getMinutes(), dateBeg.getSeconds()), new Date(0, 0, 0, dateEnd.getHours(), dateEnd.getMinutes(), dateEnd.getSeconds())]);
  chart.draw(dataTable, options);
}
0
ответ дан WhiteHat 19 March 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: