简体   繁体   中英

Chart.js maxBarThickness option not working

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

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.

Set 'maxBarTHinkness' property to datasets level instead of in options. ie datasets:[{label:'..', data:[],maxBarThickness:100 }]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM