Como exibir os dados corretamente no gráfico (chartist bar)?
Pessoal eu nunca exibi nada dentro de um gráfico, estou completamente perdido, sei que tem que usar ajax para buscar as informações no banco e retornar um json, isso eu sei fazer, o problema mesmo é formatar esse retorno de acordo com as regras do gráfico:
Esse é o gráfico:
/applications/core/interface/imageproxy/imageproxy.php?img=https://i.imgur.com/TDZysFd.png&key=5c6d4e30519959ae1a1e15418fa72c4c6c51981879450a4e543c291251a0da28" width="799" />
Esse são os dados que vem do banco, o tipo de usuário, total de acessos e o mês.
/applications/core/interface/imageproxy/imageproxy.php?img=https://i.imgur.com/lvMNoXj.png&key=c4568d21ae76aa2decec05a01a60f97276ffdf5ee6438c3a5062764eb576299a" width="344" />
JS do Chartist:
new Chartist.Bar('#stacked-bar-chart', {
labels: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
series: [
[100, 200, 120, 280, 150, 300, 350, 200, 180, 350, 420, 500], // Total Access Users
[80, 150, 100, 180, 80, 250, 150, 280, 360, 450, 520, 650], // Total artists
[30, 80, 40, 90, 50, 100, 70, 160, 220, 240, 280, 350], // total studios
]
}, {
stackBars: true,
plugins: [
Chartist.plugins.tooltip()
]
}).on('draw', function (data) {
if (data.type === 'bar') {
data.element.attr({
style: 'stroke-width: 30px'
});
}
});
Tentei da seguinte forma com PHP:
public function get_monthly_accesses() {
$query = "select type, count(type) as accesses, month(date_login) as month from {$this->table_user_access} as ua
inner join {$this->table_user_details} as ud ON ud.user = ua.user
inner join {$this->table_user} as u ON ua.user = u.id
group by type, month(date_login) order by month asc";
$result = $this->query($query, true);
$response = array();
$response["labels"] = array();
$response["series"] = array();
$responseseries = array();
foreach ($result as $key) {
array_push($response["labels"], $key->month);
array_push($responseseries, $key->accesses);
}
array_push($response["series"], $responseseries);
return json_encode($response, JSON_NUMERIC_CHECK);
}
O retorno que tenho é esse:
string(45) "{"labels":[10,10,11,11],"series":[[1,2,6,1]]}"
O mês está repetindo nas labels e as series estão fora de ordem, cada serie representa um tipo de usuario e dentro de cada tem os acessos mensais.Alguém pode me dar uma força? Obrigado!
Discussão (0)
Carregando comentários...