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