#5 -- remove jsf

This commit is contained in:
Anton Romanov 2021-08-02 09:15:19 +04:00
parent e3ce7c0647
commit f92a2900a4
30 changed files with 792 additions and 140 deletions

View File

@ -1,3 +1,9 @@
/*
* Copyright (C) 2021 Anton Romanov - All Rights Reserved
* You may use, distribute and modify this code, please write to: romanov73@gmail.com.
*
*/
plugins {
id 'java'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
@ -12,9 +18,6 @@ jar {
repositories {
mavenLocal()
mavenCentral()
maven {
url "https://repository.primefaces.org/"
}
}
sourceCompatibility = 11
@ -29,15 +32,11 @@ dependencies {
}
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.springframework.boot', name: 'spring-boot-starter-thymeleaf'
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: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect'
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
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: versionJackson
@ -47,6 +46,12 @@ dependencies {
implementation group: 'io.springfox', name: 'springfox-swagger2', version: versionSwagger
implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: versionSwagger
implementation group: 'org.webjars', name: 'jquery', version: '3.6.0'
implementation group: 'org.webjars', name: 'bootstrap', version: '4.6.0'
implementation group: 'org.webjars', name: 'bootstrap-select', version: '1.13.8'
implementation group: 'org.webjars', name: 'font-awesome', version: '4.7.0'
implementation group: 'org.webjars', name: 'highcharts', version: '7.0.0'
testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test'
}

BIN
java_pid12196.hprof Normal file

Binary file not shown.

View File

@ -1,6 +1,13 @@
/*
* Copyright (C) 2021 Anton Romanov - All Rights Reserved
* You may use, distribute and modify this code, please write to: romanov73@gmail.com.
*
*/
package ru.ulstu.configuration;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@ -8,7 +15,14 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
public class MvcConfiguration implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("/", "/index.xhtml");
registry.addRedirectViewController("/default", "/index.xhtml");
registry.addViewController("/{articlename:\\w+}");
registry.addRedirectViewController("/", "/index.html");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/webjars/**")
.addResourceLocations("/webjars/");
}
}

View File

@ -1,14 +0,0 @@
package ru.ulstu.configuration;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll();
http.csrf().disable();
}
}

View File

@ -0,0 +1,39 @@
/*
* Copyright (C) 2021 Anton Romanov - All Rights Reserved
* You may use, distribute and modify this code, please write to: romanov73@gmail.com.
*
*/
package ru.ulstu.configuration;
import nz.net.ultraq.thymeleaf.LayoutDialect;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.templateresolver.ITemplateResolver;
@Configuration
public class TemplateConfiguration {
@Bean
public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver) {
final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(templateResolver);
templateEngine.addDialect(new LayoutDialect());
templateEngine.setMessageSource(messageSource());
return templateEngine;
}
@Value("${messages.basename.path}")
private String messagesBasename;
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setFallbackToSystemLocale(false);
messageSource.setBasenames("file:" + messagesBasename);
return messageSource;
}
}

View File

@ -0,0 +1,66 @@
/*
* Copyright (C) 2021 Anton Romanov - All Rights Reserved
* You may use, distribute and modify this code, please write to: romanov73@gmail.com.
*
*/
package ru.ulstu.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import ru.ulstu.datamodel.ts.TimeSeries;
import ru.ulstu.datamodel.ts.TimeSeriesValue;
import ru.ulstu.service.TimeSeriesService;
import ru.ulstu.service.UtilService;
import springfox.documentation.annotations.ApiIgnore;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Controller
@ApiIgnore
public class IndexController {
private final UtilService utilService;
private final TimeSeriesService timeSeriesService;
private final static Logger LOG = LoggerFactory.getLogger(IndexController.class);
public IndexController(UtilService utilService,
TimeSeriesService timeSeriesService) {
this.utilService = utilService;
this.timeSeriesService = timeSeriesService;
}
@GetMapping("/index.html")
public String index(Model model) {
TimeSeries timeSeries = utilService.getRandomTimeSeries(100);
TimeSeries timeSeriesModel = null;
TimeSeries forecast = null;
try {
timeSeriesModel = timeSeriesService.smoothTimeSeries(timeSeries);
forecast = timeSeriesService.getForecast(timeSeries, 5).getTimeSeries();
} catch (Exception e) {
LOG.warn(e.getMessage());
}
Set<String> dates = timeSeries.getValues().stream()
.map(v -> v.getDate().format(DateTimeFormatter.ISO_DATE))
.collect(Collectors.toSet());
dates.addAll(forecast.getValues().stream()
.map(v -> v.getDate().format(DateTimeFormatter.ISO_DATE))
.collect(Collectors.toSet()));
model.addAttribute("dates", dates);
model.addAttribute("timeSeries", timeSeries.getValues().stream().map(TimeSeriesValue::getValue).toArray());
model.addAttribute("model", timeSeriesModel.getValues().stream().map(TimeSeriesValue::getValue).toArray());
timeSeries.getValues().remove(timeSeries.getValues().size() - 1);
List<Double> forecastValues = timeSeries.getValues().stream().map(v -> (Double) null).collect(Collectors.toList());
forecastValues.addAll(forecast.getValues().stream().map(TimeSeriesValue::getValue).collect(Collectors.toList()));
model.addAttribute("forecast", forecastValues.toArray());
return "index.html";
}
}

View File

