Почему мой массив объектов не удаляется из точки данных диаграммы p ie? - PullRequest
0 голосов
/ 06 мая 2020

Я добавил диаграмму ap ie из Canvas JS. Он поставляется с уже существующими точками данных, которые я удалил, и я хочу динамически добавлять свои собственные данные.

let chart = new CanvasJS.Chart("chartContainer", {
    interactivityEnabled: false,
    backgroundColor: "#272953",
    animationEnabled: false,
    title: {
        text: "Portfolio",
        fontColor: "#fff",
        fontFamily: "tahoma"
    },
    data: [{
        type: "pie",
        startAngle: 240,
        yValueFormatString: "##0\"%\"",
        indexLabel: "{label} {y}",
        dataPoints: [
            // { y: 79.45, label: "Google", indexLabelFontColor: "#fff", noOfUnits: 0, ticker: 'GOOGL' } <----- example
        ]
    }]
});

window.onload = loadPieChart();

function loadPieChart() {
    chart.render();
}

let dataPoints = chart.data[0].dataPoints;

Итак, когда я добавляю новую акцию, объект с данными помещается в dataPoints.

Проблема, с которой я сталкиваюсь, это когда я go удаляю акцию , он удаляется из dataPoints, что нормально, но все равно отображается на графике p ie.

Если вы зарегистрируете dataPoints в консоли, там будет пустой массив.

Но если вы зарегистрируете chart.data[0].dataPoints, там все еще будут добавленные ранее акции.

Для добавления акций:

dataPoints.push({ y: stockPercentage, 
   label: stockObject["name"], 
   indexLabelFontColor: "#fff", 
   noOfUnits: stockObject["noOfUnits"], 
   ticker: stockObject["ticker"] })

Для удаления запасов:

function deleteStock(e) {

    //remove stock from Datapoint in pie chart    
    dataPoints = dataPoints.filter(stock => currentRow.childNodes[1].textContent !== stock['ticker']);

    chart.render();

}

Не понимаю, почему он добавляет и удаляет объекты в dataPoints, но не удаляет в p ie график и тот факт, что если вы регистрируете chart.data[0].dataPoints, данные все еще там даже после let dataPoints = chart.data[0].dataPoints;

Я, должно быть, совершаю глупую ошибку.

заранее спасибо

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Что, если мы назначим результат фильтрации набору данных диаграммы

//remove stock from Datapoint in pie chart    
 dataPoints = dataPoints.filter(stock => currentRow.childNodes[1].textContent !== stock['ticker']);
 chart.data[0].dataPoints = dataPoints 
 chart.render();
0 голосов
/ 06 мая 2020

попробуйте добавить это в свою функцию deleteStock:

chart.data[0].dataPoints = chart.data[0].dataPoints.filter(stock => currentRow.childNodes[1].textContent !== stock['ticker']);

, поскольку ваша переменная массива datapoints получает копию chart.data[0].dataPoints, удаление объекта из datapoint не приведет к удалению его из chart.data[0].dataPoints

...