--- zabbix/include/classes/class.cchart.php 2012-07-26 09:32:34.855125847 +0000 +++ zabbix.dev/include/classes/class.cchart.php 2012-07-27 04:26:07.976081657 +0000 @@ -401,41 +401,44 @@ continue; } - for ($ci = 0; $ci < $this->sizeX; $ci++) { - /*foreach (array('min', 'max', 'avg') as $var_name) { - $shift_var_name = 'shift_'.$var_name; - $curr_shift = &$curr_data[$shift_var_name]; - $curr_var = &$curr_data[$var_name]; - $prev_shift = &$prev_data[$shift_var_name]; - $prev_var = &$prev_data[$var_name]; - $curr_shift[$ci] = $prev_var[$ci] + $prev_shift[$ci]; - }*/ - - // - // QUICK FIX - // + $ci = $this->sizeX-1; + + for ($x = $ci; $prev_data[count][$x] == 0 && $x > 0; $x--); + + if ($x != 0 && $x < $ci) { + + $max_delay = ZBX_GRAPH_MAX_SKIP_DELAY * $this->items[$j]['delay']; + $diff = abs($prev_data['clock'][$ci] - $prev_data['clock'][$x]); + + if ( $diff < $max_delay ) { + + for (; $prev_data[count][$ci] == 0; $ci--) { + foreach (array('min', 'max', 'avg') as $var_name) { + $shift_var_name = 'shift_'.$var_name; + $curr_data[$shift_var_name][$ci] = $prev_data[$shift_var_name][$ci] + $prev_data[$var_name][$ci]; + } + } + + } + + } + + for (; $ci >= 0; $ci--) { + if ($prev_data[count][$ci] == 0) { foreach (array('min', 'max', 'avg') as $var_name) { $shift_var_name = 'shift_'.$var_name; - $curr_shift = &$curr_data[$shift_var_name]; - $prev_shift = &$prev_data[$shift_var_name]; - - $curr_shift[$ci] = $prev_shift[$ci]; + $curr_data[$shift_var_name][$ci] = $prev_data[$shift_var_name][$ci]; } } else { foreach (array('min', 'max', 'avg') as $var_name) { $shift_var_name = 'shift_'.$var_name; - $curr_shift = &$curr_data[$shift_var_name]; - $prev_shift = &$prev_data[$shift_var_name]; - $prev_var = &$prev_data[$var_name]; - - $curr_shift[$ci] = $prev_var[$ci] + $prev_shift[$ci]; + $curr_data[$shift_var_name][$ci] = $prev_data[$shift_var_name][$ci] + $prev_data[$var_name][$ci]; } } - // - // END OF QUICK FIX - // + } + break; } }