/**
*
* @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))
}