Obvody/app/Presentation/Obvod/view.latte

194 lines
9.8 KiB
Plaintext

{block content}
<div class="container-fluid p-2">
Číslo: {$obvod->CISLO}<br>
Název: {$obvod->NAZEV}<br>
Skupina: {$obvod->SKUPINA}<br>
<a n:href=":Mapa: obvod:$obvod->CISLO" type="button" class="btn btn-klavesa btn-flex box-shadow--6dp">Mapa</a>
<div id="obvod-nahled"
class="box-shadow--6dp my-2"
data-obvod="{$obvod->CISLO}"
data-geojson="{$basePath}/data/geo-obvody.geojson"></div>
<h5>Záznamy:</h5>
<button type="button" class="btn btn-klavesa btn-flex box-shadow--6dp" data-bs-toggle="modal" data-bs-target="#modalPridelit">Přidělit</button>
<button type="button" class="btn btn-klavesa btn-flex box-shadow--6dp" data-bs-toggle="modal" data-bs-target="#modalVratit">Vrátit</button>
<table class="table table-sm table-striped mx-auto mb-1">
<thead>
<tr>
<th scope="col" class="text-start">Záznam</th>
<th scope="col" class="text-start">Přiděleno</th>
<th scope="col" class="text-start">Vráceno</th>
<th scope="col" class="text-start">Akce</th>
</tr>
</thead>
<tbody>
{foreach $zaznamy as $zaznam}
<tr>
<td>{$zaznam->JMENO}</td>
<td class="text-start">
{date_format($zaznam->VYDANO,"d.m.Y")}
</td>
<td class="text-start">
{if $zaznam->VRACENO}{date_format($zaznam->VRACENO,"d.m.Y")}{/if}
</td>
<td>
<div class="d-flex flex-wrap gap-1">
<button type="button" class="btn btn-sm btn-klavesa box-shadow--6dp" data-bs-toggle="modal" data-bs-target="#modalUpravit" data-id="{$zaznam->ID}" data-jmeno="{$zaznam->JMENO}" data-vydano="{date_format($zaznam->VYDANO, 'Y-m-d')}" data-vraceno="{if $zaznam->VRACENO}{date_format($zaznam->VRACENO, 'Y-m-d')}{/if}">Upravit</button>
{form "smazat-$zaznam->ID", class: 'd-inline'}
<button n:name="send" class="btn btn-sm btn-outline-danger" onclick="return confirm('Smazat záznam?')">Smazat</button>
{/form}
</div>
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
<div class="modal fade" id="modalPridelit" tabindex="-1" aria-labelledby="modalPridelitLabel" aria-hidden="true" data-show-errors="{if $presenter['pridelitForm']->hasErrors()}1{else}0{/if}">
<div class="modal-dialog">
<div class="modal-content">
<form n:name="pridelitForm">
<div class="modal-header">
<h5 class="modal-title" id="modalPridelitLabel">Přidělit obvod</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Zavřít"></button>
</div>
<div class="modal-body">
<div class="alert alert-danger" n:if="$form->hasErrors()" n:foreach="$form->getErrors() as $error">{$error}</div>
<div class="mb-2">
<label n:name="zvestovatel" class="form-label">Zvěstovatel</label>
<div class="naseptavac" data-naseptavac>
<input n:name="zvestovatel" class="form-control" autocomplete="off" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="naseptavac-nabidka">
<div id="naseptavac-nabidka" class="naseptavac-nabidka" role="listbox" hidden></div>
</div>
<div class="form-text">Začněte psát jméno. Když v seznamu není, uloží se jako nový zvěstovatel.</div>
</div>
<div>
<label n:name="datum" class="form-label">Datum přidělení</label>
<input n:name="datum" class="form-control">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Zrušit</button>
<button n:name="send" class="btn btn-klavesa box-shadow--6dp">Přidělit</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="modalVratit" tabindex="-1" aria-labelledby="modalVratitLabel" aria-hidden="true" data-show-errors="{if $presenter['vratitForm']->hasErrors()}1{else}0{/if}">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modalVratitLabel">Vrátit obvod</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Zavřít"></button>
</div>
{if count($otevrene) === 0}
<div class="modal-body">Tento obvod nemá otevřené přidělení.</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Zavřít</button>
</div>
{else}
<form n:name="vratitForm">
<div class="modal-body">
<div class="alert alert-danger" n:if="$form->hasErrors()" n:foreach="$form->getErrors() as $error">{$error}</div>
<div class="mb-2">
<label n:name="zaznam" class="form-label">Záznam</label>
<select n:name="zaznam" class="form-select">
<option n:foreach="$otevrene as $otevreny" n:name="zaznam:$otevreny->ID">
{$otevreny->JMENO} (přiděleno {date_format($otevreny->VYDANO, 'd.m.Y')})
</option>
</select>
</div>
<div>
<label n:name="datum" class="form-label">Datum vrácení</label>
<input n:name="datum" class="form-control">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Zrušit</button>
<button n:name="send" class="btn btn-klavesa box-shadow--6dp">Vrátit</button>
</div>
</form>
{/if}
</div>
</div>
</div>
<div class="modal fade" id="modalUpravit" tabindex="-1" aria-labelledby="modalUpravitLabel" aria-hidden="true" data-show-errors="{if $presenter['upravitForm']->hasErrors()}1{else}0{/if}">
<div class="modal-dialog">
<div class="modal-content">
<form n:name="upravitForm">
<div class="modal-header">
<h5 class="modal-title" id="modalUpravitLabel">Upravit záznam</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Zavřít"></button>
</div>
<div class="modal-body">
<div class="alert alert-danger" n:if="$form->hasErrors()" n:foreach="$form->getErrors() as $error">{$error}</div>
<input n:name="id">
<div class="mb-2">
<label n:name="zvestovatel" class="form-label">Zvěstovatel</label>
<div class="naseptavac" data-naseptavac>
<input n:name="zvestovatel" class="form-control" autocomplete="off" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="naseptavac-nabidka-upravit">
<div id="naseptavac-nabidka-upravit" class="naseptavac-nabidka" role="listbox" hidden></div>
</div>
</div>
<div class="mb-2">
<label n:name="vydano" class="form-label">Datum přidělení</label>
<input n:name="vydano" class="form-control">
</div>
<div>
<label n:name="vraceno" class="form-label">Datum vrácení</label>
<input n:name="vraceno" class="form-control">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Zrušit</button>
<button n:name="send" class="btn btn-klavesa box-shadow--6dp">Uložit</button>
</div>
</form>
</div>
</div>
</div>
<script type="application/json" id="zvestovatele-data">{$zvestovateleJson|noescape}</script>
<script src="{$basePath}/js/obvod-nahled.js"></script>
<script src="{$basePath}/js/naseptavac.js?v=3"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('.modal[data-show-errors="1"]').forEach(function (el) {
bootstrap.Modal.getOrCreateInstance(el).show();
});
var vratitMin = {
{foreach $otevrene as $otevreny}{$otevreny->ID}: {date_format($otevreny->VYDANO, 'Y-m-d')},{/foreach}
};
var zaznam = document.getElementById('frm-vratitForm-zaznam');
var datum = document.getElementById('frm-vratitForm-datum');
if (!zaznam || !datum) {
return;
}
var nastavMin = function () {
datum.min = vratitMin[zaznam.value] || '';
};
zaznam.addEventListener('change', nastavMin);
nastavMin();
});
var modalUpravit = document.getElementById('modalUpravit');
if (modalUpravit) {
modalUpravit.addEventListener('show.bs.modal', function (event) {
var btn = event.relatedTarget;
var form = modalUpravit.querySelector('form');
if (!btn || !btn.dataset.id || !form) {
return;
}
form.querySelector('[name="id"]').value = btn.dataset.id;
form.querySelector('[name="zvestovatel"]').value = btn.dataset.jmeno || '';
form.querySelector('[name="vydano"]').value = btn.dataset.vydano || '';
form.querySelector('[name="vraceno"]').value = btn.dataset.vraceno || '';
});
}
</script>