12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /**
- * Initialisation du composant export modèle
- *
- * data-default : 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;
- var parameters = JSON.parse(input.attr('data-parameters'));
- $(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]();
- }
- }).done(function(modalContent){
- 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');
- if(r.rows){
- 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(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){
- selectExport.val($('>option',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);
- });
- });
- });
- });
- }
|