Как сохранить закругленные углы бара при фильтрации данных диаграммы Js? - PullRequest
0 голосов
/ 17 июня 2020

Я придумал этот JSFiddle: https://www.jsfiddle.net/gcb1dyou с закругленными углами Js углы столбцов. Проблема в том, что при нажатии на легенду для фильтрации данных углы исчезают, как показано ниже enter image description here

Когда я щелкнул оранжевую метку, как вы можете видеть, закругленная граница исчезла с желтой полосы.

var lastVisible = 0;
for (var findLast = 0, findLastTo = this._chart.data.datasets.length; findLast < findLastTo; findLast++) {
if (!this._chart.getDatasetMeta(findLast).hidden) {
  lastVisible = findLast;
  if (this._chart.data.datasets[findLastTo - 1].data[this._index] == 0) {
    lastVisible -= 1;
  }
}

} Здесь я попытался добавить еще один if, чтобы сделать lastVisible findLast-1, когда данные скрыто (легенда нажата) и предыдущий индекс имеет значение null, но не работает

else{
          if(this._chart.data.datasets[findLastTo - 1].data[this._index] == 0){
            lastVisible=findLastTo-2;
          }
        }

Как я могу решить эту проблему? Ожидаю увидеть ваши ответы.

Ответы [ 2 ]

0 голосов
/ 17 июня 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 голосов
/ 17 июня 2020

У вас уже есть проверка для применения закругленных углов, если они не скрыты (отфильтрованы). Просто нужно добавить условие для применения закругленных углов при фильтрации, предполагая, что нули не отображаются.

Примерно так:

if (!this._chart.getDatasetMeta(findLast).hidden) {
    lastVisible = findLast;
    if (this._chart.data.datasets[findLastTo - 1].data[this._index] == 0) {
        lastVisible -= 1;
    }
} else {
    if (this._chart.data.datasets[findLast].data[this._index] == 0) {
        lastVisible = findLast;
        lastVisible -= 1;
    }
}

Вот измененный JSFiddle: https://jsfiddle.net/xopr36g5/

...