Prezados, venho compartilhar uma necessidade que vem aparecendo em alguns projetos e que consegui vencer parcialmente. Assim, quero registrar aqui o que foi feito para que outros colegas possam usufruir da solução e também gostaria da colaboração para resolver os gargalos onde eu travei
ESCOPO DA DEMANDA
Eu trabalho desenvolvendo supervisórios para usinas fotovoltaicas, então os dados de geração dos inversores e da usina como um todo são informações que o cliente gosta de ter uma visualização rápida e podendo selecionar os períodos. A maioria das soluções do mercado e fornecidas pelos fabricantes já disponibilizam os dados assim, então acaba sendo uma necessidade para não ficar pra trás.
Como os scripts nativos do ScadaBR/Scada-LTS não são muito amigáveis pra ajustar, busquei soluções aqui no fórum em outras postagens e acabei me adaptando melhor ao uso da biblioteca do Google Charts, baseado nessa postagem inicial:
http://forum.scadabr.com.br/t/criar-grafico-de-barras/848/34
RESULTADO INICIAL
Com as orientações dos colegas, consegui desenvolver um código pra apresentar os dados de maneira mais agradável, usando a lib do Google, mas como o gráfico precisa de um input de quantos dados serão apresentados ‘reading_number’. Assim, dei uma “roubada” e defini um gráfico que apresenta apenas os dados de geração diária dos últimos 30 dias, conforme a imagem a seguir:
Como eu comentei, atende por agora mas não é o cenário ideal. Pensando nisso, comecei a buscar alternativas para apresentar os dados de maneira mais interativa, colocando um campo para selecionar data inicial e final para darmos display no gráfico.
PRIMEIRA VERSÃO FUNCIONAL
A ideia então foi implementar a seguinte lógica:
-
Capturar as datas inicial e final via script para o servidor com tags input text
-
Alterar o código do gráfico para que a variável que define a quantidade de dias ‘reading_number’ receba os dados da diferença de dias das datas
Segue a imagem de como ficou esse primeiro teste:
Consegui implementar com sucesso a ideia inicial, mas com uma série de poréns que vou listar a seguir e que peço a ajuda dos colegas mais experientes com HTML e CSS para conseguirmos arredondar.
-
Não consigo travar o input de ser enviado em caso dos valores não estarem dentro do padrão estabelecido (yyyy-mm-dd); tentei filtrar usando regex e outras tags do HTML mas sem sucesso. A ideia é evitar de salvar dados inválidos e comprometer a geração do gráfico
-
Não consigo ajustar o gráfico em caso de erros, pra evitar que ele suma com o elemento gráfico e retorne a mensagem de erro na tela; idealmente minha ideia seria ou substituir por uma mensagem de erro ou manter sem alterar até ter um formato válido dos dados de data.
-
Em último caso a ideia seria colocar um botão para dar um start/refresh no gráfico caso os dados de input estejam ok
A parte de gráficos é uma carência do ScadaBR/Scada-LTS, então creio que se conseguirmos arredondar uma solução que seja de fácil ajuste todos irão se beneficiar!
Agradeço desde já pela atenção de todos, seguimos!
OBS.: vou mandar os códigos nas postagens a seguir, pra não ficar muito ruim de ler.