|
|
|
|
@ -10,7 +10,7 @@
|
|
|
|
|
document.getElementById('maincontainer').classList.replace('align-items-center', 'align-items-top')
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<div class="container" id="welcome_content">
|
|
|
|
|
<div class="container" id="welcome_content" style="padding-bottom: 3rem;">
|
|
|
|
|
<br>
|
|
|
|
|
<h1>Willkommen! 👋</h1>
|
|
|
|
|
<p>
|
|
|
|
|
@ -34,7 +34,7 @@
|
|
|
|
|
<button class="btn btn-primary" id="allOk">Alles klar</button>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="container mt-5" id="update_content">
|
|
|
|
|
<div class="container mt-5" id="update_content" style="padding-bottom: 3rem;">
|
|
|
|
|
|
|
|
|
|
{% include 'app/updateinfo.html' %}
|
|
|
|
|
|
|
|
|
|
@ -42,38 +42,40 @@
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="d-none" id="dashboard">
|
|
|
|
|
<div class="row justify-content-around mt-3" style="width: 100vw; color: black;">
|
|
|
|
|
<div class="col-11" id="dashbord_year_area" style="height: 5vh; padding: 1rem; border-radius:1rem; box-shadow: 0 0 0.5rem gray">
|
|
|
|
|
<div class="row justify-content-between">
|
|
|
|
|
<p class="col-6" style="font-size: 1rem; margin-top: -0.75rem; white-space: nowrap;"><b>Jahr:</b> <span id="yearHours"></span>h/600h<span id="rule55Badge" class="badge badge-warning d-none" title="55h-Regel aktiv: Monate mit LDC/Sonstiges werden auf 55h gedeckelt" style="font-size: 0.55rem; vertical-align: middle; margin-left: 0.25rem;">55h</span></p>
|
|
|
|
|
<p class="offset-1 col-5" style="font-size: 1rem; margin-top: -0.75rem;"><b>Offen:</b> <span id="yearRest"></span>h</p>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="progress" style="height: 5px; width: 100%; border-radius: 2rem; background-color: lightgray; margin-top: -1rem;">
|
|
|
|
|
<div class="row justify-content-around mt-3" style="width: 100vw; color: black; flex-shrink: 0;">
|
|
|
|
|
<div class="col-11" id="dashbord_year_area" style="padding: 0.5rem 1rem; border-radius:1rem; box-shadow: 0 0 0.5rem gray; display: flex; flex-direction: column; justify-content: center; gap: 0.35rem;">
|
|
|
|
|
<!-- flex-shrink:0 auf beiden Kindern: sonst quetscht Flexbox in der knappen Höhe
|
|
|
|
|
den 5px-Balken dünner als den (nicht-flex) Balken der Monatskarte. -->
|
|
|
|
|
<div class="row justify-content-between" style="margin: 0; flex-shrink: 0;">
|
|
|
|
|
<p class="col-6" style="font-size: 1rem; margin: 0; white-space: nowrap;"><b>Jahr:</b> <span id="yearHours"></span>h/600h<span id="rule55Badge" class="badge badge-warning d-none" title="55h-Regel aktiv: Monate mit LDC/Sonstiges werden auf 55h gedeckelt" style="font-size: 0.55rem; vertical-align: middle; margin-left: 0.25rem;">55h</span></p>
|
|
|
|
|
<p class="offset-1 col-5" style="font-size: 1rem; margin: 0;"><b>Offen:</b> <span id="yearRest"></span>h</p>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="progress" style="height: 5px; width: 100%; border-radius: 2rem; background-color: lightgray; margin: 0; flex-shrink: 0;">
|
|
|
|
|
<div class="progress-bar" role="progressbar" style="background-color:rgb(120,170,86); width: 0.5%; height: 5px;" aria-valuenow="10" aria-valuemin="0" aria-valuemax="50" id="prBarYear"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-11 mt-4" id="dashbord_month_area" style="padding: 1rem; border-radius:1rem; box-shadow: 0 0 0.5rem gray">
|
|
|
|
|
<div class="col-11 mt-3" id="dashbord_month_area" style="padding: 0.75rem 1rem; border-radius:1rem; box-shadow: 0 0 0.5rem gray">
|
|
|
|
|
|
|
|
|
|
<div class="row justify-content-between">
|
|
|
|
|
<p class="col-7" style="font-size: 1.25rem;"><b id="MonthNameOfActual">Monat:</b> <span id="monthHours"></span>h</p>
|
|
|
|
|
<div class="row justify-content-between" style="margin: 0 0 0.4rem 0;">
|
|
|
|
|
<p class="col-7" style="font-size: 1.25rem; margin: 0;"><b id="MonthNameOfActual">Monat:</b> <span id="monthHours"></span>h</p>
|
|
|
|
|
<input type="number" class="d-none" id="MonthSumHours">
|
|
|
|
|
<p class="col-5" style="font-size: 1.25rem;"><b>Offen:</b> <span id="monthRest"></span>h</p>
|
|
|
|
|
<p class="col-5" style="font-size: 1.25rem; margin: 0;"><b>Offen:</b> <span id="monthRest"></span>h</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="progress" style="height: 5px; width: 100%; border-radius: 2rem; background-color: lightgray; margin-top: -0.75rem">
|
|
|
|
|
<div class="progress" style="height: 5px; width: 100%; border-radius: 2rem; background-color: lightgray; margin: 0;">
|
|
|
|
|
<div class="progress-bar" role="progressbar" style="background-color:rgb(120,170,86); height: 5px; width: 1%;" aria-valuenow="10" aria-valuemin="0" aria-valuemax="50" id="prBarMonth"></div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- justify-content-around verteilt die Badges wie bisher auf die verfügbare Breite,
|
|
|
|
|
solange sie passen; erst wenn der individuell vergebene Schnellwahl-Titel (siehe
|
|
|
|
|
Einstellungen) zu lang wird, greift overflow-x: auto statt eines Umbruchs. -->
|
|
|
|
|
<div class="d-flex justify-content-around mt-3" style="overflow-x: auto; gap: 0.5rem; padding-bottom: 2px;">
|
|
|
|
|
<div class="d-flex justify-content-around" style="overflow-x: auto; gap: 0.5rem; padding-bottom: 2px; margin-top: 0.5rem;">
|
|
|
|
|
<button class="badge badge-primary" style="height: 25px; border: none; white-space: nowrap; flex: 0 0 auto;">Dienst: <span id="monthHourService"></span>h</button>
|
|
|
|
|
<button class="badge badge-primary" style="height: 25px; border: none; white-space: nowrap; flex: 0 0 auto;"><span id="monthHourLDCLabel">LDC</span>: <span id="monthHourLDC"></span>h</button>
|
|
|
|
|
<button class="badge badge-primary" style="height: 25px; border: none; white-space: nowrap; flex: 0 0 auto;">Übrig: <span id="monthHourOther"></span>h</button>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="row justify-content-around align-middle monthEntrys mt-3" style="max-height: 2.5rem; width: 99%; margin-left: 1%;">
|
|
|
|
|
<div class="row justify-content-around align-middle monthEntrys" style="max-height: 2.5rem; width: 99%; margin-left: 1%; margin-top: 0.5rem;">
|
|
|
|
|
<span class="col-2 btn btn-secondary" id="btn-month-before" onclick="event.stopPropagation();"><</span>
|
|
|
|
|
<p class="col-6" style="text-align:center; width: 100%; font-size: 1.75rem; margin: 0;"><b id="actualMonthName"></b></p>
|
|
|
|
|
<span class="col-2 btn btn-secondary" id="btn-month-next" onclick="event.stopPropagation();">></span>
|
|
|
|
|
@ -81,10 +83,10 @@
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row justify-content-around" id="timerCard" style="width: 100vw; color: black; padding-top: 2rem;">
|
|
|
|
|
<div class="col-11" style="height: 15vh; padding: 1rem; border-radius:1rem; box-shadow: 0 0 0.5rem gray">
|
|
|
|
|
<p style="font-size: 1.2rem;"><b>Timer</b></p>
|
|
|
|
|
<div class="row justify-content-between" style="margin-top: -1rem;">
|
|
|
|
|
<div class="row justify-content-around" id="timerCard" style="width: 100vw; color: black; padding-top: 1.5rem; flex-shrink: 0;">
|
|
|
|
|
<div class="col-11" style="padding: 0.75rem 1rem; border-radius:1rem; box-shadow: 0 0 0.5rem gray; display: flex; flex-direction: column; justify-content: center; gap: 0.35rem;">
|
|
|
|
|
<p style="font-size: 1.2rem; margin: 0; flex-shrink: 0;"><b>Timer</b></p>
|
|
|
|
|
<div class="row justify-content-between" style="margin: 0; flex-shrink: 0;">
|
|
|
|
|
<p class="col-5"><b id="timerDisplay" style="font-size: 2.5rem;">00:00</b><i id="secondsDisplay" style="font-size: 1rem;">:00</i></p>
|
|
|
|
|
<div class="col-7 row justify-content-center">
|
|
|
|
|
<img id="startTimer" src="{% static 'app/images/play.png' %}" alt="play" class="img-fluid col-6" style="height: 55px;">
|
|
|
|
|
@ -94,18 +96,17 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row justify-content-around" style="width: 95vw; color: black; padding-top: 2rem;"></div>
|
|
|
|
|
<div class="col-12" id="ActivitysTable" style="height: 40vh; padding: 0rem 1rem 1rem 1rem; border-radius:1rem; box-shadow: 0 0 0.5rem gray; overflow-y: auto;">
|
|
|
|
|
<div style="position: sticky; top: 0; background-color: white; padding-top: 1rem; z-index: 100; width: 100%;">
|
|
|
|
|
<div class="col-12 mt-3" id="ActivitysTable" style="flex: 1 1 auto; min-height: 220px; padding: 0rem 1rem 1rem 1rem; border-radius:1rem; box-shadow: 0 0 0.5rem gray; overflow-y: auto;">
|
|
|
|
|
<div style="position: sticky; top: 0; background-color: white; padding-top: 1rem; padding-bottom: 0.5rem; z-index: 100; width: 100%;">
|
|
|
|
|
<div class="d-flex justify-content-between align-items-center" style="width: 100%;">
|
|
|
|
|
<p style="font-size: 1.2rem; margin: 0;" ><b>Aktivitäten</b></p>
|
|
|
|
|
<div class="d-flex align-items-center" style="gap: 0.5rem;">
|
|
|
|
|
<button type="button" id="openNewEntryForm" class="btn btn-light" data-bs-toggle="modal" data-bs-target="#newEntryModal" style="width: 45px; height: 45px; padding: 0;"><img id="openNewEntryFormIcon" src="{% static 'app/images/addcircle.png' %}" alt="add" class="img-fluid"></button>
|
|
|
|
|
<button type="button" id="toggleSortOptions" class="btn btn-light" title="Filter/Sortierung ein-/ausblenden" style="width: 45px; height: 45px; padding: 0;"><img id="toggleSortOptionsIcon" src="{% static 'app/images/more.png' %}" alt="filter" class="img-fluid"></button>
|
|
|
|
|
<button type="button" id="openViewOfEntry" class="btn btn-light" title="Tabelle maximieren" style="width: 45px; height: 45px; padding: 0;"><img id="openViewOfEntryIcon" src="{% static 'app/images/open.png' %}" alt="open" class="img-fluid"></button>
|
|
|
|
|
<div class="d-flex align-items-center" style="gap: 1rem;">
|
|
|
|
|
<button type="button" id="openNewEntryForm" class="btn btn-light" data-bs-toggle="modal" data-bs-target="#newEntryModal" style="width: 28px; height: 28px; padding: 0;"><img id="openNewEntryFormIcon" src="{% static 'app/images/addcircle.png' %}" alt="add" class="img-fluid" style="width: 100%;"></button>
|
|
|
|
|
<button type="button" id="toggleSortOptions" class="btn btn-light" title="Filter/Sortierung ein-/ausblenden" style="width: 28px; height: 28px; padding: 0;"><img id="toggleSortOptionsIcon" src="{% static 'app/images/more.png' %}" alt="filter" class="img-fluid" style="width: 100%;"></button>
|
|
|
|
|
<button type="button" id="openViewOfEntry" class="btn btn-light" title="Tabelle maximieren" style="width: 28px; height: 28px; padding: 0;"><img id="openViewOfEntryIcon" src="{% static 'app/images/open.png' %}" alt="open" class="img-fluid" style="width: 100%;"></button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="d-flex align-items-center" id="sortOptionsRow" style="width: 100%; margin-top: 0.5rem; gap: 0.5rem;">
|
|
|
|
|
<div class="d-flex align-items-center sortOptionsCollapsed" id="sortOptionsRow" style="width: 100%; margin-top: 0.5rem; gap: 0.5rem;">
|
|
|
|
|
<!-- Eigener Dropdown statt <select>, damit das Auswahlmenü nicht als winziges natives
|
|
|
|
|
Popup irgendwo auf dem Bildschirm erscheint, sondern direkt unter dem Button. -->
|
|
|
|
|
<div style="position: relative; flex: 1;">
|
|
|
|
|
|