javascript, berechnet Schicht-Enddatum via Checkbox

This commit is contained in:
Karsten Siegmund 2024-01-22 21:04:20 +01:00
parent 806c35a02e
commit 7abd8f46c4
4 changed files with 37 additions and 12 deletions

View File

@ -19,7 +19,7 @@ if ($AdminStatus != 1) {
<link rel="stylesheet" href="css/style_desktop.css" media="screen and (min-width:781px)"/>
<link rel="stylesheet" href="css/style_mobile.css" media="screen and (max-width:780px)"/>
<script src="js/helferdb.js" type="text/javascript"></script>
<meta name="viewport" content="width=480" />
</head>
<body>
@ -195,6 +195,11 @@ echo "<p><noscript><button name='ShowSchichten' value='1'>Schichten Anzeigen</bu
// Aktueller Dienst und dessen Schichten Anzeigen
////////////////////////////////////////////////////////
if( !isset($DienstID))
{
echo "<img src='Bilder/Attention_Sign.svg' width='20px'> Bitte erst Dienst Auswählen </body></html>";
exit;
}
?>
@ -267,7 +272,7 @@ echo "<p><noscript><button name='ShowSchichten' value='1'>Schichten Anzeigen</bu
</td></tr>
</table>
<p><button name="ChangeDienst" value="1">Ändern</button><button name="NewDienst" value="1">Neue</button><button name='DeleteDienst' value='1'>Löschen</button></p>
<p><button name="ChangeDienst" value="1">Ändern</button><button name="NewDienst" value="1">Schicht anlegen</button><button name='DeleteDienst' value='1'>Löschen</button></p>
</form>
@ -319,23 +324,23 @@ echo "<p><noscript><button name='ShowSchicht' value='1'>Schicht Anzeigen</button
<table border="0" class='commontable'">
<tr>
<td style="border: 0px solid black;">Von</td></tr><tr><td style="border: 0px solid black;">
<input name="Schicht-Von" type="datetime-local" value="<?php echo htmlspecialchars($Von ?? '')?>" required>
<input id="Schicht-Von" name="Schicht-Von" type="datetime-local" value="<?php echo htmlspecialchars($Von ?? '')?>" required>
</td>
<tr>
<tr>
<td style="border: 0px solid black;">Dauer</td></tr><tr><td style="border: 0px solid black;">
<input name="Schicht-Dauer" type="time" value="<?php echo htmlspecialchars($Dauer ?? '')?>" required>
<input id="Schicht-Dauer" name="Schicht-Dauer" type="time" onKeyUp="setEndDate()" value="<?php echo htmlspecialchars($Dauer ?? '01:00')?>" required>
</td>
<tr>
</tr>
<tr>
</tr>
<td style="border: 0px solid black;">Bis </td></tr><tr><td style="border: 0px solid black;">
<input name="Schicht-Bis" type="datetime-local" value="<?php echo htmlspecialchars($Bis ?? '')?>" required>
<input id="Schicht-Bis" name="Schicht-Bis" type="datetime-local" value="<?php echo htmlspecialchars($Bis ?? '')?>" required>
</td>
<tr>
</tr>
<td style="border: 0px solid black;">Soll</td></tr><tr><td style="border: 0px solid black;">
<td style="border: 0px solid black;">Anzahl Helfer (Soll)</td></tr><tr><td style="border: 0px solid black;">
<input name="Schicht-Soll" type="number" min=1 value="<?php echo htmlspecialchars((int)$Soll ?? '')?>" required>
</td>
<tr>
@ -343,9 +348,9 @@ echo "<p><noscript><button name='ShowSchicht' value='1'>Schicht Anzeigen</button
</table>
<?php if ($AutomaticBis) { ?>
<input style="width:unset" width = 20 name="Schicht-Automatic-Bis" type="checkbox" checked > Endzeit von Dauer<br>
<input style="width:unset" width = 20 "Schicht-Automatic-Bis" name="Schicht-Automatic-Bis" type="checkbox" onclick="setEndDate()" checked > Endzeit von Dauer<br>
<?php } else { ?>
<input style="width:unset" width = 20 name="Schicht-Automatic-Bis" type="checkbox" > Endzeit von Dauer<br>
<input style="width:unset" width = 20 id="Schicht-Automatic-Bis" name="Schicht-Automatic-Bis" type="checkbox" onclick="setEndDate()"> Endzeit von Dauer<br>
<?php }?>
<?php if ($Anschlussschicht) { ?>

View File

@ -4,7 +4,6 @@ SESSION_START();
require_once 'konfiguration.php';
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';
?>
<!doctype html>

View File

@ -129,7 +129,7 @@ function HelferdatenAendern($db_link, $HelferName, $HelferEmail, $HelferHandy, $
} else {
$sql = "UPDATE Helfer SET Name='$HelferName',Email='$HelferEmail',Handy='$HelferHandy',Admin=$HelferIsAdmin,HelferLevel='$HelferLevel' Where HelferId=" . $HelferID;
}
echo $sql;
//echo $sql;
$db_erg = mysqli_query($db_link, $sql);
echo "<li>Helferdaten geändert</li>";
if ($AdminID != 0) {
@ -554,8 +554,7 @@ function ChangeDienst($db_link, $DienstID, $Was, $Wo, $Info, $Leiter, $Gruppe, $
$Gruppe = mysqli_real_escape_string($db_link, $Gruppe);
$HelferLevel = mysqli_real_escape_string($db_link, $HelferLevel); // int (1,2) Teilnehmer oder Dauerhelfer
$sql = "UPDATE Dienst SET Was='" . $Was . "', Wo='" . $Wo . "', Info='" . $Info . "', Leiter=" . $Leiter . ", ElternDienstID=" . $Gruppe . " where DienstID=" . $DienstID;
$sql = "UPDATE Dienst SET Was='{$Was}', Wo='{$Wo}', Info='{$Info}', Leiter={$Leiter}, ElternDienstID={$Gruppe} where DienstID={$DienstID}";
$db_erg = mysqli_query($db_link, $sql);
if (! $db_erg) {
echo "Fehler Change Dienst";

View File

@ -8,6 +8,28 @@ function showPassword(id)
}
}
function setEndDate()
{
// js Date .toISOString automatically converts to UTC marking the string by "Z" at the end
// This is not understood by the browser when setting the value of the string
// UTC is 1h off resulting in a 1h wrong time if the Z is removed
// so we add the "Z" here, then remove it in the end
// this works for my local firefox. There should be a check if there already is a Z
// because maybe browsers also convert to UTC for the internal value
// but I guess in the worst case we have ZZ at the end and the js autofill fails
var checkBox = document.getElementById("Schicht-Automatic-Bis");
if (checkBox.checked == true)
{
var start = new Date(document.getElementById("Schicht-Von").value+'Z');
var delta = new Date("0000-01-01T"+ document.getElementById("Schicht-Dauer").value);
var end = new Date(start);
var endHours=start.getHours()+delta.getHours();
end.setHours(endHours);
end.setMinutes(start.getMinutes()+delta.getMinutes());
document.getElementById("Schicht-Bis").value=end.toISOString().replace(/.000Z/,"");;
}
}
//// https://www.w3schools.com/howto/howto_js_collapsible.asp
//var coll = document.getElementsByClassName("collapsible");
//var i;