Как динамически изменить положение указателя на диаграмме слияния линейных датчиков

У меня есть линейная диаграмма слияния с указателем над диаграммой, где значение указателя постоянно обновляется динамически, и я пытаюсь расположить указатель на основе значения в файле xml, но проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда указатель перемещается, весь график обновляется, мое требование состоит в том, чтобы переместить только указатель, полная диаграмма не должна обновляться, может ли кто-нибудь помочь, чтобы реализовать эту функцию, я пытаюсь следовать примеру, показанному в следующей ссылке http://www.fusioncharts.com/widgets/Gallery/Linear3.html


person mahesh    schedule 20.09.2011    source источник


Ответы (1)


Вы всегда можете обновить значение указателя Linear Gauge с помощью JavaScript или потоковой передачи данных в реальном времени.

Скажем, например, вы создали диаграмму, используя следующий XML:

<chart lowerLimit='0' upperLimit='100' lowerLimitDisplay='Bad' upperLimitDisplay='Good' palette='1' numberSuffix='%' chartRightMargin='20'>
   <colorRange>
      <color minValue='0' maxValue='75' code='FF654F' label='Bad'/>
      <color minValue='75' maxValue='90' code='F6BD0F' label='Moderate'/>
      <color minValue='90' maxValue='100' code='8BBA00' label='Good'/>
   </colorRange>
   <pointers>
      <pointer value='92' />
   </pointers>
</chart>

и диаграмма отображается с использованием следующего JavaScript:

var myChart = new FusionCharts("Charts/HLinearGauge.swf", "myChartId", "450", "120", "0", "1");
myChart.setDataURL("Data/Linear3.xml");
myChart.render("chartdiv");

Теперь вы можете обновить эту диаграмму, используя следующий код JavaScript:

getChartFromId("myChartId").setData(1, 20);

Существуют и другие функции API, такие как: setDataForId(Id, value) или feedData(updateDataQueryString)

e.g.,

getChartFromId("myChartId").setDataForId("p1", 40) ;// this requires the pointer to be set with an id which needs to be provided here as the first parameter 

or

getChartFromId("myChartId").feedData("&value=90") ;

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

Для получения дополнительной информации прочитайте: http://www.fusioncharts.com/widgets/docs/Contents/Linear_JSPAPI.html

Узнайте больше о том, как использовать потоковую передачу данных в режиме реального времени на стороне сервера для обновления данных датчика: http://www.fusioncharts.com/widgets/docs/Contents/Linear_RealTime.html

Для этого вам нужно будет создать страницу поставщика данных, вывод которой будет состоять из одной строки в формате строки запроса, например: &value=30

person sudipto    schedule 20.09.2011
comment
Спасибо за ответ, меня смущает концепция URL-адреса потока данных в упомянутом вами примере, является ли URL-адрес потока данных обязательным? - person mahesh; 21.09.2011
comment
Нет. Это один из вариантов. Итак, подведем итоги: а) использовать JavaScript для обновления указателя или б) использовать поставщик данных на стороне сервера (URL-адрес dataStream) для обновления указателя. Последний вариант можно использовать, когда вы не хотите использовать интерфейс JavaScript для достижения этой цели, а хотите автоматически обновлять его из веб-интерфейса на стороне сервера через определенные промежутки времени. - person sudipto; 21.09.2011
comment
Точно, я пытаюсь обновить только указатель на диаграмме, моя диаграмма не должна перезагружаться, я пытаюсь добиться этого с помощью кода программной части на стороне сервера. - person mahesh; 21.09.2011
comment
могу ли я обновить атрибут maxValue='75' в узле цвета? С помощью метода URL-адреса dataStream ответьте немедленно, ожидая вашего ответа - person mahesh; 22.09.2011
comment
Нет, вы не можете обновлять значение цветового диапазона в режиме реального времени. Вы можете только обновить значение указателя. - person sudipto; 22.09.2011