1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /**
- * Initialisation du composant export modèle
- *
- * data-force : (facultatif) slug du modèle d'export à utiliser obligatoirement, si renseigné et que le modèle existe on exporte obligatoirement avec ce modèle
- * data-default : (facultatif) slug du modèle d'export à mettre par défaut
- * data-parameters : les paramètres à renseigner pour l'export modèle
- * => doit contenir les clés suivantes :
- * - plugin (obligatoire) : le plugin ciblé
- * - dataset (obligatoire) : le jeu de données ciblé
- * - destination (facultatif) : chemin où enregistrer le fichier, ne pas mettre si on veut télécharger le fichier généré à la volée
- * - autres paramètres personnalisés...
- * data-pre-callback : string de la fonction appelée avant export (juste après affichage de modal)
- * data-post-callback : string de la fonction appelée après export
- *
- * @param jQuery object input l'input qui servira de support pour le composant
- * @return rien Affiche le modal avec les modèles trouvés pour le plugin et dataset défini
- */
- function init_components_export_model(input){
- var preCallback = input.attr('data-pre-callback') ? input.attr('data-pre-callback') : null;
- var postCallback = input.attr('data-post-callback') ? input.attr('data-post-callback') : null;
- $(document).ready(function(e){
- input.off('click').on('click', function(e){
- $.ajax({
- type: 'GET',
- url: 'plugin/export/modal.export.model.php',
- async: true,
- success : function(modal){
- if(preCallback!=null && window[preCallback]) window[preCallback](input);
- }
- }).done(function(modalContent){
- var parameters = JSON.parse(input.attr('data-parameters'));
- if(!$('#export-modal').length)
- $('body').append(modalContent);
- var modal = $('#export-modal');
- reset_inputs(modal);
- $.action({
- action: 'export_model_search',
- params: parameters
- }, function(r){
- var selectExport = $('#exportModel', modal);
- if(r.rows){
- var forceExport = input.attr('data-force');
- var defaultExport = input.attr('data-default');
- selectExport.find('option').remove();
- $.each(r.rows,function(i, option){
- var opt = $('<option value="'+option.id+'">'+option.label+(option.description.length?' - '+option.description:'')+'</option>');
- if(forceExport && forceExport.length && option.slug === forceExport) opt.addClass('force');
- if(defaultExport && defaultExport.length && option.slug === defaultExport) opt.attr('selected', true);
- selectExport.append(opt);
- });
- }
- $('#exportmodel-form').attr('data-parameters', JSON.stringify(parameters));
- if($('> option',selectExport).length == 1 || $('> option.force',selectExport).length == 1){
- selectExport.val($('>option'+($('> option.force',selectExport).length==1?'.force':''),selectExport).val());
- if(selectExport.val()=='none'){
- $.message('warning', "Aucun modèle d'export existant");
- return;
- }
- input.find('.btn').addClass('btn-preloader');
- export_model_export(postCallback);
- return;
- }
- init_components($('#export-modal'));
- modal.modal('show');
- if(postCallback!=null) modal.attr('data-post-callback', postCallback);
- });
- });
- });
- });
- }
|