AddressDB Status change UI

This commit is contained in:
Frank Schubert
2024-12-06 13:35:55 +01:00
parent 40e9aaf505
commit 3a7b356b30
7 changed files with 593 additions and 10 deletions

View File

@@ -9,8 +9,8 @@
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="javascript: void(0);"><?=MFAPPNAME_SLUG?></a></li>
<li class="breadcrumb-item"><a href="javascript: void(0);">GWR / AddressDB</a></li>
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>"><?=MFAPPNAME_SLUG?></a></li>
<li class="breadcrumb-item"><a href="<?=self::getUrl("AddressDB")?>">GWR / AddressDB</a></li>
<li class="breadcrumb-item active"><?=$address->strasse->name?> <?=$address->hausnummer?>, <?=$address->plz->plz?> <?=$address->ortschaft->name?></li>
</ol>
</div>
@@ -66,12 +66,22 @@
</tr><tr>
<td colspan="2"><h4>Status</h4></td>
</tr><tr>
<th>Status Code</th>
<td class="text-monospace"><?=$address->status->code?></td>
</tr><tr>
<th>Status Text</th>
<td class="text-monospace"><?=$address->status->name?></td>
</tr><tr>
<th>Status</th>
<td class="text-monospace">
<span id="addressstatus-<?=$address->id?>-text" data-status-id="<?=$address->status_id?>"><span id="addressstatus-<?=$address->id?>-statustext"><?=$address->status->code?> - <?=$address->status->name?></span> <a href="#" onclick="return toggleAddressStatusControl(<?=$address->id?>)"><i class="fas fa-fw fa-edit"></i></a></span>
<div class="input-group" id="addressstatus-<?=$address->id?>-input" style="display:none">
<select class="form-control">
<?php foreach(ADBStatusModel::search(["!type" => "wohneinheit"]) as $status): ?>
<option value="<?=$status->id?>" <?=($address->status_id == $status->id) ? "selected='selected'" : ""?>><?=$status->code?> - <?=$status->name?></option>
<?php endforeach; ?>
</select>
<div class="input-group-append">
<button type="button" class="btn btn-primary" title="Speichern" onclick="saveAddressStatusControl(<?=$address->id?>)"><i class="fas fa-check"></i></button>
<button type="button" class="btn btn-secondary" title="Abbrechen" onclick="toggleAddressStatusControl(<?=$address->id?>)"><i class="fas fa-times"></i></button>
</div>
</div>
</td>
</tr><tr>
<th>Statusflags</th>
<td>
<table class="table table-sm table-bordered table-striped bg-white">
@@ -158,7 +168,20 @@
<?php endif; ?>
<?php endif; ?>
</td>
<td class="text-monospace"><?=$unit->status->code?> - <?=$unit->status->name?></td>
<td id="unit-<?=$unit->id?>-status" class="text-monospace">
<span id="unitstatus-<?=$unit->id?>-text" data-status-id="<?=$unit->status_id?>"><span id="unitstatus-<?=$unit->id?>-statustext"><?=$unit->status->code?> - <?=$unit->status->name?></span> <a href="#" onclick="return toggleUnitStatusControl(<?=$unit->id?>)"><i class="fas fa-fw fa-edit"></i></a></span>
<div class="input-group" id="unitstatus-<?=$unit->id?>-input" style="display:none">
<select class="form-control">
<?php foreach(ADBStatusModel::search(["!type" => "hausnummer"]) as $status): ?>
<option value="<?=$status->id?>" <?=($unit->status_id == $status->id) ? "selected='selected'" : ""?>><?=$status->code?> - <?=$status->name?></option>
<?php endforeach; ?>
</select>
<div class="input-group-append">
<button type="button" class="btn btn-primary" title="Speichern" onclick="saveUnitStatusControl(<?=$unit->id?>)"><i class="fas fa-check"></i></button>
<button type="button" class="btn btn-secondary" title="Abbrechen" onclick="toggleUnitStatusControl(<?=$unit->id?>)"><i class="fas fa-times"></i></button>
</div>
</div>
</td>
<td><?=((string)$unit) ? "<strong>".(string)$unit."</strong>" : ""?></td>
<td><?=($unit->extref) ? "[".$unit->extref."]" : ""?></td>
<td title="Anzahl Bestellungen"><?=PreorderModel::countActive(["adb_wohneinheit_id" => $unit->id])?></td>
@@ -183,4 +206,148 @@
</div>
</div>
<script>
function toggleAddressStatusControl(pid) {
// set select to current status id
$("#addressstatus-" + pid + "-input select").val($("#addressstatus-" + pid + "-text").data("status-id"));
// toggle controls
$("#addressstatus-" + pid + "-text").toggle();
$("#addressstatus-" + pid + "-input").toggle();
return false;
}
function toggleUnitStatusControl(pid) {
// set select to current status id
$("#unitstatus-" + pid + "-input select").val($("#unitstatus-" + pid + "-text").data("status-id"));
// toggle controls
$("#unitstatus-" + pid + "-text").toggle();
$("#unitstatus-" + pid + "-input").toggle();
return false;
}
function saveAddressStatusControl(aid) {
if(!Number.isInteger(aid) || aid < 1) {
return false;
}
var value = $("#addressstatus-" + aid + "-input select").val();
$.post("<?=self::getUrl("AddressDB","Api")?>",
{
'do': "updateAddressStatus",
id: aid,
status_id: value
},
function(success) {
if(success.status == "OK") {
var updates = success.result.updates;
//console.log(updates);
$("#addressstatus-" + updates.id + "-statustext").text(updates.status_code + " - " + updates.status_text);
$("#addressstatus-" + updates.id + "-text")
.addClass("text-success")
.data("status-id", updates.status_id);
setTimeout(() => {
$("#addressstatus-" + updates.id + "-text").removeClass("text-success")
}, 1500);
if("units" in updates && updates.units.length) {
updates.units.forEach(function (u) {
//console.log(u);
// update detail status text
/*// update list status text
$("#addressstatus-" + u.id + " .status").text(u.code + " - " + u.text);
$("#addressstatus-" + u.id + " .status").addClass("text-success");
setTimeout(() => { $("#preorder-" + u.id + " .status").removeClass("text-success") }, 1500);
*/
if (u.status_code) {
// update units
$("#unitstatus-" + u.id + "-statustext").text(u.status_code + " - " + u.status_text);
$("#unitstatus-" + u.id + "-text").addClass("text-success");
setTimeout(() => {
$("#unitstatus-" + u.id + "-text").removeClass("text-success")
}, 1500);
}
});
}
toggleAddressStatusControl(aid);
}
},
'json');
}
function saveUnitStatusControl(aid) {
if(!Number.isInteger(aid) || aid < 1) {
return false;
}
var value = $("#unitstatus-" + aid + "-input select").val();
$.post("<?=self::getUrl("AddressDB","Api")?>",
{
'do': "updateUnitStatus",
id: aid,
status_id: value
},
function(success) {
if(success.status == "OK") {
var updates = success.result.updates;
//console.log(updates);
/*$("#unitstatus-" + updates.id + "-statustext")
.text(updates.status_code + " - " + updates.status_text)
.addClass("text-success")
$("#unitstatus-" + updates.id + "-text").data("status-id", updates.status_id);
setTimeout(() => {
$("#unitstatus-" + updates.id + "-text").removeClass("text-success")
}, 1500);
*/
//console.log(updates.units.length);
if("units" in updates && updates.units.length) {
updates.units.forEach(function (u) {
//console.log(u);
// update detail status text
/*// update list status text
$("#unitstatus-" + u.id + " .status").text(u.code + " - " + u.text);
$("#unitstatus-" + u.id + " .status").addClass("text-success");
setTimeout(() => { $("#preorder-" + u.id + " .status").removeClass("text-success") }, 1500);
*/
//console.log(u.status_code);
//console.log((u.status_code));
if(u.status_code) {
// update units
$("#unitstatus-" + u.id + "-statustext").text(u.status_code + " - " + u.status_text);
$("#unitstatus-" + u.id + "-text").data("status-id", updates.status_id);
$("#unit-" + u.id + "-status").addClass("text-success");
setTimeout(() => {
$("#unit-" + u.id + "-status").removeClass("text-success")
}, 1500);
}
});
}
toggleUnitStatusControl(aid);
}
},
'json');
}
</script>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>