@ -16,6 +16,10 @@ public class TimeSeriesMeta {
public TimeSeriesMeta() {
}
public TimeSeriesMeta(String key) {
this.key = key;
}
public TimeSeriesMeta(TimeSeries timeSeries) {
this.key = timeSeries.getName();
this.hasDateTime = timeSeries.getValues().stream().anyMatch(v -> v.getDate() != null);

View File

@ -1,106 +1,144 @@
/*
* Copyright (C) 2021 Anton Romanov - All Rights Reserved
* You may use, distribute and modify this code, please write to: romanov73@gmail.com.
*
*/
package ru.ulstu.page;
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.datamodel.exception.ModelingException;
import ru.ulstu.datamodel.ts.TimeSeries;
import ru.ulstu.datamodel.ts.TimeSeriesValue;
import ru.ulstu.service.TimeSeriesService;
import ru.ulstu.service.UtilService;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.ExecutionException;
@Named
@ViewScoped
public class IndexView implements Serializable {
private final static Logger LOG = LoggerFactory.getLogger(IndexView.class);
@Autowired
private transient TimeSeriesService timeSeriesService;
@Autowired
private transient UtilService utilService;
private LineChartModel model;
private String timeSeriesString;
@PostConstruct
public void init() throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException {
timeSeriesString = utilService.getTimeSeriesToString(utilService.getRandomTimeSeries(50));
createChart();
}
private LineChartModel initLinearModel() throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException {
LineChartModel model = new LineChartModel();
LineChartSeries series1 = new LineChartSeries();
series1.setLabel("Временной ряд");
TimeSeries timeSeries = utilService.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 {
TimeSeries smoothedTimeSeries = timeSeriesService.smoothTimeSeries(timeSeries);
for (TimeSeriesValue value : smoothedTimeSeries.getValues()) {
series2.set(DateTimeFormatter.ISO_LOCAL_DATE.format(value.getDate()), value.getValue());
}
} catch (Exception ex) {
LOG.warn(ex.getMessage());
}
LineChartSeries series3 = new LineChartSeries();
series3.setLabel("Прогноз");
TimeSeries forecast = timeSeriesService.getForecast(timeSeries, 20).getTimeSeries();
for (TimeSeriesValue value : forecast.getValues()) {
series3.set(DateTimeFormatter.ISO_LOCAL_DATE.format(value.getDate()), value.getValue());
}
model.addSeries(series1);
model.addSeries(series2);
model.addSeries(series3);
return model;
}
public void createChart() throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException {
model = initLinearModel();
model.setTitle("Сглаживание временного ряда");
model.setLegendPosition("d");
model.setLegendPlacement(LegendPlacement.OUTSIDEGRID);
DateAxis xAxis = new DateAxis("Time");
xAxis.setTickFormat("%#d %b %Y");
model.getAxes().put(AxisType.X, xAxis);
}
public LineChartModel getModel() {
return model;
}
public String getTimeSeriesString() throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException {
createChart();
return timeSeriesString;
}
public void setTimeSeriesString(String timeSeriesString) {
this.timeSeriesString = timeSeriesString;
}
}
///*
// * Copyright (C) 2021 Anton Romanov - All Rights Reserved
// * You may use, distribute and modify this code, please write to: romanov73@gmail.com.
// *
// */
//
//package ru.ulstu.page;
//
//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.datamodel.exception.ModelingException;
//import ru.ulstu.datamodel.ts.TimeSeries;
//import ru.ulstu.datamodel.ts.TimeSeriesValue;
//import ru.ulstu.db.DbService;
//import ru.ulstu.db.model.TimeSeriesMeta;
//import ru.ulstu.db.model.TimeSeriesSet;
//import ru.ulstu.service.TimeSeriesService;
//import ru.ulstu.service.UtilService;
//
//import javax.annotation.PostConstruct;
//import javax.faces.model.SelectItem;
//import javax.faces.view.ViewScoped;
//import javax.inject.Named;
//import java.io.IOException;
//import java.io.Serializable;
//import java.lang.reflect.InvocationTargetException;
//import java.time.format.DateTimeFormatter;
//import java.util.List;
//import java.util.concurrent.ExecutionException;
//import java.util.stream.Collectors;
//
//@Named
//@ViewScoped
//public class IndexView implements Serializable {
// private final static Logger LOG = LoggerFactory.getLogger(IndexView.class);
//
// @Autowired
// private transient TimeSeriesService timeSeriesService;
//
// @Autowired
// private transient DbService dbService;
//
// @Autowired
// private transient UtilService utilService;
//
// private LineChartModel model;
// private List<TimeSeriesMeta> timeSeriesMetas;
// private TimeSeriesMeta timeSeriesMeta;
//
// @PostConstruct
// public void init() throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException, IOException {
// timeSeriesMetas = dbService.getTimeSeriesMeta(new TimeSeriesSet("NN3"));
// timeSeriesMeta = timeSeriesMetas.get(0);
// createChart();
// }
//
// private LineChartModel initLinearModel() throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException, IOException {
// LineChartModel model = new LineChartModel();
//
// LineChartSeries series1 = new LineChartSeries();
// series1.setLabel("Временной ряд");
//
// TimeSeries timeSeries = dbService.getTimeSeries(new TimeSeriesSet("NN3"), timeSeriesMeta.getKey());
// for (TimeSeriesValue value : timeSeries.getValues()) {
// series1.set(DateTimeFormatter.ISO_LOCAL_DATE.format(value.getDate()), value.getValue());
// }
//
// LineChartSeries series2 = new LineChartSeries();
// series2.setLabel("Сглаженный ряд");
// try {
// TimeSeries smoothedTimeSeries = timeSeriesService.smoothTimeSeries(timeSeries);
// for (TimeSeriesValue value : smoothedTimeSeries.getValues()) {
// series2.set(DateTimeFormatter.ISO_LOCAL_DATE.format(value.getDate()), value.getValue());
// }
// } catch (Exception ex) {
// LOG.warn(ex.getMessage());
// }
// LineChartSeries series3 = new LineChartSeries();
// series3.setLabel("Прогноз");
// TimeSeries forecast = timeSeriesService.getForecast(timeSeries, 20).getTimeSeries();
// for (TimeSeriesValue value : forecast.getValues()) {
// series3.set(DateTimeFormatter.ISO_LOCAL_DATE.format(value.getDate()), value.getValue());
// }
// model.addSeries(series1);
// model.addSeries(series2);
// model.addSeries(series3);
// return model;
// }
//
// public void createChart() throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException, IOException {
// model = initLinearModel();
// model.setTitle("Сглаживание временного ряда");
// model.setLegendPosition("d");
// model.setLegendPlacement(LegendPlacement.OUTSIDEGRID);
// DateAxis xAxis = new DateAxis("Time");
// xAxis.setTickFormat("%#d %b %Y");
// model.getAxes().put(AxisType.X, xAxis);
// }
//
// public LineChartModel getModel() {
// return model;
// }
//
// public List<TimeSeriesMeta> getTimeSeriesMetas() {
// return timeSeriesMetas;
// }
//
// public TimeSeriesMeta getTimeSeriesMeta() {
// return timeSeriesMeta;
// }
//
// public void setTimeSeriesMeta(String timeSeriesMeta) {
// System.out.println(timeSeriesMeta);
// try {
// createChart();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
//
// public void setTimeSeriesMeta(Object timeSeriesMeta) {
// System.out.println(timeSeriesMeta);
// try {
// createChart();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
//
// public void setTimeSeriesMeta(TimeSeriesMeta timeSeriesMeta) {
// System.out.println(timeSeriesMeta);
// try {
// createChart();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
//}

View File

@ -1,21 +1,32 @@
<!--
- Copyright (C) 2021 Anton Romanov - All Rights Reserved
- You may use, distribute and modify this code, please write to: romanov73@gmail.com.
-
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html">
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<ui:composition template="/basicTemplate.xhtml">
<ui:define name="content">
<h:form>
<h:form id="form">
<div class="ui-g">
<div class="ui-g-12 ui-md-12 ui-lg-12">
<p:inputTextarea id="timeSeriesString" style="height:200px; width:100%;"
placeholder="Paste time series here"
autoResize="false" value="#{indexView.timeSeriesString}">
<p:ajax event="change" update="chart"/>
<p:ajax event="keypress" update="chart"/>
</p:inputTextarea>
<p:commandButton value="Refresh" update="chart" process="timeSeriesString"/>
<p:selectOneMenu id="timeSeriesSelect" value="#{indexView.timeSeriesMeta}"
converter="timeSeriesMetaConverter">
<f:selectItem itemLabel="Выберите временной ряд из базы" itemValue=""/>
<f:selectItems value="#{indexView.timeSeriesMetas}"
var="meta"
itemLabel="#{meta.key}"
itemValue="#{meta.key}"/>
<!-- <p:ajax event="change" process="@this" update="form:chart" />-->
</p:selectOneMenu>
<p:commandButton action="#{indexView.createChart}" value="Refresh" update="form:chart"
process="form:timeSeriesSelect" ajax="true"/>
</div>
</div>
<div class="ui-g">

View File

@ -0,0 +1,7 @@
#
# Copyright (C) 2021 Anton Romanov - All Rights Reserved
# You may use, distribute and modify this code, please write to: romanov73@gmail.com.
#
#
messages.app-name=Time Series Smoothing
messages.menu.home=Main

View File

@ -0,0 +1,7 @@
#
# Copyright (C) 2021 Anton Romanov - All Rights Reserved
# You may use, distribute and modify this code, please write to: romanov73@gmail.com.
#
#
messages.app-name=Time Series Smoothing
messages.menu.home=Main

View File

@ -0,0 +1,7 @@
#
# Copyright (C) 2021 Anton Romanov - All Rights Reserved
# You may use, distribute and modify this code, please write to: romanov73@gmail.com.
#
#
messages.app-name=Time Series Smoothing
messages.menu.home=На главную

View File

@ -0,0 +1,57 @@
<!--
~ Copyright (C) 2021 Anton Romanov - All Rights Reserved
~ You may use, distribute and modify this code, please write to: romanov73@gmail.com.
~
-->
<!DOCTYPE html>
<html lang="ru"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8"/>
<title th:text="#{messages.app-name}">app-name</title>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<script type="text/javascript" src="/webjars/jquery/3.6.0/jquery.min.js"></script>
<script type="text/javascript" src="/webjars/bootstrap/4.6.0/js/bootstrap.bundle.min.js"></script>
<script type="text/javascript" src="/webjars/bootstrap-select/1.13.8/js/bootstrap-select.min.js"></script>
<link rel="stylesheet" href="/webjars/bootstrap/4.6.0/css/bootstrap.min.css"/>
<link rel="stylesheet" href="/webjars/bootstrap-select/1.13.8/css/bootstrap-select.min.css"/>
<link rel="stylesheet" href="/webjars/font-awesome/4.7.0/css/font-awesome.min.css"/>
</head>
<body>
<nav class="navbar navbar-light bg-light">
<a class="navbar-brand" href="/">
<img src="img/logo.png" width="180" height="60" alt="">
</a>
</nav>
<div class="wrapper">
<div id="sidebar" class="collapse navbar-collapse sidebar-mobile">
<ul id="menu" class="list-unstyled">
</ul>
</div>
<div id="content">
<div id="breadcrumbs" class="container-fluid">
</div>
<div class="container-fluid">
<ul id="messages" class="feedback-panel">
<div class="alert alert-danger" role="alert" th:if="${error}" th:text="${error}">
</div>
</ul>
</div>
<div layout:fragment="content">
</div>
</div>
<div class="row">
<div class="col-sm-6 col-md-3 ui-lg-3">Ulyanovsk State Technical University</div>
<div class="col-sm-6 col-md-3 col-lg-3">
<a href="http://ulstu.ru">ulstu.ru</a>
</div>
<div class="col-sm-6 col-md-3 col-lg-3">
<a target="_blank" href="/swagger-ui.html">api for developers</a>
</div>
<div class="col-sm-6 col-md-3 col-lg-3">2020</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,49 @@
<!--
~ Copyright (C) 2021 Anton Romanov - All Rights Reserved
~ You may use, distribute and modify this code, please write to: romanov73@gmail.com.
~
-->
<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{default}">
<div class="container" layout:fragment="content">
<h1>Ошибка</h1>
<p th:if="${url}">
<b>Страница:</b> <span th:text="${url}">Page URL</span>
</p>
<p th:if="${timestamp}" id='created'>
<b>Время:</b> <span th:text="${timestamp}">Timestamp</span>
</p>
<p th:if="${status}">
<b>Response Status:</b> <span th:text="${status}">status-code</span> <span
th:if="${error}" th:text="'('+${error}+')'">error ...</span>
</p>
<p>
<a class="btn btn-primary" data-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false"
aria-controls="collapseExample">
Показать stack trace
</a>
</p>
<!-- <div class="collapse" id="collapseExample">-->
<!-- <p class="card card-body">-->
<!-- <div th:utext="'Failed URL: ' + ${url}" th:remove="tag">${url}</div>-->
<!-- </p>-->
<!-- <div th:if="${exception != null}" th:utext="'Exception: ' + ${exception.message}" th:remove="tag">-->
<!-- ${exception.message}-->
<!-- </div>-->
<!-- <ul th:remove="tag">-->
<!-- <li th:if="${exception != null && exception.stackTrace != null}" th:each="ste : ${exception.stackTrace}"-->
<!-- th:remove="tag"><span-->
<!-- th:utext="${ste}" th:remove="tag">${ste}</span></li>-->
<!-- </ul>-->
<!-- </div>-->
</div>
</div>
</html>

View File

@ -0,0 +1,97 @@
<!--
~ Copyright (C) 2021 Anton Romanov - All Rights Reserved
~ You may use, distribute and modify this code, please write to: romanov73@gmail.com.
~
-->
<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd">
<html
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.w3.org/1999/xhtml"
layout:decorate="~{default}">
<head>
<title>Time series smoothing</title>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
</head>
<div class="container" layout:fragment="content">
<script src="/webjars/highcharts/7.0.0/highcharts.js"></script>
<script th:inline="javascript">
$(document).ready(function () {
var title = {
text: 'Прогноз временного ряда'
};
var xAxis = {
categories: [[${dates}]],
title: {
enabled: true,
text: 'Дата'
},
startOnTick: true,
endOnTick: true,
showLastLabel: true
};
var yAxis = {
title: {
text: 'Уровень'
}
};
var plotOptions = {
scatter: {
marker: {
radius: 5,
states: {
hover: {
enabled: true,
lineColor: 'rgb(100,100,100)'
}
}
},
states: {
hover: {
marker: {
enabled: false
}
}
},
tooltip: {
headerFormat: '<b>{series.name}</b><br>',
pointFormat: '{point.y}'
}
}
};
var series = [
{
name: 'Временной ряд',
color: 'rgba(119,152,191,0.5)',
data: [[${timeSeries}]]
},
{
name: 'Модель',
color: 'rgba(255,200,0,0.5)',
data: [[${model}]]
},
{
name: 'Прогноз',
color: 'rgba(255,0,0,0.5)',
data: [[${forecast}]]
}
];
var json = {};
json.title = title;
json.xAxis = xAxis;
json.yAxis = yAxis;
json.series = series;
json.plotOptions = plotOptions;
$('#container').highcharts(json);
});
</script>
<form>
<!-- <form action="#" th:action="/index" th:object="${filterForm}" method="get">-->
<div class="row">
<div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div>
</div>
</form>
</div>
</html>

View File

@ -0,0 +1 @@
{"key":"101","size":126,"hasDateTime":false}

View File

@ -0,0 +1 @@
{"key":"102","size":126,"hasDateTime":false}

View File

@ -0,0 +1 @@
{"key":"103","size":126,"hasDateTime":false}

View File

@ -0,0 +1 @@
{"key":"104","size":126,"hasDateTime":false}

View File

@ -0,0 +1 @@
{"key":"105","size":126,"hasDateTime":false}

View File

@ -0,0 +1 @@
{"key":"106","size":126,"hasDateTime":false}

View File

@ -0,0 +1 @@
{"key":"107","size":126,"hasDateTime":false}

View File

@ -0,0 +1 @@
{"key":"108","size":126,"hasDateTime":false}

View File

@ -0,0 +1 @@
{"key":"109","size":126,"hasDateTime":false}

View File

@ -0,0 +1 @@
{"key":"110","size":126,"hasDateTime":false}

View File

@ -0,0 +1 @@
{"key":"111","size":126,"hasDateTime":false}

126
time-series-db/qqq/111.csv Normal file
View File

@ -0,0 +1,126 @@
2021-03-25T14:46:05.9380134;3140.0
2021-03-26T14:46:05.9380134;3270.0
2021-03-27T14:46:05.9380134;3690.0
2021-03-28T14:46:05.9380134;4360.0
2021-03-29T14:46:05.9380134;3520.0
2021-03-30T14:46:05.9380134;4140.0
2021-03-31T14:46:05.9380134;3440.0
2021-04-01T14:46:05.9380134;3750.0
2021-04-02T14:46:05.9380134;4140.0
2021-04-03T14:46:05.9380134;5610.0
2021-04-04T14:46:05.9380134;5350.0
2021-04-05T14:46:05.9380134;4270.0
2021-04-06T14:46:05.9380134;3160.0
2021-04-07T14:46:05.9380134;2560.0
2021-04-08T14:46:05.9380134;3410.0
2021-04-09T14:46:05.9380134;3670.0
2021-04-10T14:46:05.9380134;3670.0
2021-04-11T14:46:05.9380134;3200.0
2021-04-12T14:46:05.9380134;3700.0
2021-04-13T14:46:05.9380134;3430.0
2021-04-14T14:46:05.9380134;4130.0
2021-04-15T14:46:05.9380134;4870.0
2021-04-16T14:46:05.9380134;6310.0
2021-04-17T14:46:05.9380134;4680.0
2021-04-18T14:46:05.9380134;2380.0
2021-04-19T14:46:05.9380134;3430.0
2021-04-20T14:46:05.9380134;2950.0
2021-04-21T14:46:05.9380134;3130.0
2021-04-22T14:46:05.9380134;3650.0
2021-04-23T14:46:05.9380134;2980.0
2021-04-24T14:46:05.9380134;3720.0
2021-04-25T14:46:05.9380134;2960.0
2021-04-26T14:46:05.9380134;4300.0
2021-04-27T14:46:05.9380134;5550.0
2021-04-28T14:46:05.9380134;4380.0
2021-04-29T14:46:05.9380134;3620.0
2021-04-30T14:46:05.9380134;3350.0
2021-05-01T14:46:05.9380134;3300.0
2021-05-02T14:46:05.9380134;3800.0
2021-05-03T14:46:05.9380134;3420.0
2021-05-04T14:46:05.9380134;3860.0
2021-05-05T14:46:05.9380134;2900.0
2021-05-06T14:46:05.9380134;3240.0
2021-05-07T14:46:05.9380134;3150.0
2021-05-08T14:46:05.9380134;4460.0
2021-05-09T14:46:05.9380134;5040.0
2021-05-10T14:46:05.9380134;4660.0
2021-05-11T14:46:05.9380134;3450.0
2021-05-12T14:46:05.9380134;2660.0
2021-05-13T14:46:05.9380134;2400.0
2021-05-14T14:46:05.9380134;2200.0
2021-05-15T14:46:05.9380134;3020.0
2021-05-16T14:46:05.9380134;3450.0
2021-05-17T14:46:05.9380134;4110.0
2021-05-18T14:46:05.9380134;2760.0
2021-05-19T14:46:05.9380134;3390.0
2021-05-20T14:46:05.9380134;3740.0
2021-05-21T14:46:05.9380134;4830.0
2021-05-22T14:46:05.9380134;4450.0
2021-05-23T14:46:05.9380134;3140.0
2021-05-24T14:46:05.9380134;4700.0
2021-05-25T14:46:05.9380134;2330.0
2021-05-26T14:46:05.9380134;2740.0
2021-05-27T14:46:05.9380134;2480.0
2021-05-28T14:46:05.9380134;2690.0
2021-05-29T14:46:05.9380134;5850.0
2021-05-30T14:46:05.9380134;2450.0
2021-05-31T14:46:05.9380134;3720.0
2021-06-01T14:46:05.9380134;2780.0
2021-06-02T14:46:05.9380134;5690.0
2021-06-03T14:46:05.9380134;4150.0
2021-06-04T14:46:05.9380134;4460.0
2021-06-05T14:46:05.9380134;2730.0
2021-06-06T14:46:05.9380134;3580.0
2021-06-07T14:46:05.9380134;2870.0
2021-06-08T14:46:05.9380134;4210.0
2021-06-09T14:46:05.9380134;4500.0
2021-06-10T14:46:05.9380134;3560.0
2021-06-11T14:46:05.9380134;3800.0
2021-06-12T14:46:05.9380134;3260.0
2021-06-13T14:46:05.9380134;3410.0
2021-06-14T14:46:05.9380134;3860.0
2021-06-15T14:46:05.9380134;5000.0
2021-06-16T14:46:05.9380134;3840.0
2021-06-17T14:46:05.9380134;3210.0
2021-06-18T14:46:05.9380134;2930.0
2021-06-19T14:46:05.9380134;3630.0
2021-06-20T14:46:05.9380134;2760.0
2021-06-21T14:46:05.9380134;3310.0
2021-06-22T14:46:05.9380134;4320.0
2021-06-23T14:46:05.9380134;3010.0
2021-06-24T14:46:05.9380134;3440.0
2021-06-25T14:46:05.9380134;5100.0
2021-06-26T14:46:05.9380134;4170.0
2021-06-27T14:46:05.9380134;4540.0
2021-06-28T14:46:05.9380134;3410.0
2021-06-29T14:46:05.9380134;2590.0
2021-06-30T14:46:05.9380134;2640.0
2021-07-01T14:46:05.9380134;2970.0
2021-07-02T14:46:05.9380134;3000.0
2021-07-03T14:46:05.9380134;2900.0
2021-07-04T14:46:05.9380134;3010.0
2021-07-05T14:46:05.9380134;3380.0
2021-07-06T14:46:05.9380134;3060.0
2021-07-07T14:46:05.9380134;3100.0
2021-07-08T14:46:05.9380134;3940.0
2021-07-09T14:46:05.9380134;5360.0
2021-07-10T14:46:05.9380134;3280.0
2021-07-11T14:46:05.9380134;3190.0
2021-07-12T14:46:05.9380134;4950.0
2021-07-13T14:46:05.9380134;2910.0
2021-07-14T14:46:05.9380134;2820.0
2021-07-15T14:46:05.9380134;3050.0
2021-07-16T14:46:05.9380134;2930.0
2021-07-17T14:46:05.9380134;2800.0
2021-07-18T14:46:05.9380134;3220.0
2021-07-19T14:46:05.9380134;3120.0
2021-07-20T14:46:05.9380134;4000.0
2021-07-21T14:46:05.9380134;4840.0
2021-07-22T14:46:05.9380134;2630.0
2021-07-23T14:46:05.9380134;2920.0
2021-07-24T14:46:05.9380134;2350.0
2021-07-25T14:46:05.9380134;2850.0
2021-07-26T14:46:05.9380134;2700.0
2021-07-27T14:46:05.9380134;2870.0
2021-07-28T14:46:05.9380134;2580.0
1 2021-03-25T14:46:05.9380134 3140.0
2 2021-03-26T14:46:05.9380134 3270.0
3 2021-03-27T14:46:05.9380134 3690.0
4 2021-03-28T14:46:05.9380134 4360.0
5 2021-03-29T14:46:05.9380134 3520.0
6 2021-03-30T14:46:05.9380134 4140.0
7 2021-03-31T14:46:05.9380134 3440.0
8 2021-04-01T14:46:05.9380134 3750.0
9 2021-04-02T14:46:05.9380134 4140.0
10 2021-04-03T14:46:05.9380134 5610.0
11 2021-04-04T14:46:05.9380134 5350.0
12 2021-04-05T14:46:05.9380134 4270.0
13 2021-04-06T14:46:05.9380134 3160.0
14 2021-04-07T14:46:05.9380134 2560.0
15 2021-04-08T14:46:05.9380134 3410.0
16 2021-04-09T14:46:05.9380134 3670.0
17 2021-04-10T14:46:05.9380134 3670.0
18 2021-04-11T14:46:05.9380134 3200.0
19 2021-04-12T14:46:05.9380134 3700.0
20 2021-04-13T14:46:05.9380134 3430.0
21 2021-04-14T14:46:05.9380134 4130.0
22 2021-04-15T14:46:05.9380134 4870.0
23 2021-04-16T14:46:05.9380134 6310.0
24 2021-04-17T14:46:05.9380134 4680.0
25 2021-04-18T14:46:05.9380134 2380.0
26 2021-04-19T14:46:05.9380134 3430.0
27 2021-04-20T14:46:05.9380134 2950.0
28 2021-04-21T14:46:05.9380134 3130.0
29 2021-04-22T14:46:05.9380134 3650.0
30 2021-04-23T14:46:05.9380134 2980.0
31 2021-04-24T14:46:05.9380134 3720.0
32 2021-04-25T14:46:05.9380134 2960.0
33 2021-04-26T14:46:05.9380134 4300.0
34 2021-04-27T14:46:05.9380134 5550.0
35 2021-04-28T14:46:05.9380134 4380.0
36 2021-04-29T14:46:05.9380134 3620.0
37 2021-04-30T14:46:05.9380134 3350.0
38 2021-05-01T14:46:05.9380134 3300.0
39 2021-05-02T14:46:05.9380134 3800.0
40 2021-05-03T14:46:05.9380134 3420.0
41 2021-05-04T14:46:05.9380134 3860.0
42 2021-05-05T14:46:05.9380134 2900.0
43 2021-05-06T14:46:05.9380134 3240.0
44 2021-05-07T14:46:05.9380134 3150.0
45 2021-05-08T14:46:05.9380134 4460.0
46 2021-05-09T14:46:05.9380134 5040.0
47 2021-05-10T14:46:05.9380134 4660.0
48 2021-05-11T14:46:05.9380134 3450.0
49 2021-05-12T14:46:05.9380134 2660.0
50 2021-05-13T14:46:05.9380134 2400.0
51 2021-05-14T14:46:05.9380134 2200.0
52 2021-05-15T14:46:05.9380134 3020.0
53 2021-05-16T14:46:05.9380134 3450.0
54 2021-05-17T14:46:05.9380134 4110.0
55 2021-05-18T14:46:05.9380134 2760.0
56 2021-05-19T14:46:05.9380134 3390.0
57 2021-05-20T14:46:05.9380134 3740.0
58 2021-05-21T14:46:05.9380134 4830.0
59 2021-05-22T14:46:05.9380134 4450.0
60 2021-05-23T14:46:05.9380134 3140.0
61 2021-05-24T14:46:05.9380134 4700.0
62 2021-05-25T14:46:05.9380134 2330.0
63 2021-05-26T14:46:05.9380134 2740.0
64 2021-05-27T14:46:05.9380134 2480.0
65 2021-05-28T14:46:05.9380134 2690.0
66 2021-05-29T14:46:05.9380134 5850.0
67 2021-05-30T14:46:05.9380134 2450.0
68 2021-05-31T14:46:05.9380134 3720.0
69 2021-06-01T14:46:05.9380134 2780.0
70 2021-06-02T14:46:05.9380134 5690.0
71 2021-06-03T14:46:05.9380134 4150.0
72 2021-06-04T14:46:05.9380134 4460.0
73 2021-06-05T14:46:05.9380134 2730.0
74 2021-06-06T14:46:05.9380134 3580.0
75 2021-06-07T14:46:05.9380134 2870.0
76 2021-06-08T14:46:05.9380134 4210.0
77 2021-06-09T14:46:05.9380134 4500.0
78 2021-06-10T14:46:05.9380134 3560.0
79 2021-06-11T14:46:05.9380134 3800.0
80 2021-06-12T14:46:05.9380134 3260.0
81 2021-06-13T14:46:05.9380134 3410.0
82 2021-06-14T14:46:05.9380134 3860.0
83 2021-06-15T14:46:05.9380134 5000.0
84 2021-06-16T14:46:05.9380134 3840.0
85 2021-06-17T14:46:05.9380134 3210.0
86 2021-06-18T14:46:05.9380134 2930.0
87 2021-06-19T14:46:05.9380134 3630.0
88 2021-06-20T14:46:05.9380134 2760.0
89 2021-06-21T14:46:05.9380134 3310.0
90 2021-06-22T14:46:05.9380134 4320.0
91 2021-06-23T14:46:05.9380134 3010.0
92 2021-06-24T14:46:05.9380134 3440.0
93 2021-06-25T14:46:05.9380134 5100.0
94 2021-06-26T14:46:05.9380134 4170.0
95 2021-06-27T14:46:05.9380134 4540.0
96 2021-06-28T14:46:05.9380134 3410.0
97 2021-06-29T14:46:05.9380134 2590.0
98 2021-06-30T14:46:05.9380134 2640.0
99 2021-07-01T14:46:05.9380134 2970.0
100 2021-07-02T14:46:05.9380134 3000.0
101 2021-07-03T14:46:05.9380134 2900.0
102 2021-07-04T14:46:05.9380134 3010.0
103 2021-07-05T14:46:05.9380134 3380.0
104 2021-07-06T14:46:05.9380134 3060.0
105 2021-07-07T14:46:05.9380134 3100.0
106 2021-07-08T14:46:05.9380134 3940.0
107 2021-07-09T14:46:05.9380134 5360.0
108 2021-07-10T14:46:05.9380134 3280.0
109 2021-07-11T14:46:05.9380134 3190.0
110 2021-07-12T14:46:05.9380134 4950.0
111 2021-07-13T14:46:05.9380134 2910.0
112 2021-07-14T14:46:05.9380134 2820.0
113 2021-07-15T14:46:05.9380134 3050.0
114 2021-07-16T14:46:05.9380134 2930.0
115 2021-07-17T14:46:05.9380134 2800.0
116 2021-07-18T14:46:05.9380134 3220.0
117 2021-07-19T14:46:05.9380134 3120.0
118 2021-07-20T14:46:05.9380134 4000.0
119 2021-07-21T14:46:05.9380134 4840.0
120 2021-07-22T14:46:05.9380134 2630.0
121 2021-07-23T14:46:05.9380134 2920.0
122 2021-07-24T14:46:05.9380134 2350.0
123 2021-07-25T14:46:05.9380134 2850.0
124 2021-07-26T14:46:05.9380134 2700.0
125 2021-07-27T14:46:05.9380134 2870.0
126 2021-07-28T14:46:05.9380134 2580.0

View File

@ -0,0 +1 @@
{"key":"111","size":126,"hasDateTime":false}

126
time-series-db/qqq/1112.csv Normal file
View File

@ -0,0 +1,126 @@
2021-03-25T14:46:05.9380134;3140.0
2021-03-26T14:46:05.9380134;3270.0
2021-03-27T14:46:05.9380134;3690.0
2021-03-28T14:46:05.9380134;4360.0
2021-03-29T14:46:05.9380134;3520.0
2021-03-30T14:46:05.9380134;4140.0
2021-03-31T14:46:05.9380134;3440.0
2021-04-01T14:46:05.9380134;3750.0
2021-04-02T14:46:05.9380134;4140.0
2021-04-03T14:46:05.9380134;5610.0
2021-04-04T14:46:05.9380134;5350.0
2021-04-05T14:46:05.9380134;4270.0
2021-04-06T14:46:05.9380134;3160.0
2021-04-07T14:46:05.9380134;2560.0
2021-04-08T14:46:05.9380134;3410.0
2021-04-09T14:46:05.9380134;3670.0
2021-04-10T14:46:05.9380134;3670.0
2021-04-11T14:46:05.9380134;3200.0
2021-04-12T14:46:05.9380134;3700.0
2021-04-13T14:46:05.9380134;3430.0
2021-04-14T14:46:05.9380134;4130.0
2021-04-15T14:46:05.9380134;4870.0
2021-04-16T14:46:05.9380134;6310.0
2021-04-17T14:46:05.9380134;4680.0
2021-04-18T14:46:05.9380134;2380.0
2021-04-19T14:46:05.9380134;3430.0
2021-04-20T14:46:05.9380134;2950.0
2021-04-21T14:46:05.9380134;3130.0
2021-04-22T14:46:05.9380134;3650.0
2021-04-23T14:46:05.9380134;2980.0
2021-04-24T14:46:05.9380134;3720.0
2021-04-25T14:46:05.9380134;2960.0
2021-04-26T14:46:05.9380134;4300.0
2021-04-27T14:46:05.9380134;5550.0
2021-04-28T14:46:05.9380134;4380.0
2021-04-29T14:46:05.9380134;3620.0
2021-04-30T14:46:05.9380134;3350.0
2021-05-01T14:46:05.9380134;3300.0
2021-05-02T14:46:05.9380134;3800.0
2021-05-03T14:46:05.9380134;3420.0
2021-05-04T14:46:05.9380134;3860.0
2021-05-05T14:46:05.9380134;2900.0
2021-05-06T14:46:05.9380134;3240.0
2021-05-07T14:46:05.9380134;3150.0
2021-05-08T14:46:05.9380134;4460.0
2021-05-09T14:46:05.9380134;5040.0
2021-05-10T14:46:05.9380134;4660.0
2021-05-11T14:46:05.9380134;3450.0
2021-05-12T14:46:05.9380134;2660.0
2021-05-13T14:46:05.9380134;2400.0
2021-05-14T14:46:05.9380134;2200.0
2021-05-15T14:46:05.9380134;3020.0
2021-05-16T14:46:05.9380134;3450.0
2021-05-17T14:46:05.9380134;4110.0
2021-05-18T14:46:05.9380134;2760.0
2021-05-19T14:46:05.9380134;3390.0
2021-05-20T14:46:05.9380134;3740.0
2021-05-21T14:46:05.9380134;4830.0
2021-05-22T14:46:05.9380134;4450.0
2021-05-23T14:46:05.9380134;3140.0
2021-05-24T14:46:05.9380134;4700.0
2021-05-25T14:46:05.9380134;2330.0
2021-05-26T14:46:05.9380134;2740.0
2021-05-27T14:46:05.9380134;2480.0
2021-05-28T14:46:05.9380134;2690.0
2021-05-29T14:46:05.9380134;5850.0
2021-05-30T14:46:05.9380134;2450.0
2021-05-31T14:46:05.9380134;3720.0
2021-06-01T14:46:05.9380134;2780.0
2021-06-02T14:46:05.9380134;5690.0
2021-06-03T14:46:05.9380134;4150.0
2021-06-04T14:46:05.9380134;4460.0
2021-06-05T14:46:05.9380134;2730.0
2021-06-06T14:46:05.9380134;3580.0
2021-06-07T14:46:05.9380134;2870.0
2021-06-08T14:46:05.9380134;4210.0
2021-06-09T14:46:05.9380134;4500.0
2021-06-10T14:46:05.9380134;3560.0
2021-06-11T14:46:05.9380134;3800.0
2021-06-12T14:46:05.9380134;3260.0
2021-06-13T14:46:05.9380134;3410.0
2021-06-14T14:46:05.9380134;3860.0
2021-06-15T14:46:05.9380134;5000.0
2021-06-16T14:46:05.9380134;3840.0
2021-06-17T14:46:05.9380134;3210.0
2021-06-18T14:46:05.9380134;2930.0
2021-06-19T14:46:05.9380134;3630.0
2021-06-20T14:46:05.9380134;2760.0
2021-06-21T14:46:05.9380134;3310.0
2021-06-22T14:46:05.9380134;4320.0
2021-06-23T14:46:05.9380134;3010.0
2021-06-24T14:46:05.9380134;3440.0
2021-06-25T14:46:05.9380134;5100.0
2021-06-26T14:46:05.9380134;4170.0
2021-06-27T14:46:05.9380134;4540.0
2021-06-28T14:46:05.9380134;3410.0
2021-06-29T14:46:05.9380134;2590.0
2021-06-30T14:46:05.9380134;2640.0
2021-07-01T14:46:05.9380134;2970.0
2021-07-02T14:46:05.9380134;3000.0
2021-07-03T14:46:05.9380134;2900.0
2021-07-04T14:46:05.9380134;3010.0
2021-07-05T14:46:05.9380134;3380.0
2021-07-06T14:46:05.9380134;3060.0
2021-07-07T14:46:05.9380134;3100.0
2021-07-08T14:46:05.9380134;3940.0
2021-07-09T14:46:05.9380134;5360.0
2021-07-10T14:46:05.9380134;3280.0
2021-07-11T14:46:05.9380134;3190.0
2021-07-12T14:46:05.9380134;4950.0
2021-07-13T14:46:05.9380134;2910.0
2021-07-14T14:46:05.9380134;2820.0
2021-07-15T14:46:05.9380134;3050.0
2021-07-16T14:46:05.9380134;2930.0
2021-07-17T14:46:05.9380134;2800.0
2021-07-18T14:46:05.9380134;3220.0
2021-07-19T14:46:05.9380134;3120.0
2021-07-20T14:46:05.9380134;4000.0
2021-07-21T14:46:05.9380134;4840.0
2021-07-22T14:46:05.9380134;2630.0
2021-07-23T14:46:05.9380134;2920.0
2021-07-24T14:46:05.9380134;2350.0
2021-07-25T14:46:05.9380134;2850.0
2021-07-26T14:46:05.9380134;2700.0
2021-07-27T14:46:05.9380134;2870.0
2021-07-28T14:46:05.9380134;2580.0
1 2021-03-25T14:46:05.9380134 3140.0
2 2021-03-26T14:46:05.9380134 3270.0
3 2021-03-27T14:46:05.9380134 3690.0
4 2021-03-28T14:46:05.9380134 4360.0
5 2021-03-29T14:46:05.9380134 3520.0
6 2021-03-30T14:46:05.9380134 4140.0
7 2021-03-31T14:46:05.9380134 3440.0
8 2021-04-01T14:46:05.9380134 3750.0
9 2021-04-02T14:46:05.9380134 4140.0
10 2021-04-03T14:46:05.9380134 5610.0
11 2021-04-04T14:46:05.9380134 5350.0
12 2021-04-05T14:46:05.9380134 4270.0
13 2021-04-06T14:46:05.9380134 3160.0
14 2021-04-07T14:46:05.9380134 2560.0
15 2021-04-08T14:46:05.9380134 3410.0
16 2021-04-09T14:46:05.9380134 3670.0
17 2021-04-10T14:46:05.9380134 3670.0
18 2021-04-11T14:46:05.9380134 3200.0
19 2021-04-12T14:46:05.9380134 3700.0
20 2021-04-13T14:46:05.9380134 3430.0
21 2021-04-14T14:46:05.9380134 4130.0
22 2021-04-15T14:46:05.9380134 4870.0
23 2021-04-16T14:46:05.9380134 6310.0
24 2021-04-17T14:46:05.9380134 4680.0
25 2021-04-18T14:46:05.9380134 2380.0
26 2021-04-19T14:46:05.9380134 3430.0
27 2021-04-20T14:46:05.9380134 2950.0
28 2021-04-21T14:46:05.9380134 3130.0
29 2021-04-22T14:46:05.9380134 3650.0
30 2021-04-23T14:46:05.9380134 2980.0
31 2021-04-24T14:46:05.9380134 3720.0
32 2021-04-25T14:46:05.9380134 2960.0
33 2021-04-26T14:46:05.9380134 4300.0
34 2021-04-27T14:46:05.9380134 5550.0
35 2021-04-28T14:46:05.9380134 4380.0
36 2021-04-29T14:46:05.9380134 3620.0
37 2021-04-30T14:46:05.9380134 3350.0
38 2021-05-01T14:46:05.9380134 3300.0
39 2021-05-02T14:46:05.9380134 3800.0
40 2021-05-03T14:46:05.9380134 3420.0
41 2021-05-04T14:46:05.9380134 3860.0
42 2021-05-05T14:46:05.9380134 2900.0
43 2021-05-06T14:46:05.9380134 3240.0
44 2021-05-07T14:46:05.9380134 3150.0
45 2021-05-08T14:46:05.9380134 4460.0
46 2021-05-09T14:46:05.9380134 5040.0
47 2021-05-10T14:46:05.9380134 4660.0
48 2021-05-11T14:46:05.9380134 3450.0
49 2021-05-12T14:46:05.9380134 2660.0
50 2021-05-13T14:46:05.9380134 2400.0
51 2021-05-14T14:46:05.9380134 2200.0
52 2021-05-15T14:46:05.9380134 3020.0
53 2021-05-16T14:46:05.9380134 3450.0
54 2021-05-17T14:46:05.9380134 4110.0
55 2021-05-18T14:46:05.9380134 2760.0
56 2021-05-19T14:46:05.9380134 3390.0
57 2021-05-20T14:46:05.9380134 3740.0
58 2021-05-21T14:46:05.9380134 4830.0
59 2021-05-22T14:46:05.9380134 4450.0
60 2021-05-23T14:46:05.9380134 3140.0
61 2021-05-24T14:46:05.9380134 4700.0
62 2021-05-25T14:46:05.9380134 2330.0
63 2021-05-26T14:46:05.9380134 2740.0
64 2021-05-27T14:46:05.9380134 2480.0
65 2021-05-28T14:46:05.9380134 2690.0
66 2021-05-29T14:46:05.9380134 5850.0
67 2021-05-30T14:46:05.9380134 2450.0
68 2021-05-31T14:46:05.9380134 3720.0
69 2021-06-01T14:46:05.9380134 2780.0
70 2021-06-02T14:46:05.9380134 5690.0
71 2021-06-03T14:46:05.9380134 4150.0
72 2021-06-04T14:46:05.9380134 4460.0
73 2021-06-05T14:46:05.9380134 2730.0
74 2021-06-06T14:46:05.9380134 3580.0
75 2021-06-07T14:46:05.9380134 2870.0
76 2021-06-08T14:46:05.9380134 4210.0
77 2021-06-09T14:46:05.9380134 4500.0
78 2021-06-10T14:46:05.9380134 3560.0
79 2021-06-11T14:46:05.9380134 3800.0
80 2021-06-12T14:46:05.9380134 3260.0
81 2021-06-13T14:46:05.9380134 3410.0
82 2021-06-14T14:46:05.9380134 3860.0
83 2021-06-15T14:46:05.9380134 5000.0
84 2021-06-16T14:46:05.9380134 3840.0
85 2021-06-17T14:46:05.9380134 3210.0
86 2021-06-18T14:46:05.9380134 2930.0
87 2021-06-19T14:46:05.9380134 3630.0
88 2021-06-20T14:46:05.9380134 2760.0
89 2021-06-21T14:46:05.9380134 3310.0
90 2021-06-22T14:46:05.9380134 4320.0
91 2021-06-23T14:46:05.9380134 3010.0
92 2021-06-24T14:46:05.9380134 3440.0
93 2021-06-25T14:46:05.9380134 5100.0
94 2021-06-26T14:46:05.9380134 4170.0
95 2021-06-27T14:46:05.9380134 4540.0
96 2021-06-28T14:46:05.9380134 3410.0
97 2021-06-29T14:46:05.9380134 2590.0
98 2021-06-30T14:46:05.9380134 2640.0
99 2021-07-01T14:46:05.9380134 2970.0
100 2021-07-02T14:46:05.9380134 3000.0
101 2021-07-03T14:46:05.9380134 2900.0
102 2021-07-04T14:46:05.9380134 3010.0
103 2021-07-05T14:46:05.9380134 3380.0
104 2021-07-06T14:46:05.9380134 3060.0
105 2021-07-07T14:46:05.9380134 3100.0
106 2021-07-08T14:46:05.9380134 3940.0
107 2021-07-09T14:46:05.9380134 5360.0
108 2021-07-10T14:46:05.9380134 3280.0
109 2021-07-11T14:46:05.9380134 3190.0
110 2021-07-12T14:46:05.9380134 4950.0
111 2021-07-13T14:46:05.9380134 2910.0
112 2021-07-14T14:46:05.9380134 2820.0
113 2021-07-15T14:46:05.9380134 3050.0
114 2021-07-16T14:46:05.9380134 2930.0
115 2021-07-17T14:46:05.9380134 2800.0
116 2021-07-18T14:46:05.9380134 3220.0
117 2021-07-19T14:46:05.9380134 3120.0
118 2021-07-20T14:46:05.9380134 4000.0
119 2021-07-21T14:46:05.9380134 4840.0
120 2021-07-22T14:46:05.9380134 2630.0
121 2021-07-23T14:46:05.9380134 2920.0
122 2021-07-24T14:46:05.9380134 2350.0
123 2021-07-25T14:46:05.9380134 2850.0
124 2021-07-26T14:46:05.9380134 2700.0
125 2021-07-27T14:46:05.9380134 2870.0
126 2021-07-28T14:46:05.9380134 2580.0

View File

@ -0,0 +1 @@
{"key":"1112","size":126,"hasDateTime":false}