Popravek decimalk pri grafih pri numericnih tipih vprasanj

This commit is contained in:
pero1203 2020-11-12 11:32:54 +01:00
parent 03b5a7c65a
commit e90d4ee37b

View File

@ -4333,6 +4333,8 @@ class SurveyChart {
elseif($spremenljivka['tip'] == 7 || $spremenljivka['tip'] == 22){ elseif($spremenljivka['tip'] == 7 || $spremenljivka['tip'] == 22){
$dataArray = array(); $dataArray = array();
$has_decimal = false;
$i=0; $i=0;
$N=0; $N=0;
if (count($spremenljivka['grids']) > 0) if (count($spremenljivka['grids']) > 0)
@ -4377,6 +4379,9 @@ class SurveyChart {
$tempArray['key'] = $vkey; $tempArray['key'] = $vkey;
if(floor($vkey) != $vkey)
$has_decimal = true;
// racunamo povprecje (za prvo variablo) // racunamo povprecje (za prvo variablo)
if($field == 0){ if($field == 0){
@ -4488,8 +4493,8 @@ class SurveyChart {
array_multisort($tmp, SORT_NUMERIC, SORT_ASC, $dataArray); array_multisort($tmp, SORT_NUMERIC, SORT_ASC, $dataArray);
} }
$max = (int)$dataArray[count($dataArray,0)-1]['variable']; $max = (double)$dataArray[count($dataArray,0)-1]['variable'];
$min = (int)$dataArray[0]['variable']; $min = (double)$dataArray[0]['variable'];
$stIntervalov = ((int)$settings['interval'] == 0 ? 10 : (int)$settings['interval']); $stIntervalov = ((int)$settings['interval'] == 0 ? 10 : (int)$settings['interval']);
@ -4504,14 +4509,16 @@ class SurveyChart {
else{ else{
// Nastavimo custom zgornjo mejo skale (razen v primeru ko ne ignoriramo vrednosti ki padejo ven in ce je max vnos vecji od nastavljenega max) // Nastavimo custom zgornjo mejo skale (razen v primeru ko ne ignoriramo vrednosti ki padejo ven in ce je max vnos vecji od nastavljenega max)
if($settings['max'] != '' /*&& ($settings['open_up'] == 0 || (int)$settings['max'] > $max)*/) if($settings['max'] != '' /*&& ($settings['open_up'] == 0 || (int)$settings['max'] > $max)*/)
$max = (int)$settings['max']; $max = (double)$settings['max'];
// Nastavimo custom spodnjo mejo skale (razen v primeru ko ne ignoriramo vrednosti ki padejo ven in ce je min vnos manjsi od nastavljenega min) // Nastavimo custom spodnjo mejo skale (razen v primeru ko ne ignoriramo vrednosti ki padejo ven in ce je min vnos manjsi od nastavljenega min)
if($settings['min'] != '' /*&& ($settings['open_down'] == 0 || (int)$settings['min'] < $min)*/) if($settings['min'] != '' /*&& ($settings['open_down'] == 0 || (int)$settings['min'] < $min)*/)
$min = (int)$settings['min']; $min = (double)$settings['min'];
$stIntervalov = ($stIntervalov == -1 ? $max-$min : $stIntervalov); $stIntervalov = ($stIntervalov == -1 ? $max-$min : $stIntervalov);
$part = ($max-$min) / $stIntervalov; $part = ($max-$min) / $stIntervalov;
if(!$has_decimal)
$part = ($part < 1) ? 1 : round($part); $part = ($part < 1) ? 1 : round($part);
} }
@ -4556,9 +4563,16 @@ class SurveyChart {
$minVal = $limits['interval_'.$interval]['min']; $minVal = $limits['interval_'.$interval]['min'];
} }
// Ce imamo osnovne intervale (racunamo sproti) // Ce imamo osnovne intervale (racunamo sproti)
else{
// Ce imamo decimalke
if($has_decimal){
$maxVal = ($interval < ($stIntervalov-1) ? $min-0.01 + (($interval+1) * $part) : $max);
$minVal = ($interval > 0 ? $min + ($interval * $part) : $min);
}
else{ else{
$maxVal = ($interval < ($stIntervalov-1) ? $min + (($interval+1) * $part) : $max); $maxVal = ($interval < ($stIntervalov-1) ? $min + (($interval+1) * $part) : $max);
$minVal = ($interval > 0 ? $min + ($interval * $part) + 1 : $min); $minVal = ($interval > 0 ? $min + ($interval * $part) + 1 : $min);
}
} }
// prekinemo ce zaradi zaokrozevanja pride do min > max // prekinemo ce zaradi zaokrozevanja pride do min > max
@ -4661,8 +4675,15 @@ class SurveyChart {
} }
// Ce imamo osnovne intervale (racunamo sproti) // Ce imamo osnovne intervale (racunamo sproti)
else{ else{
// Ce imamo decimalke
if($has_decimal){
$maxVal = ($interval < ($stIntervalov-1) ? $min-0.01 + (($interval+1) * $part) : $max);
$minVal = ($interval > 0 ? $min + ($interval * $part) : $min);
}
else{
$maxVal = ($interval < ($stIntervalov-1) ? $min + (($interval+1) * $part) : $max); $maxVal = ($interval < ($stIntervalov-1) ? $min + (($interval+1) * $part) : $max);
$minVal = ($interval > 0 ? $min + ($interval * $part) + 1 : $min); $minVal = ($interval > 0 ? $min + ($interval * $part) + 1 : $min);
}
} }
// prekinemo ce zaradi zaokrozevanja pride do min > max // prekinemo ce zaradi zaokrozevanja pride do min > max