Я хотел попробовать библиотеку primefaces для jsf и посмотреть, соответствует ли она моим потребностям в отношении панели мониторинга и создания диаграмм. Я попытался настроить панель с некоторыми поддельными данными в линейной диаграмме, чтобы оценить, как она себя ведет:
<div style="height:500px">
<p:growl id="msgs" showDetail="true" />
<p:dashboard id="board" model="#{dashboardManagedBean.model}">
<p:ajax event="reorder" listener="#{dashboardManagedBean.handleReorder}" update="msgs" />
<p:panel width="100%" id="Finance" header="Finance" closable="true" toggleable="true">
<p:chart type="line" model="#{dashboardManagedBean.chartModel}" style="height:500px;"/>
</p:panel>
</p:dashboard>
</div>
Это bean панели инструментов:
package com.journaldev.primefaces.beans;
import java.util.Date;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.DashboardReorderEvent;
import org.primefaces.model.DashboardColumn;
import org.primefaces.model.DashboardModel;
import org.primefaces.model.DefaultDashboardColumn;
import org.primefaces.model.DefaultDashboardModel;
import org.primefaces.model.chart.*;
@ManagedBean
@SessionScoped
public class DashboardManagedBean {
private DashboardModel model;
private LineChartModel chartModel;
public DashboardManagedBean() {
// Initialize the dashboard model
this.model = new DefaultDashboardModel();
DashboardColumn column2 = new DefaultDashboardColumn();
column2.addWidget("Finance");
this.model.addColumn(column2);
chartModel = new LineChartModel();
chartModel.setTitle("Linear Chart");
chartModel.setLegendPosition("e");
chartModel.setZoom(true);
LineChartSeries series1 = new LineChartSeries();
series1.setLabel("Series 1");
chartModel.addSeries(series1);
Date date = new Date();
double y = 0;
for (int i=0;i<1000;i++){
series1.set(date.getTime() + 1000*i,y);
y+=Math.random();
}
DateAxis axis = new DateAxis("Dates");
axis.setTickAngle(-50);
axis.setTickFormat("%d.%m.%y %H:%#M:%S");
axis.setMin("09.09.18 17:38:00");
axis.setMax("09.09.18 18:00:00");
axis.setTickCount(12);
chartModel.getAxes().put(AxisType.X, axis);
}
public DashboardModel getModel() {
return model;
}
public LineChartModel getChartModel() {
return chartModel;
}
public void setModel(DashboardModel model) {
this.model = model;
}
}
И результат, который я получил, выглядит в основном хорошо. Проблемы начинают появляться, когда я пытаюсь увеличить график, и он становится действительно потертым:
Увеличенная диаграмма
Итак, у меня есть несколько вопросов относительно диаграмм простых лиц:
- Почему выбранная мной тема не применяется? Я установил зависимости maven и добавил в web.xml. Для остальной части приборной панели это, кажется, работает.
- Почему масштабирование ведет себя так странно?
- Неужели на линейной диаграмме нет автоматического масштабирования для xmin и xmax?
Спасибо за то, что помогли абсолютным простым лицам noob.