first commit
This commit is contained in:
87
templates/results.html
Normal file
87
templates/results.html
Normal file
@ -0,0 +1,87 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Analysis Results</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<script src="https://cdn.plot.ly/plotly-2.20.0.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container mt-5">
|
||||
<h1 class="mb-4">Time Series Analysis Results</h1>
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Summary Statistics</h5>
|
||||
<table class="table">
|
||||
{% for key, value in summary.items() %}
|
||||
<tr>
|
||||
<td>{{ key }}</td>
|
||||
<td>{{ value|round(2) }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if do_decomposition %}
|
||||
<div class="card mb-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Time Series Decomposition</h5>
|
||||
{{ plot_html | safe }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if do_forecasting %}
|
||||
<div class="card mb-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Forecast (ARIMA{{ arima_params }}, Seasonal{{ seasonal_params }})</h5>
|
||||
<form method="post" action="/reforecast">
|
||||
<div class="mb-3">
|
||||
<label for="train_percent" class="form-label">Training Data Percentage (50-95%):</label>
|
||||
<input type="number" class="form-control" name="train_percent" id="train_percent" value="{{ train_percent }}" min="50" max="95" step="1">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="test_percent" class="form-label">Test Data Percentage (5-50%):</label>
|
||||
<input type="number" class="form-control" name="test_percent" id="test_percent" value="{{ test_percent }}" min="5" max="50" step="1">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="forecast_periods" class="form-label">Number of Periods to Forecast (1-24):</label>
|
||||
<input type="number" class="form-control" name="forecast_periods" id="forecast_periods" value="{{ forecast_periods }}" min="1" max="24" step="1">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Re-run Forecast</button>
|
||||
</form>
|
||||
<hr>
|
||||
<p>Training Data: {{ train_percent }}% ({{ train_size }} observations)</p>
|
||||
<p>Test Data: {{ test_percent }}% ({{ test_size }} observations)</p>
|
||||
<p>Forecast Periods: {{ forecast_periods }}</p>
|
||||
{{ forecast_html | safe }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if do_acf_pacf %}
|
||||
<div class="card mb-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">ACF and PACF Plots</h5>
|
||||
{{ acf_pacf_html | safe }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<a href="/download/{{ filename }}" class="btn btn-primary">Download Processed Data</a>
|
||||
<a href="/" class="btn btn-secondary">Upload Another File</a>
|
||||
</div>
|
||||
<script>
|
||||
// Ensure train and test percentages sum to 100
|
||||
const trainInput = document.getElementById('train_percent');
|
||||
const testInput = document.getElementById('test_percent');
|
||||
trainInput.addEventListener('input', function() {
|
||||
testInput.value = (100 - parseFloat(this.value)).toFixed(0);
|
||||
});
|
||||
testInput.addEventListener('input', function() {
|
||||
trainInput.value = (100 - parseFloat(this.value)).toFixed(0);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user