0

在 Kendo UI 中,每当我们使用拖动事件时,我们都可以获得屏幕 x 和 y 位置,但如何在 Kendo UI 图表(折线图)中获取系列/数据源信息。

在下面的代码中,我使用拖动事件突出显示行 char(time series) 中的一些信息,然后打印数据。

 function createChart(data) {

            $("#TimeSeriesPlot").kendoChart({

                title: {
                    text: series_name.toUpperCase()
                },
                dataSource :{
                    data:data.timeseries,
                },
                series: [{
                    type: "line",
                     field:"v",
                    categoryField:"ts",
               }],
                 valueAxis: {
                    labels: {
                        format: "{0}"
                    },title:{
                        text: "value"
                    },
                    line: {
                        visible: false
                    },

                 },
                categoryAxis: {
                 labels: {
                  type: "date",

                },  
               tooltip: {
                    visible: true,
                   // shared:true,
                     template: "${category} - ${value}"
                },

                /***events start from here***/

                plotAreaClick: onPlotAreaClick,
                seriesClick:onSeriesClick ,
                dragStart:onDragStart ,
                drag:onDrag,
                dragEnd:onDragEnd 

            });
        }
}

function onSeriesHover(e) {
        console.log(kendo.format("Series hover :: {0} ({1}): {2}",
            e.series.name, e.category, e.value));
        }


function onSeriesClick(e){
       //   console.log(selected_anamolies);
         //  console.log(e.category);
           selected_anamolies.push("ts",e.category);
           selected_anamolies.push("v",e.value);
}

function onDragStart(e){

       //  console.log("dragstart"+e.axisRanges.ts);

        //   console.log("dragstart"+e.sender._highlight._points[0].value);
       //     console.log("dragstart"+e.sender._highlight._points[0].category);


}

function onDrag(e){

        var Rect = kendo.geometry.Rect;
        var draw = kendo.drawing;
        prevloc=e.originalEvent.x.startLocation;
        currentloc=e.originalEvent.x.location;

        var rect=new Rect([prevloc,50],[currentloc-prevloc,150]);
        var path = draw.Path.fromRect(rect,{  stroke: null,fill:{color:"#d3f1fb",opacity:0.2}});
        var chart = e.sender;
//   var surface = draw.Surface.create($("#surface"));
        chart.surface.draw(path);
                    //                        
}


function onDragEnd(e){
  console.log(dragEnd)

}
4

1 回答 1

0

为此,您需要从鼠标位置找到最平行的图表点。然后,假设selectednode是与鼠标当前位置最平行的点。现在您可以在 Dataitem 变量中找到该点的数据Dataitem = selectednode._kendoNode.srcElement.chartElement.pointData.dataItem;

我已经为我解决了,就像..

$("#yourchartdivid").on('mousemove', function (el, ui) {
  var child = $(document).find('circle');
  var childrens = [];
child.filter(function (e, data) {
   if (data.attributes.stroke.value == trendcolor[es].color) {
   childrens.push(data);
   }
});
  getfrombottom(el.clientY, el, childrens, el, trendcolor[es].trendname, controlkey);});

现在定义新函数 getfrombottom()

function getfrombottom(bottom, event, childrens, i, trendname, controlkey) {
for (var o = bottom; o > 0; o--) {
    for (var k = 0; k < childrens.length ; k++) {
        var originalmousepossition = event.pageY;
        var originalmouseposition = event.pageX - 9;
        var circlestopposition = childrens[k].parentNode.getBoundingClientRect().top;
        var circleleftposition = childrens[k].cx.baseVal.value;
        if (originalmouseposition - circleleftposition < 3) {            

var selectednode = childrens[k];


        Dataitem = selectednode._kendoNode.srcElement.chartElement.pointData.dataItem;
        return false;
        }
    }
}}

让我知道它是否不适合您。

于 2015-10-16T07:39:12.807 回答