2017-01-05 9 views
1

私はJSF2とPrimeFaces 5.1を使用しています。Primefaces LineChartModel:Y軸に日付を設定する

私の問題は、グラフのY軸に日付を入れる方法がわかりません。 Number型のみを受け入れます。

/** 
* 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軸に日付を入れる方法を知っていますか?

ありがとうございました

+0

barchartで動作しますか? – Kukeltje

+0

@ Kukeltje私はbarchartを使うことができません:/私はデータを線図で表示する必要があります – Knriano

+0

申し訳ありません、または '最新のPFバージョンまたはプレーンjqplot'を追加してください。私が尋ねた理由は、実際の原因を絞り込むことです。 – Kukeltje

答えて

2

最終的にjqPlotで回答が見つかりました。

メソッドセットは数値のみを受け付けるので、私の日付はミリ秒単位で変換されます。

long dateMS= myDate.getTime(); 
provisionalDates.set("2016-01-15", dateMS); 

次に、PFを使用してグラフにエクステンダを追加できます。

function extender() { 
    this.cfg.axes.yaxis.tickOptions = { 
     formatter: function (format, value) { 
      return $.jqplot.sprintf(convertDate(value)); 
     } 
    }; 
} 

convertDate機能のみを変換するdd/mm/yyyyのためのgetTime:あなただけのエクステンダー機能を確認する必要があり、その後

model.setExtender("extender"); //Works with PF 5+ 

:エクステンダーはあなたのチャートを設定することができます。

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; 
} 
+0

ありがとう、私は同じ問題を抱えています、あなたの答えは本当に助けてください:) – Bender

関連する問題