Jsf Primefaces图表中的间隔选择事件

Jsf Primefaces图表中的间隔选择事件,jsf,jsf-2,primefaces,jqplot,linechart,Jsf,Jsf 2,Primefaces,Jqplot,Linechart,我有一张动态折线图。我将缩放设置为false,但我希望在选择图表中的区域时能够触发Ajax事件(如选择要缩放的区域时的缩放功能),我希望调用服务器方法并获取所选区域的最大和最小x轴值。 有人能帮忙吗 否则,如果我将缩放设置为true,是否有办法从缩放区域获取值?PrimeFaces和JSF在此上下文中只不过是一个html/javascript/css生成器。如果您在浏览器开发工具中查看生成页面的源代码,您将看到许多javascript,包括所有数据点 <script id="j_idt87

我有一张动态折线图。我将缩放设置为
false
,但我希望在选择图表中的区域时能够触发Ajax事件(如选择要缩放的区域时的缩放功能),我希望调用服务器方法并获取所选区域的最大和最小x轴值。 有人能帮忙吗


否则,如果我将缩放设置为
true
,是否有办法从缩放区域获取值?

PrimeFaces和JSF在此上下文中只不过是一个html/javascript/css生成器。如果您在浏览器开发工具中查看生成页面的源代码,您将看到许多javascript,包括所有数据点

<script id="j_idt87_s" type="text/javascript">
    $(function(){PrimeFaces.cw('Chart','chart'{
        id:'j_idt87',
        type:'line',
        data:[[[1,2],[2,1],[3,3],[4,6],[5,8]],[[1,6],[2,3],[3,2],[4,7],[5,9]]],
        title:"Zoom",
        legendPosition:"e",
        axes:{
            xaxis:{
              label:"",
              renderer:$.jqplot.LinearAxisRenderer,
              tickOptions:{angle:0}},
            yaxis: {
              label:"",
              min:0,
              max:10,
              renderer:$.jqplot.LinearAxisRenderer,
              tickOptions:{angle:0}}
         },
         series:[{label:'Series 1',renderer: $.jqplot.LineRenderer,showLine:true,markerOptions:{show:true, style:'filledCircle'}},{label:'Series 2',renderer: $.jqplot.LineRenderer,showLine:true,markerOptions:{show:true, style:'filledCircle'}}],zoom:true,datatip:true},'charts');});
    </script>
到循环中的if语句


还请注意,它只取第一个系列。如果你有多个,你有一些简单的家庭作业要做。

搜索dupl!cates:这不是一个重复的问题,你发布的问题他正在用javascript手动生成jqPlot图表,但在我的例子中,它是在我的JavaBean中动态生成的。好的,这是我的图表源代码,你能告诉我如何在我的例子中使用这个问题中发布的答案吗<代码>他/她将一个函数绑定到缩放事件,并在其中接收数据。因此,它并不自动意味着数据“生成”的方式很重要。或者换句话说:看看图表生成的html源代码。这里有很多javascript和pointsJSF(和PrimeFaces)在这里只不过是一个html/css/javascript生成器。我得到了
未捕获的TypeError:无法在我的控制台中读取未定义的
的属性“plot”。然后你要么做错了什么(在控制台上
PF('myLineChartWV')
向你展示了什么(通过单击它们来深入了解)或者您有一个旧的PF版本不支持此功能我正在使用PF 5.2和
PF('myLineChartWV'))
正在打印未定义当myLineChartWV不是您的widgetVarOk时,我正在弄清楚它为什么现在打印未定义,因为包含图表的面板是在datatable的一行中生成的,并且在用户展开该行时呈现。我将在展开该行时尝试打印widgetVar值
chart = PF('chart').plot;
PF('chart').plot.target.bind('jqplotZoom', function(ev, gridpos, datapos, plot, cursor){
    var plotData =  plot.series[0].data;
    for (var i=0; i< plotData.length; i++) {
        if(plotData[i][0] >= chart.axes.xaxis.min && plotData[i][0] <= chart.axes.xaxis.max ) {
            //this dataset from the original is within the zoomed region
            //You can save these datapoints in a new array
            //This new array will contain your zoom dataset
            //for ex: zoomDataset.push(plotData[i]);
            console.log(plotData[i]);
        }
    }
});
  plotData[i][1] >= chart.axes.yaxis.min && plotData[i][1] <= chart.axes.yaxis.max