none
Consulta para dashboards RRS feed

  • Pergunta

  • Preciso renderizar um gráfico em linha data,  peso do animal, ganho de peso percentual.

    A tabela contém os campos id, data, peso, cod_proprietario, cod_animal.

    Meu problema é a questão do intervalo, precisaria incluir algum campo na tabela? Como ficaria esta consulta?  

    O usuário entra com o peso e o animal sob controle.

    Ele tem uma orientação para pesar semanalmente, quinzenalmente ou mensalmente conforme cada caso.

    Na visualização do gráfico do peso o usuário tem a opção de escolher o intervalo evolutivo semanal, quinzenal, mensal. 

    Anexo a evolução de peso quinzenal do Pumba. 

    • Movido Ricardo Barbosa Cortes quarta-feira, 25 de fevereiro de 2015 13:22 Encontrar mais respostas para a dúvida
    domingo, 22 de fevereiro de 2015 16:28

Respostas

  • Então Pereira, 

    neste forum https://groups.google.com/forum/#!forum/google-visualization-api o retorno foi de que o problema é com Javascript. Eu não sei onde conseguir ajuda. 

    Não imaginava que rederizar um gráfico tão simples deste seria tão complicado.

    Eu tentei usando Script, mas sem sucesso, abaixo:

    Retorna o erro:

    "Uncaught Error: Type mismatch. Value 3/8/2014 does not match type date in column index 0"

     

    <script>
        function ToJavaScriptDate(value)
       {
        var pattern = /Date\(([^)]+)\)/;
        var results = pattern.exec(value);
        var dt = new Date(parseFloat(results[1]));
        return (dt.getDate() + 1) + "/" + dt.getMonth() + "/" + dt.getFullYear();
        }
           
    </script>
    <!-- Script-->
     
    <script type="text/javascript">
        google.load('visualization', '1.1', { 'packages': ['corechart'] });
        google.setOnLoadCallback(drawChart);
       
        function drawChart() {
            $.get('/Programa_Nutricao/Avaliacao/EvolucaoPeso', {},
                  function (data) {                 
                      var tdata = new google.visualization.DataTable();         
                      tdata.addColumn('date', 'data_semanal');
                      tdata.addColumn('number', 'peso_kg');                 
                      for (var i = 0; i < data.length; i++) {                    
                          if (data[i].data_semanal != null)                          
                              tdata.addRow([ToJavaScriptDate(data[i].data_semanal), data[i].peso_kg]);
                      }      
                   
                      var options = {                   
                          vAxis: { title: "PESO", minValue: 1 },
                          hAxis: { title: "DATA", textStyle: { fontSize: 10 }},
                          legend: { none" }                     
                      };              
                      var chart = new google.visualization.LineChart(document.getElementById('EvolucaoPeso'));
                      chart.draw(tdata, options);
                  });
              }
    </script>


    Pelo erro, tente forçar uma data, exemplo '2014.03.08', muito provavel que seja o formato da data que você esta consumindo

    ;) até mais.


    Altieri Pereira http://altieripereira.blogspot.com/

    • Marcado como Resposta Wilson Boris sábado, 21 de março de 2015 23:55
    quinta-feira, 12 de março de 2015 13:10
  • Resolvido:

     tdata.addRow([ToJavaScriptDate(data[i].data_semanal), parseFloat(data[i].peso_kg)]);     

    • Marcado como Resposta Wilson Boris sábado, 21 de março de 2015 23:55
    sábado, 21 de março de 2015 23:54

