Skavti - radar chart

This commit is contained in:
pero1203 2021-02-04 14:48:43 +01:00
parent bac4358a13
commit dab302e1f1
3 changed files with 133 additions and 22 deletions

View File

@ -1228,7 +1228,7 @@ class BodyController extends Controller
// SKAVTI - prikaz povzetka odgovorov in grafa
global $mysql_database_name;
//if($mysql_database_name == '1ka' && get('anketa') == '37')
//if($mysql_database_name == '1ka' && get('anketa') == '64'){
if($mysql_database_name == '1ka' && (get('anketa') == '293926' || get('anketa') == '314856')){
echo '<div id="skavti_answers">';
Display::getInstance()->displaySkavtiAnswers();
@ -1242,9 +1242,7 @@ class BodyController extends Controller
//$user_settings = GDPR::getSurveySettings(get('anketa'));
echo '<div class="naslov">';
echo '<p>'.self::$lang['srv_gdpr_concl'].'</p>';
echo '</div>';
}

View File

@ -582,14 +582,7 @@ class DisplayController extends Controller
$vprasanje_number = $vprasanja[$spr_id];
echo '<div class="spremenljivka">';
echo ' <div class="naslov">'.$pohvale_besedilo[$vprasanje_number].'</div>';
/*echo ' <div class="naslov">'.$vprasanja[$vrednost['spr_id']]['spr_naslov'].'</div>';
echo ' <div class="variable_holder">';
echo $vrednost['naslov'] . '('.$pohvala_vrednost.')';
echo ' </div>';*/
echo '</div>';
$i++;
@ -608,18 +601,94 @@ class DisplayController extends Controller
$vprasanje_number = $vprasanja[$spr_id];
echo '<div class="spremenljivka">';
echo ' <div class="naslov">'.$graje_besedilo[$vprasanje_number].'</div>';
/*echo ' <div class="naslov">'.$vprasanja[$vrednost['spr_id']]['spr_naslov'].'</div>';
echo ' <div class="variable_holder">';
echo $vrednost['naslov'] . '('.$graja_vrednost.')';
echo ' </div>';*/
echo '</div>';
$i++;
}
$this->displaySkavtiRadar();
}
// SKAVTI - prikaze graf pajkovo mrezo
private function displaySkavtiRadar(){
// Include knjiznice Chart.JS
echo '<script src="'.self::$site_url.'/main/survey/js/ChartJS/Chart.min.js"></script>';
echo '<script src="'.self::$site_url.'/main/survey/js/ChartJS/chart_init.js?v=3"></script>';
// Priprava podatkov za radar
$radar_data = array();
$sqlB = sisplet_query("SELECT i.label, i.id
FROM srv_if i, srv_branching b
WHERE b.ank_id='".get('anketa')."' AND i.id=b.element_if
AND i.tip='1'
");
if (!$sqlB) echo mysqli_error($GLOBALS['connect_db']);
// Loop cez bloke (stranica radarja)
while($rowB = mysqli_fetch_array($sqlB)){
// Dobimo vsa ustrezna vprasanja z odgovori v tem bloku
$sqlQ = sisplet_query("SELECT s.id AS spr_id, s.variable AS spr_variable, v.naslov, v.variable, vd.*
FROM srv_branching b, srv_spremenljivka s, srv_vrednost v, srv_data_vrednost_active vd
WHERE b.ank_id='".get('anketa')."' AND b.parent='".$rowB['id']."' AND b.element_spr=s.id
AND s.variable LIKE 'R%'
AND vd.usr_id='".get('usr_id')."' AND vd.spr_id=s.id
AND v.id=vd.vre_id
");
if (!$sqlQ) echo mysqli_error($GLOBALS['connect_db']);
// Loop cez vprasanja in odgovore v bloku
$count_answers_pohvale = 0;
$count_answers_graje = 0;
while($rowQ = mysqli_fetch_array($sqlQ)){
// Pohvala
if((int)$rowQ['variable'] >= 1 && (int)$rowQ['variable'] <= 199){
$count_answers_pohvale++;
}
// Graja
elseif((int)$rowQ['variable'] >= 201 && (int)$rowQ['variable'] <= 399){
$count_answers_graje++;
}
}
$count_answers_all = (int)$count_answers_pohvale + (int)$count_answers_graje;
if($count_answers_all > 0){
$radar_data[$rowB['label']]['all'] = $count_answers_all;
$radar_data[$rowB['label']]['pohvale'] = $count_answers_pohvale;
$radar_data[$rowB['label']]['graje'] = $count_answers_graje;
}
}
echo '<pre>' . var_export($radar_data, true) . '</pre>';
$labels = array();
$values = array();
$i = 0;
foreach($radar_data as $radar_label => $radar_values){
$labels[$i] = $radar_label;
$pohvale[$i] = round($radar_values['pohvale'] / $radar_values['all'] * 10);
$graje[$i] = round($radar_values['graje'] / $radar_values['all'] * 10);
$i++;
}
$json_labels = json_encode($labels);
$json_pohvale = json_encode($pohvale);
$json_graje = json_encode($graje);
echo '<br><h2 style="padding-left: 20px;">Pajkova mreža</h2>';
// Izris grafa
echo '<div class="spremenljivka radar_chart" id="skavti_radar_chart_holder">';
echo '<canvas id="skavti_radar_chart" class="chart"></canvas>';
echo '<script>$(document).ready(function(){ init_skavti_radar('.$json_labels.', '.$json_pohvale.', '.$json_graje.'); })</script>';
echo '</div>';
}

View File

@ -214,3 +214,47 @@ function init_excell_matrix(x_axis, y_axis, rad){
}
});
}
// Funkcija za poseben modul radar chart - skavti
function init_skavti_radar(labels, pohvale, graje){
// Inicializiramo graf
var ctx = document.getElementById("skavti_radar_chart");
// Podatki grafa
var data = {
labels: labels,
datasets: [{
data: pohvale,
label: "Pohvale",
backgroundColor: "rgba(30,136,229,0.6)"
},
{
data: graje,
label: "Graje",
backgroundColor: "rgba(200,0,0,0.5)"
}]
};
// Nastavitve grafa
var options = {
scale: {
angleLines: {
display: false
},
ticks: {
max: 10,
min: 0,
stepSize: 1
},
}
};
/*Chart.defaults.global.defaultFontSize = 15;*/
var radarChart = new Chart(ctx, {
type: 'radar',
data: data,
options: options
});
}