Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Primefaces LineChartModel:将日期放在Y轴上_Primefaces_Jsf 2_Jqplot - Fatal编程技术网

Primefaces LineChartModel:将日期放在Y轴上

Primefaces LineChartModel:将日期放在Y轴上,primefaces,jsf-2,jqplot,Primefaces,Jsf 2,Jqplot,我正在使用JSF2和PrimeFaces5.1 我的问题是,我不知道如何将日期放在图表的Y轴上。它只接受数字类型 /** * Graph's definition * @return LineChartModel * @throws ParseException */ public LineChartModel createLineModels() throws ParseException { LineChartModel lineChartModel = new LineCh

我正在使用JSF2和PrimeFaces5.1

我的问题是,我不知道如何将日期放在图表的Y轴上。它只接受数字类型

/**
 * Graph's definition
 * @return LineChartModel
 * @throws ParseException
 */
public LineChartModel createLineModels() throws ParseException {
    LineChartModel lineChartModel = new LineChartModel();
    lineChartModel = initCategoryModel();
    lineChartModel.setTitle("Graph's title");
    lineChartModel.setLegendPosition("nw");
    lineChartModel.getAxes().put(AxisType.X, new CategoryAxis("PV"));

    Axis yAxis = this.lineChartModel.getAxis(AxisType.Y);
    yAxis.setTickInterval("1");
    yAxis.setLabel("Provisional dates");
    return lineChartModel;
}

/**
 * Initialization of the graph
 * @return LineChartModel
 * @throws ParseException
 */
public LineChartModel initCategoryModel() throws ParseException {

    LineChartModel model = new LineChartModel();

    ChartSeries provisionalDates= new ChartSeries();
    provisionalDates.setLabel("Dates");

    //Here, I set my data in the Graph
    //In x-axis the date and the y-axis a numerical value
    provisionalDates.set("2016-01-01", 5);
    provisionalDates.set("2016-01-15", 8);

    model.addSeries(provisionalDates);

    return model;
}
我的问题是:

provisionalDates.set("2016-01-01", 5);
provisionalDates.set("2016-01-15", 8);
方法集仅接受数值。我想和你约会

你知道我可以把日期放在Y轴上的方法吗


谢谢

我终于找到了jqPlot的答案

方法集只接受一个数值,所以我所做的是以毫秒为单位转换日期

long dateMS= myDate.getTime();
provisionalDates.set("2016-01-15", dateMS);
然后,您可以使用PF将扩展器添加到图表中。扩展器允许您配置图表:

model.setExtender("extender"); //Works with PF 5+
之后,您只需使扩展器功能:

function extender() {
    this.cfg.axes.yaxis.tickOptions = {
        formatter: function (format, value) {
            return $.jqplot.sprintf(convertDate(value));
        }
    };
}
convertDate函数仅将getTime转换为dd/mm/yyyy

function convertDate(ms) {
    var dateReadable = new Date(ms);
    var year = dateReadable.getFullYear();
    var month = dateReadable.getMonth() + 1;
    if (month < 10) {
        month = "0" + month;
    }
    var day = dateReadable.getDate();
    if (day < 10) {
        day = "0" + day;
    }
    return day + "/" + month + "/" + year;
}
函数转换日期(毫秒){
var dateReadable=新日期(毫秒);
var year=dateReadable.getFullYear();
var month=dateReadable.getMonth()+1;
如果(月<10){
月份=“0”+月份;
}
var day=dateReadable.getDate();
如果(第10天){
day=“0”+天;
}
返回日+“/”+月+“/”+年;
}

它与条形图一起工作吗?@Kukeltje我不能使用条形图:/I需要用线形图显示我的数据对不起,应该添加“或在最新PF版本或普通jqplot中”。我问这个问题的原因是缩小真实的范围cause@Kukeltje代码正在运行。当我输入数值而不是日期时,会显示我的图表。我的问题是,我不知道PF如何处理datesSee:和。我通常搜索“日期y轴jqplot”。选择对你帮助最大的一个。然后我会将您的问题标记为重复(或者您可以创建一个更具体地包含PrimeFaces的好答案(尽管它不是PrimeFaces问题)