Todas as Respostas

  • Wilson,

    Minha sugestão é que você aplique este post na Categoria Reporting Services.


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 25 de fevereiro de 2015 12:53
  • Bom dia,

    Só para entender, seu problema é construir uma query que traga os dados que são demonstrados no gráfico que você compartilhou ?

    ;) até mais.


    Altieri Pereira http://altieripereira.blogspot.com/

    sexta-feira, 6 de março de 2015 13:09
  • Sim. 
    sexta-feira, 6 de março de 2015 13:14
  • Sim. 

    Tentando evoluir na questão, com código abaixo, porém retorna com erro:

    Controler:

        public ActionResult Peso()
            {
                var dia = db.spPesoEvolucao().ToList();
                var a = dia.Select(x => new { x.data_semanal, x.peso_kg });
                return Json(a, JsonRequestBehavior.AllowGet);
            }

    View:

    <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <!-- Script--> <script type="text/javascript"> google.load('visualization', '1', { 'packages': ['corechart'] }); google.setOnLoadCallback(drawChart); function drawChart() { $.get('/Programa/Peso', {}, function (data) { var tdata = new google.visualization.DataTable(); tdata.addColumn('date', 'data'); tdata.addColumn('number', 'peso_kg'); //tdata.addColumn({ type: 'string', role: 'annotation' }); console.log(data); for (var i = 0; i < data.length; i++) { if (data[i].data_semanal != null) tdata.addRow([data[i].data_semanal, data[i].peso_kg]); } var options = { vAxis: { title: "PESO", minValue: 1 }, hAxis: { title: "DATA", textStyle: { fontSize: 10 } }, legend: { position: "none" } }; var chart = new google.visualization.LineChart(document.getElementById('EvolucaoPeso')); chart.draw(tdata, options); }); } </script> <body> <div id="EvolucaoPeso" style="width: 900px; height: 500px;"></div> </body>

    ERRO:</script>


    No banco SQL Server 2008:

    No design da tabela os campos peso_kg(nchar(10),null) e data_semanal(date,null) 

     
    sexta-feira, 6 de março de 2015 13:32
  • Como conseguir um retorno Array sem o Date?

    DE:

    0: Object

           data_semanal: "/Date(1409626800000)/"

           peso_kg: "1.340     "

    PARA:

    0: Object

           data_semanal: "1409626800000"

           peso_kg: "1.340     "

    segunda-feira, 9 de março de 2015 12:21
  • Bom dia,

    Pelo que observei, você esta utilizando a biblioteca do Google Chart, esta área é somente para posts sobre o SQL Server Reporting Services. Não sei vamos conseguir te ajudar. Esse site tem um forum especifico para Google Chart: https://groups.google.com/forum/#!forum/google-visualization-api

    ;) até mais.


    Altieri Pereira http://altieripereira.blogspot.com/

    quarta-feira, 11 de março de 2015 16:02
  • Então Pereira, 

    neste forum https://groups.google.com/forum/#!forum/google-visualization-api o retorno foi de que o problema é com Javascript. Eu não sei onde conseguir ajuda. 

    quarta-feira, 11 de março de 2015 16:13
  • Então Pereira, 

    neste forum https://groups.google.com/forum/#!forum/google-visualization-api o retorno foi de que o problema é com Javascript. Eu não sei onde conseguir ajuda. 

    Não imaginava que rederizar um gráfico tão simples deste seria tão complicado.

    Eu tentei usando Script, mas sem sucesso, abaixo:

    Retorna o erro:

    "Uncaught Error: Type mismatch. Value 3/8/2014 does not match type date in column index 0"

     

    <script>
        function ToJavaScriptDate(value)
       {
        var pattern = /Date\(([^)]+)\)/;
        var results = pattern.exec(value);
        var dt = new Date(parseFloat(results[1]));
        return (dt.getDate() + 1) + "/" + dt.getMonth() + "/" + dt.getFullYear();
        }
           
    </script>
    <!-- Script-->
     
    <script type="text/javascript">
        google.load('visualization', '1.1', { 'packages': ['corechart'] });
        google.setOnLoadCallback(drawChart);
       
        function drawChart() {
            $.get('/Programa_Nutricao/Avaliacao/EvolucaoPeso', {},
                  function (data) {                 
                      var tdata = new google.visualization.DataTable();         
                      tdata.addColumn('date', 'data_semanal');
                      tdata.addColumn('number', 'peso_kg');                 
                      for (var i = 0; i < data.length; i++) {                    
                          if (data[i].data_semanal != null)                          
                              tdata.addRow([ToJavaScriptDate(data[i].data_semanal), data[i].peso_kg]);
                      }      
                   
                      var options = {                   
                          vAxis: { title: "PESO", minValue: 1 },
                          hAxis: { title: "DATA", textStyle: { fontSize: 10 }},
                          legend: { none" }                     
                      };              
                      var chart = new google.visualization.LineChart(document.getElementById('EvolucaoPeso'));
                      chart.draw(tdata, options);
                  });
              }
    </script>


    • Editado Wilson Boris quarta-feira, 11 de março de 2015 16:18 complemento
    quarta-feira, 11 de março de 2015 16:15
  • Então Pereira, 

    neste forum https://groups.google.com/forum/#!forum/google-visualization-api o retorno foi de que o problema é com Javascript. Eu não sei onde conseguir ajuda. 

    Não imaginava que rederizar um gráfico tão simples deste seria tão complicado.

    Eu tentei usando Script, mas sem sucesso, abaixo:

    Retorna o erro:

    "Uncaught Error: Type mismatch. Value 3/8/2014 does not match type date in column index 0"

     

    <script>
        function ToJavaScriptDate(value)
       {
        var pattern = /Date\(([^)]+)\)/;
        var results = pattern.exec(value);
        var dt = new Date(parseFloat(results[1]));
        return (dt.getDate() + 1) + "/" + dt.getMonth() + "/" + dt.getFullYear();
        }
           
    </script>
    <!-- Script-->
     
    <script type="text/javascript">
        google.load('visualization', '1.1', { 'packages': ['corechart'] });
        google.setOnLoadCallback(drawChart);
       
        function drawChart() {
            $.get('/Programa_Nutricao/Avaliacao/EvolucaoPeso', {},
                  function (data) {                 
                      var tdata = new google.visualization.DataTable();         
                      tdata.addColumn('date', 'data_semanal');
                      tdata.addColumn('number', 'peso_kg');                 
                      for (var i = 0; i < data.length; i++) {                    
                          if (data[i].data_semanal != null)                          
                              tdata.addRow([ToJavaScriptDate(data[i].data_semanal), data[i].peso_kg]);
                      }      
                   
                      var options = {                   
                          vAxis: { title: "PESO", minValue: 1 },
                          hAxis: { title: "DATA", textStyle: { fontSize: 10 }},
                          legend: { none" }                     
                      };              
                      var chart = new google.visualization.LineChart(document.getElementById('EvolucaoPeso'));
                      chart.draw(tdata, options);
                  });
              }
    </script>


    Também postei a dúvida: 

     Format a Microsoft JSON date? 

    quarta-feira, 11 de março de 2015 16:22
  • Então Pereira, 

    neste forum https://groups.google.com/forum/#!forum/google-visualization-api o retorno foi de que o problema é com Javascript. Eu não sei onde conseguir ajuda. 

    Não imaginava que rederizar um gráfico tão simples deste seria tão complicado.

    Eu tentei usando Script, mas sem sucesso, abaixo:

    Retorna o erro:

    "Uncaught Error: Type mismatch. Value 3/8/2014 does not match type date in column index 0"

     

    <script>
        function ToJavaScriptDate(value)
       {
        var pattern = /Date\(([^)]+)\)/;
        var results = pattern.exec(value);
        var dt = new Date(parseFloat(results[1]));
        return (dt.getDate() + 1) + "/" + dt.getMonth() + "/" + dt.getFullYear();
        }
           
    </script>
    <!-- Script-->
     
    <script type="text/javascript">
        google.load('visualization', '1.1', { 'packages': ['corechart'] });
        google.setOnLoadCallback(drawChart);
       
        function drawChart() {
            $.get('/Programa_Nutricao/Avaliacao/EvolucaoPeso', {},
                  function (data) {                 
                      var tdata = new google.visualization.DataTable();         
                      tdata.addColumn('date', 'data_semanal');
                      tdata.addColumn('number', 'peso_kg');                 
                      for (var i = 0; i < data.length; i++) {                    
                          if (data[i].data_semanal != null)                          
                              tdata.addRow([ToJavaScriptDate(data[i].data_semanal), data[i].peso_kg]);
                      }      
                   
                      var options = {                   
                          vAxis: { title: "PESO", minValue: 1 },
                          hAxis: { title: "DATA", textStyle: { fontSize: 10 }},
                          legend: { none" }                     
                      };              
                      var chart = new google.visualization.LineChart(document.getElementById('EvolucaoPeso'));
                      chart.draw(tdata, options);
                  });
              }
    </script>


    Pelo erro, tente forçar uma data, exemplo '2014.03.08', muito provavel que seja o formato da data que você esta consumindo

    ;) até mais.


    Altieri Pereira http://altieripereira.blogspot.com/

    • Marcado como Resposta Wilson Boris sábado, 21 de março de 2015 23:55
    quinta-feira, 12 de março de 2015 13:10
  • Resolvido:

     tdata.addRow([ToJavaScriptDate(data[i].data_semanal), parseFloat(data[i].peso_kg)]);     

    • Marcado como Resposta Wilson Boris sábado, 21 de março de 2015 23:55
    sábado, 21 de março de 2015 23:54