Statistiken
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
#!/bin/bash
|
||||
|
||||
DB="$HOME/.local/share/mindwtr/mindwtr.db"
|
||||
|
||||
if [ ! -f "$DB" ]; then
|
||||
echo "Fehler: Datenbank nicht gefunden: $DB" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "=== Mindwtr-Statistik ==="
|
||||
echo
|
||||
|
||||
# ── 1. Aufgaben-Übersicht ──
|
||||
echo "── Aufgaben (aktiv) ──────────────────"
|
||||
sqlite3 "$DB" "
|
||||
SELECT status, COUNT(*) AS count
|
||||
FROM tasks WHERE deletedAt IS NULL
|
||||
GROUP BY status
|
||||
ORDER BY CASE status
|
||||
WHEN 'inbox' THEN 1 WHEN 'next' THEN 2
|
||||
WHEN 'someday' THEN 3 WHEN 'done' THEN 4
|
||||
END;" | awk -F'|' '{ printf " %-12s %5s\n", $1, $2 }'
|
||||
|
||||
active=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE deletedAt IS NULL AND status != 'done';")
|
||||
total=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE deletedAt IS NULL;")
|
||||
echo " ─────────────────"
|
||||
printf " %-12s %5s\n" "Aktiv (o. done)" "$active"
|
||||
printf " %-12s %5s\n" "Gesamt" "$total"
|
||||
echo
|
||||
|
||||
# ── 2. Fälligkeiten ──
|
||||
echo "── Fälligkeiten ──────────────────────"
|
||||
due_overdue=$(sqlite3 "$DB" "
|
||||
SELECT COUNT(*) FROM tasks
|
||||
WHERE deletedAt IS NULL AND status != 'done'
|
||||
AND dueDate IS NOT NULL AND dueDate != '' AND dueDate < datetime('now');")
|
||||
due_week=$(sqlite3 "$DB" "
|
||||
SELECT COUNT(*) FROM tasks
|
||||
WHERE deletedAt IS NULL AND status != 'done'
|
||||
AND dueDate IS NOT NULL AND dueDate != ''
|
||||
AND dueDate >= datetime('now') AND dueDate < datetime('now', '+7 days');")
|
||||
due_today=$(sqlite3 "$DB" "
|
||||
SELECT COUNT(*) FROM tasks
|
||||
WHERE deletedAt IS NULL AND status != 'done'
|
||||
AND dueDate IS NOT NULL AND dueDate != ''
|
||||
AND date(dueDate) = date('now');")
|
||||
printf " %-20s %5s\n" "Überfällig" "$due_overdue"
|
||||
printf " %-20s %5s\n" "Diese Woche" "$due_week"
|
||||
printf " %-20s %5s\n" "Heute" "$due_today"
|
||||
echo
|
||||
|
||||
# ── 3. Heutige Aktivität ──
|
||||
echo "── Heute & diese Woche ───────────────"
|
||||
created_today=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE date(createdAt) = date('now');")
|
||||
updated_today=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE date(updatedAt) = date('now');")
|
||||
done_today=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE date(completedAt) = date('now') AND deletedAt IS NULL;")
|
||||
done_week=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks WHERE completedAt >= datetime('now', '-7 days') AND deletedAt IS NULL;")
|
||||
printf " %-20s %5s\n" "Heute erstellt" "$created_today"
|
||||
printf " %-20s %5s\n" "Heute aktualisiert" "$updated_today"
|
||||
printf " %-20s %5s\n" "Heute erledigt" "$done_today"
|
||||
printf " %-20s %5s\n" "Diese Woche erledigt" "$done_week"
|
||||
echo
|
||||
|
||||
# ── 4. Aufgaben-Merkmale ──
|
||||
echo "── Aufgaben mit ──────────────────────"
|
||||
sqlite3 "$DB" "
|
||||
SELECT 'Priorität', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND priority IS NOT NULL AND priority != ''
|
||||
UNION ALL
|
||||
SELECT 'Energielevel', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND energyLevel IS NOT NULL AND energyLevel != ''
|
||||
UNION ALL
|
||||
SELECT 'Fälligkeitsdatum', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND dueDate IS NOT NULL AND dueDate != ''
|
||||
UNION ALL
|
||||
SELECT 'Checkliste', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND checklist IS NOT NULL AND checklist != '[]'
|
||||
UNION ALL
|
||||
SELECT 'Wiederkehrend', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND recurrence IS NOT NULL AND recurrence != ''
|
||||
UNION ALL
|
||||
SELECT 'Notizen', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND description IS NOT NULL AND description != ''
|
||||
UNION ALL
|
||||
SELECT 'Zeitschätzung', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND timeEstimate IS NOT NULL AND timeEstimate != ''
|
||||
UNION ALL
|
||||
SELECT 'Heute fokussiert', COUNT(*) FROM tasks WHERE deletedAt IS NULL AND isFocusedToday = 1;" | awk -F'|' '{ printf " %-20s %5s\n", $1, $2 }'
|
||||
echo
|
||||
|
||||
# ── 5. Top-Kontexte ──
|
||||
echo "── Top-Kontexte ──────────────────────"
|
||||
sqlite3 "$DB" "
|
||||
SELECT j.value AS context, COUNT(*) AS count
|
||||
FROM tasks t, json_each(t.contexts) j
|
||||
WHERE t.deletedAt IS NULL
|
||||
GROUP BY j.value ORDER BY count DESC;" | awk -F'|' '{ printf " %-20s %5s\n", $1, $2 }'
|
||||
echo
|
||||
|
||||
# ── 6. Top-Schlagwörter ──
|
||||
echo "── Top-Schlagwörter ──────────────────"
|
||||
sqlite3 "$DB" "
|
||||
SELECT j.value AS tag, COUNT(*) AS count
|
||||
FROM tasks t, json_each(t.tags) j
|
||||
WHERE t.deletedAt IS NULL
|
||||
GROUP BY j.value ORDER BY count DESC LIMIT 15;" | awk -F'|' '{ printf " %-20s %5s\n", $1, $2 }'
|
||||
echo
|
||||
|
||||
# ── 7. Projekte ──
|
||||
echo "── Projekte ──────────────────────────"
|
||||
sqlite3 "$DB" "
|
||||
SELECT COALESCE(p.title, '(kein Projekt)') AS project, COUNT(*) AS tasks
|
||||
FROM tasks t LEFT JOIN projects p ON t.projectId = p.id
|
||||
WHERE t.deletedAt IS NULL AND (p.deletedAt IS NULL OR p.id IS NULL)
|
||||
GROUP BY project ORDER BY tasks DESC;" | awk -F'|' '{ printf " %-30s %5s\n", $1, $2 }'
|
||||
echo
|
||||
|
||||
# ── 8. Unvollständige Aufgaben ──
|
||||
echo "── Unvollständige Aufgaben ───────────"
|
||||
incomplete=$(sqlite3 "$DB" "
|
||||
SELECT COUNT(*) FROM tasks t
|
||||
WHERE deletedAt IS NULL
|
||||
AND ((contexts IS NULL OR contexts = '[]') OR (tags IS NULL OR tags = '[]'))
|
||||
AND status != 'done';")
|
||||
echo " $incomplete Aufgaben ohne Kontext und/oder Schlagwort"
|
||||
echo " (Details: ./incomplete.sh)"
|
||||
Reference in New Issue
Block a user