Externalisation config par défaut

This commit is contained in:
Jean-Christophe Engel 2023-11-29 20:14:31 +01:00
parent 005b53096c
commit be70b6ef6e
2 changed files with 95 additions and 50 deletions

View File

@ -5,35 +5,37 @@
{{:include file="/%s/_nav.html"|args:$module.name current="config"}} {{:include file="/%s/_nav.html"|args:$module.name current="config"}}
{{if $_GET.ok}} {{if $_GET.ok}}
<p class="block confirm">Configuration enregistrée.</p> <p class="block confirm">Configuration enregistrée.</p>
{{/if}} {{/if}}
{{* Traiter l'envoi du formulaire *}} {{* Traiter l'envoi du formulaire *}}
{{#form on="save"}} {{#form on="save"}}
{{:save key="config" {{:save key="config"
validate_schema="./config.schema.json" validate_schema="./config.schema.json"
inputNature=$_POST.input_fields|array_transpose inputNature=$_POST.input_fields|array_transpose
outputNature=$_POST.output_fields|array_transpose outputNature=$_POST.output_fields|array_transpose
}} }}
{{:redirect to="./config.html?ok=1"}} {{:redirect to="./config.html?ok=1"}}
{{/form}} {{/form}}
{{* types d'entrées *}} {{* config par défaut *}}
{{:assign var='types_entrees' définitif="définitif" temporaire="temporaire" retour="retour"}} {{:read file="defaut.json" assign="config_defaut"}}
{{:assign config_defaut=$config_defaut|json_decode}}
{{* entrées par défaut *}} {{* types d'entrées *}}
{{:assign var='entrees_defaut.Achat' value='définitif'}} {{#foreach from=$config_defaut.entrées item="elem"}}
{{:assign var='entrees_defaut.Location' value='temporaire'}} {{#foreach from=$elem key=label item=value}}
{{:assign var='entrees_defaut.Retour de Location/Prêt' value='retour'}} {{:assign var='types_entrees.%s'|args:$value value=$value}}
{{/foreach}}
{{/foreach}}
{{* types de sorties *}} {{* types de sorties *}}
{{:assign var='types_sorties' définitif="définitif" temporaire="temporaire" retour="retour"}} {{#foreach from=$config_defaut.sorties item="elem"}}
{{#foreach from=$elem key=label item=value}}
{{* sorties par défaut *}} {{:assign var='types_sorties.%s'|args:$value value=$value}}
{{:assign var='sorties_defaut.Vente' value='définitif'}} {{/foreach}}
{{:assign var='sorties_defaut.Prêt' value='temporaire'}} {{/foreach}}
{{:assign var='sorties_defaut.Retour de Location/Emprunt' value='retour'}}
<form method="post" action=""> <form method="post" action="">
<fieldset> <fieldset>
@ -57,7 +59,13 @@
<tr> <tr>
<td>{{:input type="text" name="input_fields[label][]" default=$input_field.label}}</td> <td>{{:input type="text" name="input_fields[label][]" default=$input_field.label}}</td>
<td>{{:input type="select" name="input_fields[type][]" options=$types_entrees default=$input_field.type required=true default_empty="— Choisir un type —"}}</td> <td>{{:input type="select"
name="input_fields[type][]"
options=$types_entrees
default=$input_field.type
required=true
default_empty="— Choisir un type —"}}
</td>
<td class="action"> <td class="action">
{{if $suppr}} {{if $suppr}}
{{:button label="Supprimer" shape="minus" onclick="this.parentNode.parentNode.remove();"}} {{:button label="Supprimer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
@ -68,25 +76,34 @@
</tr> </tr>
{{else}} {{else}}
{{* pas de config enregistrée : utiliser les valeurs par défaut *}} {{* pas de config enregistrée : utiliser les valeurs par défaut *}}
{{#foreach from=$entrees_defaut key="label" item="value"}} {{#foreach from=$config_defaut.entrées item="elem"}}
{{#foreach from=$elem key=label item=value}}
{{* Vérifier si la suppression de ce type d'entrée est possible *}} {{* Vérifier si la suppression de ce type d'entrée est possible *}}
{{:assign suppr=true}} {{:assign suppr=true}}
{{#load type="movement" where="$$.inputNature = :libelle" :libelle=$label}} {{#load type="movement" where="$$.inputNature = :libelle" :libelle=$label}}
{{:assign suppr=false}} {{:assign suppr=false}}
{{/load}} {{/load}}
<tr> <tr>
<td>{{:input type="text" name="input_fields[label][]" default=$label}}</td> <td>{{:input type="text" name="input_fields[label][]" default=$label}}</td>
<td>{{:input type="select" name="input_fields[type][]" options=$types_entrees required=true default=$value default_empty="— Choisir un type —"}}</td> <td>{{:input
<td class="action"> type="select"
{{if $suppr}} name="input_fields[type][]"
{{:button label="Supprimer" shape="minus" onclick="this.parentNode.parentNode.remove();"}} options=$types_entrees
{{else}} required=true
{{:button label="Supprimer" shape="minus" disabled=true}} default=$value
{{/if}} default_empty="— Choisir un type —"}}
</td> </td>
</tr> <td class="action">
{{if $suppr}}
{{:button label="Supprimer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
{{else}}
{{:button label="Supprimer" shape="minus" disabled=true}}
{{/if}}
</td>
</tr>
{{/foreach}}
{{/foreach}} {{/foreach}}
{{/foreach}} {{/foreach}}
</tbody> </tbody>
@ -127,7 +144,14 @@
<tr> <tr>
<td>{{:input type="text" name="output_fields[label][]" default=$output_field.label}}</td> <td>{{:input type="text" name="output_fields[label][]" default=$output_field.label}}</td>
<td>{{:input type="select" name="output_fields[type][]" options=$types_sorties default=$output_field.type required=true default_empty="— Choisir un type —"}}</td> <td>{{:input
type="select"
name="output_fields[type][]"
options=$types_sorties
default=$output_field.type
required=true
default_empty="— Choisir un type —"}}
</td>
<td class="action"> <td class="action">
{{if $suppr}} {{if $suppr}}
{{:button label="Supprimer" shape="minus" onclick="this.parentNode.parentNode.remove();"}} {{:button label="Supprimer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
@ -138,7 +162,8 @@
</tr> </tr>
{{else}} {{else}}
{{* pas de config enregistrée : utiliser les valeurs par défaut *}} {{* pas de config enregistrée : utiliser les valeurs par défaut *}}
{{#foreach from=$sorties_defaut key="label" item="value"}} {{#foreach from=$config_defaut.sorties item="elem"}}
{{#foreach from=$elem key=label item=value}}
{{* Vérifier si la suppression de ce type de sortie est possible *}} {{* Vérifier si la suppression de ce type de sortie est possible *}}
{{:assign suppr=true}} {{:assign suppr=true}}
@ -146,17 +171,25 @@
{{:assign suppr=false}} {{:assign suppr=false}}
{{/load}} {{/load}}
<tr> <tr>
<td>{{:input type="text" name="output_fields[label][]" default=$label}}</td> <td>{{:input type="text" name="output_fields[label][]" default=$label}}</td>
<td>{{:input type="select" name="output_fields[type][]" options=$types_sorties required=true default=$value default_empty="— Choisir un type —"}}</td> <td>{{:input
<td class="action"> type="select"
{{if $suppr}} name="output_fields[type][]"
{{:button label="Supprimer" shape="minus" onclick="this.parentNode.parentNode.remove();"}} options=$types_sorties
{{else}} required=true
{{:button label="Supprimer" shape="minus" disabled=true}} default=$value
{{/if}} default_empty="— Choisir un type —"}}
</td> </td>
</tr> <td class="action">
{{if $suppr}}
{{:button label="Supprimer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
{{else}}
{{:button label="Supprimer" shape="minus" disabled=true}}
{{/if}}
</td>
</tr>
{{/foreach}}
{{/foreach}} {{/foreach}}
{{/foreach}} {{/foreach}}
</tbody> </tbody>

12
defaut.json Normal file
View File

@ -0,0 +1,12 @@
{
"entrées" : [
{ "Achat" : "définitif" },
{ "Location" : "temporaire" },
{ "Retour de Location/Prêt" : "retour" }
],
"sorties" : [
{ "Vente" : "définitif" },
{ "Prêt" : "temporaire" },
{ "Retour de Location/Emprunt" : "retour" }
]
}