Как сделать так, чтобы столбик диаграммы Js всегда округлялся, когда данные равны 0? - PullRequest
1 голос
/ 16 июня 2020

Я придумал этот Fiddle: https://jsfiddle.net/2s09hqLu/, который имеет сложенную округленную диаграмму, как я хотел. Но проблема в том, что значение в массиве данных равно 0. Это не округляет его. Я всегда хочу, чтобы чтобы быть округленным, как это сделать?

data: [20, 5, 0, 15, 12, 13]

enter image description here

Как вы можете видеть здесь, на желтом, его плоская поверхность не закруглена. Как я могу решить эта проблема?

Ответы [ 3 ]

2 голосов
/ 16 июня 2020

Я обновил ваш номер строки только для Fiddle 118: https://jsfiddle.net/r7hvn2ox/

От:

if (rounded){

Кому:

if (rounded || this._chart.data.datasets[1].data[this._index] == 0) {

Я знаю его исправление для 2 наборов данных: столбцы [{}, {}], но оно будет отлично работать с любым из значений наборов данных, а также для этого пример.

1 голос
/ 16 июня 2020

Спасибо всем за ответы. Я пробовал ниже и отлично работал для любого количества наборов данных.

var lastVisible;
  var datasetsLength = this._chart.data.datasets.length;
  this._chart.data.datasets.map((e,index)=>{
    lastVisible=datasetsLength-1;
    //to find the depth of datasets and get non-zero value
    for(var i=lastVisible;i>0;i--){
    if(!this._chart.getDatasetMeta(i).hidden){
      if(this._chart.data.datasets[i].data[this._index] != 0){
        lastVisible = i;
        break;
      }
    }
    } 
  })
0 голосов
/ 16 июня 2020

Вы можете добавить дополнительное выражение к переменной rounded, если его рендеринг указывает на элемент c. Это не лучший подход.

var rounded = this._datasetIndex  === lastVisible || this._index === 2;

В качестве альтернативы вы можете сравнить значения в каждом наборе данных

var cond = false;

if(this._datasetIndex === 0) {
  var datasets = this._chart.data.datasets;
  var dataset = datasets[this._datasetIndex];
  var currentData = dataset.data[this._index];
  var nextData = datasets[this._datasetIndex + 1].data[this._index]
  cond = currentData !== 0 && nextData === 0;
}

var rounded = this._datasetIndex  === lastVisible || cond;
...