From 9602e40873a144963820db29ae7a6c05a6e8b089 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 2 Nov 2020 11:43:55 +0400 Subject: [PATCH 1/2] #3 -- add base page --- build.gradle | 10 ++- .../configurations/MvcConfiguration.java | 14 ++++ src/main/java/ru/ulstu/pages/IndexView.java | 73 ++++++++++++++++++ .../META-INF/resources/basicTemplate.xhtml | 44 +++++++++++ .../META-INF/resources/css/style.css | 7 ++ .../resources/META-INF/resources/img/logo.jpg | Bin 0 -> 47015 bytes .../resources/META-INF/resources/img/logo.png | Bin 0 -> 30971 bytes .../resources/META-INF/resources/index.xhtml | 19 +++++ src/main/resources/application.properties | 5 +- 9 files changed, 169 insertions(+), 3 deletions(-) create mode 100644 src/main/java/ru/ulstu/configurations/MvcConfiguration.java create mode 100644 src/main/java/ru/ulstu/pages/IndexView.java create mode 100644 src/main/resources/META-INF/resources/basicTemplate.xhtml create mode 100644 src/main/resources/META-INF/resources/css/style.css create mode 100644 src/main/resources/META-INF/resources/img/logo.jpg create mode 100644 src/main/resources/META-INF/resources/img/logo.png create mode 100644 src/main/resources/META-INF/resources/index.xhtml diff --git a/build.gradle b/build.gradle index 8a3c78a..a3229f4 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,11 @@ jar { } repositories { + mavenLocal() mavenCentral() + maven { + url "https://repository.primefaces.org/" + } } sourceCompatibility = 11 @@ -23,11 +27,15 @@ dependencies { versionSwagger = '2.5.0' } - implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-jetty' implementation group: 'org.slf4j', name: 'slf4j-api', version: versionSLF4J + implementation group: 'org.primefaces', name: 'primefaces', version: '7.0' + implementation group: 'net.bootsfaces', name: 'bootsfaces', version: '1.4.2' + implementation group: 'org.joinfaces', name: 'jsf-spring-boot-starter', version: '4.0.8' + implementation group: 'org.javassist', name: 'javassist', version: '3.25.0-GA' + implementation group: 'org.primefaces.themes', name: 'all-themes', version: '1.0.10' implementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: versionJetty diff --git a/src/main/java/ru/ulstu/configurations/MvcConfiguration.java b/src/main/java/ru/ulstu/configurations/MvcConfiguration.java new file mode 100644 index 0000000..11f7910 --- /dev/null +++ b/src/main/java/ru/ulstu/configurations/MvcConfiguration.java @@ -0,0 +1,14 @@ +package ru.ulstu.configuration; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class MvcConfiguration implements WebMvcConfigurer { + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addRedirectViewController("/", "/index.xhtml"); + registry.addRedirectViewController("/default", "/index.xhtml"); + } +} diff --git a/src/main/java/ru/ulstu/pages/IndexView.java b/src/main/java/ru/ulstu/pages/IndexView.java new file mode 100644 index 0000000..9e288c2 --- /dev/null +++ b/src/main/java/ru/ulstu/pages/IndexView.java @@ -0,0 +1,73 @@ +package ru.ulstu.pages; + +import org.primefaces.model.chart.Axis; +import org.primefaces.model.chart.AxisType; +import org.primefaces.model.chart.LineChartModel; +import org.primefaces.model.chart.LineChartSeries; + +import javax.annotation.PostConstruct; +import javax.faces.view.ViewScoped; +import javax.inject.Named; +import java.io.Serializable; + +@Named +@ViewScoped +public class IndexView implements Serializable { + private LineChartModel lineModel1; + + public LineChartModel getLineModel1() { + return lineModel1; + } + + @PostConstruct + public void init() { + createChart(); + } + + private LineChartModel initLinearModel() { + LineChartModel model = new LineChartModel(); + + LineChartSeries series1 = new LineChartSeries(); + series1.setLabel("Временной ряд"); + + series1.set(1, 2); + series1.set(2, 1); + series1.set(3, 3); + series1.set(4, 6); + series1.set(5, 8); + + LineChartSeries series2 = new LineChartSeries(); + series2.setLabel("Сглаженный ряд"); + + series2.set(1, 6); + series2.set(2, 3); + series2.set(3, 2); + series2.set(4, 7); + series2.set(5, 9); + + LineChartSeries series3 = new LineChartSeries(); + series3.setLabel("Прогноз"); + + series3.set(1, 6); + series3.set(2, 3); + series3.set(3, 2); + series3.set(4, 7); + series3.set(6, 9); + series3.set(7, 9); + + model.addSeries(series1); + model.addSeries(series2); + model.addSeries(series3); + + return model; + } + + public void createChart() { + lineModel1 = initLinearModel(); + lineModel1.setTitle("Сглаживание временного ряда"); + lineModel1.setLegendPosition("e"); + Axis yAxis = lineModel1.getAxis(AxisType.Y); + yAxis.setMin(0); + yAxis.setMax(10); + } +} diff --git a/src/main/resources/META-INF/resources/basicTemplate.xhtml b/src/main/resources/META-INF/resources/basicTemplate.xhtml new file mode 100644 index 0000000..25646b8 --- /dev/null +++ b/src/main/resources/META-INF/resources/basicTemplate.xhtml @@ -0,0 +1,44 @@ + + + + + + Time series smoothing + + + + + +
+
+ + + + + + +
+
+
+
+ Content +
+
+
+
+ +
+
Ulyanovsk State Technical University
+
ulstu.ru
+
2020
+
+
+
+
+
+ diff --git a/src/main/resources/META-INF/resources/css/style.css b/src/main/resources/META-INF/resources/css/style.css new file mode 100644 index 0000000..8020cf6 --- /dev/null +++ b/src/main/resources/META-INF/resources/css/style.css @@ -0,0 +1,7 @@ +.ui-picklist-list-wrapper { + width: 50% !important; +} + +.ui-picklist-list { + width: 100% !important; +} diff --git a/src/main/resources/META-INF/resources/img/logo.jpg b/src/main/resources/META-INF/resources/img/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70e19f3f15dff087aaf34338fc97ef06a625eab1 GIT binary patch literal 47015 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 z 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 + + + + +
+
+ +
+
+ +
+
+
+
+ \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 94ea0dd..8d0c45f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,5 +1,6 @@ spring.main.banner-mode=off logging.level.tech.athene=DEBUG server.port=8080 - -spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = false +spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false +joinfaces.primefaces.theme=afterwork +joinfaces.primefaces.font-awesome=true \ No newline at end of file From 39b09484ecf2e4011b44ad9134ad4e4ed742159b Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 2 Nov 2020 13:45:03 +0400 Subject: [PATCH 2/2] #3 -- show 3 charts of time series --- src/main/java/ru/ulstu/TimeSeriesUtils.java | 8 +- src/main/java/ru/ulstu/pages/IndexView.java | 83 ++++++++++++------- .../resources/META-INF/resources/index.xhtml | 26 ++++-- 3 files changed, 76 insertions(+), 41 deletions(-) diff --git a/src/main/java/ru/ulstu/TimeSeriesUtils.java b/src/main/java/ru/ulstu/TimeSeriesUtils.java index d79e422..901179c 100644 --- a/src/main/java/ru/ulstu/TimeSeriesUtils.java +++ b/src/main/java/ru/ulstu/TimeSeriesUtils.java @@ -22,9 +22,11 @@ public class TimeSeriesUtils { } public static TimeSeries fillDates(TimeSeries timeSeries, long milliseconds) { - timeSeries.getLastValue().setDate(LocalDateTime.now()); - for (int i = timeSeries.getLength() - 2; i >= 0; i--) { - timeSeries.getValues().get(i).setDate(timeSeries.getValues().get(i + 1).getDate().minus(milliseconds, ChronoUnit.MILLIS)); + if (!timeSeries.isEmpty()) { + timeSeries.getLastValue().setDate(LocalDateTime.now()); + for (int i = timeSeries.getLength() - 2; i >= 0; i--) { + timeSeries.getValues().get(i).setDate(timeSeries.getValues().get(i + 1).getDate().minus(milliseconds, ChronoUnit.MILLIS)); + } } return timeSeries; } diff --git a/src/main/java/ru/ulstu/pages/IndexView.java b/src/main/java/ru/ulstu/pages/IndexView.java index 9e288c2..4ce2849 100644 --- a/src/main/java/ru/ulstu/pages/IndexView.java +++ b/src/main/java/ru/ulstu/pages/IndexView.java @@ -1,23 +1,33 @@ package ru.ulstu.pages; -import org.primefaces.model.chart.Axis; import org.primefaces.model.chart.AxisType; +import org.primefaces.model.chart.DateAxis; +import org.primefaces.model.chart.LegendPlacement; import org.primefaces.model.chart.LineChartModel; import org.primefaces.model.chart.LineChartSeries; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import ru.ulstu.models.TimeSeries; +import ru.ulstu.models.TimeSeriesValue; +import ru.ulstu.models.exceptions.ModelingException; +import ru.ulstu.services.TimeSeriesService; import javax.annotation.PostConstruct; import javax.faces.view.ViewScoped; import javax.inject.Named; import java.io.Serializable; +import java.time.format.DateTimeFormatter; @Named @ViewScoped public class IndexView implements Serializable { - private LineChartModel lineModel1; + private final static Logger LOG = LoggerFactory.getLogger(IndexView.class); + private LineChartModel model; + private String timeSeriesString = "1,2,3"; - public LineChartModel getLineModel1() { - return lineModel1; - } + @Autowired + private TimeSeriesService timeSeriesService; @PostConstruct public void init() { @@ -30,44 +40,57 @@ public class IndexView implements Serializable { LineChartSeries series1 = new LineChartSeries(); series1.setLabel("Временной ряд"); - series1.set(1, 2); - series1.set(2, 1); - series1.set(3, 3); - series1.set(4, 6); - series1.set(5, 8); + TimeSeries timeSeries = timeSeriesService.getTimeSeriesFromString(timeSeriesString); + for (TimeSeriesValue value : timeSeries.getValues()) { + series1.set(DateTimeFormatter.ISO_LOCAL_DATE.format(value.getDate()), value.getValue()); + } LineChartSeries series2 = new LineChartSeries(); series2.setLabel("Сглаженный ряд"); + try { + for (TimeSeriesValue value : timeSeriesService.getForecast(timeSeries, 10).getModel().getModelTimeSeries().getValues()) { + series2.set(DateTimeFormatter.ISO_LOCAL_DATE.format(value.getDate()), value.getValue()); + } + } catch (ModelingException ex) { + LOG.warn(ex.getMessage()); + } - series2.set(1, 6); - series2.set(2, 3); - series2.set(3, 2); - series2.set(4, 7); - series2.set(5, 9); LineChartSeries series3 = new LineChartSeries(); series3.setLabel("Прогноз"); - - series3.set(1, 6); - series3.set(2, 3); - series3.set(3, 2); - series3.set(4, 7); - series3.set(6, 9); - series3.set(7, 9); - + try { + for (TimeSeriesValue value : timeSeriesService.getForecast(timeSeries, 10).getForecastTimeSeries().getValues()) { + series3.set(DateTimeFormatter.ISO_LOCAL_DATE.format(value.getDate()), value.getValue()); + } + } catch (ModelingException ex) { + LOG.warn(ex.getMessage()); + } model.addSeries(series1); model.addSeries(series2); model.addSeries(series3); - return model; } public void createChart() { - lineModel1 = initLinearModel(); - lineModel1.setTitle("Сглаживание временного ряда"); - lineModel1.setLegendPosition("e"); - Axis yAxis = lineModel1.getAxis(AxisType.Y); - yAxis.setMin(0); - yAxis.setMax(10); + model = initLinearModel(); + model.setTitle("Сглаживание временного ряда"); + model.setLegendPosition("d"); + model.setLegendPlacement(LegendPlacement.OUTSIDE); + DateAxis xAxis = new DateAxis("Time"); + xAxis.setTickFormat("%#d %b %Y"); + model.getAxes().put(AxisType.X, xAxis); + } + + public LineChartModel getModel() { + return model; + } + + public String getTimeSeriesString() { + createChart(); + return timeSeriesString; + } + + public void setTimeSeriesString(String timeSeriesString) { + this.timeSeriesString = timeSeriesString; } } diff --git a/src/main/resources/META-INF/resources/index.xhtml b/src/main/resources/META-INF/resources/index.xhtml index 2e74ffd..371ddea 100644 --- a/src/main/resources/META-INF/resources/index.xhtml +++ b/src/main/resources/META-INF/resources/index.xhtml @@ -2,18 +2,28 @@ + xmlns:p="http://primefaces.org/ui" + xmlns:h="http://java.sun.com/jsf/html"> -
-
- + +
+
+ + + + + +
-
- +
+
+ +
-
+
\ No newline at end of file