mirror of
https://github.com/trevor1969/teatracker.git
synced 2026-08-09 10:41:59 +00:00
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>
This commit is contained in:
17
app.js
17
app.js
@ -288,7 +288,10 @@ class TeeTracker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (entries) {
|
if (entries) {
|
||||||
this.entries = entries;
|
this.entries = entries.map(entry => ({
|
||||||
|
...entry,
|
||||||
|
teaspoons: entry.teaspoons !== undefined ? entry.teaspoons : 1
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
// If Nextcloud loading failed, fall back to localStorage
|
// If Nextcloud loading failed, fall back to localStorage
|
||||||
@ -318,7 +321,10 @@ class TeeTracker {
|
|||||||
|
|
||||||
if (entriesData) {
|
if (entriesData) {
|
||||||
try {
|
try {
|
||||||
this.entries = JSON.parse(entriesData);
|
this.entries = JSON.parse(entriesData).map(entry => ({
|
||||||
|
...entry,
|
||||||
|
teaspoons: entry.teaspoons !== undefined ? entry.teaspoons : 1
|
||||||
|
}));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.entries = [];
|
this.entries = [];
|
||||||
}
|
}
|
||||||
@ -452,6 +458,7 @@ class TeeTracker {
|
|||||||
date: entry.date,
|
date: entry.date,
|
||||||
time: entry.time || '',
|
time: entry.time || '',
|
||||||
amount: parseInt(entry.amount) || 1,
|
amount: parseInt(entry.amount) || 1,
|
||||||
|
teaspoons: entry.teaspoons ? parseFloat(entry.teaspoons) : 1,
|
||||||
notes: entry.notes || '',
|
notes: entry.notes || '',
|
||||||
createdAt: new Date().toISOString()
|
createdAt: new Date().toISOString()
|
||||||
};
|
};
|
||||||
@ -1207,7 +1214,7 @@ class TeeTracker {
|
|||||||
<div class="activity-tea">${tea ? tea.name : 'Unbekannter Tee'} ${tea && tea.organic ? '<span class="organic-badge" title="Bio-Tee">🌱</span>' : ''}</div>
|
<div class="activity-tea">${tea ? tea.name : 'Unbekannter Tee'} ${tea && tea.organic ? '<span class="organic-badge" title="Bio-Tee">🌱</span>' : ''}</div>
|
||||||
<div class="activity-details">${formattedDate} ${formattedTime ? `um ${formattedTime}` : ''}</div>
|
<div class="activity-details">${formattedDate} ${formattedTime ? `um ${formattedTime}` : ''}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="activity-amount">${entry.amount} Tasse${entry.amount > 1 ? 'n' : ''}</div>
|
<div class="activity-amount">${entry.amount} Tasse${entry.amount > 1 ? 'n' : ''}${entry.teaspoons ? ` (${entry.teaspoons} TL)` : ''}</div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
}).join('');
|
}).join('');
|
||||||
@ -1454,6 +1461,7 @@ class TeeTracker {
|
|||||||
const date = document.getElementById('track-date').value;
|
const date = document.getElementById('track-date').value;
|
||||||
const time = document.getElementById('track-time').value;
|
const time = document.getElementById('track-time').value;
|
||||||
const amount = document.getElementById('track-amount').value;
|
const amount = document.getElementById('track-amount').value;
|
||||||
|
const teaspoons = document.getElementById('track-teaspoons').value;
|
||||||
const notes = document.getElementById('track-notes').value.trim();
|
const notes = document.getElementById('track-notes').value.trim();
|
||||||
|
|
||||||
if (!teaId || !date || !amount) {
|
if (!teaId || !date || !amount) {
|
||||||
@ -1466,6 +1474,7 @@ class TeeTracker {
|
|||||||
date,
|
date,
|
||||||
time,
|
time,
|
||||||
amount,
|
amount,
|
||||||
|
teaspoons,
|
||||||
notes
|
notes
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1521,7 +1530,7 @@ class TeeTracker {
|
|||||||
<div class="activity-tea">${tea ? tea.name : 'Unbekannter Tee'} ${tea && tea.organic ? '<span class="organic-badge" title="Bio-Tee">🌱</span>' : ''}</div>
|
<div class="activity-tea">${tea ? tea.name : 'Unbekannter Tee'} ${tea && tea.organic ? '<span class="organic-badge" title="Bio-Tee">🌱</span>' : ''}</div>
|
||||||
<div class="activity-details">${formattedDate} ${formattedTime ? `um ${formattedTime}` : ''}</div>
|
<div class="activity-details">${formattedDate} ${formattedTime ? `um ${formattedTime}` : ''}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="activity-amount">${entry.amount} Tasse${entry.amount > 1 ? 'n' : ''}</div>
|
<div class="activity-amount">${entry.amount} Tasse${entry.amount > 1 ? 'n' : ''}${entry.teaspoons ? ` (${entry.teaspoons} TL)` : ''}</div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
}).join('');
|
}).join('');
|
||||||
|
|||||||
@ -101,6 +101,11 @@
|
|||||||
<input type="number" id="track-amount" min="1" max="10" value="1" required>
|
<input type="number" id="track-amount" min="1" max="10" value="1" required>
|
||||||
</div>
|
</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">
|
<div class="form-group">
|
||||||
<label for="track-notes">Notizen</label>
|
<label for="track-notes">Notizen</label>
|
||||||
<textarea id="track-notes" rows="3" placeholder="z.B. Mit Honig, besonders stark..."></textarea>
|
<textarea id="track-notes" rows="3" placeholder="z.B. Mit Honig, besonders stark..."></textarea>
|
||||||
|
|||||||
Reference in New Issue
Block a user