From 09bf289cf63f9edd9774614249ae4783c7e27338 Mon Sep 17 00:00:00 2001 From: lelo Date: Sun, 1 Jun 2025 20:28:11 +0000 Subject: [PATCH] small improvements --- analytics.py | 12 +++-- helperfunctions.py | 2 +- static/app.css | 2 +- static/app.js | 52 ---------------------- static/general.js | 34 ++++++++++++++ templates/base.html | 2 +- templates/file_access.html | 18 +++++--- templates/folder_secret_config_editor.html | 3 +- 8 files changed, 59 insertions(+), 66 deletions(-) create mode 100644 static/general.js diff --git a/analytics.py b/analytics.py index eccc8b7..cbccb40 100644 --- a/analytics.py +++ b/analytics.py @@ -353,6 +353,8 @@ def dashboard(): start_dt = now - timedelta(hours=24) elif session['timeframe'] == '7days': start_dt = now - timedelta(days=7) + elif session['timeframe'] == '14days': + start_dt = now - timedelta(days=14) elif session['timeframe'] == '30days': start_dt = now - timedelta(days=30) elif session['timeframe'] == '365days': @@ -381,7 +383,7 @@ def dashboard(): # removed and moved to file_access() function # 2. Distinct device trend - # We'll group by hour if "today", by day if "7days"/"30days", by month if "365days" + # We'll group by hour if "today", by day if 7days/14days/30days, by month if 365days if session['timeframe'] == 'last24hours': # Group by hour: substr(timestamp, 12, 2) -> HH query = f''' @@ -391,7 +393,7 @@ def dashboard(): GROUP BY bucket ORDER BY bucket ''' - elif session['timeframe'] in ('7days', '30days'): + elif session['timeframe'] in ('7days', '14days', '30days'): # Group by day: substr(timestamp, 1, 10) -> YYYY-MM-DD query = f''' SELECT substr(timestamp, 1, 10) AS bucket, COUNT(DISTINCT device_id) AS count @@ -426,7 +428,7 @@ def dashboard(): ] # 3. Download trend - # We'll group by hour if "today", by day if "7days"/"30days", by month if "365days". + # We'll group by hour if "today", by day if 7days/14days/30days, by month if 365days. if session['timeframe'] == 'last24hours': # Hour: substr(timestamp, 12, 2) -> HH query = f''' @@ -436,7 +438,7 @@ def dashboard(): GROUP BY bucket ORDER BY bucket ''' - elif session['timeframe'] in ('7days', '30days'): + elif session['timeframe'] in ('7days', '14days', '30days'): # Day: substr(timestamp, 1, 10) -> YYYY-MM-DD query = f''' SELECT substr(timestamp, 1, 10) AS bucket, COUNT(*) AS count @@ -615,6 +617,8 @@ def file_access(): start_dt = now - timedelta(hours=24) elif session['timeframe'] == '7days': start_dt = now - timedelta(days=7) + elif session['timeframe'] == '14days': + start_dt = now - timedelta(days=14) elif session['timeframe'] == '30days': start_dt = now - timedelta(days=30) elif session['timeframe'] == '365days': diff --git a/helperfunctions.py b/helperfunctions.py index 92ba3c0..4c9f17e 100644 --- a/helperfunctions.py +++ b/helperfunctions.py @@ -107,7 +107,7 @@ def generate_top_list(category): now = datetime.now() # We'll compare the timestamp - start_dt = now - timedelta(days=30) + start_dt = now - timedelta(days=14) start_str = start_dt.isoformat() # Filter for mimes that start with the given type diff --git a/static/app.css b/static/app.css index 53870e1..cf0740a 100644 --- a/static/app.css +++ b/static/app.css @@ -361,7 +361,7 @@ footer { } .toggle-icon { - font-size: 1.25rem; + font-size: 1.5rem; user-select: none; } diff --git a/static/app.js b/static/app.js index 97117b1..af89095 100644 --- a/static/app.js +++ b/static/app.js @@ -499,55 +499,3 @@ function syncThemeColor() { } document.addEventListener('DOMContentLoaded', syncThemeColor); - - -// toggle card visibility -document.addEventListener('DOMContentLoaded', function() { - // 1. Select all plus/minus icons - var icons = document.querySelectorAll('.card .toggle-icon'); - - icons.forEach(function(icon) { - // 2. For each icon, find its corresponding collapsable body - var card = icon.closest('.card'); - if (!card) return; - - var body = card.querySelector('.card-body.collapsable'); - if (!body) return; - - // 3. Initialize aria‐expanded & icon text based on whether .show is present - if (body.classList.contains('show')) { - icon.textContent = '–'; - icon.setAttribute('aria-expanded', 'true'); - } else { - icon.textContent = '+'; - icon.setAttribute('aria-expanded', 'false'); - } - - function toggleSection() { - // Toggle the 'show' class - if (body.classList.contains('show')) { - body.classList.remove('show'); - icon.textContent = '+'; - icon.setAttribute('aria-expanded', 'false'); - } else { - body.classList.add('show'); - icon.textContent = '–'; - icon.setAttribute('aria-expanded', 'true'); - } - } - - // 4. Click listener - icon.addEventListener('click', function(e) { - e.stopPropagation(); - toggleSection(); - }); - - // 5. Keydown listener (Enter/Space for accessibility) - icon.addEventListener('keydown', function(e) { - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault(); - toggleSection(); - } - }); - }); - }); \ No newline at end of file diff --git a/static/general.js b/static/general.js new file mode 100644 index 0000000..56d59d4 --- /dev/null +++ b/static/general.js @@ -0,0 +1,34 @@ + document.addEventListener('DOMContentLoaded', function() { + // (No per-icon setup needed here—just ensure your CSS is in place.) + }); + + // 1) Delegate clicks on any .toggle-icon, now or in the future: + document.addEventListener('click', function(e) { + // Find the closest .toggle-icon ancestor of the click target, if any + if (!e.target.classList.contains('toggle-icon')) return; + var icon = e.target; + + // Prevent clicks on the icon from bubbling further if you want + e.stopPropagation(); + + // Locate its .card-body.collapsable in the same card + var card = icon.closest('.card'); + if (!card) return; + var body = card.querySelector('.card-body.collapsable'); + if (!body) return; + + // Toggle the 'show' class and swap +/– text + if (body.classList.contains('show')) { + // Collapse: remove show, update icon, remove from set + body.classList.remove('show'); + icon.textContent = '+'; + icon.setAttribute('aria-expanded', 'false'); + openCards.add(key); + } else { + // Expand: add show, update icon, add to set + body.classList.add('show'); + icon.textContent = '–'; + icon.setAttribute('aria-expanded', 'true'); + openCards.add(key); + } + }); diff --git a/templates/base.html b/templates/base.html index c4f288d..3552ee0 100644 --- a/templates/base.html +++ b/templates/base.html @@ -57,7 +57,7 @@ {% block scripts %}{% endblock %} - + diff --git a/templates/file_access.html b/templates/file_access.html index f8a2d90..78ac21d 100644 --- a/templates/file_access.html +++ b/templates/file_access.html @@ -9,7 +9,7 @@
-

Auswertung-Dateizugriffe

+

Top 20 Dateizugriffe