diff --git a/borgweb/borg/static/js/index.js b/borgweb/borg/static/js/index.js index a4cc890..b12ece7 100644 --- a/borgweb/borg/static/js/index.js +++ b/borgweb/borg/static/js/index.js @@ -1,26 +1,22 @@ window.addEventListener("DOMContentLoaded", function () { $.getJSON( "repo_daily.json", function( json ) { - set_daily_graph(json); + draw_time_graph("daily_backup_size", json.repos, json.dates, json.units); }); }, false); -function set_daily_graph(repoDict) { - const labels = repoDict.date_labels; - const y_units = repoDict.units - +function draw_time_graph(chartID, repos, dateLabels, sizeUnits) { var datasets = [] - repoDict.repos.forEach(function (repo) { + repos.forEach(function (repo) { datasets.push({ label: repo.label, data: repo.daily_size, fill: false, - tension: 0.1, borderColor: 'rgb(75, 192, 192)' }); }) const data = { - labels: labels, + labels: dateLabels, datasets: datasets }; @@ -32,8 +28,9 @@ function set_daily_graph(repoDict) { tooltip: { callbacks: { label: function (context) { - if (context.parsed.y !== null) { - return `${context.parsed.y} ${y_units}` + const yValue = context.parsed.y + if (yValue !== null) { + return `${yValue} ${sizeUnits}` } else { return "" } @@ -53,7 +50,7 @@ function set_daily_graph(repoDict) { }, ticks: { callback: function (value, index, values) { - return `${value} ${y_units}` + return `${value} ${sizeUnits}` } } } @@ -62,11 +59,7 @@ function set_daily_graph(repoDict) { } var myChart = new Chart( - document.getElementById('backup_csize_hourly'), + document.getElementById(chartID), config ); } - -function getBaseLog(x, y) { - return Math.log(y) / Math.log(x); -} \ No newline at end of file diff --git a/borgweb/borg/templates/borg/index.html b/borgweb/borg/templates/borg/index.html index 43898db..0829ff0 100644 --- a/borgweb/borg/templates/borg/index.html +++ b/borgweb/borg/templates/borg/index.html @@ -55,7 +55,7 @@ {% endfor %}
- +
{% else %}
diff --git a/borgweb/borg/views/__init__.py b/borgweb/borg/views/__init__.py index 5c0e411..3bd35ca 100644 --- a/borgweb/borg/views/__init__.py +++ b/borgweb/borg/views/__init__.py @@ -1,3 +1,3 @@ -from .views import index, repo, axes, repo_daily_dict +from .views import index, repo, axes from .post import post_repo, post_archive, post_error, post_location from .json import repo_daily_json diff --git a/borgweb/borg/views/json.py b/borgweb/borg/views/json.py index efeb1c5..c56f759 100644 --- a/borgweb/borg/views/json.py +++ b/borgweb/borg/views/json.py @@ -1,8 +1,22 @@ +from datetime import datetime, timedelta from django.http import JsonResponse from ..models import Repo -from . import repo_daily_dict +from ..utility import data +def repo_daily_dict(repo_list, n_days=14): + date_labels = list(reversed([(datetime.utcnow() - timedelta(days=day)).strftime("%d %b") for day in range(n_days)])) + max_repo_size = max(repo.latest_archive().cache.unique_csize for repo in repo_list) + _, max_unit = data.convert_bytes(max_repo_size) + + repo_dicts = [repo.daily_dict(max_unit, n_days) for repo in repo_list] + + return { + "dates": date_labels, + "repos": repo_dicts, + "units": max_unit + } + def repo_daily_json(request): repo_list = Repo.objects.all() return JsonResponse(repo_daily_dict(repo_list, 31)) diff --git a/borgweb/borg/views/views.py b/borgweb/borg/views/views.py index bb0f028..31b4de5 100644 --- a/borgweb/borg/views/views.py +++ b/borgweb/borg/views/views.py @@ -1,7 +1,5 @@ from django.shortcuts import render, get_object_or_404 -from datetime import datetime, timedelta from ..models import Repo, Location -from ..utility import data def index(request): @@ -15,20 +13,6 @@ def index(request): return render(request, 'borg/index.html', context) -def repo_daily_dict(repo_list, n_days=14): - date_labels = list(reversed([(datetime.utcnow() - timedelta(days=day)).strftime("%d %b") for day in range(n_days)])) - max_repo_size = max(repo.latest_archive().cache.unique_csize for repo in repo_list) - _, max_unit = data.convert_bytes(max_repo_size) - - repo_dicts = [repo.daily_dict(max_unit, n_days) for repo in repo_list] - - return { - "date_labels": date_labels, - "repos": repo_dicts, - "units": max_unit - } - - def repo(request, repo_label: str): s_repo = get_object_or_404(Repo, label__label=repo_label) return render(request, 'borg/repo.html', {'repo': s_repo})