динамическое создание додзё - PullRequest
1 голос
/ 21 ноября 2010

Привет! Мне нужно создать диаграммы додзё таким образом, чтобы они брали значения своих серий из определенных полей ввода, и диаграмма автоматически менялась. Поэтому с этой концепцией я продолжил делать это: -

  var showChart= function(){
   var thevalue=dijit.byId('myvalue').get('value');//gets thevalue from the dijit numbertextbox
   var chart1 = new dojox.charting.Chart2D("showgoals");
   chart1.addPlot("default", {type: "Lines"});
   chart1.addAxis("x");
   chart1.addAxis("y", {vertical: true});
   chart1.addSeries("Series 1", [thevalue, 2, 2, 3, 4, 5, 5, 7]);
   chart1.render();};

Затем я вызываю эту функцию всякий раз, когда значение изменяется: -

      dojo.connect(dojo.byId('myvalue'), "onchange",showChart);//whenever value changes the showChart function

называется

HTML выглядит так: -

<div dojoType="dijit.layout.ContentPane" region="center">
           <div id="showgoals" style="width: 250px; height:150px;" class="graph1"></div>

Ниже приведено текстовое поле, в котором изменяется значение: -

<input id="myvalue" type="text" dojoType="dijit.form.NumberTextBox" name="myvalue"value="1000000"  required="true"
                           invalidMessage="Only Numbers allowed"/><br/><br/>

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

1 Ответ

6 голосов
/ 24 ноября 2010

В функции showChart новый график создается каждый раз, когда функция вызывается с использованием new dojox.charting.Chart2D("showgoals"). Если вы хотите обновить диаграмму, вы можете позвонить updateSeries, чтобы обновить данные серии, и снова набрать render(), чтобы обновить диаграмму.

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

var chart1 = null;
var showChart = function() {
  var thevalue=dijit.byId('myvalue').get('value');
  if (!chart1) {
     var chart1 = new dojox.charting.Chart2D("showgoals");
     chart1.addPlot("default", {type: "Lines"});
     chart1.addAxis("x");
     chart1.addAxis("y", {vertical: true});
     chart1.addSeries("Series 1", [thevalue, 2, 2, 3, 4, 5, 5, 7]);
  } 
  else {
     chart1.updateSeries("Series 1", [thevalue, 2, 2, 3, 4, 5, 5, 7]);
  }
  chart1.render();
}
...