# gamutable ## Stockage >On utilise maintenant la lib localforage : https://localforage.github.io/localForage/ Dans cette nouvelle version, on découpe le stockage en 2: * le header en localstorage avec la cle prefixe par `header_` afin d'éviter les pb avec les anciens stockages * le table est stocké via localforage : en indexedb et async ## Configuration Choisir entre la version minifiée de vuejs (sans le debug) ou la version de dev ## Utilisation - charger l'inclure (5 args possibles et facultatifs) ```html Ou avec tous les arguments facultatifs [(#SET{filtrerselect,#ARRAY{ 0,#ARRAY{champ,secteur,valeurs,#LISTE{Le chat}}, 1,#ARRAY{champ,voie,valeurs,#LISTE{Turlut, man}} }|json_encode|rawurlencode})] aaaa ``` - **url_sort_asc** et **url_sort_desc** => surcharge possible des icones de tri de colonnes ## Personnalisation du contenu : surcharger `json_gamutable.json.html` en suivant son modele - pour le header c'est de la forme : "champ":"label" - **IMPORTANT** pour le content du json, il que le cle de la KEY de la table soit "id" et non pas "id_souscription" - pour les champs date, pour avoir l'ordre de la col, il faut le format : dd/mm/yyyy ou dd/mm/yy - on peut ajouter une clé classes pour ajouter des classes spécifiques à certaines colonnes ```json "classes":{ "nom": "toto", "email":"toto" } ``` - On peut ajouter des tris par colonne soit avec un select soit avec un input ```json "filtreCol" : { "statut" : "select", "nom": "select", "prenom": "input" } ``` ## Utiliser les actions : ```html [(#SET{statut, #SET{args,#ID_SOUSCRIPTION|concat{-}|concat{#STATUT}} [(#STATUT|!={publie}|oui) ] [(#STATUT|=={publie}|oui) ] })] "statut" : [(#GET{statut}|json_encode)], ``` * il faut ajouter data-confirm="Confirmez vous ..." si on veut ajouter un popin de confirmation * il faut ajouter data-id="" si on veut recharger que cette ligne * si une variable du nom de `nomBlocAjaxReload` est définie (ou un data-ajaxreload), alors, un ajaxReload de ce bloc sera joué dans la fonctione de callback de l'action ## Utiliser les crayons : - il faut utiliser le pipeline `crayons_vue_affichage_final` ```php /** * injection du reload de vuejs pour les crayons de l'objet souscription * */ function prefixPlugin_crayons_vue_affichage_final($flux){ if ($flux['args']['type'] === 'souscription') { $id = $flux['args']['id']; if ($id = intval($id)) { $flux['data'] .= ' '; } else { $flux['data'] .= ' '; } } return $flux; } ``` ** Attention ** Pour les crayons, l'invalidation du cache ne se fait que pour les objets publiés Les Crayons utilisent l'api modifier_objet de SPIP qui invalide le cache que si objet est publie, il faut donc forcer l'invalidation du cache en passant pour le pipeline post_edition ```php /** * invalider le cache pour l'objet souscription * */ function prefixPlugin_post_edition($flux){ if ($flux['args']['table'] === "spip_souscriptions") { include_spip('inc/invalideur'); suivre_invalideur("id='id_souscription/1'"); } return $flux; } ``` > pour les crayons, il faut surcharger cette autorisation pour l'instant ```php function autoriser_meta_modifier($faire, $type, $id, $qui, $opt) { if (autoriser('webmestre') or autoriser('prof')) { return true; } return false; } ``` ## Utiliser une mediabox ou modalbox : - pour rechargement total/partiel de la page: on peut demander à vuejs de recharger tout le json ou simplement une ligne dans le cas d'une modification 1. Dans le json : ajouter un lien avec la classe mediabox ou modalbox (cf ex de json) ```html "modif" : [(#VAL{}|json_encode)], ``` 2. On charge en ajax le formulaire en l'englobant d'une div avec la classe ajax (du pur spip) 3. Dans le traiter du formulaire => supprimer la redirection et on ajoute : ```php if ($retour === 'gamutable') { $res['redirect'] = ""; // pour recharger que la ligne $id_patate du tableau $res['message_ok'] = gamutable_fermer_modalbox($id_patate); // ou si on veut recharger tout le tableau $res['message_ok'] = gamutable_fermer_modalbox(); } ``` - Ajouter `data-confirm="Confirmez vous ..."` si on veut ajouter une popin de confirmation ## Utiliser deux Gamutables dans la même page : - créer les 2 apiuri dans l'#ENV : **apiuri** et **apiuri_deux** - tous les paramètres envoyés a `inclure/gamutable` peuvent êtres "dédoublés" avec le suffixe **_deux** - pour personnaliser le contenu entre les 2 gamutables on peut surcharger `inclure/separateur_gamutables` - Exemple : ```html
#SET{s,#VAL{spip.php?page=json_resas.json}} [(#ENV{statut}|oui) [(#SET{s,#GET{s}|concat{&statut=}|concat{#ENV{statut}}})] ] #SET{t,#VAL{spip.php?page=json_totaux.json}} [(#SET{t,#GET{t}|concat{&saison=}|concat{#ENV{saison,#DATE|affdate{Y}}}})]
``` ## Liens >https://unpkg.com/browse/vue-next-select@2.10.4/