163 lines
6.6 KiB
HTML
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> |