Диаграмма AngularJS Nvd3 - обратный вызов при каждой смене состояний - PullRequest
0 голосов
/ 04 июля 2018

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

вот мой график:

 scope.options = {
            chart: {
                type: 'lineChart',
                height: 450,
                margin : {
                    top: 20,
                    right: 20,
                    bottom: 40,
                    left: 55
                },
                useInteractiveGuideline: false,
                dispatch: {
                    stateChange: function(){ console.log("stateChange"); },
                    changeState: function(){ console.log("changeState"); },
                    tooltipShow: function(){ console.log("tooltipShow"); },
                    tooltipHide: function(){ console.log("tooltipHide"); },

                },
                xAxis: {
                    axisLabel: 'Temperature (Celcius)'
                },
                yAxis: {
                    axisLabel: 'Fluorescence',
                    tickFormat: function(d){
                        return d3.format('0f')(d);
                    },
                    axisLabelDistance: -10
                },

                callback: function(chart){
                    console.log("!!! lineChart callback !!!");
                    // If there is a tm point we show it
                    if (data.length === 1 && angular.isObject(tmPoints[data[0].key])){
                        console.log("SHOW TM");
                        data[0].values.forEach(function(element){
                           if (parseInt(element.x) === parseInt(tmPoints[data[0].key].tm)){
                               // Recuperer l'objet point et non ses valeurs
                                highlightPoint(chart, {'point' : element}, 10, true);
                           }
                        });
                    }
                    console.log(data.length);

                    if (data.length === 1) {
                        chart.lines.dispatch.on("elementClick", function(e) {
                            // Faire ça uniquement si il y a UN graph
                            if (clickedPoints.length >= 2){
                                // Remove the first point of the array
                                var pointToDelete = clickedPoints.shift(0,1);
                                // And remove his highlight
                                removeHighlightPoint(pointToDelete, pointToDelete.element.attributes[1].nodeValue);
                            }
                            clickedPoints.push(e);
                            highlightPoint(chart, e, 7, false);
                        });
                    }



                },
            },
            title: {
                enable: true,
                text: 'Title for Line Chart'
            },


        };

Мне нужно совершать действия, когда отображается только один набор данных, у меня есть условие для if, но обратный вызов вызывается только один раз в начале, как я могу вызвать в каждом stateChange?

Мне также нужно вызывать обратный вызов, когда меняются мои параметры, в настоящее время, когда я изменяю scope.options, ни одно событие (stateChange) не запускается, и обратный вызов тоже не запускается.

У кого-нибудь есть идея?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...