replace today with last 24 hours

This commit is contained in:
lelo 2025-04-01 22:03:52 +02:00
parent 7daf2eea6e
commit f5ed562ea9
2 changed files with 11 additions and 11 deletions

View File

@ -95,7 +95,7 @@ def connections():
@require_secret @require_secret
def dashboard(): def dashboard():
filetype_arg = request.args.get('filetype', 'audio') filetype_arg = request.args.get('filetype', 'audio')
timeframe = request.args.get('timeframe', 'today') timeframe = request.args.get('timeframe', 'last24hours')
now = datetime.now() now = datetime.now()
# Determine which file type we're filtering by. # Determine which file type we're filtering by.
@ -114,8 +114,8 @@ def dashboard():
filetype = 'video/' filetype = 'video/'
# Determine start time based on timeframe # Determine start time based on timeframe
if timeframe == 'today': if timeframe == 'last24hours':
start_dt = now.replace(hour=0, minute=0, second=0, microsecond=0) start_dt = now - timedelta(hours=24)
elif timeframe == '7days': elif timeframe == '7days':
start_dt = now - timedelta(days=7) start_dt = now - timedelta(days=7)
elif timeframe == '30days': elif timeframe == '30days':
@ -123,7 +123,7 @@ def dashboard():
elif timeframe == '365days': elif timeframe == '365days':
start_dt = now - timedelta(days=365) start_dt = now - timedelta(days=365)
else: else:
start_dt = now.replace(hour=0, minute=0, second=0, microsecond=0) start_dt = now - timedelta(hours=24)
# We'll compare the textual timestamp (ISO 8601). # We'll compare the textual timestamp (ISO 8601).
start_str = start_dt.isoformat() start_str = start_dt.isoformat()
@ -157,7 +157,7 @@ def dashboard():
# 2. Distinct device trend # 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"/"30days", by month if "365days"
if timeframe == 'today': if timeframe == 'last24hours':
# Group by hour: substr(timestamp, 12, 2) -> HH # Group by hour: substr(timestamp, 12, 2) -> HH
query = f''' query = f'''
SELECT substr(timestamp, 12, 2) AS bucket, COUNT(DISTINCT device_id) AS count SELECT substr(timestamp, 12, 2) AS bucket, COUNT(DISTINCT device_id) AS count
@ -202,7 +202,7 @@ def dashboard():
# 3. Timeframe-based aggregation # 3. Timeframe-based aggregation
# 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"/"30days", by month if "365days".
if timeframe == 'today': if timeframe == 'last24hours':
# Hour: substr(timestamp, 12, 2) -> HH # Hour: substr(timestamp, 12, 2) -> HH
query = f''' query = f'''
SELECT substr(timestamp, 12, 2) AS bucket, COUNT(*) AS count SELECT substr(timestamp, 12, 2) AS bucket, COUNT(*) AS count

View File

@ -30,7 +30,7 @@
<a href="{{ url_for('dashboard') }}" class="btn btn-primary mt-1">Auswertung</a> <a href="{{ url_for('dashboard') }}" class="btn btn-primary mt-1">Auswertung</a>
</div> </div>
<div class="mb-3"> <div class="mb-3">
<a href="{{ url_for('dashboard', timeframe='today') }}" class="btn btn-secondary btn-sm mt-1">Today</a> <a href="{{ url_for('dashboard', timeframe='last24hours') }}" class="btn btn-secondary btn-sm mt-1">Last 24 Hours</a>
<a href="{{ url_for('dashboard', timeframe='7days') }}" class="btn btn-secondary btn-sm mt-1">Last 7 Days</a> <a href="{{ url_for('dashboard', timeframe='7days') }}" class="btn btn-secondary btn-sm mt-1">Last 7 Days</a>
<a href="{{ url_for('dashboard', timeframe='30days') }}" class="btn btn-secondary btn-sm mt-1">Last 30 Days</a> <a href="{{ url_for('dashboard', timeframe='30days') }}" class="btn btn-secondary btn-sm mt-1">Last 30 Days</a>
<a href="{{ url_for('dashboard', timeframe='365days') }}" class="btn btn-secondary btn-sm mt-1">Last 365 Days</a> <a href="{{ url_for('dashboard', timeframe='365days') }}" class="btn btn-secondary btn-sm mt-1">Last 365 Days</a>
@ -177,10 +177,10 @@
const folderData = {{ folder_data|tojson }}; const folderData = {{ folder_data|tojson }};
// shift the labels to local time zone // shift the labels to local time zone
const timeframe = "{{ timeframe }}"; // e.g., 'today', '7days', '30days', or '365days' const timeframe = "{{ timeframe }}"; // e.g., 'last24hours', '7days', '30days', or '365days'
const shiftedLabels = timeframeData.map(item => { const shiftedLabels = timeframeData.map(item => {
if (timeframe === 'today') { if (timeframe === 'last24hours') {
// For "today", the bucket is an hour in UTC (e.g., "14") // For 'last24hours', the bucket is an hour in UTC (e.g., "14")
const utcHour = parseInt(item.bucket, 10); const utcHour = parseInt(item.bucket, 10);
const now = new Date(); const now = new Date();
// Create Date objects for the start and end of the hour in UTC // Create Date objects for the start and end of the hour in UTC
@ -234,7 +234,7 @@
} }
}); });
// Timeframe Breakdown Chart - Bar Chart (for "today" timeframe) // Timeframe Breakdown Chart - Bar Chart (for 'last24hours' timeframe)
const ctxTimeframe = document.getElementById('downloadTimeframeChart').getContext('2d'); const ctxTimeframe = document.getElementById('downloadTimeframeChart').getContext('2d');
new Chart(ctxTimeframe, { new Chart(ctxTimeframe, {
type: 'bar', type: 'bar',