Files
teatracker/index.html
Vibe Nuage Agent 394480c516 feat: Add tea powder amount (teaspoons) to tracking
- Add new field 'Menge Tee-Pulver (Teelöffel)' to track form
- Add teaspoons property to entry data model
- Update addEntry() to include teaspoons (default: 1)
- Update handleTrackFormSubmit() to read teaspoons from form
- Display teaspoons in recent entries (e.g., '2 Tassen (1.5 TL)')
- Add migration for existing entries without teaspoons field
- Input allows decimal values (step=0.5) for half teaspoons

Co-authored-by: trevor1969 <trevor1969@users.noreply.github.com>
2026-06-04 16:53:24 +00:00

346 lines
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TeeTracker - Dein Tee-Konsum Tracker</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="app-container">
<header>
<h1>🍵 TeeTracker</h1>
<p>Verwalte deine Tee-Sorten und tracke deinen Konsum</p>
</header>
<nav class="tabs">
<button class="tab-button active" data-tab="dashboard">Dashboard</button>
<button class="tab-button" data-tab="teas">Tee-Sorten</button>
<button class="tab-button" data-tab="track">Tracken</button>
<button class="tab-button" data-tab="stats">Statistiken</button>
<button class="tab-button" data-tab="settings">⚙️ Einstellungen</button>
</nav>
<main class="tab-content">
<!-- Dashboard Tab -->
<section id="dashboard" class="tab-pane active">
<div class="dashboard-cards">
<div class="card">
<h3>Gesamt getrunken</h3>
<div class="card-value" id="total-cups">0 Tassen</div>
</div>
<div class="card">
<h3>Heute</h3>
<div class="card-value" id="today-cups">0 Tassen</div>
</div>
<div class="card">
<h3>Diese Woche</h3>
<div class="card-value" id="week-cups">0 Tassen</div>
</div>
<div class="card">
<h3>Tee-Sorten</h3>
<div class="card-value" id="total-teas">0 Sorten</div>
</div>
</div>
<div class="recent-activity">
<h3>Letzte Aktivitäten</h3>
<div id="recent-entries" class="activity-list"></div>
</div>
</section>
<!-- Tee-Sorten Tab -->
<section id="teas" class="tab-pane">
<div class="teas-header">
<h2>Tee-Sorten</h2>
<button id="add-tea-btn" class="btn btn-primary"> Tee hinzufügen</button>
</div>
<div class="tea-filters">
<input type="text" id="tea-search" placeholder="Suche nach Tee-Sorten...">
<select id="tea-type-filter">
<option value="all">Alle Typen</option>
<option value="Schwarztee">Schwarztee</option>
<option value="Grüntee">Grüntee</option>
<option value="Weißtee">Weißtee</option>
<option value="Oolong">Oolong</option>
<option value="Pu-Erh">Pu-Erh</option>
<option value="Früchtetee">Früchtetee</option>
<option value="Krätertee">Krätertee</option>
<option value="Sonstiges">Sonstiges</option>
</select>
</div>
<div id="teas-list" class="teas-grid"></div>
</section>
<!-- Tracken Tab -->
<section id="track" class="tab-pane">
<h2>Tee-Konsum tracken</h2>
<form id="track-form" class="track-form">
<div class="form-group">
<label for="track-tea">Tee-Sorte *</label>
<select id="track-tea" required>
<option value="">-- Wähle eine Tee-Sorte --</option>
</select>
</div>
<div class="form-group">
<label for="track-date">Datum *</label>
<input type="date" id="track-date" required>
</div>
<div class="form-group">
<label for="track-time">Uhrzeit</label>
<input type="time" id="track-time">
</div>
<div class="form-group">
<label for="track-amount">Menge (Tassen) *</label>
<input type="number" id="track-amount" min="1" max="10" value="1" required>
</div>
<div class="form-group">
<label for="track-teaspoons">Menge Tee-Pulver (Teelöffel)</label>
<input type="number" id="track-teaspoons" min="0" max="10" value="1" step="0.5">
</div>
<div class="form-group">
<label for="track-notes">Notizen</label>
<textarea id="track-notes" rows="3" placeholder="z.B. Mit Honig, besonders stark..."></textarea>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">📝 Tracken</button>
<button type="button" id="cancel-track" class="btn btn-secondary">Abbrechen</button>
</div>
</form>
<div class="recent-tracked">
<h3>Letzte Einträge</h3>
<div id="track-recent-entries" class="activity-list"></div>
</div>
</section>
<!-- Einstellungen Tab -->
<section id="settings" class="tab-pane">
<h2>⚙️ Einstellungen</h2>
<div class="settings-section">
<h3>🌐 Nextcloud-Synchronisation</h3>
<p>Verbinde TeeTracker mit deiner Nextcloud-Instanz für plattformübergreifende Synchronisation.</p>
<div class="form-group checkbox-group">
<label>
<input type="checkbox" id="nc-enabled">
<span class="checkmark"></span>
Nextcloud-Synchronisation aktivieren
</label>
</div>
<div id="nc-config" style="display: none;">
<div class="form-group">
<label for="nc-url">Nextcloud-URL *</label>
<input type="url" id="nc-url" placeholder="https://deine-nextcloud.de">
</div>
<div class="form-group">
<label for="nc-username">Benutzername *</label>
<input type="text" id="nc-username" placeholder="Dein Nextcloud-Benutzername">
</div>
<div class="form-group">
<label for="nc-password">App-Passwort *</label>
<input type="password" id="nc-password" placeholder="App-Passwort aus Nextcloud" autocomplete="current-password">
</div>
<div class="form-group">
<label for="nc-path">Speicherpfad</label>
<input type="text" id="nc-path" placeholder="/TeeTracker/" value="/TeeTracker/">
</div>
<div class="form-actions">
<button id="test-nc-connection" class="btn btn-secondary">🔍 Verbindung testen</button>
<button id="save-nc-config" class="btn btn-primary">💾 Speichern</button>
</div>
</div>
<div id="nc-status" class="status-message"></div>
</div>
<div class="settings-section">
<h3>💾 Datenverwaltung</h3>
<div class="form-group">
<label>Synchronisationsstatus</label>
<div id="sync-status" class="status-badge">Lokaler Modus</div>
</div>
<div class="form-actions">
<button id="export-data" class="btn btn-secondary">📤 Daten exportieren</button>
<button id="import-data" class="btn btn-secondary">📥 Daten importieren</button>
<button id="clear-data" class="btn btn-danger">🗑️ Alle Daten löschen</button>
</div>
</div>
<div class="settings-section">
<h3>📊 Statistik</h3>
<div class="stats-overview">
<div class="stat-item">
<span class="stat-label">Gesamt Tassen:</span>
<span id="settings-total-cups">0</span>
</div>
<div class="stat-item">
<span class="stat-label">Tee-Sorten:</span>
<span id="settings-total-teas">0</span>
</div>
<div class="stat-item">
<span class="stat-label">Erster Eintrag:</span>
<span id="settings-first-entry">-</span>
</div>
<div class="stat-item">
<span class="stat-label">Letzter Eintrag:</span>
<span id="settings-last-entry">-</span>
</div>
</div>
</div>
</section>
<!-- Statistiken Tab -->
<section id="stats" class="tab-pane">
<h2>Statistiken</h2>
<div class="stats-filters">
<label for="stats-period">Zeitraum:</label>
<select id="stats-period">
<option value="today">Heute</option>
<option value="week">Letzte 7 Tage</option>
<option value="month">Letzter Monat</option>
<option value="year">Letztes Jahr</option>
<option value="all">Gesamt</option>
</select>
</div>
<div class="stats-container">
<div class="chart-container">
<h3>Tee-Konsum nach Sorte</h3>
<canvas id="tea-type-chart"></canvas>
</div>
<div class="chart-container">
<h3>Tagesverlauf</h3>
<canvas id="daily-chart"></canvas>
</div>
</div>
<div class="stats-details">
<h3>Detaillierte Statistiken</h3>
<div id="stats-details" class="details-grid"></div>
</div>
</section>
</main>
<!-- Modal für Tee hinzufügen/bearbeiten -->
<div id="tea-modal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2 id="modal-title">Tee hinzufügen</h2>
<button id="close-modal" class="close-btn">&times;</button>
</div>
<form id="tea-form" class="modal-form">
<input type="hidden" id="tea-id">
<div class="form-group">
<label for="tea-name">Name *</label>
<input type="text" id="tea-name" required placeholder="z.B. Earl Grey">
</div>
<div class="form-group">
<label for="tea-type">Typ *</label>
<select id="tea-type" required>
<option value="">-- Wähle einen Typ --</option>
<option value="Schwarztee">Schwarztee</option>
<option value="Grüntee">Grüntee</option>
<option value="Weißtee">Weißtee</option>
<option value="Oolong">Oolong</option>
<option value="Pu-Erh">Pu-Erh</option>
<option value="Früchtetee">Früchtetee</option>
<option value="Krätertee">Krätertee</option>
<option value="Sonstiges">Sonstiges</option>
</select>
</div>
<div class="form-group">
<label for="tea-brand">Marke</label>
<input type="text" id="tea-brand" placeholder="z.B. Twinings, Pukka">
</div>
<div class="form-group">
<label for="tea-description">Beschreibung</label>
<textarea id="tea-description" rows="3" placeholder="Beschreibung des Tees..."></textarea>
</div>
<div class="form-group checkbox-group">
<label>
<input type="checkbox" id="tea-organic">
<span class="checkmark"></span>
Bio-Tee
</label>
</div>
<div class="form-group">
<label for="tea-color">Farbe</label>
<input type="color" id="tea-color" value="#8B4513">
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">💾 Speichern</button>
<button type="button" id="delete-tea-btn" class="btn btn-danger" style="display: none;">🗑️ Löschen</button>
</div>
</form>
</div>
</div>
<!-- Bestätigungsmodal -->
<div id="confirm-modal" class="modal">
<div class="modal-content" style="max-width: 400px;">
<div class="modal-header">
<h2>Bestätigung</h2>
<button id="close-confirm" class="close-btn">&times;</button>
</div>
<div class="modal-body">
<p id="confirm-message"></p>
</div>
<div class="modal-footer">
<button id="confirm-yes" class="btn btn-danger">Ja, löschen</button>
<button id="confirm-no" class="btn btn-secondary">Abbrechen</button>
</div>
</div>
</div>
<!-- Import Modal -->
<div id="import-modal" class="modal">
<div class="modal-content" style="max-width: 600px;">
<div class="modal-header">
<h2>Daten importieren</h2>
<button id="close-import-modal" class="close-btn">&times;</button>
</div>
<div class="modal-body">
<p>Füge deine exportierten TeeTracker-Daten hier ein:</p>
<textarea id="import-data-textarea" class="modal-textarea" placeholder="{\n \"teas\": [...],\n \"entries\": [...]\n}"></textarea>
</div>
<div class="modal-footer">
<button id="import-data-btn" class="btn btn-primary" onclick="window.app.handleImportData()">📥 Importieren</button>
<button id="cancel-import-btn" class="btn btn-secondary" onclick="window.app.closeImportModal()">Abbrechen</button>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="app.js"></script>
</body>
</html>