let input_valeur_kaban = $('#edit_prog_kanban_fs_valeurKanban'), //OK input_appro_mini = $('#edit_prog_kanban_fs_approMini'), input_sm_valeur = $('#edit_prog_kanban_fs_stockMiniValeur'), //OK input_kanban_le_decide = $('#edit_prog_kanban_fs_nombreLEDecide'), //OK input_kanban_ecart = $('#edit_prog_kanban_fs_ecart'), input_cost = $('#edit_prog_kanban_fs_prix'), //OK input_conso = $('#edit_prog_kanban_fs_consoPeriode'), //OK input_period =$('#edit_prog_kanban_fs_nombreJoursPeriode'), //OK input_kb_calc = $('#edit_prog_kanban_fs_nombreKanbanTotal'), // TODO a delete pour FS input_le_calc = $('#edit_prog_kanban_fs_nombreLETotal'), input_le_max = $('#edit_prog_kanban_fs_leMax'), input_ta_total = $('#edit_prog_kanban_fs_delaiTotal'), input_le_reel = $('#edit_prog_kanban_fs_leReel'), input_le_day = $('#edit_prog_kanban_fs_leJour'), input_nb_kb_decide = $('#edit_prog_kanban_fs_nombreKanbanDecide'), form_prog = $('#form_prog'), span_cmj = $('#cmj'), btn_submit = $('#submit_form_prog'), data_has_change = false; ; $(btn_submit).prop('disabled',true); function set_data_has_change() { data_has_change = true; $(btn_submit).removeAttr('disabled'); refresh_display(); } $('#form_prog input').change(function(){ set_data_has_change(); }); $('#edit_prog_kanban_fs_manager').change(function () { set_data_has_change(); }); if(data_has_change){ $(btn_submit).click(function(){ $('#kanban_line_prototype').remove(); form_parsley.validate(); form_parsley.whenValid().then(function () { $(btn_submit).html(btn_spin); $(form_prog).submit(); }); }); } let div_prototype = $('#kanban_line_prototype'); let prototype = $(div_prototype).data('prototype'), counter = $(div_prototype).data('widget-counter'), modal_form_lines_body = $('#modal_form_lines_body'); let form_parsley = $(form_prog).parsley(parsley_options); function initModalAddLine(){ $(modal_form_lines_body).html(''); const regex = /__name__/gm; let addLineForm = prototype.replace(regex,counter); $(modal_form_lines_body).html(addLineForm); gammeCalcLeKbVal(counter); form_parsley = $(form_prog).parsley(parsley_options); } initModalAddLine(); $('#btn_confirm_add_line').click(function () { checkLineForm('edit_prog_kanban_fs_lignes_'+ counter, function (valid) { if (valid){ createLineInGammeTable(); initModalAddLine(); set_data_has_change(); handleRemoveItemCollection(); move_item(); } }); }); function refresh_display(){ let cmj = parseFloat({{ (kanban.consoPeriode / kanban.nombreJoursPeriode)|number_format(4,'.','') }}), kb_val = 0, ta_total = 0, le_day = 0, le_kb = 0, sm_day = 0; if($(input_conso).val()) { let conso =parseFloat($(input_conso).val().replace(',','.')); let period = 1; if($(input_period).val()){ period = parseFloat($(input_period).val().replace(',','.')); } else $(input_period).val(1); d_cmj = new Decimal(conso).dividedBy(period); cmj = d_cmj.valueOf(); } $(span_cmj).html(Math.round10(cmj, -4)); {# calcul #} let lines_values = parseTableItems(); ta_total = lines_values.ta_total; le_kb = lines_values.le_kb; kb_val = parseInt($(input_valeur_kaban).val()); if(cmj > 0) { let d_le_decide = new Decimal(lines_values.le_decide * kb_val); le_day = d_le_decide.dividedBy(cmj).valueOf(); $(input_le_day).val(Math.round10(le_day,-2)); } if(ta_total === 0 ) ta_total = 1; $(input_ta_total).val(ta_total); $(input_le_reel).val(Math.round10(lines_values.le_decide * kb_val,-2)); $(input_le_max).val(lines_values.le_decide); {# kanban #} if(le_day > 0 && kb_val > 0 && ta_total > 0 && cmj > 0){ let d_le_calc = new Decimal(sm_day).plus(ta_total).plus(le_day).dividedBy(le_day); d_le_calc = d_le_calc.plus(1); $(input_le_calc).val(Math.ceil(d_le_calc.valueOf())); let kb_nb_le_calc = d_le_calc.valueOf(); if(kb_nb_le_calc >= 0) { $('#edit_prog_kanban_fs_nombreKanbanTotal').val(Math.round10(kb_nb_le_calc,0)); $(input_kb_calc).val(Math.round10(kb_nb_le_calc,0)); let kb_le_decide = parseInt($(input_kanban_le_decide).val()); if (kb_le_decide >= 0 ){ let gap_value = (kb_le_decide - Math.ceil(d_le_calc.valueOf()))*lines_values.le_decide; if(!gap_value){ gap_value = 0; } $(input_kanban_ecart).val(gap_value); $(input_nb_kb_decide).val(Math.round10(Math.ceil(kb_le_decide)*lines_values.le_decide,0)); } } } //else $(stock_table).hide(); } refresh_display(); function parseTableItems(){ let response = { 'le_q' : 0, 'le_decide' : 0, 'le_kb' : 0, 'ta_total' : 0 }; $('#lines_collections tr').each(function(){ let tr = this; let line_ta = parseFloat($(tr).find('.line_ta').html()), line_le_q = parseFloat($(tr).data('leq')), line_le_kb = parseFloat($(tr).find('.line_le_kb').html()), line_le_decide = parseFloat($(tr).find('.line_le_dcd').html()); if(typeof line_ta == 'number') response.ta_total = response.ta_total + line_ta; if(typeof line_le_kb == 'number' && line_le_kb > response.le_kb ) response.le_kb = line_le_kb; if(typeof line_le_decide == 'number' && line_le_decide > response.le_decide ) response.le_decide = line_le_decide; if(typeof line_le_q == 'number' && line_le_q > response.le_q ) response.le_q = line_le_q; }); return response; } $('.graph-container').css({opacity:1}); function createLineInGammeTable() { let section_fournisseur_code = $('#edit_prog_kanban_fs_lignes_'+counter+'_sectionFournisseur option:selected').html().split('-')[0], section_client_code = $('#edit_prog_kanban_fs_lignes_'+counter+'_sectionClient option:selected').html().split('-')[0]; if (section_fournisseur_code.codePointAt(1) === 56550) section_fournisseur_code = section_fournisseur_code.substr(2); if (section_client_code.codePointAt(1) === 56550) section_client_code = section_client_code.substr(2); let input_poste = $('#edit_prog_kanban_fs_lignes_'+ counter +'_poste'), input_delai = $('#edit_prog_kanban_fs_lignes_'+ counter +'_delai'), input_nombreLEDecide = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEDecide'), input_nombreLEQuantite = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEQuantite'), input_nombreLEKanban = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEKanban'), input_sectionFournisseur = $('#edit_prog_kanban_fs_lignes_'+ counter +'_sectionFournisseur'), input_sectionClient = $('#edit_prog_kanban_fs_lignes_'+ counter +'_sectionClient'); let delay = parseFloat($(input_delai).val().replace(',','.')); let obj = { 'sectionFournisseur': section_fournisseur_code, 'sectionClient': section_client_code, 'poste': $(input_poste).val(), 'delai': delay, 'nombreLEDecide': $(input_nombreLEDecide).val(), 'nombreLEQuantite': $(input_nombreLEQuantite).val(), 'nombreLEKanban': $(input_nombreLEKanban).val(), 'fournisseur_val': $(input_sectionFournisseur).val(), 'client_val': $(input_sectionClient).val() }; let html_form = $(modal_form_lines_body).html(); let red_text_class = ''; if (obj.nombreLEKanban != obj.nombreLEDecide) red_text_class = ' text-red'; let html_line = ''+ ''+obj.poste+''+ ''+obj.sectionFournisseur+''+ ''+obj.sectionClient+''+ ''+obj.delai+''+ ''+obj.nombreLEKanban+''+ ''+obj.nombreLEDecide+''+ '\n' + ' \n' + ' '+ '
\n' + '
'+ ''+ html_form + '
'+ '
'+ ''+ ''; $('#lines_collections').append(html_line); $(modal_form_lines_body).html(''); // must be reload input_poste = $('#edit_prog_kanban_fs_lignes_'+ counter +'_poste'); input_delai = $('#edit_prog_kanban_fs_lignes_'+ counter +'_delai'); input_nombreLEDecide = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEDecide'); input_nombreLEQuantite = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEQuantite'); input_nombreLEKanban = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEKanban'); input_sectionFournisseur = $('#edit_prog_kanban_fs_lignes_'+ counter +'_sectionFournisseur'); input_sectionClient = $('#edit_prog_kanban_fs_lignes_'+ counter +'_sectionClient'); $(input_poste).val(obj.poste); $(input_delai).val(obj.delai); $(input_nombreLEDecide).val(obj.nombreLEDecide); $(input_nombreLEQuantite).val(obj.nombreLEQuantite); $(input_sectionFournisseur).val(obj.fournisseur_val); $(input_sectionClient).val(obj.client_val); $(input_nombreLEKanban).val(obj.nombreLEKanban); $('#edit_prog_kanban_fs_lignes_'+counter+'_numeroOrdre').val(parseInt(counter)+1); counter++; $('#modal_form_lines').foundation('close'); return true; } let modal_confirm_delete_line = $('#modal_confirm_delete_line'), btn_confirm_delete_line = $('#btn_confirm_delete_line'); function handleRemoveItemCollection(){ $('.remove-item-collection').click(function(){ let tr = $(this).closest('tr'); $(modal_confirm_delete_line).foundation('open'); $(btn_confirm_delete_line).unbind('click'); $(btn_confirm_delete_line).bind('click', function(){ tr.remove(); $(modal_confirm_delete_line).foundation('close'); }); }); } handleRemoveItemCollection(); function move_item(){ $('.move-down').unbind('click'); $('.move-down').bind('click', function () { let current_tr = $(this).closest("tr"); let next_tr = $(current_tr).next(); let order_index_current = $(current_tr).find("input.input_numero_ordre").val(); let order_index_next = $(next_tr).find("input.input_numero_ordre").val(); // update indexes $(next_tr).find("input.input_numero_ordre").val(order_index_current); $(current_tr).find("input.input_numero_ordre").val(order_index_next); $(next_tr).after($(current_tr)); set_data_has_change(); }); $('.move-up').unbind('click'); $('.move-up').bind('click', function () { let current_tr = $(this).closest("tr"); let before_tr = $(current_tr).prev(); let order_index_current = parseInt($(current_tr).find("input.input_numero_ordre").val()); let order_index_before = parseInt($(before_tr).find("input.input_numero_ordre").val()); // update indexes $(before_tr).find("input.input_numero_ordre").val(order_index_current); $(current_tr).find("input.input_numero_ordre").val(order_index_before); $(before_tr).before($(current_tr)); set_data_has_change(); }); } move_item(); $(input_valeur_kaban).change(function () { // Function to recalculate all gammes let vk = $(this).val(); $('#lines_collections tr').each(function () { let le_qte = $(this).data('leq'); let new_le_kb = Math.round10(parseFloat(le_qte) / vk, 0); $(this).find('.line_le_kb').html(new_le_kb); }); }); function calc_kb_lines(input_le_q, input_le_k, input_le_dcd) { let input_le_quantite = $(input_le_q), input_le_kanban = $(input_le_k), input_le_decide = $(input_le_dcd), vk = parseFloat($(input_valeur_kaban).val())||1; $(input_le_quantite).change(function(){ if($(input_le_quantite).val()){ let le_kb_value = Math.round10(parseFloat($(input_le_quantite).val()) / vk, 0); $(input_le_kanban).val(le_kb_value); if(!$(input_le_decide).val()) $(input_le_decide).val(le_kb_value); } }); } let modal_form_edit_line = $('#modal_form_edit_line'), modal_form_edit_line_body = $('#modal_form_edit_line_body') btn_confirm_edit_line = $('#btn_confirm_edit_line'), current_line_order = '_name_', current_tr = null, current_row = null, current_form_edit = null, item_proto_container = null; $('.edit-item-collection').click(function () { // todo get the proto of this element $(this).closest('td').find("div.hide"); current_row = $(this).closest('td').find("div.hide"); current_line_order = $(this).closest('td').find("div.hide").find("label").html(); current_form_edit = $(this).closest('td').find("div.hide").find("div#edit_prog_kanban_fs_lignes_"+current_line_order); current_tr = $(this).closest('tr'); item_proto_container = $(this).closest('td').find("div.hide")[0]; $(modal_form_edit_line_body).html(current_form_edit); calc_kb_lines($('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEQuantite'), $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEKanban'), $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEDecide')); gammeCalcLeKbVal(current_line_order); $(modal_form_edit_line).foundation('open'); }); {#$(modal_form_edit_line).on('closed.zf.reveal', function () {#} {# $(current_row).children().append($(modal_form_edit_line_body).html());#} {#});#} $(btn_confirm_edit_line).click(function () { checkLineForm('edit_prog_kanban_fs_lignes_'+ current_line_order, function (valid) { if (valid){ let section_fournisseur_code = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionFournisseur option:selected').html().split('-')[0], section_client_code = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionClient option:selected').html().split('-')[0]; if (section_fournisseur_code.codePointAt(1) === 56550) section_fournisseur_code = section_fournisseur_code.substr(2); if (section_client_code.codePointAt(1) === 56550) section_client_code = section_client_code.substr(2); let input_poste = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_poste'), input_delai = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_delai'), input_nombreLEDecide = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEDecide'), input_nombreLEQuantite = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEQuantite'), input_nombreLEKanban = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEKanban'), input_sectionFournisseur = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionFournisseur'), input_sectionClient = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionClient'); let delay = parseFloat($(input_delai).val().replace(',','.')); let obj = { 'sectionFournisseur': section_fournisseur_code, 'sectionClient': section_client_code, 'poste': $(input_poste).val(), 'delai': delay, 'nombreLEDecide': $(input_nombreLEDecide).val(), 'nombreLEQuantite': $(input_nombreLEQuantite).val(), 'nombreLEKanban': $(input_nombreLEKanban).val(), 'fournisseur_val': $(input_sectionFournisseur).val(), 'client_val': $(input_sectionClient).val() }; cleanHtmlTrAfterEditLine(current_tr) let red_text_class = ''; if (obj.nombreLEKanban != obj.nombreLEDecide) red_text_class = ' text-red'; let modified_html_line = ''+obj.poste+''+ ''+obj.sectionFournisseur+''+ ''+obj.sectionClient+''+ ''+obj.delai+''+ ''+obj.nombreLEKanban+''+ ''+obj.nombreLEDecide+''; current_tr.prepend(modified_html_line); $(current_row).children().append($(modal_form_edit_line_body).html()); $(modal_form_edit_line_body).html(''); //current_form_edit.html($(modal_form_edit_line_body).html()); input_poste = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_poste'); input_delai = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_delai'); input_nombreLEDecide = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEDecide'); input_nombreLEQuantite = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEQuantite'); input_nombreLEKanban = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEKanban'); input_sectionFournisseur = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionFournisseur'); input_sectionClient = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionClient'); $(input_poste).val(obj.poste); $(input_delai).val(parseFloat(obj.delai)); $(input_nombreLEDecide).val(obj.nombreLEDecide); $(input_nombreLEQuantite).val(obj.nombreLEQuantite); $(input_sectionFournisseur).val(obj.fournisseur_val); $(input_sectionClient).val(obj.client_val); $(input_nombreLEKanban).val(obj.nombreLEKanban); set_data_has_change(); $(modal_form_edit_line).foundation('close'); } }); }); function cleanHtmlTrAfterEditLine(tr) { $(tr).find('td').each(function () { if (!$(this).hasClass('action')){ $(this).remove(); } }); } function gammeCalcLeKbVal(key) { let input_le_qte = $('#edit_prog_kanban_fs_lignes_'+key+'_nombreLEQuantite'), input_le_kb = $('#edit_prog_kanban_fs_lignes_'+key+'_nombreLEKanban'), input_le_dcd = $('#edit_prog_kanban_fs_lignes_'+key+'_nombreLEDecide'), vk = parseFloat($(input_valeur_kaban).val())||1; if($(input_le_qte).val()){ let le_kb_value = Math.round10(parseFloat($(input_le_qte).val()) / vk, 0); $(input_le_kb).val(le_kb_value); if(!$(input_le_dcd).val()) $(input_le_dcd).val(le_kb_value); } $(input_le_qte).unbind('change'); $(input_le_qte).bind('change', function(){ gammeCalcLeKbVal(key); }); } //gammeCalcLeKbVal(counter); //TODO Modify bc don't work function checkLineForm(div_container_id, callback){ let error = 0; const reg = /[\d+\.\,]/; $('#'+div_container_id+' input').each(function () { let attempted_type = $(this).data('parsleyType'), value = $(this).val(); if (attempted_type && attempted_type === "number" && value){ if (!value.match(reg)) { error++; $(this).addClass('is-invalid-input'); } else { $(this).removeClass('is-invalid-input'); } } if ($(this).prop('required')) { if (!value){ error++; $(this).addClass('is-invalid-input'); } else if (!$(this).hasClass('is-invalid-input')) { $(this).removeClass('is-invalid-input'); } } }) $('#'+div_container_id+' select').each(function () { let value = $(this).val(); if ($(this).prop('required')) { if (!value){ error++; $(this).addClass('is-invalid-input'); } else { $(this).removeClass('is-invalid-input'); } } }) return callback((error === 0)); }