Files
equipment_resa/_web_view.html
T

163 lines
6.6 KiB
HTML

{{* -*- brindille -*- *}}
{{*
Paramètres :
- key : clé du matériel à visionner
- prop : =1 si matériel propriété de l'association, 0 sinon
*}}
{{:assign equipment_key=$_GET.key|trim}}
{{#load module="equipment" key=$_GET.key assign="equipment"}}
{{else}}
{{:error message="Pas de matériel avec la clé %s"|args:$equipment_key}}
{{/load}}
{{:assign default_category=$equipment.category}}
{{* lister les catégories disponibles
{{#load module="equipment" type="category" assign="category" order="$$.name"}}
{{:assign var="categories.%s"|args:$category.key value=$category.name}}
{{/load}}
*}}
{{* Récupère la catégorie *}}
{{#load module="equipment" type="category" key="%s"|args:$equipment.category }}
{{:assign var="cat_name" value=$name}}
{{/load}}
{{* Récupère l'état *}}
{{#module name="equipment"}}
{{:assign var="_states" value=$config.states|explode:","}}
{{:assign var="_state" from="_states.%d"|args:$equipment.state}}
{{/module}}
{{* Quantités stock ou temp *}}
{{if $equipment.stock >= 1}}
{{:assign _amount=$equipment.stock|intval}}
{{:assign _operation="définitif"}}
{{elseif $equipment.notowned >= 1}}
{{:assign _amount=$equipment.notowned|intval}}
{{:assign _operation="temporaire"}}
{{/if}}
{{* Champs personnalisés *}}
{{#module name="equipment"}}
{{*:debug conf=$config.fields*}}
{{:assign var="_html" value=""}}
{{#foreach from=$config.fields key="i" item="field"}}
{{if $field.assignedto == 'M' && $field.published == true}}
{{*:debug types=$equipment.fields*}}
{{:assign var="champ" from="equipment.fields.%d"|args:$i}}
{{*:debug i=$i label=$champ.label valeur=$champ.value*}}
{{if $field.type == 'checkbox'}}
{{:assign retval="Oui"}}
{{else}}
{{:assign var="retval" value=""}}
{{if $champ.value !== null}}
{{:assign var="retval" value=$champ.value}}
{{/if}}
{{*:debug i=$i val=$retval*}}
{{/if}}
{{if $field.type == 'monetary'}}
{{*:input name="fields[%s]"|args:$i label=$field.label type="number" help=$field.help required=$field.required default=$retval value=$retval min="0" step="any"*}}
{{:assign var="_html" value="%s<dt>%s</dt> <dd>%s €</dd>"|args:$_html:$field.label:$retval}}
{{else}}
{{*:input name="fields[%s]"|args:$i label=$field.label type=$field.type help=$field.help required=$field.required default=$retval value=$retval*}}
{{:assign var="_html" value="%s<dt>%s</dt> <dd>%s</dd>"|args:$_html:$field.label:$retval}}
{{/if}}
{{/if}}
{{/foreach}}
{{/module}}
<fieldset class="informations">
<legend>Voir un matériel</legend>
<dl class="describe">
<dt>Catégorie</dt> <dd>{{$cat_name}}</dd>
<dt>Désignation</dt> <dd>{{$equipment.name}}</dd>
<dt>Description</dt> <dd>{{$equipment.description}}</dd>
<dt>Statut</dt> <dd>{{$equipment.status}}</dd>
<dt>Quantité ({{$_operation}})</dt> <dd>{{$_amount}}</dd>
<dt>État</dt> <dd>{{$_state}}</dd>
<dt>N° de série</dt> <dd>{{$equipment.serialno}}</dd>
{{$_html|raw}}
</dl>
</fieldset>
{{* View and Add Public files *}}
<fieldset>
<legend>Images associées</legend>
{{*:debug equi=$equipment.images*}}
{{*#foreach from=$equipment.images key="key" item="value"}}
{{:assign var="_value" value=$value|url_encode}}
{{:assign var="thumbnail_src" value="/ext/m/equipment/public/image-%s/%s.150px.webp?h=%s"|args:$equipment_key:$_value:$version_hash}}
{{:assign var="img_src" value="/ext/m/equipment/public/image-%s/%s"|args:$equipment_key:$value}}
<a href="{{$img_src}}" class="internal-image"><img src={{$thumbnail_src}} alt="{{$value}}" /></a>
{{/foreach*}}
{{#sql select="path AS img_path, name as img_name, mime as img_mime" tables="files" where="parent = :parent AND image = :image" :parent="ext/m/equipment/public/image-%s"|args:$equipment_key :image=1}}
{{:assign var="thumbnail_src" value="%s.150px.webp?h=%s"|args:$img_path:$version_hash}}
{{:assign var="img_src" value="%s"|args:$img_path}}
<a href="/{{$img_src}}" class="internal-image" target="_dialog"><img src=/{{$thumbnail_src}} alt="{{$img_name}}" /></a>
{{/sql}}
</fieldset>
{{* Charge les réservations EQUIPEMENT en cours, en attente et acceptées dans le calendrier *}}
{{:include file="_resa_load.html" st_condition_cal="$$.equipment='%s' AND $$.status IN ('en attente','acceptée', 'en cours')"|args:$equipment_key keep="_resa_lignes"}}
{{*:debug equi=$_events_light*}}
<fieldset>
<legend>Calendrier des réservations</legend>
<div id='calendar'></div>
<div id='calendar_light'>
{{#foreach from=$_resa_lignes}}
{{:assign var="_events" value="%s{title: 'Réservation', start: '%s', end: '%s'},"|args:$_events:$loan_date:$return_date}}
<p>Réservation du {{$loan_date|date_short}} au {{$return_date|date_short}}</p>
{{/foreach}}
</div>
</fieldset>
<p class="submit">
{{if $is_admin}}
{{:linkbutton class="main" label="Retour" href="equipment_history.html" shape="list-ul"}}
{{elseif $is_logged}}
{{:linkbutton class="main" label="Retour" href="index.html" shape="list-ul"}}
{{if $_operation=="définitif"}}
{{:linkbutton class="main" label="Réserver" href="/m/equipment/index.html?key=%s&fonc=resa"|args:$equipment_key shape="export"}}
{{else}}
{{:linkbutton class="main" label="Contacter nous!" href="/contact.html?key=%s&fonc=resa"|args:$equipment_key shape="mail" target="_dialog"}}
{{/if}}
{{else}}
{{:linkbutton class="main" label="Retour" href="equipment.html" shape="list-ul"}}
{{if $_operation=="définitif"}}
{{:linkbutton class="main" label="Réserver" href="equipment.html?key=%s&fonc=resa"|args:$equipment_key shape="export"}}
{{else}}
{{:linkbutton class="main" label="Contacter nous!" href="contact.html?key=%s&fonc=resa"|args:$equipment_key shape="mail"}}
{{/if}}
{{/if}}
</p>
<script>
const isSmallScreen = () => {
return window.innerWidth <= 500;
};
if (isSmallScreen()) {
console.log("Small screen detected");
//document.getElementById('calendar_light').innerHTML="{{$_events_light|raw}}";
} else {
document.addEventListener('DOMContentLoaded', function() {
var initialLocaleCode = 'fr'
const calendarEl = document.getElementById('calendar')
const calendar = new FullCalendar.Calendar(calendarEl, {
headerToolbar: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,dayGridWeek,dayGridDay,listMonth'
},
aspectRatio: 2,
locale: initialLocaleCode,
buttonIcons: false, // show the prev/next text
weekNumbers: true,
navLinks: true, // can click day/week names to navigate views
editable: false,
dayMaxEvents: true, // allow "more" link when too many events
events: [
{{$_events|raw}}
]
})
calendar.render()
})
}
</script>