/** * * @param kanban_values = { cmj : float, kb_val : int, appro_mini : int, ta : int, le_ue : float, le_kb : float, le_day : float, sm_day : float, sm_ue : float, sm_ta : float, kb_calc : float, kb_decide : int, cost: float, kb_start: boolean } * @param stocks array of quantity (unit) Array mini, avg, maxi format Decimal object * @param context TODO type of kanban * */ function refreshGraph(kanban_values, stocks, context) { let stock_mini_day = parseFloat(stocks['mini'].dividedBy(kanban_values.cmj).valueOf()), stock_mini_qte = parseFloat(stocks['mini'].valueOf()), stock_mini_val = parseFloat(stocks['mini'].times(kanban_values.cost).valueOf()), stock_avg_day = parseFloat(stocks['avg'].dividedBy(kanban_values.cmj).valueOf()), stock_avg_qte = parseFloat(stocks['avg'].valueOf()), stock_avg_val = parseFloat(stocks['avg'].times(kanban_values.cost).valueOf()), stock_maxi_day = parseFloat(stocks['maxi'].dividedBy(kanban_values.cmj).valueOf()), stock_maxi_qte = parseFloat(stocks['maxi'].valueOf()), stock_maxi_val = parseFloat(stocks['maxi'].times(kanban_values.cost).valueOf()) ; let main_le_day = kanban_values.le_day, second_le_day = 0, main_ta_day = kanban_values.ta, second_ta_day = kanban_values.ta, main_sm_day = stock_mini_day, second_sm_day = kanban_values.sm_day ; if (context === "TRANS"){ second_le_day = parseFloat(new Decimal(kanban_values.appro_mini).dividedBy(kanban_values.cmj).valueOf()); } else { second_le_day = kanban_values.le_day; } let main_ta_positive = main_ta_day, main_ta_negative = 0, main_sm_positive = main_sm_day, main_sm_negative = 0, main_le_positive = main_le_day, main_le_negative = 0, main_top = 0, main_bottom = 0, second_top = 0, second_bottom = 0, max_positive_day = 0, min_negative_day = 0, calc_kb_decide = (kanban_values.kb_start) ? parseInt(new Decimal(kanban_values.kb_decide).plus(1).valueOf()) : kanban_values.kb_decide; ; let main_positive_day = parseFloat(new Decimal(kanban_values.kb_val).times(calc_kb_decide).dividedBy(kanban_values.cmj).valueOf()), second_positive_day = parseFloat(new Decimal(second_le_day).plus(second_ta_day).plus(second_sm_day).valueOf()), main_total_abs = parseFloat(new Decimal(Math.abs(main_le_day)).plus(Math.abs(main_ta_day)).plus(Math.abs(main_sm_day)).valueOf()) ; main_positive_day = Math.round10(main_positive_day,-2); second_positive_day = Math.round10(second_positive_day,-2); main_total_abs = Math.round10(main_total_abs,-2); let main_calc_positive = (0 < main_le_day) ? main_le_day : 0; if (0 < main_ta_day) main_calc_positive = parseFloat(new Decimal(main_calc_positive).plus(main_ta_day).valueOf()); if (0 < main_sm_day) main_calc_positive = parseFloat(new Decimal(main_calc_positive).plus(main_sm_day).valueOf()); main_calc_positive = Math.round10(main_calc_positive,-2); if (main_positive_day > main_calc_positive) { max_positive_day = (main_calc_positive > second_positive_day) ? main_calc_positive : second_positive_day } else { max_positive_day = (main_positive_day > second_positive_day) ? main_positive_day : second_positive_day; } min_negative_day = (main_total_abs > main_positive_day) ? parseFloat(new Decimal(main_total_abs).minus(main_positive_day).valueOf()) : 0; let total_day = parseFloat(new Decimal(max_positive_day).plus(min_negative_day).valueOf()); if (0 < min_negative_day) { if (main_le_positive > main_positive_day) { main_le_negative = parseFloat(new Decimal(main_le_day).minus(main_positive_day).valueOf()); main_le_positive = main_positive_day; } let main_le_ta_abs = parseFloat(new Decimal(Math.abs(main_le_day)).plus(Math.abs(main_ta_day)).valueOf()); if (main_le_ta_abs > main_positive_day) { if (0 < main_le_negative) { main_ta_positive = 0; main_ta_negative = main_ta_day; } else { main_ta_negative = parseFloat(new Decimal(main_le_ta_abs).minus(main_positive_day).valueOf()); main_ta_positive = parseFloat(new Decimal(Math.abs(main_ta_day)).minus(main_ta_negative).valueOf()); if (0 > main_ta_positive) { main_ta_positive = 0; } } } if (main_total_abs > main_le_ta_abs) { main_sm_positive = parseFloat(new Decimal(main_total_abs).minus(main_le_ta_abs).minus(min_negative_day).valueOf()); if (0 >= main_sm_positive) { main_sm_positive = 0; } main_sm_negative = parseFloat(new Decimal(Math.abs(main_sm_day)).minus(main_sm_positive).valueOf()); } second_bottom = min_negative_day; } if (main_positive_day > second_positive_day) { second_top = parseFloat(new Decimal(main_positive_day).minus(second_positive_day).valueOf()); } else if (main_positive_day < second_positive_day) { main_top = parseFloat(new Decimal(second_positive_day).minus(main_positive_day).valueOf()); } let main_block_top = $('.main-graph .block-mask-top'), main_block_bottom = $('.main-graph .block-mask-bottom'), main_block_green_positive = $('.main-graph .block-green-plus'), main_block_green_negative = $('.main-graph .block-green-minus'), main_block_yellow_positive = $('.main-graph .block-yellow-plus'), main_block_yellow_negative = $('.main-graph .block-yellow-minus'), main_block_red_positive = $('.main-graph .block-red-plus'), main_block_red_negative = $('.main-graph .block-red-minus'), main_green_legend = $('.main-graph .block-green-plus .block-legend'), main_yellow_legend = $('.main-graph .block-yellow-plus .block-legend'), main_red_legend = $('.main-graph .block-red-plus .block-legend'), second_block_top = $('.second-graph .block-mask-top'), second_block_bottom = $('.second-graph .block-mask-bottom'), second_block_green = $('.second-graph .block-green-plus'), second_block_yellow = $('.second-graph .block-yellow-plus'), second_block_red = $('.second-graph .block-red-plus'), line_stock_mini = $('.line-stock-mini'), line_stock_avg = $('.line-stock-avg'), line_stock_maxi = $('.line-stock-maxi'), legend_left_stock_mini = $('.line-stock-mini .stock-legend-left'), legend_right_stock_mini = $('.line-stock-mini .stock-legend-right'), legend_left_stock_avg = $('.line-stock-avg .stock-legend-left'), legend_right_stock_avg = $('.line-stock-avg .stock-legend-right'), legend_left_stock_maxi = $('.line-stock-maxi .stock-legend-left'), legend_right_stock_maxi = $('.line-stock-maxi .stock-legend-right'), title_1 = $('.graph-title-1'), title_2 = $('.graph-title-2') // title_3 = $('.graph-title-3') ; // css values let height_graph = $('.main-graph').height(); if (0 < min_negative_day) { height_graph = parseFloat(new Decimal(height_graph).minus(20).valueOf()); } let d_px_for_one_day = new Decimal(height_graph).dividedBy(total_day); let h_main_top = (main_top) ? d_px_for_one_day.times(main_top).valueOf() : 0, h_main_green_positive = (main_le_positive) ? d_px_for_one_day.times(main_le_positive).minus(1).valueOf() : 0, h_main_green_negative = (main_le_negative) ? d_px_for_one_day.times(main_le_negative).minus(1).valueOf() : 0, h_main_yellow_positive = (main_ta_positive) ? d_px_for_one_day.times(main_ta_positive).minus(1).valueOf() : 0, h_main_yellow_negative = (main_ta_negative) ? d_px_for_one_day.times(main_ta_negative).minus(1).valueOf() : 0, h_main_red_positive = (main_sm_positive) ? d_px_for_one_day.times(main_sm_positive).minus(1).valueOf() : 0, h_main_red_negative = (main_sm_negative) ? d_px_for_one_day.times(main_sm_negative).minus(2).valueOf() : 0, h_second_top = (second_top) ? d_px_for_one_day.times(second_top).valueOf() : 0, h_second_green = d_px_for_one_day.times(second_le_day).minus(1).valueOf(), h_second_yellow = d_px_for_one_day.times(second_ta_day).minus(1).valueOf(), h_second_red = d_px_for_one_day.times(second_sm_day).minus(1).valueOf(), h_second_bottom = (second_bottom) ? d_px_for_one_day.times(second_bottom).plus(20).valueOf() : 0, h_line_zero = (0 < min_negative_day) ? parseFloat(d_px_for_one_day.times(min_negative_day).plus(20).valueOf()) : 0; ; $(main_block_top).height(h_main_top); $(main_block_green_positive).height(h_main_green_positive); $(main_block_green_negative).height(h_main_green_negative); $(main_block_yellow_positive).height(h_main_yellow_positive); $(main_block_yellow_negative).height(h_main_yellow_negative); $(main_block_red_positive).height(h_main_red_positive); $(main_block_red_negative).height(h_main_red_negative); $(second_block_top).height(h_second_top); $(second_block_green).height(h_second_green); $(second_block_yellow).height(h_second_yellow); $(second_block_red).height(h_second_red); $(second_block_bottom).height(h_second_bottom); if (0 < min_negative_day) { if (0 < h_main_red_negative) { h_line_zero = new Decimal(h_line_zero).minus(2).valueOf(); } $('.line-zero').each(function () { $(this).css({bottom: h_line_zero + 'px', display: 'block'}); }); } else { $('.line-zero').each(function () { $(this).css({bottom: 0, display: 'none'}); }); } let h_line_s_mini = (0 < h_line_zero) ? new Decimal(h_line_zero).plus(d_px_for_one_day.times(stock_mini_day).plus(1).valueOf()) : d_px_for_one_day.times(Math.abs(stock_mini_day)).minus(2).valueOf(), h_line_s_avg = (0 < h_line_zero) ? new Decimal(h_line_zero).plus(d_px_for_one_day.times(stock_avg_day).plus(1).valueOf()) : d_px_for_one_day.times(Math.abs(stock_avg_day)).minus(1).valueOf(), h_line_s_maxi = (0 < h_line_zero) ? new Decimal(h_line_zero).plus(d_px_for_one_day.times(stock_maxi_day).plus(1).valueOf()) : d_px_for_one_day.times(Math.abs(stock_maxi_day)).minus(1).valueOf() ; $(line_stock_mini).height(h_line_s_mini); $(line_stock_avg).height(h_line_s_avg); $(line_stock_maxi).height(h_line_s_maxi); if (0 < h_main_green_positive) { $(main_block_green_positive).css({display: 'block'}); } else { $(main_block_green_positive).css({display: 'none'}); } if (0 < h_main_green_negative) { $(main_block_green_negative).css({display: 'block'}); } else { $(main_block_green_negative).css({display: 'none'}); } if (0 < h_main_yellow_positive) { $(main_block_yellow_positive).css({display: 'block'}); } else { $(main_block_yellow_positive).css({display: 'none'}); } if (0 < h_main_yellow_negative) { $(main_block_yellow_negative).css({display: 'block'}); } else { $(main_block_yellow_negative).css({display: 'none'}); } if (0 < h_main_red_positive) { $(main_block_red_positive).css({display: 'block'}); } else { $(main_block_red_positive).css({display: 'none'}); } if (0 < h_main_red_negative) { $(main_block_red_negative).css({display: 'block'}); } else { $(main_block_red_negative).css({display: 'none'}); } if (25 > h_line_s_avg - h_line_s_mini) { $(legend_left_stock_avg).hide(); $(legend_right_stock_avg).hide(); $(line_stock_avg).hide(); } else if (25 > h_line_s_maxi - h_line_s_avg) { $(legend_left_stock_avg).hide(); $(legend_right_stock_avg).hide(); $(line_stock_avg).hide(); } else { $(legend_left_stock_avg).show(); $(legend_right_stock_avg).show(); $(line_stock_avg).show(); } if (35 > h_line_s_maxi - h_line_s_mini) { $(legend_left_stock_maxi).hide(); $(legend_right_stock_maxi).hide(); $(line_stock_maxi).hide(); } else { $(legend_left_stock_maxi).show(); $(legend_right_stock_maxi).show(); $(line_stock_maxi).show(); } if (35 > h_main_yellow_positive) { $(main_block_yellow_positive).addClass('block-small'); } else { $(main_block_yellow_positive).removeClass('block-small'); } // Labels on graph let stock_mini_label = "{{ 'kanban_transfert.indicator_title.min_stock'|trans }}", stock_avg_label = "{{ 'kanban_transfert.indicator_title.avg_stock'|trans }}", stock_maxi_label = "{{ 'kanban_transfert.indicator_title.max_stock'|trans }}", days_label = "{{ 'days'|trans }}", cmj_label = "{{ 'kanban_transfert.indicator_title.consumption'|trans }}", kb_in_flow_label = "{{ 'kanban.indicator_title.kb_in_flow'|trans }}", loop_kb_label = "{{ 'kanban_transfert.indicator_title.loop_kb'|trans }}", gap_label = "{{ 'kanban_transfert.indicator_title.gap'|trans }}", ue_label = "{{ ((kanban.article.unite.code|length > 5) ? kanban.article.unite.code[:5] ~ '.' : kanban.article.unite.code) |lower }}", currency_label = "{{ currency|currencySymbol }}" ; // graph legends let label_green_day = main_le_positive; // let label_green_ue = Math.round10(parseFloat(new Decimal(main_le_positive).times(kanban_values.cmj).valueOf()),0); let label_green_ue = (kanban_values.le_ue) ? Math.round10(parseFloat(kanban_values.le_ue),0):Math.round10(parseFloat(new Decimal(main_le_positive).times(kanban_values.cmj).valueOf()),0); $(main_green_legend).html(Math.round10(label_green_day, -2) + ' ' + days_label + '
' + label_green_ue + ' ' + ue_label); let label_yellow_day = main_ta_positive; let label_yellow_ue = Math.round10(parseFloat(new Decimal(main_ta_positive).times(kanban_values.cmj).valueOf()), 0); $(main_yellow_legend).html(Math.round10(label_yellow_day, -2) + ' ' + days_label + '
' + label_yellow_ue + ' ' + ue_label); let label_red_day = main_sm_positive; let label_red_ue = Math.round10(parseFloat(new Decimal(main_sm_positive).times(kanban_values.cmj).valueOf()), 0); $(main_red_legend).html(Math.round10(label_red_day, -2) + ' ' + days_label + '
' + label_red_ue + ' ' + ue_label); $(legend_left_stock_mini).html( Math.round10(stock_mini_day, -2) + ' ' + days_label + '
' + Math.round10(stock_mini_qte, 0) + ' ' + ue_label); $(legend_right_stock_mini).html( stock_mini_label + '
' + Math.round10(stock_mini_val, -2) + ' ' + currency_label); $(legend_left_stock_avg).html( Math.round10(stock_avg_day, -2) + ' ' + days_label + '
' + Math.round10(stock_avg_qte, -2) + ' ' + ue_label); $(legend_right_stock_avg).html( stock_avg_label + '
' + Math.round10(stock_avg_val, -2) + ' ' + currency_label); $(legend_left_stock_maxi).html( Math.round10(stock_maxi_day, -2) + ' ' + days_label + '
' + Math.round10(stock_maxi_qte, -2) + ' ' + ue_label); $(legend_right_stock_maxi).html( stock_maxi_label + '
' + Math.round10(stock_maxi_val,-2) + ' ' + currency_label); //$(title_1).html(loop_kb_label + ' ' + kanban_values.le_decide + '/' + kanban_values.kb_decide); let value_le = (kanban_values.le_decide) ? kanban_values.le_decide : kanban_values.le_kb; $(title_1).html(loop_kb_label + ' ' + value_le + '/' + kanban_values.kb_decide); $(title_2).html("{{ kanban.inFlow }}" + ' ' + kb_in_flow_label); // $(title_3).html(gap_label + ' ' + Math.round10(new Decimal(kanban_values.kb_decide).minus(kanban_values.kb_calc).valueOf(), 0)) }