2016-08-18 4 views
0

Я попытался построить динамические данные в диаграмме с приведенным ниже кодом, но я получаю те же данные. потому что последние данные подавляют первый (один над другим).Динамические данные графика в диаграмме

<script type="text/javascript"> 

          var unities = <%-JSON.stringify(unities) %>; 
          var data = <%-JSON.stringify(data) %>; 

          var dataTracer = {}; 
          var arrayDate = []; 
          var arrayData = []; 
          var arrayDataTracer = []; 
          unities.forEach(function(docUnity){ 

           data.forEach(function(docData) { 
            if(docUnity.unity == "date"){ 
             arrayDate.push(docData[docUnity._id]); 
            }}); 
          });        
          unities.forEach(function(docUnity){ 
           if(docUnity.unity != "date" && docUnity.type_cumul == "simple" && docUnity.archiver == 0) { 

            dataTracer["x"] = arrayDate; 
            dataTracer["name"] = docUnity.unity; 
            dataTracer["type"] = 'scatter'; 

            data.forEach(function(docData) { 
             arrayData.push(docData[docUnity._id]); 
            }); 
            dataTracer["y"] = arrayData; 
            alert(dataTracer); 
            arrayDataTracer.push(dataTracer); 
           } 
          }); 

          Plotly.newPlot('myDiv', arrayDataTracer); 

         </script> 

Таким образом, результат

enter image description here

И когда я ожидаю результатов, я создаю больше переменных, как этот

<script type="text/javascript"> 

          var unities = <%-JSON.stringify(unities) %>; 
          var data = <%-JSON.stringify(data) %>; 

          var dataTracer = {}; 
          var dataTracer2 = {}; 
          var arrayDate = []; 
          var arrayData = []; 
          var arrayData2 = []; 
          var arrayDataTracer = []; 
          unities.forEach(function(docUnity){ 

           data.forEach(function(docData) { 
            if(docUnity.unity == "date"){ 
             arrayDate.push(docData[docUnity._id]); 
            }}); 
          }); 

          unities.forEach(function(docUnity){ 

           if(docUnity.unity == "Objectif"){ 
            dataTracer2["x"] = arrayDate; 
            dataTracer2["name"] = docUnity.unity; 
            dataTracer2["type"] = 'scatter'; 

            data.forEach(function(docData) { 
              arrayData2.push(docData[docUnity._id]); 
             }); 
            dataTracer2["y"] = arrayData2; 
            alert(dataTracer2); 
            arrayDataTracer.push(dataTracer2); 
           } 
          }); 
          unities.forEach(function(docUnity){ 
           if(docUnity.unity == "Resultat"){ 
            dataTracer["x"] = arrayDate; 
            dataTracer["name"] = docUnity.unity; 
            dataTracer["type"] = 'scatter'; 

            data.forEach(function(docData) { 
             arrayData.push(docData[docUnity._id]); 
            }); 
            dataTracer["y"] = arrayData; 
            alert(dataTracer); 
            arrayDataTracer.push(dataTracer); 
           } 
          }); 

          Plotly.newPlot('myDiv', arrayDataTracer); 

         </script> 

И я получаю эту enter image description here

+0

проверки Оператор IF в первом: если (docUnity.unity = "Дата" && docUnity.type_cumul == "simple" && docUnity.archiver == 0) Я не вижу его во втором? – kollein

+0

IF в первом для глобального теста, во втором я заменяю его только для теста. это хорошо с этим утверждением. –

+0

показать Структура данных Переменная? – kollein

ответ

0

должен инициировать переменный путем добавления этих строк

arrayData = []; 
dataTracer = {}; 

так что код будет

unities.forEach(function(docUnity){ 
           if(docUnity.unity != "date" && docUnity.type_cumul == "simple" && docUnity.archiver == 0) { 
           //if(docUnity.unity == "Resultat"){ 
            dataTracer["x"] = arrayDate; 
            data.forEach(function(docData) { 
             arrayData.push(docData[docUnity._id]); 
            }); 
            dataTracer["y"] = arrayData; 
            arrayData = []; 
            dataTracer["name"] = docUnity.unity; 
            dataTracer["type"] = 'scatter'; 
            alert(dataTracer.y); 
            arrayDataTracer.push(dataTracer); 
            dataTracer = {}; 
           } 
          }); 
Смежные вопросы