/** * 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 = $(''); 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); }); }); }); }); }