Reputation: 21
I've been trying to set a threshold for bars, because when i have only one bar, it gets really huge and it's not desirable.
Here is where I try to set a limit to the bar size, but no results.
function carregarBarraDatasMensais() {
$.get("/monitoria/capitalizacao/aderente/faturas/pendentes/pormes/dashboardservico", function (model){
$("#cnvBarDataMes").html("");
$("#cnvBarDataMes").html("<canvas id='cnvDataMes'></canvas>");
var ctx = $("#cnvDataMes");
var datas = Object.keys(model);
var dataErro = [];
var dataProcessada = [];
var dataProcessadaAtrasada = [];
var dataNaoProcessada = [];
var dataNaoProcessadaAtrasada = [];
for (var i = 0; i < datas.length; i++){
var erro = model[datas[i]]["ERRO_PROCESSAMENTO"];
dataErro[i] = erro == undefined ? 0 : erro.length;
}
for (var i = 0; i < datas.length; i++){
var processado = model[datas[i]]["PROCESSADA"];
dataProcessada[i] = processado == undefined ? 0 : processado.length;
}
for (var i = 0; i < datas.length; i++){
var processadoAtrasado = model[datas[i]]["PROCESSADA_ATRASADA"];
dataProcessadaAtrasada[i] = processadoAtrasado == undefined ? 0 : processadoAtrasado.length;
}
for (var i = 0; i < datas.length; i++){
var naoProcessado = model[datas[i]]["NAO_PROCESSADA"];
dataNaoProcessada[i] = naoProcessado == undefined ? 0 : naoProcessado.length;
}
for (var i = 0; i < datas.length; i++){
var naoProcessadoAtrasado = model[datas[i]]["NAO_PROCESSADA_ATRASADA"];
dataNaoProcessadaAtrasada[i] = naoProcessadoAtrasado == undefined ? 0 : naoProcessadoAtrasado.length;
}
var myBarChart = new Chart(ctx, {
type: 'bar',
data: {
labels: datas,
datasets: [{
label: "Erro no processamento",
backgroundColor: colors["ERRO_PROCESSAMENTO"].hexa,
data: dataErro
}, {
label: "Arquivo processado atrasado",
backgroundColor: colors["PROCESSADA_ATRASADA"].hexa,
data: dataProcessadaAtrasada
}, {
label: "Arquivo processado sem atraso",
backgroundColor: colors["PROCESSADA"].hexa,
data: dataProcessada
}, {
label: "Arquivo não processado, atrasado",
backgroundColor: colors["NAO_PROCESSADA_ATRASADA"].hexa,
data: dataNaoProcessadaAtrasada
}, {
label: "Arquivo não processado, sem atraso",
backgroundColor: colors["NAO_PROCESSADA"].hexa,
data: dataNaoProcessada
}]
},
options: {
tooltips: {
mode: 'index'
},
scales: {
xAxes: [{
maxBarThickness: 100,
ticks: {
beginAtZero: true,
}
}],
yAxes: [{
stacked: true,
ticks: {
}
}]
},
maintainAspectRatio: false
}
})
});
}
Writing barThickness: 100
works, but this will set every bar to this size, no matter the number of bars(causing issues when there are a lot of bars)
EDIT: I think I found the first part of the problem, this option doesn't seem to work with stacked: true
, but removing it(the stacked: true
) is not a option, in this case, for me
Upvotes: 0
Views: 4206
Reputation: 121
Set 'maxBarTHinkness' property to datasets level instead of in options. i.e datasets:[{label:'..', data:[],maxBarThickness:100 }]
Upvotes: 2
Reputation: 21
The answer was simple, I wasn't using the latest version of chart.js. After I changed the import line on my html to <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
it worked just fine.
Upvotes: 2