//CHARGEMENT DE LA PAGE function init_plugin_import(){ switch($.urlParam('page')){ case 'sheet.import': $('#file').change(function(){ import_save(function(){ if($('.plugin-import').attr('data-mode') != 'configure') return; import_template_setting(); },true); }); if($('.plugin-import').attr('data-mode') == 'configure'){ import_template_setting(function(){ import_mapping_search(); }); } break; default: break; } $('#imports').sortable_table({ onSort : import_search }); } function import_template_setting(callback){ var id = $.urlParam('id'); if(!id) return; $.action({ action : 'import_template_setting', import : id, },function(response){ /*var columns =''; for(var k in response.headers){ var column = response.headers[k]; columns+=''; } columns+=''; $('select[data-id="excelColumn"]').html(columns);*/ $('#template-settings').html(response.form); if(callback) callback(); }); } //Enregistrement des configurations function import_setting_save(){ $.action({ action: 'import_setting_save', fields: $('#import-setting-form').toJson() },function(){ $.message('success','Enregistré'); }); } /** IMPORT **/ //Récuperation d'une liste import dans le tableau #imports function import_search(callback,exportMode){ var box = new FilterBox('#import-filters'); if(exportMode) $('.btn-export').addClass('btn-preloader'); $('#imports').fill({ action:'import_search', filters: box.filters(), sort: $('#imports').sortable_table('get'), export: !exportMode ? false : exportMode },function(response){ if(!exportMode) $('.results-count > span').text(response.pagination.total); if(callback!=null) callback(); }); } //Ajout ou modification import function import_save(callback){ var data = $('#import-form').toJson(); data.meta = $('#template-settings').toJson(); $.action(data,function(r){ $('#import-form').attr('data-id',r.id); $.urlParam('id',r.id); init_components('.file-container'); if(callback) callback(); }); } //Suppression import function import_delete(element){ if(!confirm('Êtes vous sûr de vouloir supprimer cet item ?')) return; var line = $(element).closest('.item-line'); $.action({ action: 'import_delete', id: line.attr('data-id') },function(r){ line.remove(); $.message('info','Item supprimé'); }); } /** LINE D\'IMPORT MAPPéE **/ function import_mapping_deduction(){ var id = $.urlParam('id'); if(!id || !entity) return $.message('warning','Entitée ou excel non renseigné'); $('.btn-import-deduction').addClass('btn-preloader'); $.action({ action:'import_mapping_deduction', id: id },function(response){ import_mapping_search(); $.message('success',response.excelCount+' Champs excel trouvés, '+response.entityCount+' associations erp déduites'); }); } function import_excel_infos(callback){ var id = $.urlParam('id'); $.action({ action:'import_excel_infos', id: id },function(response){ if(callback) callback(); }); } function import_mapping_fixed_change(element){ var fixedValue = $(element).closest('.import-label-column').find('.excelColumnFixedValue'); fixedValue.toggleClass('hidden',!$(element).prop('checked')); if(!$(element).prop('checked')) fixedValue.val(''); import_mapping_save(element); } //Récuperation d'une liste line d\'import mappée dans le tableau #importmappings function import_mapping_search(callback){ var id = $.urlParam('id'); var entity = $('#entity').val(); if(!id || !entity) return; $('.entityField').html(''); $.action({ action : 'core_entity_attribute_search', path : entity },function(response){ var html = ''; var subhtml = ''; for(var k in response.fields){ var field = response.fields[k]; html += ''; //si l'attribut et lié a une autre entité, on stock les attributs de cette autre entitée en tableau global pour réutilisation dans import_check_foreign_attribute if(field.childs && field.entity !='Dictionary'){ if(!window.importLinks ) window.importLinks = {}; window.importLinks[field.column] = field.childs; } } html+= ''; $('.entityField').html(html); $.action({ action:'import_mapping_search', id: id },function(response){ $('#import-mappings tbody tr:not(:eq(0))').remove(); var tpl = $('#import-mappings tbody tr:eq(0)').get(0).outerHTML.replace(/data-tpl-type/g,'data-type'); for(var k in response.rows){ var line = $(Mustache.render(tpl,response.rows[k])); line.removeClass('hidden'); $('#import-mappings').append(line); line.fromJson(response.rows[k]); import_check_foreign_attribute(line.find('.entityField')); line.find('.entitySubField').val(response.rows[k].entitySubField); if(response.rows[k].entityRelatedField){ line.find('.entityRelatedField,.entityRelated').removeClass('hidden'); import_entity_related_change(line.find('.entityRelated')); } if(response.rows[k].excelColumnFixedValue){ line.find('.fixedValueCheckbox').prop('checked',true); line.find('[data-id="excelColumnFixedValue"]').removeClass('hidden'); } init_components(line); } if(callback!=null) callback(); }); }); } function import_entity_field_change(element){ var select = $(element); var line = $(select).closest('tr'); if(select.val() == 'otherEntity'){ var related = line.find('.entityRelated'); related.attr('data-type',related.attr('data-tpl-type')).removeClass('hidden'); init_components(line); related.change(function(){ import_entity_related_change(related); }); }else{ import_check_foreign_attribute(element); } import_mapping_save(element); } function import_entity_related_change(related){ var line = related.closest('tr'); $.action({ action : 'core_entity_attribute_search', path : related.val() },function(response){ var relatedField = line.find('.entityRelatedField'); relatedField.attr('data-type',relatedField.attr('data-tpl-type')).removeClass('hidden'); var values = {}; for (var k in response.fields) { var field = response.fields[k]; values[field.column] = {id :k, label : field.label}; if(field.childs){ values[field.column].childs = {}; for (var u in field.childs) { var child = field.childs[u]; child.id = k+'.'+u; values[field.column].childs[child.column] = child; } } } relatedField.attr('data-values',JSON.stringify(values)) init_components(line); }); } //Lors de la selection d'un attirbut d'entité, vérifie qu'il n'existe pas // d'entité liée, si c'est le cas, ça affiche ses attributs en sous liste function import_check_foreign_attribute(element){ var select = $(element); var line = $(select).closest('tr'); if(!select.find('option:selected').hasAttr('data-link')){ line.find('.entitySubField').addClass('hidden'); return; } var html = ''; if(!window.importLinks || !window.importLinks[select.val()]) return; var childs = window.importLinks[select.val()]; for(var k in childs){ var field = childs[k]; html += ''; } line.find('.entitySubField').removeClass('hidden').html(html); } //Ajout ou modification line d\'import mappée function import_mapping_save(element){ var data = $(element).closest('tr').toJson(); data.action = 'import_mapping_save'; data.import = $.urlParam('id'); $.action(data,function(r){ $.message('success','Enregistré'); }); } function import_mapping_add(){ var data = {action:'import_mapping_save'}; data.import = $.urlParam('id'); $.action(data,function(r){ import_mapping_search(); }); } //Récuperation ou edition line d\'import mappée function import_mapping_edit(element){ var line = $(element).closest('.item-line'); $.action({ action: 'import_mapping_edit', id: line.attr('data-id') },function(r){ $('#import-mapping-form').fromJson(r); init_components('#import-mapping-form'); $('#import-mapping-form').attr('data-id',r.id); }); } //Suppression line d\'import mappée function import_mapping_delete(element){ if(!confirm('Êtes vous sûr de vouloir supprimer cet/ces item(s) ?')) return; if(element!='all'){ var line = $(element).closest('.item-line'); var id = line.attr('data-id'); }else{ id = element; } $.action({ action: 'import_mapping_delete', id: id, import: $.urlParam('id'), },function(r){ if(line){ line.remove(); }else{ $('#import-mappings .item-line:not(:eq(0))').remove(); } $.message('info','Item(s) supprimé(s)'); }); } function import_execute(){ $('.btn-import').addClass('btn-preloader'); $.action({ action : 'import_execute', id : $.urlParam('id') },function(r){ $.message('info','Import terminé'); var statsList = $('.import-stats-list'); statsList.find('>li').remove();; var statsListTemplate = $('template',statsList).html(); for(var slug in r.stats){ var line = $(Mustache.render(statsListTemplate,r.stats[slug])); statsList.append(line); } $('.import-excel-table-container').removeClass('hidden'); var table = $('.import-excel-table'); if(r.stats.imported == r.stats.total){ table.addClass('hidden'); }else{ table.removeClass('hidden'); } table.find('.title-head tr th').html(r.fileName); var columnTemplate = $('thead template',table).html(); var lineTemplate = $('tbody template:eq(0)',table).html(); var columnsTemplate = $('tbody template:eq(1)',table).html(); $('thead:eq(0) tr th',table).attr('colspan',r.columns.length+1); for(var i in r.columns){ $('thead:eq(1) tr',table).append($(Mustache.render(columnTemplate,r.columns[i]))); } table.find('.title-head tr th').attr("colspan",$('thead:eq(1) tr th',table).length); for(var i in r.lines){ var line = r.lines[i]; line.lineNumber = i; var tr = $(Mustache.render(lineTemplate,line)); for(var u in line.columns){ var td = $(Mustache.render(columnsTemplate,line.columns[u])); tr.append(td); } $('tbody',table).append(tr); } init_components($('#file').parent()); }); }