Release 26.3

Fix:
- NaN-Berechnung bei Monats-/Jahresstunden, wenn im Minuten-Feld die "0"
  gelöscht und das Feld leer gelassen wird (Erstellen & Bearbeiten)
- Datumsfeld lief auf manchen Geräten über den Rand der Eintrags-Karte hinaus

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HvWHvgKgpQ53LNjG6oYpQg
main
Samuel Zielke 3 weeks ago
parent 4f9f357f9c
commit 6a6a1f5962

@ -310,3 +310,16 @@ a:hover {
font-weight: bold;
border-radius: 25px 0 0 25px; /* Runde Ecken auf der linken Seite */
}
/* Datumsfeld (Neuer Eintrag / Bearbeiten): Safari/iOS ignoriert bei input[type=date]
die gesetzte width:100% und rendert das Feld in seiner nativen Breite, wodurch es
über den Rand der Modal-Karte hinausläuft. -webkit-appearance: none nimmt dem
Feld die native Breitenberechnung und lässt es sich wie ein normales .form-control
verhalten. */
input[type="date"].form-control {
width: 100%;
max-width: 100%;
box-sizing: border-box;
-webkit-appearance: none;
appearance: none;
}

@ -327,7 +327,7 @@ NewEntryButton.addEventListener('click', () => {
}
// Berechnen der Duration (Stunden sind optional -> ohne Eingabe wird 0 gespeichert)
const duration = ((parseInt(hours.value) || 0)*60) + parseInt(mins.value)
const duration = ((parseInt(hours.value) || 0)*60) + (parseInt(mins.value) || 0)
const newEntryData = {
date: document.getElementById('datum').value,
@ -700,6 +700,10 @@ editsonstigesCheck.addEventListener('change', function() {
document.getElementById('editEntrySubmitButton').addEventListener('click', () => {
if (!editallowToSend) {
return
}
var ToEditID = document.getElementById('editEntryID').value
// console.log(`ID: ${ToEditID}, Hours: ${editHours.values}, Minutes: ${editMins.values}`)
@ -718,7 +722,7 @@ document.getElementById('editEntrySubmitButton').addEventListener('click', () =>
updateEntry(parseInt(ToEditID), 'hours', {
date: document.getElementById('editDatum').value,
duration: ((parseInt(edithours.value) || 0)*60) + parseInt(editMins.value),
duration: ((parseInt(edithours.value) || 0)*60) + (parseInt(editMins.value) || 0),
type: type,
status: 1,
sondertext: document.getElementById('editsonstigesInput').value,
@ -840,16 +844,19 @@ function checkInput() {
allowToSend = true;
NewEntryButton.classList.remove('disabled');
NewEntryButton.classList.replace('btn-light', 'btn-primary');
NewEntryButton.disabled = false;
}
} else if (allowToSend) {
allowToSend = false;
NewEntryButton.classList.add('disabled');
NewEntryButton.classList.replace('btn-primary', 'btn-light');
NewEntryButton.disabled = true;
}
} else if (allowToSend) {
allowToSend = false;
NewEntryButton.classList.add('disabled');
NewEntryButton.classList.replace('btn-primary', 'btn-light');
NewEntryButton.disabled = true;
}
}
@ -880,17 +887,20 @@ function checkEditInput() {
editallowToSend = true;
EditSaveButton.classList.remove('disabled');
EditSaveButton.classList.replace('btn-light', 'btn-primary');
EditSaveButton.disabled = false;
}
} else if (editallowToSend) {
editallowToSend = false;
EditSaveButton.classList.add('disabled');
EditSaveButton.classList.replace('btn-primary', 'btn-light');
EditSaveButton.disabled = true;
}
} else if (editallowToSend) {
editallowToSend = false;
EditSaveButton.classList.add('disabled');
EditSaveButton.classList.replace('btn-primary', 'btn-light');
EditSaveButton.disabled = true;
}
// Debug ausgabe er Werte
console.log(`Status: ${editallowToSend} - Check: ${editsonstigesCheck.checked} - Input: ${editsonstigesInput.value} - Stunden: ${edithours.value} - Min: ${editMinuten.value}`)
console.log(`Status: ${editallowToSend} - Check: ${editsonstigesCheck.checked} - Input: ${editsonstigesInput.value} - Stunden: ${edithours.value} - Min: ${editMins.value}`)
}

@ -1,22 +1,22 @@
<br>
<div class="text-center">
<h1 style="margin-bottom: 0;">Update <span style="color: rgb(120,170,86);">26.2</span></h1>
<h1 style="margin-bottom: 0;">Kurzer Hotfix <span style="color: rgb(120,170,86);">26.3</span></h1>
</div>
<br>
<p>
Hey! 👋
<br>Zwei Kleinigkeiten aus euren Rückmeldungen sind jetzt mit drin:
<br>Zwei gemeldete Fehler sind jetzt behoben:
</p>
<ul style="padding-left: 1.25rem;">
<li>🤝 <b>Neu: Partner-Feld</b> – beim Eintragen (und Bearbeiten) kannst du jetzt
optional festhalten, mit wem du im Dienst warst.</li>
<li>✉️ <b>Feedback direkt per E-Mail</b> – unter Einstellungen → Kontakt findest du
jetzt neben der WhatsApp-Community auch eine E-Mail-Adresse für Feedback und
Fehler.</li>
<li>🧮 <b>Falsche Berechnung</b> – wenn man beim Erstellen/Bearbeiten eines Eintrags
die "0" bei den Minuten gelöscht hat, konnten die Monats- und Jahresstunden
durcheinandergeraten. Behoben.</li>
<li>📅 <b>Datumsfeld zu breit</b> – das Datumsfeld beim neuen Eintrag lief auf
manchen Geräten über den Rand der Karte hinaus. Behoben.</li>
</ul>
<p>
Wie immer: Danke fürs Mitdenken und Melden! 🙏
Danke fürs Melden! 🙏
<br><b>Gruß Samuel</b>
</p>
<br>
<input type="text" name="versionnumber" id="versionnumber" class="d-none" value="26.2">
<input type="text" name="versionnumber" id="versionnumber" class="d-none" value="26.3">

@ -21,6 +21,7 @@ urlpatterns = [
path("v260/", views.v260),
path("v261/", views.v261),
path("v262/", views.v262),
path("v263/", views.v263),
path("track/", views.track_usage),
path("dashboard/", views.usage_dashboard),
]

@ -21,42 +21,45 @@ def install(request):
return render(request, "app/install.html")
def home(request):
return redirect("/app/v262")
return redirect("/app/v263")
def login(request):
return render(request, "app/login.html")
def v1321(request):
return redirect("/app/v262")
return redirect("/app/v263")
def v1322(request):
return redirect("/app/v262")
return redirect("/app/v263")
def v133(request):
return redirect("/app/v262")
return redirect("/app/v263")
def v1332(request):
return redirect("/app/v262")
return redirect("/app/v263")
def v1333(request):
return redirect("/app/v262")
return redirect("/app/v263")
def v1334(request):
return redirect("/app/v262")
return redirect("/app/v263")
def v1335(request):
return redirect("/app/v262")
return redirect("/app/v263")
def v1340(request):
return redirect("/app/v262")
return redirect("/app/v263")
def v260(request):
return redirect("/app/v262")
return redirect("/app/v263")
def v261(request):
return redirect("/app/v262")
return redirect("/app/v263")
def v262(request):
return redirect("/app/v263")
def v263(request):
return render(request, "app/home.html")

@ -9,7 +9,7 @@ PWA_APP_BACKGROUND_COLOR = '#9FEDD7'
PWA_APP_DISPLAY = 'standalone'
PWA_APP_SCOPE = '/'
PWA_APP_ORIENTATION = 'portrait'
PWA_APP_START_URL = '/app/v262/'
PWA_APP_START_URL = '/app/v263/'
PWA_APP_STATUS_BAR_COLOR = 'black-translucent'
PWA_SERVICE_WORKER_PATH = os.path.join(BASE_DIR, 'app/static/app/js', 'serviceworker.js')
PWA_APP_ICONS = [

@ -161,7 +161,7 @@ STATIC_ROOT = '/var/www/piomint/static/' # Directory to collect static files.
# während schon neues HTML ausgeliefert wird - das führte u.a. zu eingefrorenen Screens
# (kein Scroll, kein Button erreichbar) bei Bestandsnutzern. Bei jedem Release erhöhen,
# zusammen mit der Versions-URL in app/urls.py / app/views.py.
STATIC_VERSION = '26.2'
STATIC_VERSION = '26.3'
# Default primary key field type
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field

Loading…
Cancel
Save

Powered by TurnKey Linux.