На моей странице есть два изображения. На регулярной основе новые временные ряды данных считываются из источника и записываются локальные переменные, то графики обновляются с помощью следующих команд:Dygraphs live trends и synchronization
vm.graph1.updateOptions(
{ 'file': customData1, 'labels': vm.labels1 });
vm.graph2.updateOptions(
{ 'file': customData2, 'labels': vm.labels2 });
Это работает прекрасно, графики показывают живую динамику, как и ожидалось. Однако, когда я пытаюсь синхронизировать два графика, включив syncrhonizer.js и с помощью следующей команды:
vm.graphSync = Dygraph.synchronize(vm.graph1, vm.graph2);
Затем «живые обновления» перестанет работать. Другими словами, график не отображает никаких новых входящих значений (он просто отображает один и тот же статический временной интервал). Синхронизация работает отлично, как для выбора, так и для увеличения.
Данные по-прежнему обновляются, но теперь мне нужно дважды щелкнуть по графику (или вручную панорамировать), чтобы увидеть самые последние данные.
У кого-нибудь есть идеи или рабочие решения для синхронности живых трендов с использованием Dygraphs?
Спасибо за ваше предложение! Это решает проблему, однако она также вводит новую проблему, теперь любое ручное масштабирование/панорамирование сбрасывается/переопределяется каждый раз, когда график обновляется (что является основным моментом синхронизации :)). Я попытался окружить вас предложенной новой строкой внутри блока if, поэтому она должна выполняться только в том случае, если ни один из графиков не масштабируется, однако по какой-либо причине функция isZoomed() возвращает true для обоих графиков (когда не было выполнено ручное масштабирование место). Я добавлю свое рабочее решение ниже и ценю ваше мнение. – user2135428