crosstab, ttest, povprecje)
private $counter; // kateri graf po vrsti izrisemo (ce jih je vec)
private $crossCheck = false; // ce imamo odvisno spremenljivko pri crosstabu checkbox jo obravnavamo posebej
public $skin = '1ka'; # nastavitev skina za grafe
public $fontSize = 8; # velikost fonta v grafih
public $quality = 1; # kvaliteta (sirina) slike (1 -> 800px, 2 -> 1600px)
public $numerusText = ''; // dodaten text pri numerusu (veljavni, navedbe)
private $crosstabVars; // kateri graf po vrsti izrisemo (ce jih je vec)
public $break_forSpr; // break neodvisna spremenljivka
public $break_frequencys; // break izracunane frekvence
public $break_spremenljivka; // break odvisna spremenljivka
public $break_crosstab = 0; // break crosstab tabela
public $settings = array(); // nastavitve grafa
public $settings_mode=0; // zavihek nastavitev (osnovno/napredno)
public $returnChartAsHtml = false; # ali vrne rezultat analiz kot html ali ga izpiše
public $isArchive = false; # nastavimo na true če smo v arhivu
public $chartArchiveTime = ''; # unikatnost
private $sessionData; // podatki ki so bili prej v sessionu - za nastavitve, ki se prenasajo v izvoze...
/**
* Konsturktor
*
* @param int $anketa
*/
function __construct($anketa, $classInstance=null, $podstran='crosstab', $counter=0) {
global $global_user_id, $site_path;
$this->folder = $site_path . EXPORT_FOLDER.'/';
$this->anketa = $anketa;
if ((int)$this->anketa > 0) { # če je poadan anketa ID
$this->classInstance = $classInstance;
$this->podstran = $podstran;
$this->counter = $counter;
#inicializiramo SurveyAnalasys
SurveyAnalysis::Init($this->anketa);
//SurveyAnalysis::$setUpJSAnaliza = false;
#inicializiramo class za datoteke
$this->SDF = SurveyDataFile::get_instance();
$this->SDF->init($this->anketa);
$this->headFileName = $this->SDF->getHeaderFileName();
$this->dataFileName = $this->SDF->getDataFileName();
$this->dataFileStatus = $this->SDF->getStatus();
if ($this->dataFileStatus == FILE_STATUS_NO_DATA
|| $this->dataFileStatus == FILE_STATUS_NO_FILE
|| $this->dataFileStatus == FILE_STATUS_SRV_DELETED){
exit;
return false;
}
//polovimo podatke o nastavitvah trenutnega profila (missingi..)
SurveyAnalysis::$missingProfileData = SurveyMissingProfiles::getProfile(SurveyAnalysis::$currentMissingProfile);
#preberemo HEADERS iz datoteke
SurveyAnalysis::$_HEADERS = unserialize(file_get_contents($this->headFileName));
# odstranimo sistemske variable tipa email, ime, priimek, geslo
SurveyAnalysis::removeSystemVariables();
# polovimo frekvence
SurveyAnalysis::getFrequencys();
// preberemo nastavitve iz baze (prej v sessionu)
SurveyUserSession::Init($this->anketa);
$this->sessionData = SurveyUserSession::getData();
}
else {
//die("Napaka!");
}
if ( SurveyInfo::getInstance()->SurveyInit($this->anketa))
{
$this->uid = $global_user_id;
SurveyUserSetting::getInstance()->Init($this->anketa, $this->uid);
}
$this->skin = SurveyUserSetting :: getInstance()->getSettings('default_chart_profile_skin');
$this->fontSize = SurveyDataSettingProfiles :: getSetting('chartFontSize');
$this->quality = (isset($this->sessionData['charts']['hq']) && $this->sessionData['charts']['hq'] == 1) ? 3 : 1;
}
function display(){
global $site_path;
global $lang;
$chartID = $this->getChartID();
switch($this->podstran){
case 'crosstab':
echo '
';
$this->displayCrosstabChart($chartID);
echo '
';
break;
case 'ttest':
echo '';
$this->displayTTestChart($chartID);
echo '
';
break;
case 'mean':
echo '';
$this->displayMeanChart($chartID);
echo '
';
break;
case 'break':
echo '';
$this->displayBreakChart($chartID);
echo '
';
break;
}
}
// Izrisemo graf v crosstabih
function displayCrosstabChart($chartID){
global $site_path;
global $lang;
// preverimo ce imamo checkbox v odvisni spr - imamo posebne nastavitve
if (count($this->classInstance->variabla2) > 0) {
foreach ($this->classInstance->variabla2 AS $key => $var) {
$spr_tip = $this->classInstance->_HEADERS[$var['spr']]['tip'];
if ( $spr_tip == 2 || $spr_tip == 16 ) {
$this->crossCheck = true;
}
}
}
if (count($this->classInstance->variabla1) > 0 && $is_check == false ) { # če še ni bil checkbox
foreach ($this->classInstance->variabla1 AS $key => $var) {
$spr_tip = $this->classInstance->_HEADERS[$var['spr']]['tip'];
if ( $spr_tip == 2 || $spr_tip == 16 ) {
$this->crossCheck = true;
}
}
}
// zaenkrat ne upoastevamo
$this->crossCheck = false;
// defult nastavitve posameznega grafa
if(isset($this->sessionData['crosstab_charts'][$chartID]))
$this->settings = $this->sessionData['crosstab_charts'][$chartID];
else
$this->settings = $this->getDefaultSettings();
// Napolnimo podatke za graf
$DataSet = $this->getCrosstabDataSet($chartID, $this->settings);
// Cache
$Cache = new pCache(dirname(__FILE__).'/../pChart/Cache/');
$ID = $this->generateChartId($chartID, $this->settings, $DataSet->GetNumerus());
// Ce se nimamo zgeneriranega grafa
if( !$Cache->isInCache($ID, $DataSet->GetData()) ){
switch($this->settings['type']){
// Sestavljeni stolpec - horizontalen
case 0:
$Test = $this->createHorStructBars($DataSet);
break;
// Sestavljeni stolpec - vertikalen
case 1:
$Test = $this->createVerStructBars($DataSet);
break;
// Horizontalni stolpci
case 3:
$Test = $this->createHorBars($DataSet, 1);
break;
// Navpicni stolpci
case 4:
$Test = $this->createVerBars($DataSet, 1);
break;
// Pie chart
case 2:
$Test = $this->createPie($DataSet, $this->settings['show_legend']);
break;
// Pie chart
case 5:
$Test = $this->create3DPie($DataSet, $this->settings['show_legend']);
break;
}
// Shranimo v cache
$Cache->WriteToCache($ID,$DataSet->GetData(),$Test);
}
// dobimo ime slike c cache-u
$imgName = $Cache->GetHash($ID,$DataSet->GetData());
if ($this->isArchive == false ) {
$imgPath = 'pChart/Cache/'.$imgName;
} else {
$imgPath = SAA_FOLDER.'/pChart/'.$this->anketa.'_'.$this->chartArchiveTime.'_'.$imgName;
copy('pChart/Cache/'.$imgName, $imgPath);
}
// zapisemo ime slike v session za izvoze
$this->settings['name'] = $imgName;
$this->sessionData['crosstab_charts'][$chartID] = $this->settings;
// Zapisemo se variable v session
$this->sessionData['crosstab_charts'][$chartID]['spr1'] = $this->classInstance->variabla1[0];
$this->sessionData['crosstab_charts'][$chartID]['spr2'] = $this->classInstance->variabla2[0];
// Naslov posameznega grafa
echo '';
if($this->settings['type'] == 1 || $this->settings['type'] == 4){
$title = '
';
$title .= ''.$this->crosstabVars[0] . ' / ' . $this->crosstabVars[1].' ';
$title .= '
';
}
else{
$title = $this->crosstabVars[0];
}
echo $title;
echo '
';
echo '';
// dodamo timestamp ker browser shrani sliko v cache in jo v dolocenih primerih ajaxa ne refresha
echo '
';
echo '
';
echo '';
$this->displaySingleSettings($chartID, $this->settings);
echo '
';
// Zvezdica za vkljucitev v porocilo
$variables1 = $this->classInstance->getSelectedVariables(2);
$variables2 = $this->classInstance->getSelectedVariables(1);
$counter = 0;
$var1 = array();
$var2 = array();
foreach ($variables1 AS $v_first) {
foreach ($variables2 AS $v_second) {
if($counter == $this->counter){
$var1 = $v_first;
$var2 = $v_second;
break 2;
}
else
$counter++;
}
}
$spr2 = $var1['seq'].'-'.$var1['spr'].'-'.$var1['grd'];
$spr1 = $var2['seq'].'-'.$var2['spr'].'-'.$var2['grd'];
SurveyAnalysis::addCustomReportElement($type=5, $sub_type=1, $spr1, $spr2);
// Shranimo spremenjene nastavitve v bazo
SurveyUserSession::saveData($this->sessionData);
}
// Izrisemo graf v ttestu
function displayTTestChart($chartID){
global $site_path;
global $lang;
// defult nastavitve posameznega grafa
if(isset($this->sessionData['ttest_charts'][$chartID]))
$this->settings = $this->sessionData['ttest_charts'][$chartID];
else
$this->settings = $this->getDefaultSettings();
// Napolnimo podatke za graf
$DataSet = $this->getTTestDataSet($chartID, $this->settings);
// Cache
$Cache = new pCache(dirname(__FILE__).'/../pChart/Cache/');
$ID = $this->generateChartId($chartID, $this->settings, $DataSet->GetNumerus());
// Ce se nimamo zgeneriranega grafa
if( !$Cache->isInCache($ID, $DataSet->GetData()) ){
switch($this->settings['type']){
// Horizontalni stolpci
case 0:
$Test = $this->createHorBars($DataSet, $legend=0);
break;
}
// Shranimo v cache
$Cache->WriteToCache($ID,$DataSet->GetData(),$Test);
}
// dobimo ime slike c cache-u
$imgName = $Cache->GetHash($ID,$DataSet->GetData());
if ($this->isArchive == false) {
$imgPath = 'pChart/Cache/'.$imgName;
} else {
$imgPath = SAA_FOLDER.'/pChart/'.$this->anketa.'_'.$this->chartArchiveTime.'_'.$imgName;
copy('pChart/Cache/'.$imgName, $imgPath);
}
// zapisemo ime slike v session za izvoze
$this->settings['name'] = $imgName;
$this->sessionData['ttest_charts'][$chartID] = $this->settings;
// Naslov posameznega grafa
echo '';
$title = $lang['srv_chart_ttest_title'].':
';
$title .= '
';
$title .= ''.$this->crosstabVars[0] . ' / ' . $this->crosstabVars[1].' ';
$title .= '
';
echo $title;
echo '
';
echo '';
// dodamo timestamp ker browser shrani sliko v cache in jo v dolocenih primerih ajaxa ne refresha
echo '
';
echo '
';
echo '';
$this->displaySingleSettings($chartID, $this->settings);
echo '
';
// Zvezdica za vkljucitev v porocilo
$spid1 = $this->sessionData['ttest']['variabla'][0]['spr'];
$seq1 = $this->sessionData['ttest']['variabla'][0]['seq'];
$grid1 = $this->sessionData['ttest']['variabla'][0]['grd'];
$sub1 = $this->sessionData['ttest']['sub_conditions'][0];
$sub2 = $this->sessionData['ttest']['sub_conditions'][1];
$spid2 = $this->sessionData['ttest']['spr2'];
$seq2 = $this->sessionData['ttest']['seq2'];
$grid2 = $this->sessionData['ttest']['grid2'];
$spr1 = $seq2.'-'.$spid2.'-'.$grid2.'-'.$sub1.'-'.$sub2;
$spr2 = $seq1.'-'.$spid1.'-'.$grid1;
SurveyAnalysis::addCustomReportElement($type=7, $sub_type=1, $spr1, $spr2);
// Shranimo spremenjene nastavitve v bazo
SurveyUserSession::saveData($this->sessionData);
}
// Klicemo pri pdf/rtf izpisih da se pravilno nastavi session
function setTTestChartSession(){
// Zgeneriramo id vsake tabele (glede na izbrani spremenljivki za generiranje)
$spid1 = $this->sessionData['ttest']['variabla'][0]['spr'];
$seq1 = $this->sessionData['ttest']['variabla'][0]['seq'];
$grid1 = $this->sessionData['ttest']['variabla'][0]['grd'];
$sub1 = $this->sessionData['ttest']['sub_conditions'][0];
$sub2 = $this->sessionData['ttest']['sub_conditions'][1];
$chartID = $sub1.'_'.$sub2.'_'.$spid1.'_'.$seq1.'_'.$grid1;
// defult nastavitve posameznega grafa
if(isset($this->sessionData['ttest_charts'][$chartID]))
$this->settings = $this->sessionData['ttest_charts'][$chartID];
else
$this->settings = $this->getDefaultSettings();
// Napolnimo podatke za graf
$DataSet = $this->getTTestDataSet($chartID, $this->settings);
// Cache
$Cache = new pCache(dirname(__FILE__).'/../pChart/Cache/');
$ID = $this->generateChartId($chartID, $this->settings, $DataSet->GetNumerus());
// dobimo ime slike c cache-u
$imgName = $Cache->GetHash($ID,$DataSet->GetData());
// zapisemo ime slike v session za izvoze
$this->settings['name'] = $imgName;
$this->sessionData['ttest_charts'][$chartID] = $this->settings;
// Shranimo spremenjene nastavitve v bazo
SurveyUserSession::saveData($this->sessionData);
}
// Izrisemo graf v povprecjih
function displayMeanChart($chartID){
global $site_path;
global $lang;
// defult nastavitve posameznega grafa
if(isset($this->sessionData['mean_charts'][$chartID]))
$this->settings = $this->sessionData['mean_charts'][$chartID];
else
$this->settings = $this->getDefaultSettings();
// Napolnimo podatke za graf
$DataSet = $this->getMeanDataSet($chartID, $this->settings);
// Cache
$Cache = new pCache(dirname(__FILE__).'/../pChart/Cache/');
$ID = $this->generateChartId($chartID, $this->settings, $DataSet->GetNumerus());
// Ce se nimamo zgeneriranega grafa
if( !$Cache->isInCache($ID, $DataSet->GetData()) ){
switch($this->settings['type']){
// Povprecja - horizontalni stolpci
case 0:
$Test = $this->createHorBars($DataSet, $legend=0, $fixedScale=1);
break;
// Povprecja - radar
case 1:
$Test = $this->createRadar($DataSet, 1, $fixedScale=1);
break;
// Povprecja - vertikalna crta
case 2:
$Test = $this->createVerLine($DataSet, $legend=0, $fixedScale=1);
break;
}
// Shranimo v cache
$Cache->WriteToCache($ID,$DataSet->GetData(),$Test);
}
// dobimo ime slike c cache-u
$imgName = $Cache->GetHash($ID,$DataSet->GetData());
if ($this->isArchive == false) {
$imgPath = 'pChart/Cache/'.$imgName;
} else {
$imgPath = SAA_FOLDER.'/pChart/'.$this->anketa.'_'.$this->chartArchiveTime.'_'.$imgName;
copy('pChart/Cache/'.$imgName, $imgPath);
}
// zapisemo ime slike v session za izvoze
$this->settings['name'] = $imgName;
$this->sessionData['mean_charts'][$chartID] = $this->settings;
// Naslov posameznega grafa
$title = '';
echo '';
echo $title;
echo '
';
echo '';
// dodamo timestamp ker browser shrani sliko v cache in jo v dolocenih primerih ajaxa ne refresha
echo '
';
echo '
';
echo '';
$this->displaySingleSettings($chartID, $this->settings);
echo '
';
// Zvezdica za vkljucitev v porocilo
$variables1 = $this->classInstance->getSelectedVariables(1);
$variables2 = $this->classInstance->getSelectedVariables(2);
$pos1 = floor($this->counter / count($variables2));
$pos2 = $this->counter % count($variables2);
$spr1 = $variables1[$pos1]['seq'].'-'.$variables1[$pos1]['spr'].'-'.$variables1[$pos1]['grd'];
$spr2 = $variables2[$pos2]['seq'].'-'.$variables2[$pos2]['spr'].'-'.$variables2[$pos2]['grd'];
SurveyAnalysis::addCustomReportElement($type=6, $sub_type=1, $spr1, $spr2);
// Shranimo spremenjene nastavitve v bazo
SurveyUserSession::saveData($this->sessionData);
}
// Izrisemo graf v breaku
function displayBreakChart($chartID){
global $site_path;
global $lang;
$tip = $this->break_spremenljivka['tip'];
$skala = $this->break_spremenljivka['skala'];
// Izrisemo poseben break graf (multigrid, multicheckbox, multitext, multinumber)
if( in_array($tip, array(7,17,18,20,)) || ($tip == 6 && $skala == 0) ){
// defult nastavitve posameznega grafa
if(isset($this->sessionData['break_charts'][$chartID]))
$this->settings = $this->sessionData['break_charts'][$chartID];
else
$this->settings = $this->getDefaultSettings();
// Pri number ne dovolimo radarja in ne sortiranja po kategorijah
if($tip == 7){
if($this->settings['type'] == 0)
$this->settings['type'] = 1;
if($this->settings['sort'] == 1)
$this->settings['sort'] = 0;
}
// Napolnimo podatke za graf
$DataSet = $this->getBreakDataSet($chartID, $this->settings);
// Cache
$Cache = new pCache(dirname(__FILE__).'/../pChart/Cache/');
$ID = $this->generateChartId($chartID, $this->settings, $DataSet->GetNumerus());
// Ce se nimamo zgeneriranega grafa
if( !$Cache->isInCache($ID, $DataSet->GetData()) ){
switch($this->settings['type']){
// Povprecja - radar
case 0:
$Test = $this->createRadar($DataSet, 1);
break;
// Povprecja - vertikalni stolpci
case 1:
$Test = $this->createVerBars($DataSet, 1);
break;
// Povprecja - horizontalni stolpci
case 2:
$Test = $this->createHorBars($DataSet, 1);
break;
// Povprecja - linijski graf
case 3:
$Test = $this->createLine($DataSet, 1);
break;
}
// Shranimo v cache
$Cache->WriteToCache($ID,$DataSet->GetData(),$Test);
}
// dobimo ime slike c cache-u
$imgName = $Cache->GetHash($ID,$DataSet->GetData());
if ($this->isArchive == false) {
$imgPath = 'pChart/Cache/'.$imgName;
} else {
$imgPath = SAA_FOLDER.'/pChart/'.$this->anketa.'_'.$this->chartArchiveTime.'_'.$imgName;
copy('pChart/Cache/'.$imgName, $imgPath);
}
// zapisemo ime slike v session za izvoze
$this->settings['name'] = $imgName;
$this->sessionData['break_charts'][$chartID] = $this->settings;
// Zapisemo se variable v session
$this->sessionData['break_charts'][$chartID]['forSpr'] = $this->break_forSpr;
$this->sessionData['break_charts'][$chartID]['frequencys'] = $this->break_frequencys;
$this->sessionData['break_charts'][$chartID]['spremenljivka'] = $this->break_spremenljivka;
// Naslov posameznega grafa
echo '';
//var_dump($this->break_spremenljivka);
$title = $this->break_spremenljivka['naslov'] . ' ('.$this->break_spremenljivka['variable'].')';
if($tip == 20){
$gkey = $this->break_spremenljivka['break_sub_table']['key'];
$grid = $this->break_spremenljivka['grids'][$gkey];
$subtitle = $grid['naslov'] . ' ('.$grid['variable'].')';
$title .= ' '.$subtitle;
}
echo $title;
echo '
';
echo '';
// dodamo timestamp ker browser shrani sliko v cache in jo v dolocenih primerih ajaxa ne refresha
echo '
';
echo '
';
echo '';
$this->displaySingleSettings($chartID, $this->settings);
echo '
';
// Zvezdica za vkljucitev v porocilo - Multinumber
if($tip == 20){
// Preberemo za kateri grid izrisujemo tabelo
$gkey = $this->break_spremenljivka['break_sub_table']['key'];
$spr1 = $this->sessionData['break']['seq'].'-'. $this->sessionData['break']['spr'].'-undefined';
$spr2 = $this->break_spremenljivka['grids'][$gkey]['variables'][0]['sequence'].'-'.$this->break_spremenljivka['id'].'-undefined';
SurveyAnalysis::Init($this->anketa);
SurveyAnalysis::addCustomReportElement($type=9, $sub_type=1, $spr1, $spr2);
}
// Zvezdica za vkljucitev v porocilo - multigrid, number, vsota, ranking
else{
$spr1 = $this->sessionData['break']['seq'].'-'. $this->sessionData['break']['spr'].'-undefined';
$spr2 = $this->break_spremenljivka['grids'][0]['variables'][0]['sequence'].'-'.$this->break_spremenljivka['id'].'-undefined';
SurveyAnalysis::Init($this->anketa);
SurveyAnalysis::addCustomReportElement($type=9, $sub_type=1, $spr1, $spr2);
}
// Shranimo spremenjene nastavitve v bazo
SurveyUserSession::saveData($this->sessionData);
}
// Izrisemo crosstab graf
else{
$this->podstran = 'crosstab';
$this->displayCrosstabChart($chartID);
}
}
// Napolnimo podatke za crosstab graf
public function getCrosstabDataSet($chartID, $settings, $refresh=0){
global $site_path;
global $lang;
$dataArray = array();
$dataPercentArray = array();
$gridArray = array();
$variableArray = array();
if ($this->classInstance->getSelectedVariables(1) !== null && $this->classInstance->getSelectedVariables(2) !== null) {
$variables1 = $this->classInstance->getSelectedVariables(2);
$variables2 = $this->classInstance->getSelectedVariables(1);
$counter = 0;
foreach ($variables1 AS $v_first) {
foreach ($variables2 AS $v_second) {
// izrisemo graf ki ustreza vrstnemu redu
if($counter == $this->counter){
$crosstabs = null;
$crosstabs_value = null;
$crosstabs = $this->classInstance->createCrostabulation($v_first, $v_second);
$crosstabs_value = $crosstabs['crosstab'];
# podatki spremenljivk
$spr1 = $this->classInstance->_HEADERS[$v_first['spr']];
$spr2 = $this->classInstance->_HEADERS[$v_second['spr']];
$grid1 = $spr1['grids'][$v_first['grd']];
$grid2 = $spr2['grids'][$v_second['grd']];
#število vratic in število kolon
$cols = count($crosstabs['options1']);
$rows = count($crosstabs['options2']);
# ali prikazujemo vrednosti variable pri spremenljivkah
$show_variables_values = $this->classInstance->doValues;
# za multicheckboxe popravimo naslov, na podtip
$sub_q1 = null;
$sub_q2 = null;
if ($spr1['tip'] == '6' || $spr1['tip'] == '7' || $spr1['tip'] == '16' || $spr1['tip'] == '17' || $spr1['tip'] == '18' || $spr1['tip'] == '19' || $spr1['tip'] == '20' || $spr1['tip'] == '21' ) {
foreach ($spr1['grids'] AS $grid) {
foreach ($grid['variables'] AS $variable) {
if ($variable['sequence'] == $v_first['seq']) {
$sub_q1 .= strip_tags($spr1['naslov']);
if ($show_variables_values == true ) {
$sub_q1 .= ' ('.strip_tags($spr1['variable']).')';
}
if ($spr1['tip'] == '16') {
$sub_q1 .= ' '. strip_tags($grid1['naslov']) . ($show_variables_values == true ? ' (' . strip_tags($grid1['variable']) . ')' : '');
} else {
$sub_q1 .= ' ' . strip_tags($variable['naslov']) . ($show_variables_values == true ? ' (' . strip_tags($variable['variable']) . ')' : '');
}
}
}
}
}
if ($sub_q1 == null) {
$sub_q1 .= strip_tags($spr1['naslov']);
$sub_q1 .= ($show_variables_values == true ? ' ('.strip_tags($spr1['variable']).')' : '');
}
if ($spr2['tip'] == '6' || $spr2['tip'] == '7' || $spr2['tip'] == '16' || $spr2['tip'] == '17' || $spr2['tip'] == '18' || $spr2['tip'] == '19' || $spr2['tip'] == '20' || $spr2['tip'] == '21') {
foreach ($spr2['grids'] AS $grid) {
foreach ($grid['variables'] AS $variable) {
if ($variable['sequence'] == $v_second['seq']) {
$sub_q2 .= strip_tags($spr2['naslov']);
if ($show_variables_values == true) {
$sub_q2 .= ' ('.strip_tags($spr2['variable']).')';
}
if ($spr2['tip'] == '16') {
$sub_q2.= ' ' . strip_tags($grid2['naslov']) . ($show_variables_values == true ? ' (' . strip_tags($grid2['variable']) . ')' : '');
} else {
$sub_q2.= ' ' . strip_tags($variable['naslov']) . ($show_variables_values == true ? ' (' . strip_tags($variable['variable']) . ')' : '');
}
}
}
}
}
if ($sub_q2 == null) {
$sub_q2 .= strip_tags($spr2['naslov']);
$sub_q2 .= ($show_variables_values == true ? ' ('.strip_tags($spr2['variable']).')' : '');
}
// ZGORNJA LABELA - NEODVISNA
//$sub_q2;
// STRANSKA LABELA - ODVISNA
//$sub_q1;
$this->crosstabVars = array($sub_q1, $sub_q2);
// NASLOVI GRIDOV
$grid_cnt=0;
if (count($crosstabs['options1']) > 0 ) {
foreach ($crosstabs['options1'] as $ckey1 =>$crossVariabla) {
$grid_cnt++;
#ime variable
$gridArray[$grid_cnt] = $crossVariabla['naslov'];
/*echo $crossVariabla['naslov'];
# če ni tekstovni odgovor dodamo key
if ($crossVariabla['type'] != 't' && $show_variables_values == true) {
if ($crossVariabla['vr_id'] == null ) {
echo ' ( '.$ckey1.' )';
} else {
echo ' ( '.$crossVariabla['vr_id'].' )';
}
}*/
}
}
$var_cnt=0;
if (count($crosstabs['options2']) > 0) {
foreach ($crosstabs['options2'] as $ckey2 =>$crossVariabla2) {
$var_cnt++;
// NASLOVI VARIABEL
$variableArray[$var_cnt] = $crossVariabla2['naslov'];
/*echo $crossVariabla2['naslov'];
# če ni tekstovni odgovor dodamo key
if ($crossVariabla2['type'] !== 't' && $show_variables_values == true ) {
if ($crossVariabla2['vr_id'] == null) {
echo ' ( '.$ckey2.' )';
} else {
echo ' ( '.$crossVariabla2['vr_id'].' )';
}
}*/
// VREDNOSTI
$cnt=0;
foreach ($crosstabs['options1'] as $ckey1 => $crossVariabla1) {
$cnt++;
$dataArray[$cnt][] = ((int)$crosstabs_value[$ckey1][$ckey2] > 0) ? $crosstabs_value[$ckey1][$ckey2] : 0;
$dataPercentArray[$cnt][] = $this->classInstance->getCrossTabPercentage($crosstabs['sumaVrstica'][$ckey2], $crosstabs_value[$ckey1][$ckey2]);
/*
# celica z vebino
{
# prikazujemo eno ali več od: frekvenc, odstotkov, residualov
if ($this->classInstance->crossChk0) {
# izpišemo frekvence crostabov
echo ((int)$crosstabs_value[$ckey1][$ckey2] > 0) ? $crosstabs_value[$ckey1][$ckey2] : 0;
}
}*/
}
}
}
}
$counter++;
}
}
}
//polnimo podatke
$DataSet = new pData;
// PRAVILNO OBRNJENA - GRIDI SO SERIJE
for($i=1; $i<=$grid_cnt; $i++){
// procenti
if($settings['value_type'] == 0){
if(count($dataPercentArray[$i]) > 0)
$DataSet->AddPoint($dataPercentArray[$i],'Vrednosti_'.$i);
else
$DataSet->AddPoint(array(0),'Vrednosti_'.$i);
}
// frekvence
elseif($settings['value_type'] == 1){
if(count($dataArray[$i]) > 0)
$DataSet->AddPoint($dataArray[$i],'Vrednosti_'.$i);
else
$DataSet->AddPoint(array(0),'Vrednosti_'.$i);
}
$DataSet->AddSerie('Vrednosti_'.$i);
$DataSet->SetSerieName($gridArray[$i],'Vrednosti_'.$i);
}
// Vedno izpisemo cela imena variabel
$DataSet->AddPoint($variableArray,"Variable");
$DataSet->SetAbsciseLabelSerie("Variable");
if($settings['value_type'] == 0){
$DataSet->SetYAxisUnit("%");
$DataSet->SetYAxisFormat("number");
}
// NAROBE OBRNJENA - VARIABLE SO SERIJE
/*for($i=1; $i<=$var_cnt; $i++){
if(count($dataArray[$i]) > 0)
$DataSet->AddPoint($dataArray[$i],'Vrednosti_'.$i);
else
$DataSet->AddPoint(array(0),'Vrednosti_'.$i);
$DataSet->AddSerie('Vrednosti_'.$i);
$DataSet->SetSerieName($variableArray[$i],'Vrednosti_'.$i);
}
// Vedno izpisemo cela imena variabel
$DataSet->AddPoint($gridArray,"Variable");
$DataSet->SetAbsciseLabelSerie("Variable");*/
return $DataSet;
}
// Napolnimo podatke za ttest graf
public function getTTestDataSet($chartID, $settings, $refresh=0){
global $site_path;
global $lang;
$DataSet = null;
$variables1 = $this->classInstance->getSelectedVariables();
foreach ($variables1 AS $v_first) {
if($this->counter == $counter){
$ttest = null;
$ttest = $this->classInstance->createTTest($v_first, $this->sessionData['ttest']['sub_conditions']);
break;
}
}
$spid1 = $this->sessionData['ttest']['variabla'][0]['spr'];
$seq1 = $this->sessionData['ttest']['variabla'][0]['seq'];
$grid1 = $this->sessionData['ttest']['variabla'][0]['grd'];
if (is_array($ttest) && count($ttest) > 0 && (int)$seq1 > 0) {
$spr_data_1 = $this->classInstance->_HEADERS[$spid1];
if ($grid1 == 'undefined') {
# imamp lahko več variabel
$seq = $seq1;
foreach ($spr_data_1['grids'] as $gkey => $grid ) {
foreach ($grid['variables'] as $vkey => $variable) {
$sequence = $variable['sequence'];
if ($sequence == $seq) {
$sprLabel1 = '('.$variable['variable'].') '. $variable['naslov'];
}
}
}
} else {
# imamo subgrid
$sprLabel1 = '('.$spr_data_1['grids'][$grid1]['variable'].') '. $spr_data_1['grids'][$grid1]['naslov'];
}
$sprLabel2 = trim(str_replace(' ','',$this->sessionData['ttest']['label2']));
$this->crosstabVars = array($sprLabel1, $sprLabel2);
$label1 = $this->classInstance->getVariableLabels($this->sessionData['ttest']['sub_conditions'][0]);
$label2 = $this->classInstance->getVariableLabels($this->sessionData['ttest']['sub_conditions'][1]);
//polnimo podatke
$DataSet = new pData;
//nastavimo t, ki se izpise pod legendo
$t = $this->classInstance->formatNumber($ttest['t'],3);
$DataSet->SetNumerus($t);
$DataSet->AddPoint($this->classInstance->formatNumber($ttest[1]['x'],3),'Vrednost');
$DataSet->AddPoint($this->classInstance->formatNumber($ttest[2]['x'],3),'Vrednost');
$DataSet->AddSerie('Vrednost');
$DataSet->AddPoint(array(0 => $label1, 1 => $label2),"Variable");
$DataSet->SetAbsciseLabelSerie("Variable");
}
return $DataSet;
}
// Napolnimo podatke za mean graf
public function getMeanDataSet($chartID, $settings, $refresh=0){
global $site_path;
global $lang;
$dataArray = array();
$gridArray = array();
$variableArray = array();
$variables1 = $this->classInstance->getSelectedVariables(2);
$variables2 = $this->classInstance->getSelectedVariables(1);
if (is_array($variables2) && count($variables2) > 0) {
foreach ($variables2 AS $v_second) {
if (is_array($variables1) && count($variables1) > 0) {
foreach ($variables1 AS $v_first) {
$_means = $this->classInstance->createMeans($v_first, $v_second);
if ($_means != null) {
$means[$c1][0] = $_means;
}
$c1++;
}
}
}
}
// Zaenkrat prikazemo samo graf za prvo tabelo
if (is_array($means) && count($means) > 0) {
$counter=0;
foreach ($means AS $mean_sub_grup) {
// Izrisemo pravi graf po vrsti ki pripada tabeli
if($counter == $this->counter){
$_means = $mean_sub_grup;
break;
}
$counter++;
}
}
#število vratic in število kolon
$cols = count($_means);
# preberemo kr iz prvega loopa
$rows = count($_means[0]['options']);
// loop po vrsticah
if (count($_means[0]['options']) > 0) {
foreach ($_means[0]['options'] as $ckey2 =>$crossVariabla2) {
// IME VARIABLE
$variableArray[] = $crossVariabla2['naslov'];
// VREDNOST VARIABLE
$dataArray[] = $this->classInstance->formatNumber($_means[0]['result'][$ckey2], SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_RESIDUAL'));
}
}
//polnimo podatke
$DataSet = new pData;
// Sortiramo podaatke ce je potrebno
if($settings['sort'] == 1)
array_multisort($dataArray, SORT_DESC, $variableArray);
if(count($dataArray) > 0)
$DataSet->AddPoint($dataArray,'Vrednosti');
else
$DataSet->AddPoint(array(0),'Vrednosti');
$DataSet->AddSerie('Vrednosti');
$DataSet->SetSerieName('Povprečja','Vrednosti');
// Pri povprecjih vedno izpisemo cela imena variabel
$DataSet->AddPoint($variableArray,"Variable");
$DataSet->SetAbsciseLabelSerie("Variable");
return $DataSet;
}
// Napolnimo podatke za break graf
public function getBreakDataSet($chartID, $settings, $refresh=0){
global $site_path;
global $lang;
$keysCount = count($this->break_frequencys);
$sequences = explode('_',$this->break_spremenljivka['sequences']);
$forSpremenljivka = $this->classInstance->_HEADERS[$this->break_forSpr];
$tip = $this->break_spremenljivka['tip'];
# izračunamo povprečja za posamezne sekvence
$means = array();
$totalMeans = array();
$totalFreq = array();
foreach ($this->break_frequencys AS $fkey => $options) {
foreach ($options AS $oKey => $option) {
foreach ($sequences AS $sequence) {
$means[$fkey][$oKey][$sequence] = $this->classInstance->getMeansFromKey($option[$sequence]);
}
}
}
//polnimo podatke
$DataSet = new pData;
$dataArray = array();
$variableArray = array();
// Polnimo podatke za multigrid dropdown, number, vsoto, ranking
if($this->break_spremenljivka['tip'] != 20){
$cnt=0;
foreach ($this->break_frequencys AS $fkey => $fkeyFrequency) {
$variableArray[] = $forSpremenljivka['grids'][0]['variables'][$cnt]['naslov'];
$cnt++;
foreach ($options AS $oKey => $option) {
$grid_count = 0;
foreach ($this->break_spremenljivka['grids'] AS $gkey => $grid) {
foreach ($grid['variables'] AS $vkey => $variable) {
$sequence = $variable['sequence'];
if ($variable['other'] != 1) {
$grid_count++;
#povprečja
$avg = $this->classInstance->formatNumber($means[$fkey][$oKey][$sequence],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
# enote
$enote = (int)$this->break_frequencys[$fkey][$oKey][$sequence]['validCnt'];
$tempArray = array();
$tempArray['avg'] = str_replace(",","",$avg);
$tempArray['unit'] = $enote;
$tempArray['key'] = $variable['variable'];
$tempArray['variable'] = $variable['naslov'];
$dataArray[] = $tempArray;
$totalMeans[$sequence] += ($means[$fkey][$oKey][$sequence]*(int)$this->break_frequencys[$fkey][$oKey][$sequence]['validCnt']);
$totalFreq[$sequence]+= (int)$this->break_frequencys[$fkey][$oKey][$sequence]['validCnt'];
}
}
}
}
}
}
// Polnimo podatke za multinumber
else{
// Nastavimo pravo podtabelo
$gkey = $this->break_spremenljivka['break_sub_table']['key'];
$grid = $this->break_spremenljivka['grids'][$gkey];
$cnt=0;
foreach ($this->break_frequencys AS $fkey => $fkeyFrequency) {
$variableArray[] = $forSpremenljivka['grids'][0]['variables'][$cnt]['naslov'];
$cnt++;
foreach ($forSpremenljivka['options'] AS $oKey => $option) {
# če je osnova checkbox vzamemo samo tam ko je 1
if(($forSpremenljivka['tip'] == 2 && $option == 1) || $forSpremenljivka['tip'] != 2 ) {
$grid_count = 0;
foreach ($grid['variables'] AS $vkey => $variable) {
$grid_count++;
$sequence = $variable['sequence'];
#povprečja
$avg = $this->classInstance->formatNumber($means[$fkey][$oKey][$sequence],SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'),'');
# enote
$enote = (int)$this->break_frequencys[$fkey][$oKey][$sequence]['validCnt'];
$tempArray = array();
$tempArray['avg'] = str_replace(",","",$avg);
$tempArray['unit'] = $enote;
$tempArray['key'] = $variable['variable'];
$tempArray['variable'] = $variable['naslov'] . ' ('.$variable['variable'].')';
$dataArray[] = $tempArray;
$totalMeans[$sequence] += ($means[$fkey][$oKey][$sequence]*(int)$this->break_frequencys[$fkey][$oKey][$sequence]['validCnt']);
$totalFreq[$sequence]+= (int)$this->break_frequencys[$fkey][$oKey][$sequence]['validCnt'];
}
}
}
}
}
$variable_count = count($variableArray);
// Normalno obrnjen graf - gridi v stolpcih, variable v legendi (deli stolpcev)
if($settings['rotate'] != 1){
// Sortiramo podaatke ce je potrebno
if($settings['sort'] == 1){
$tmp = Array();
// preberemo prve vrednosti iz vsakega stolpca
for($j=0; $j<$grid_count; $j++){
$offset = $j*$grid_count;
$tmp[] = (int)$dataArray[$offset]['avg'];
}
// sortiramo vrednosti in preberemo kljuce
arsort($tmp);
$sorted_keys = array_keys($tmp);
}
// Sortiramo podaatke po prvi kategoriji
elseif($settings['sort'] == 3){
$tmp = Array();
// preberemo prve vrednosti iz vsakega stolpca
for($j=0; $j<$grid_count; $j++){
$offset = $j;
$tmp[] = (int)$dataArray[$offset]['avg'];
}
// sortiramo vrednosti in preberemo kljuce
arsort($tmp);
$sorted_keys = array_keys($tmp);
}
else{
for($j=0; $j<($variable_count*$grid_count); $j++){
$sorted_keys[] = $j;
}
}
// Poberemo podatke v posamezne tabele
for($j=0; $j<$variable_count; $j++){
unset($vrednosti);
unset($vrednostiEnote);
unset($vrednostiKey);
unset($vrednostiVariable);
// odmik glede na sortirane po prvem gridu (sort po kategorijah ali brez)
if($settings['sort'] < 3){
$offset = $sorted_keys[$j] /*$j*/ * $grid_count;
for($i=0; $i<$grid_count; $i++){
$vrednosti[] = $dataArray[$i+$offset]['avg'];
$vrednostiEnote[] = $dataArray[$i+$offset]['unit'];
$vrednostiKey[] = $dataArray[$i+$offset]['key'];
$vrednostiVariable[] = $dataArray[$i+$offset]['variable'];
}
if(count($vrednosti) > 0)
$DataSet->AddPoint($vrednosti,'Vrednosti'.$sorted_keys[$j]);
else
$DataSet->AddPoint(array(0),'Vrednosti'.$sorted_keys[$j]);
$DataSet->AddSerie('Vrednosti'.$sorted_keys[$j]);
$DataSet->SetSerieName($variableArray[$sorted_keys[$j]],'Vrednosti'.$sorted_keys[$j]);
// Vedno izpisemo cela imena variabel
$DataSet->AddPoint($vrednostiVariable,'Variable'.$sorted_keys[$j]);
//$DataSet->AddPoint($vrednostiKey,"Variable");
$DataSet->SetAbsciseLabelSerie('Variable'.$sorted_keys[$j]);
}
// sort po prvi kategoriji
else{
for($i=0; $i<$grid_count; $i++){
$vrednosti[] = $dataArray[$j*$grid_count + $sorted_keys[$i]]['avg'];
$vrednostiEnote[] = $dataArray[$j*$grid_count + $sorted_keys[$i]]['unit'];
$vrednostiKey[] = $dataArray[$j*$grid_count + $sorted_keys[$i]]['key'];
$vrednostiVariable[] = $dataArray[$j*$grid_count + $sorted_keys[$i]]['variable'];
}
if(count($vrednosti) > 0)
$DataSet->AddPoint($vrednosti,'Vrednosti'.$j);
else
$DataSet->AddPoint(array(0),'Vrednosti'.$j);
$DataSet->AddSerie('Vrednosti'.$j);
$DataSet->SetSerieName($variableArray[$j],'Vrednosti'.$j);
// Vedno izpisemo cela imena variabel
$DataSet->AddPoint($vrednostiVariable,'Variable'.$j);
//$DataSet->AddPoint($vrednostiKey,"Variable");
$DataSet->SetAbsciseLabelSerie('Variable'.$j);
}
}
}
// Obratno obrnjen graf - gridi v legendi (deli stolpca), variable v stolpcih - default ce imamo samo en grid
else{
// Sortiramo podaatke ce je potrebno
if($settings['sort'] == 1){
$tmp = Array();
// preberemo prve vrednosti iz vsakega stolpca
for($j=0; $j<$grid_count; $j++){
$offset = $j;
$tmp[] = (int)$dataArray[$offset]['avg'];
}
// sortiramo vrednosti in preberemo kljuce
arsort($tmp);
$sorted_keys = array_keys($tmp);
}
// Sortiramo podaatke po prvi kategoriji
elseif($settings['sort'] == 3){
$tmp = Array();
// preberemo prve vrednosti iz vsakega stolpca
for($j=0; $j<$variable_count; $j++){
$offset = $j * $grid_count;
$tmp[] = (int)$dataArray[$offset]['avg'];
}
// sortiramo vrednosti in preberemo kljuce
arsort($tmp);
$sorted_keys = array_keys($tmp);
}
else{
for($j=0; $j<$grid_count; $j++){
$sorted_keys[] = $j;
}
}
// Poberemo podatke v posamezne tabele
for($j=0; $j<$grid_count; $j++){
// odmik glede na sortirane po prvem gridu (sort po kategorijah ali brez)
if($settings['sort'] < 3){
$offset = $sorted_keys[$j];
unset($vrednosti);
unset($vrednostiEnote);
unset($vrednostiKey);
unset($vrednostiVariable);
for($i=0; $i<$variable_count; $i++){
$vrednosti[] = $dataArray[$i*$grid_count+$offset]['avg'];
$vrednostiEnote[] = $dataArray[$i*$grid_count+$offset]['unit'];
$vrednostiKey[] = $dataArray[$i*$grid_count+$offset]['key'];
$vrednostiVariable[] = $dataArray[$i*$grid_count+$offset]['variable'];
}
if(count($vrednosti) > 0)
$DataSet->AddPoint($vrednosti,'Vrednosti'.$vrednostiKey[0]);
else
$DataSet->AddPoint(array(0),'Vrednosti'.$vrednostiKey[0]);
$DataSet->AddSerie('Vrednosti'.$vrednostiKey[0]);
$DataSet->SetSerieName($vrednostiVariable[0],'Vrednosti'.$vrednostiKey[0]);
// Vedno izpisemo cela imena variabel
$DataSet->AddPoint($variableArray,'Variable'.$vrednostiKey[0]);
//$DataSet->AddPoint($vrednostiKey,"Variable");
$DataSet->SetAbsciseLabelSerie('Variable'.$vrednostiKey[0]);
}
// sort po prvi kategoriji
else{
$offset = $sorted_keys[$j];
unset($vrednosti);
unset($vrednostiEnote);
unset($vrednostiKey);
unset($vrednostiVariable);
for($i=0; $i<$variable_count; $i++){
$vrednosti[] = $dataArray[$sorted_keys[$i]*$grid_count + $j]['avg'];
$vrednostiEnote[] = $dataArray[$sorted_keys[$i]*$grid_count + $j]['unit'];
$vrednostiKey[] = $dataArray[$sorted_keys[$i]*$grid_count + $j]['key'];
$vrednostiVariable[] = $dataArray[$sorted_keys[$i]*$grid_count + $j]['variable'];
}
if(count($vrednosti) > 0)
$DataSet->AddPoint($vrednosti,'Vrednosti'.$vrednostiKey[0]);
else
$DataSet->AddPoint(array(0),'Vrednosti'.$vrednostiKey[0]);
$DataSet->AddSerie('Vrednosti'.$vrednostiKey[0]);
$DataSet->SetSerieName($vrednostiVariable[0],'Vrednosti'.$vrednostiKey[0]);
// Vedno izpisemo cela imena variabel
$DataSet->AddPoint($variableArray,'Variable'.$vrednostiKey[0]);
//$DataSet->AddPoint($vrednostiKey,"Variable");
$DataSet->SetAbsciseLabelSerie('Variable'.$vrednostiKey[0]);
}
}
}
return $DataSet;
}
public function setBreakVariables($forSpr,$frequencys,$spremenljivka){
$this->break_forSpr = $forSpr;
$this->break_frequencys = $frequencys;
$this->break_spremenljivka = $spremenljivka;
}
// Default nastavitve grafov
public function getDefaultSettings(){
$colors = array_fill(0, 6, '');
$settings = array(
'type' => 0, // tip radarja
'sort' => 0, // sortiranje po velikosti
'value_type' => 0, // tip vrednosti (veljavni, frekvence, procenti...)
'show_legend' => 0, // prikaz legende
'scale_limit' => 0, // zacni skalo z 0 / z najmanjso vrednostjo pri numericih
'interval' => 10, // stevilo intervalov pri numericih
'radar_type' => 0, // tip radarj (crte / liki)
'radar_scale' => 0, // skala pri radarju (na osi / diagonalno)
'labelWidth' => 50, // sirina label (50% / 20%)
'barLabel' => 0, // prikaz label v stolpicnih grafih
'rotate' => 0, // obrnjeni gridi in variable (pri multinumber...)
'hq' => 1, // visoka locljivost grafa
'show_numerus' => 1, // prikaz numerusa
'colors' => $colors // custom barve grafa
);
return $settings;
}
// ID grafa glede na podstran
public function getChartID(){
global $lang;
// crosstab
if($this->podstran == 'crosstab' || ($this->podstran == 'break' && $this->break_crosstab == 1)){
$variables1 = $this->classInstance->getSelectedVariables(2);
$variables2 = $this->classInstance->getSelectedVariables(1);
$counter = 0;
$var1 = array();
$var2 = array();
foreach ($variables1 AS $v_first) {
foreach ($variables2 AS $v_second) {
if($counter == $this->counter){
$var1 = $v_first;
$var2 = $v_second;
break 2;
}
else
$counter++;
}
}
// Zgeneriramo id vsake tabele (glede na izbrani spremenljivki za generiranje)
$chartID = implode('_', $var1).'_'.implode('_', $var2);
$chartID .= '_counter_'.$this->counter;
}
// ttest
elseif($this->podstran == 'ttest'){
// Zgeneriramo id vsake tabele (glede na izbrani spremenljivki za generiranje)
$spid1 = $this->sessionData['ttest']['variabla'][0]['spr'];
$seq1 = $this->sessionData['ttest']['variabla'][0]['seq'];
$grid1 = $this->sessionData['ttest']['variabla'][0]['grd'];
$sub1 = $this->sessionData['ttest']['sub_conditions'][0];
$sub2 = $this->sessionData['ttest']['sub_conditions'][1];
$spid2 = $this->sessionData['ttest']['spr2'];
$seq2 = $this->sessionData['ttest']['seq2'];
$grid2 = $this->sessionData['ttest']['grid2'];
$chartID = $sub1.'_'.$sub2.'_'.$spid1.'_'.$seq1.'_'.$grid1;
}
// means
elseif($this->podstran == 'mean'){
// Zgeneriramo id vsake tabele (glede na izbrani spremenljivki za generiranje)
$variables1 = $this->classInstance->getSelectedVariables(1);
$variables2 = $this->classInstance->getSelectedVariables(2);
$pos1 = floor($this->counter / count($variables2));
$pos2 = $this->counter % count($variables2);
$chartID = implode('_', $variables1[$pos1]).'_'.implode('_', $variables2[$pos2]);
$chartID .= '_counter_'.$this->counter;
}
// break
else{
if($this->break_spremenljivka['tip'] == 20){
// Preberemo za kateri grid izrisujemo tabelo
$gkey = $this->break_spremenljivka['break_sub_table']['key'];
$spr1 = $this->sessionData['break']['seq'].'-'. $this->sessionData['break']['spr'].'-undefined';
$spr2 = $this->break_spremenljivka['grids'][$gkey]['variables'][0]['sequence'].'-'.$this->break_spremenljivka['id'].'-undefined';
}
else{
$spr1 = $this->sessionData['break']['seq'].'-'. $this->sessionData['break']['spr'].'-undefined';
$spr2 = $this->break_spremenljivka['grids'][0]['variables'][0]['sequence'].'-'.$this->break_spremenljivka['id'].'-undefined';
}
$chartID = $spr1.'_'.$spr2;
}
return $chartID;
}
// Zgeneriramo unikaten hash ID grafa
public function generateChartId($chartID, $settings, $numerus){
// ce posebej prizgemo legendo pri pie chartu
if($settings['show_legend'] == 1 && ($settings['type'] == 2 || $settings['type'] == 5))
$legend = '_legend';
else
$legend = '';
$ID = $this->anketa.'_chart_'.$chartID.'_counter_'.$counter.'_mv_'.SurveyAnalysis::$missingProfileData['display_mv_type'];
foreach ($settings AS $key => $val) {
if($key == 'colors'){
$ID .= '_colors';
foreach ($val AS $colKey => $color){
$ID .= '_'.$color;
}
}
elseif($key != 'name')
$ID .= '_'.$key.'_'.$val;
}
$ID .= '_skin_'.$this->skin;
$ID .= '_numerus_'.$numerus.'_numerusText_'.SurveyDataSettingProfiles :: getSetting('chartNumerusText');
$ID .= '_pieZeros_'.SurveyDataSettingProfiles :: getSetting('chartPieZeros');
$ID .= '_chartFontSize_'.SurveyDataSettingProfiles :: getSetting('chartFontSize');
//$ID .= '_hq_'.$this->quality;
return $ID;
}
// nastavimo prave barve ustrezne skinu
public function setChartColors($chart, $skin){
// Ce nimmo posebej nastavljenih barv
if($this->settings['colors'][0] == ''){
// ce je nastavljen globalen custom skin
if(is_numeric($skin)){
$skin = SurveyChart::getCustomSkin($skin);
$colors = explode('_', $skin['colors']);
$count = 0;
foreach($colors as $color){
$rgb = SurveyChart::html2rgb($color);
$chart->setColorPalette($count,$rgb[0],$rgb[1],$rgb[2]);
$count++;
}
}
// imamo nastavljenega enega od default skinov
else{
switch ($skin){
// 1ka skin
case '1ka':
default:
$chart->setColorPalette(0,30,136,229);
$chart->setColorPalette(1,255,166,8);
$chart->setColorPalette(2,72,229,194);
$chart->setColorPalette(3,242,87,87);
$chart->setColorPalette(4,117,70,68);
$chart->setColorPalette(5,248,202,0);
$chart->setColorPalette(6,255,112,166);
break;
// zivahen skin
case 'lively':
$chart->setColorPalette(0,224,9,13);
$chart->setColorPalette(1,4,23,227);
$chart->setColorPalette(2,0,255,8);
$chart->setColorPalette(3,255,247,3);
$chart->setColorPalette(4,255,149,0);
$chart->setColorPalette(5,0,251,255);
$chart->setColorPalette(6,166,0,255);
break;
// blag skin
case 'mild':
$chart->setColorPalette(0,188,224,46);
$chart->setColorPalette(1,224,100,46);
$chart->setColorPalette(2,224,214,46);
$chart->setColorPalette(3,46,151,224);
$chart->setColorPalette(4,176,46,224);
$chart->setColorPalette(5,224,46,117);
$chart->setColorPalette(6,92,224,46);
break;
// Office skin
case 'office':
$chart->setColorPalette(0,79,129,189);
$chart->setColorPalette(1,192,80,77);
$chart->setColorPalette(2,155,187,89);
$chart->setColorPalette(3,128,100,162);
$chart->setColorPalette(4,75,172,198);
$chart->setColorPalette(5,247,150,70);
$chart->setColorPalette(6,146,169,207);
break;
// Pastel skin
case 'pastel':
$chart->setColorPalette(0,121,159,11);
$chart->setColorPalette(1,215,161,37);
$chart->setColorPalette(2,146,100,190);
$chart->setColorPalette(3,24,132,132);
$chart->setColorPalette(4,76,198,139);
$chart->setColorPalette(5,138,136,35);
$chart->setColorPalette(6,108,153,210);
break;
// zelen skin
case 'green':
$chart->createColorGradientPalette(168,188,56,248,255,136,5);
$chart->setColorPalette(5,255,255,0);
$chart->setColorPalette(6,232,3,182);
break;
// moder skin
case 'blue':
$chart->createColorGradientPalette(82,124,148,174,216,240,5);
$chart->setColorPalette(5,255,255,0);
$chart->setColorPalette(6,232,3,182);
break;
// rdeč skin
case 'red':
$chart->createColorGradientPalette(255,0,0,80,10,10,5);
$chart->setColorPalette(5,255,255,0);
$chart->setColorPalette(6,232,3,182);
break;
// skin za vec kot 5 moznosti
case 'multi':
$chart->setColorPalette(0,140,0,0);
$chart->setColorPalette(1,240,8,0);
$chart->setColorPalette(2,255,138,130);
$chart->setColorPalette(3,242,196,200);
$chart->setColorPalette(4,11,3,135);
$chart->setColorPalette(5,4,0,252);
$chart->setColorPalette(6,151,148,242);
$chart->setColorPalette(7,0,133,31);
$chart->setColorPalette(8,24,217,3);
$chart->setColorPalette(9,139,245,157);
$chart->setColorPalette(10,237,202,45);
$chart->setColorPalette(11,253,255,120);
$chart->setColorPalette(12,156,0,125);
$chart->setColorPalette(13,255,0,246);
$chart->setColorPalette(14,242,3,162);
$chart->setColorPalette(15,237,154,216);
$chart->setColorPalette(16,0,123,145);
$chart->setColorPalette(17,0,204,250);
$chart->setColorPalette(18,174,238,245);
$chart->setColorPalette(19,0,255,200);
$chart->setColorPalette(20,255,111,0);
$chart->setColorPalette(21,255,162,0);
$chart->setColorPalette(22,255,201,120);
$chart->setColorPalette(23,161,92,133);
$chart->setColorPalette(24,205,159,245);
$chart->setColorPalette(25,179,245,103);
$chart->setColorPalette(26,135,171,108);
$chart->setColorPalette(27,73,132,145);
$chart->setColorPalette(28,70,96,99);
$chart->setColorPalette(29,156,95,103);
break;
}
}
}
else{
for($i=0; $i<7; $i++){
$color = $this->settings['colors'][$i];
$color = substr($color, 1);
list($r, $g, $b) = array($color[0].$color[1], $color[2].$color[3], $color[4].$color[5]);
$r = hexdec($r);
$g = hexdec($g);
$b = hexdec($b);
$chart->setColorPalette($i,$r,$g,$b);
}
}
return $chart;
}
// Funkcije za izris posameznih tipov grafov - vertikalni stolpci
function createVerBars($DataSet, $show_legend=0){
global $lang;
$Data = $DataSet->GetData();
$countGrids = count($Data);
$angle = 0;
$addHeight = 0;
$roundText = 15;
if($countGrids > 5){
$angle = 45;
$addHeight = 110;
$roundText = 30;
}
// Initialise the graph
$Test = new pChart($this->settings['hq']*800,$this->settings['hq']*(250+$addHeight));
// Nastavimo barve grafu glede na skin
$Test = $this->setChartColors($Test, $this->skin);
$Test->setLineStyle($this->settings['hq'],$DotSize=0);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
$Test->setGraphArea($this->settings['hq']*100,$this->settings['hq']*40,$this->settings['hq']*650,$this->settings['hq']*220);
$Test->drawFilledRoundedRectangle($this->settings['hq']*7,$this->settings['hq']*7,$this->settings['hq']*793,$this->settings['hq']*(243+$addHeight),5,255,255,255);
//$Test->drawRoundedRectangle(5,5,795,245,5,128,128,128);
$Test->drawRectangle($this->settings['hq']*5,$this->settings['hq']*5,$this->settings['hq']*795,$this->settings['hq']*(245+$addHeight),200,200,200);
$Test->drawGraphArea(255,255,255,TRUE);
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,0,0,0,TRUE,$angle,0,TRUE,1,FALSE,$roundText);
$Test->drawGrid(4,TRUE,230,230,230,50);
// Draw the 0 line
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*6);
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
// Finish the graph
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
// Draw the bar graph
$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(), false, 95, $this->settings['barLabel']);
if($show_legend == 1)
$Test->drawLegend($this->settings['hq']*680,$this->settings['hq']*30,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
// Prikaz napisa frekvence/odstotki (samo crosstabi)
if($this->podstran == 'crosstab'){
if($this->settings['value_type'] == '0')
$Test->drawTextBox($this->settings['hq']*50,$this->settings['hq']*210,$this->settings['hq']*60,$this->settings['hq']*110,$lang['srv_chart_percent'],$Angle=90,$R=0,$G=0,$B=0,$Align=ALIGN_LEFT,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
else
$Test->drawTextBox($this->settings['hq']*50,$this->settings['hq']*210,$this->settings['hq']*60,$this->settings['hq']*110,$lang['srv_chart_freq'],$Angle=90,$R=0,$G=0,$B=0,$Align=ALIGN_LEFT,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
}
return $Test;
}
// Funkcije za izris posameznih tipov grafov - horizontalni stolpci
function createHorBars($DataSet, $show_legend=0, $fixedScale=0){
global $lang;
// Nastavimo visino grafa (ce imamo vec kot 7 variabel/gridov)
$Data = $DataSet->GetData();
$countGrids = count($Data);
$addHeight = $countGrids > 5 ? ($countGrids-5)*30 : 0;
// Initialise the graph
$Test = new MyHorBar($this->settings['hq']*800,$this->settings['hq']*(250+$addHeight));
// Nastavimo barve grafu glede na skin
$Test = $this->setChartColors($Test, $this->skin);
$Test->setLineStyle($this->settings['hq'],$DotSize=0);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
// Dolge labele
$startX = ($this->settings['labelWidth'] == 20) ? 225 : 360;
$roundText = ($this->settings['labelWidth'] == 20) ? 35 : 65;
$Test->setGraphArea($this->settings['hq']*$startX,$this->settings['hq']*70,$this->settings['hq']*650,$this->settings['hq']*(220+$addHeight));
$Test->drawFilledRoundedRectangle($this->settings['hq']*7,$this->settings['hq']*7,$this->settings['hq']*793,$this->settings['hq']*(243+$addHeight),5,255,255,255);
//$Test->drawRoundedRectangle(5,5,795,245,5,128,128,128);
$Test->drawRectangle($this->settings['hq']*5,$this->settings['hq']*5,$this->settings['hq']*795,$this->settings['hq']*(245+$addHeight),200,200,200);
$Test->drawGraphArea(255,255,255,TRUE);
// Če gre za hierarhijo, potem je fiksna skala
if(SurveyInfo::checkSurveyModule('hierarhija', $this->anketa))
$Test->setFixedScale(1,5,4);
$Test->drawHorScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,0,0,0,TRUE,0,0,TRUE,1,FALSE,$roundText);
$Test->drawHorGrid(4,TRUE,230,230,230,50);
// Draw the 0 line
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*6);
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
// Draw the bar graph
$Test->drawHorBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(), $this->settings['barLabel']);
// Finish the graph
if($show_legend == 1)
$Test->drawLegend($this->settings['hq']*680,$this->settings['hq']*60,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
// Prikaz napisa frekvence in 1. spremenljivke na vrhu (samo crosstabi)
if($this->podstran == 'crosstab'){
if($this->settings['value_type'] == '0')
$Test->drawTextBox($this->settings['hq']*480,$this->settings['hq']*30,$this->settings['hq']*580,$this->settings['hq']*40,$lang['srv_chart_percent'],$Angle=0,$R=0,$G=0,$B=0,$Align=ALIGN_LEFT,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
else
$Test->drawTextBox($this->settings['hq']*480,$this->settings['hq']*30,$this->settings['hq']*580,$this->settings['hq']*40,$lang['srv_chart_freq'],$Angle=0,$R=0,$G=0,$B=0,$Align=ALIGN_LEFT,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
$strings = explode(' ',$this->crosstabVars[1]);
$substr1 = (strlen($strings[0]) > 50) ? substr($strings[0], 0, 47).'...' : $strings[0];
$substr2 = (strlen($strings[1]) > 50) ? substr($strings[1], 0, 47).'...' : $strings[1];
$Test->drawTextBox($this->settings['hq']*50,$this->settings['hq']*20,$this->settings['hq']*280,$this->settings['hq']*30,$substr1,$Angle=0,$R=0,$G=0,$B=0,$Align=ALIGN_CENTER,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
$Test->drawTextBox($this->settings['hq']*50,$this->settings['hq']*38,$this->settings['hq']*280,$this->settings['hq']*43,$substr2,$Angle=0,$R=0,$G=0,$B=0,$Align=ALIGN_CENTER,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
}
// Prikaz t vrednosti pri ttest grafu
if($this->podstran == 'ttest' && $this->settings['show_numerus'] == '1'){
$t = 't = '.$DataSet->GetNumerus();
$Test->drawTextBox($this->settings['hq']*680,$this->settings['hq']*210,$this->settings['hq']*795,$this->settings['hq']*220,$t,$Angle=0,$R=0,$G=0,$B=0,$Align=ALIGN_LEFT,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
}
return $Test;
}
// Funkcije za izris posameznih tipov grafov - vertikalni sestavljeni stolpci
function createVerStructBars($DataSet){
global $lang;
$Data = $DataSet->GetData();
$countGrids = count($Data);
$angle = 0;
$addHeight = 0;
$roundText = 15;
if($countGrids > 5){
$angle = 45;
$addHeight = 110;
$roundText = 30;
}
// Initialise the graph
$Test = new pChart($this->settings['hq']*800,$this->settings['hq']*(250+$addHeight));
// Nastavimo barve grafu glede na skin
$Test = $this->setChartColors($Test, $this->skin);
$Test->setLineStyle($this->settings['hq'],$DotSize=0);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
// Pri navadnem radio in checkbox vprasanju imamo samo en stolpec - zato so dimenzije drugacne
/*if($spremenljivka['tip'] == 1 || $spremenljivka['tip'] == 2 || $spremenljivka['tip'] == 3)
$Test->setGraphArea($this->settings['hq']*250,$this->settings['hq']*40,$this->settings['hq']*500,$this->settings['hq']*220);
else*/
$Test->setGraphArea($this->settings['hq']*100,$this->settings['hq']*40,$this->settings['hq']*650,$this->settings['hq']*220);
$Test->drawFilledRoundedRectangle($this->settings['hq']*7,$this->settings['hq']*7,$this->settings['hq']*793,$this->settings['hq']*(243+$addHeight),5,255,255,255);
//$Test->drawRoundedRectangle(5,5,795,245,5,128,128,128);
$Test->drawRectangle($this->settings['hq']*5,$this->settings['hq']*5,$this->settings['hq']*795,$this->settings['hq']*(245+$addHeight),200,200,200);
$Test->drawGraphArea(255,255,255,TRUE);
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_ADDALLSTART0,0,0,0,TRUE,$angle,0,TRUE,1,FALSE,$roundText);
$Test->drawGrid(4,TRUE,230,230,230,50);
// Draw the 0 line
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*6);
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
// Draw the bar graph
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
$Test->drawStackedBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(), $this->settings['barLabel'], 95);
$Test->drawLegend($this->settings['hq']*680,$this->settings['hq']*30,$DataSet->GetDataDescription(),255,255,255,$Rs=-1,$Gs=-1,$Bs=-1,$Rt=0,$Gt=0,$Bt=0,$Border=false,$reverse=true);
$Test->setFontProperties("Fonts/verdana.ttf",$this->settings['hq']*10);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
// Prikaz napisa frekvence (samo crosstabi)
if($this->podstran == 'crosstab'){
if($this->settings['value_type'] == '0')
$Test->drawTextBox($this->settings['hq']*50,$this->settings['hq']*210,$this->settings['hq']*60,$this->settings['hq']*110,$lang['srv_chart_percent'],$Angle=90,$R=0,$G=0,$B=0,$Align=ALIGN_LEFT,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
else
$Test->drawTextBox($this->settings['hq']*50,$this->settings['hq']*210,$this->settings['hq']*60,$this->settings['hq']*110,$lang['srv_chart_freq'],$Angle=90,$R=0,$G=0,$B=0,$Align=ALIGN_LEFT,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
}
return $Test;
}
// Funkcije za izris posameznih tipov grafov - horizontalni sestavljeni stolpci
function createHorStructBars($DataSet){
global $lang;
// Nastavimo visino graffa (ce imamo vec kot 7 variabel/gridov)
$Data = $DataSet->GetData();
$countGrids = count($Data);
$addHeight = $countGrids > 5 ? ($countGrids-5)*30 : 0;
// Initialise the graph
$Test = new MyHorBar($this->settings['hq']*800,$this->settings['hq']*(250+$addHeight+50));
// Nastavimo barve grafu glede na skin
$Test = $this->setChartColors($Test, $this->skin);
$Test->setLineStyle($this->settings['hq'],$DotSize=0);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
// Dolge labele
$startX = ($this->settings['labelWidth'] == 20) ? 225 : 360;
$roundText = ($this->settings['labelWidth'] == 20) ? 35 : 65;
// Pri navadnem radio in checkbox vprasanju imamo samo en stolpec - zato so dimenzije drugacne
/*if($spremenljivka['tip'] == 1 || $spremenljivka['tip'] == 2 || $spremenljivka['tip'] == 3){
$Test->setGraphArea($this->settings['hq']*200,$this->settings['hq']*50,$this->settings['hq']*630,$this->settings['hq']*220);
$Test->drawFilledRoundedRectangle($this->settings['hq']*7,$this->settings['hq']*7,$this->settings['hq']*793,$this->settings['hq']*243,5,255,255,255);
//$Test->drawRoundedRectangle(5,5,795,245,5,128,128,128);
$Test->drawRectangle($this->settings['hq']*5,$this->settings['hq']*5,$this->settings['hq']*795,$this->settings['hq']*295,200,200,200);
$Test->drawGraphArea(255,255,255,TRUE);
$Test->drawHorScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_ADDALLSTART0,0,0,0,TRUE,0,0,TRUE);
$Test->drawHorGrid(4,TRUE,230,230,230,50);
}
else{*/
$Test->setGraphArea($this->settings['hq']*$startX,$this->settings['hq']*70,$this->settings['hq']*650,$this->settings['hq']*(220+$addHeight));
$Test->drawFilledRoundedRectangle(7,7,793,243+$addHeight,5,255,255,255);
//$Test->drawRoundedRectangle(5,5,795,245,5,128,128,128);
$Test->drawRectangle($this->settings['hq']*5,$this->settings['hq']*5,$this->settings['hq']*795,$this->settings['hq']*(295+$addHeight),200,200,200);
$Test->drawGraphArea(255,255,255,TRUE);
$Test->drawHorScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_ADDALLSTART0,0,0,0,TRUE,0,0,TRUE,1,FALSE,$roundText);
$Test->drawHorGrid(4,TRUE,230,230,230,50);
//}
// Draw the 0 line
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*6);
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
// Draw the bar graph
$Test->drawStackedHorBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),$this->settings['barLabel'],95);
// pri vodoravnih strukturnih stolpcih izrisemo legendo na dnu
$Test->drawVerticalLegend($this->settings['hq']*400,$this->settings['hq']*(240+$addHeight),$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties("Fonts/verdana.ttf",$this->settings['hq']*10);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
// Prikaz napisa frekvence in 1. spremenljivke na vrhu (samo crosstabi)
if($this->podstran == 'crosstab'){
if($this->settings['value_type'] == '0')
$Test->drawTextBox($this->settings['hq']*480,$this->settings['hq']*30,$this->settings['hq']*580,$this->settings['hq']*40,$lang['srv_chart_percent'],$Angle=0,$R=0,$G=0,$B=0,$Align=ALIGN_LEFT,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
else
$Test->drawTextBox($this->settings['hq']*480,$this->settings['hq']*30,$this->settings['hq']*580,$this->settings['hq']*40,$lang['srv_chart_freq'],$Angle=0,$R=0,$G=0,$B=0,$Align=ALIGN_LEFT,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
$strings = explode(' ',$this->crosstabVars[1]);
$substr1 = (strlen($strings[0]) > 50) ? substr($strings[0], 0, 47).'...' : $strings[0];
$substr2 = (strlen($strings[1]) > 50) ? substr($strings[1], 0, 47).'...' : $strings[1];
$Test->drawTextBox($this->settings['hq']*50,$this->settings['hq']*20,$this->settings['hq']*280,$this->settings['hq']*30,$substr1,$Angle=0,$R=0,$G=0,$B=0,$Align=ALIGN_CENTER,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
$Test->drawTextBox($this->settings['hq']*50,$this->settings['hq']*38,$this->settings['hq']*280,$this->settings['hq']*43,$substr2,$Angle=0,$R=0,$G=0,$B=0,$Align=ALIGN_CENTER,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
}
return $Test;
}
// Funkcije za izris posameznih tipov grafov - krozni graf
function createPie($DataSet, $show_legend=1){
global $lang;
// Initialise the graph
$Test = new pChart($this->settings['hq']*800,$this->settings['hq']*280);
// Nastavimo barve grafu glede na skin
$Test = $this->setChartColors($Test, $this->skin);
// Pri pie grafu uporabimo antialiasing
$Test->setAntialias(true, 20);
$Test->setLineStyle($this->settings['hq'],$DotSize=0);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
//$Test->setGraphArea(50,40,685,220);
$Test->drawFilledRoundedRectangle($this->settings['hq']*7,$this->settings['hq']*7,$this->settings['hq']*793,$this->settings['hq']*273,5,255,255,255);
//$Test->drawRoundedRectangle(5,5,795,245,5,128,128,128);
$Test->drawRectangle($this->settings['hq']*5,$this->settings['hq']*5,$this->settings['hq']*795,$this->settings['hq']*275,200,200,200);
//$Test->createColorGradientPalette(195,204,56,223,110,41,3);
//$Test->createColorGradientPalette(168,188,56,248,255,136,5);
// Draw the pie graph
$labels = ($this->settings['sort'] == 1) ? 'custom_percent_sort' : 'custom_percent';
$Test->drawFlatPieGraph($DataSet->GetData(),$DataSet->GetDataDescription(),$this->settings['hq']*390,$this->settings['hq']*145,$this->settings['hq']*95,$labels);
$Test->setAntialias(false, 0);
// Finish the graph
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
//$Test->drawLegend(700,30,$DataSet->GetDataDescription(),255,255,255);
if($show_legend == 1)
$Test->drawPieLegend($this->settings['hq']*600,$this->settings['hq']*50,$DataSet->GetData(),$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*10);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
return $Test;
}
// Funkcije za izris posameznih tipov grafov - krozni graf
function create3DPie($DataSet, $show_legend=1){
global $lang;
// Initialise the graph
$Test = new pChart($this->settings['hq']*800,$this->settings['hq']*280);
// Nastavimo barve grafu glede na skin
$Test = $this->setChartColors($Test, $this->skin);
// Pri pie grafu uporabimo antialiasing
$Test->setAntialias(true, 20);
$Test->setLineStyle($this->settings['hq'],$DotSize=0);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
//$Test->setGraphArea(50,40,685,220);
$Test->drawFilledRoundedRectangle($this->settings['hq']*7,$this->settings['hq']*7,$this->settings['hq']*793,$this->settings['hq']*273,5,255,255,255);
//$Test->drawRoundedRectangle(5,5,795,245,5,128,128,128);
$Test->drawRectangle($this->settings['hq']*5,$this->settings['hq']*5,$this->settings['hq']*795,$this->settings['hq']*275,200,200,200);
//$Test->createColorGradientPalette(195,204,56,223,110,41,3);
//$Test->createColorGradientPalette(168,188,56,248,255,136,5);
// Draw the pie graph
$labels = ($this->settings['sort'] == 1) ? 'custom_percent_sort' : 'custom_percent';
$Test->drawPieGraph($DataSet->GetData(),$DataSet->GetDataDescription(),$this->settings['hq']*390,$this->settings['hq']*130,$this->settings['hq']*95,$labels,$EnhanceColors=true,$Skew=50,$SpliceHeight=$this->settings['hq']*20,$SpliceDistance=0,$Decimals=0);
$Test->setAntialias(false, 0);
// Finish the graph
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
//$Test->drawLegend(700,30,$DataSet->GetDataDescription(),255,255,255);
if($show_legend == 1)
$Test->drawPieLegend($this->settings['hq']*600,$this->settings['hq']*50,$DataSet->GetData(),$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*10);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
return $Test;
}
// Funkcije za izris posameznih tipov grafov - linijski graf
function createVerLine($DataSet, $show_legend=0, $fixedScale=1){
global $lang;
// Nastavimo visino grafa (ce imamo vec kot 7 variabel/gridov)
$Data = $DataSet->GetData();
$countGrids = count($Data);
$addHeight = $countGrids > 5 ? ($countGrids-5)*30 : 0;
// Initialise the graph
$Test = new MyHorBar($this->settings['hq']*800,$this->settings['hq']*(250+$addHeight));
// Nastavimo barve grafu glede na skin
$Test = $this->setChartColors($Test, $this->skin);
$Test->setLineStyle($this->settings['hq'],$DotSize=0);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
$Test->setGraphArea($this->settings['hq']*270,$this->settings['hq']*50,$this->settings['hq']*530,$this->settings['hq']*(220+$addHeight));
$Test->drawFilledRoundedRectangle($this->settings['hq']*7,$this->settings['hq']*7,$this->settings['hq']*793,$this->settings['hq']*(243+$addHeight),5,255,255,255);
//$Test->drawRoundedRectangle(5,5,795,245,5,128,128,128);
$Test->drawRectangle($this->settings['hq']*5,$this->settings['hq']*5,$this->settings['hq']*795,$this->settings['hq']*(245+$addHeight),200,200,200);
$Test->drawGraphArea(255,255,255,TRUE);
/*$VMax = count($spremenljivka['options']);
$Divisions = $VMax-1;
$Test->setFixedScale($VMin=1, $VMax, $Divisions);*/
$Test->drawHorScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,0,0,0,TRUE,0,0,TRUE,1,$rightScale=FALSE,$roundText=40);
$Test->drawHorGrid(4,TRUE,230,230,230,50);
// Draw the 0 line
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*6);
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
// Draw the line graph
$Test->drawVerLineGraph($DataSet->GetData(),$DataSet->GetDataDescription(), $insideValues=false);
// Finish the graph
if($show_legend == 1)
$Test->drawLegend($this->settings['hq']*680,$this->settings['hq']*30,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
return $Test;
}
// Funkcije za izris posameznih tipov grafov - radar
function createRadar($DataSet, $show_legend=0, $fixedScale=0){
global $lang;
$Data = $DataSet->GetData();
$countGrids = count($Data);
// Initialise the graph
$Test = new pChart($this->settings['hq']*800,$this->settings['hq']*350);
// Nastavimo barve grafu glede na skin
$Test = $this->setChartColors($Test, $this->skin);
// Pri radar grafu uporabimo antialiasing
$Test->setAntialias(true, 20);
$Test->setLineStyle($this->settings['hq'],$DotSize=0);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
$Test->setGraphArea($this->settings['hq']*100,$this->settings['hq']*40,$this->settings['hq']*650,$this->settings['hq']*320);
$Test->drawFilledRoundedRectangle($this->settings['hq']*7,$this->settings['hq']*7,$this->settings['hq']*793,$this->settings['hq']*343,5,255,255,255);
//$Test->drawRoundedRectangle(5,5,795,245,5,128,128,128);
$Test->drawRectangle($this->settings['hq']*5,$this->settings['hq']*5,$this->settings['hq']*795,$this->settings['hq']*345,200,200,200);
//$Test->drawGraphArea(255,255,255,TRUE);
//$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,20,20,20,TRUE,$angle,0,TRUE,1,FALSE,$roundText);
//$Test->drawGrid(4,TRUE,230,230,230,50);
// Draw the 0 line
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
$VMax = -1;
// Draw the radar
$Test->drawRadarAxis($DataSet->GetData(),$DataSet->GetDataDescription(),true,5,0,0,0,160,160,160,$VMax,$this->settings['radar_scale']);
// Tip radarja - navaden ali samo crte
if($this->settings['radar_type'] == 1)
$Test->drawFilledRadar($DataSet->GetData(),$DataSet->GetDataDescription(),50,5,$VMax);
else{
$Test->setLineStyle($Width=(2*$this->settings['hq']),$DotSize=0);
$Test->drawRadar($DataSet->GetData(),$DataSet->GetDataDescription(),5,$VMax);
}
$Test->setAntialias(false, 0);
// Finish the graph
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
if($show_legend == 1)
$Test->drawLegend($this->settings['hq']*680,$this->settings['hq']*30,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties("Fonts/verdana.ttf",$this->settings['hq']*10);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
return $Test;
}
// Funkcije za izris posameznih tipov grafov - linijski graf
function createLine($DataSet, $show_legend=0, $fixedScale=0){
// Initialise the graph
$Test = new pChart($this->settings['hq']*800,$this->settings['hq']*280);
// Nastavimo barve grafu glede na skin
$Test = $this->setChartColors($Test, $this->skin);
$count = count($DataSet->GetData());
// Kot label na x osi
$angle = 0;
if($count > 6)
$angle = 45;
$Test->setLineStyle($this->settings['hq'],$DotSize=0);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
$Test->setGraphArea($this->settings['hq']*100,$this->settings['hq']*40,$this->settings['hq']*650,$this->settings['hq']*220);
$Test->drawFilledRoundedRectangle($this->settings['hq']*7,$this->settings['hq']*7,$this->settings['hq']*793,$this->settings['hq']*273,5,255,255,255);
//$Test->drawRoundedRectangle(5,5,795,245,5,128,128,128);
$Test->drawRectangle($this->settings['hq']*5,$this->settings['hq']*5,$this->settings['hq']*795,$this->settings['hq']*275,200,200,200);
$Test->drawGraphArea(255,255,255,TRUE);
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,0,0,0,TRUE,$angle,0,TRUE);
if($count <= 20)
$Test->drawGrid(4,TRUE,230,230,230,50);
// Draw the 0 line
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
//$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
// Draw the bar graph
$Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription());
if($count <= 20)
$Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),$this->settings['hq']*3,$this->settings['hq']*2,255,255,255);
if($show_legend == 1)
$Test->drawLegend($this->settings['hq']*680,$this->settings['hq']*30,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties(dirname(__FILE__).'/../pChart/Fonts/verdana.ttf',$this->settings['hq']*$this->fontSize);
$Test->drawTextBox($this->settings['hq']*690,$this->settings['hq']*(210+$addHeight),$this->settings['hq']*795,$this->settings['hq']*(220+$addHeight),$numerus,$Angle=0,$R=0,$G=0,$B=0,$Align=ALIGN_LEFT,$Shadow=FALSE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=0);
return $Test;
}
// Nastavitve posameznega grafa
function displaySingleSettings($chartID, $settings=0){
global $site_path;
global $lang;
// Ikone izvoza na vrhu posameznih nastavitev
//$this->displayExportIcons($chartID);
echo ''.$lang['srv_chart_settings_basic'].'
';
//echo ' ';
echo ''.$lang['srv_chart_settings_advanced'].'
';
// OSNOVNE NASTAVITVE
echo 'settings_mode == 1 ? ' style="display:none;"' : '').'>';
//echo ''.$lang['srv_chart_settings'].' ';
switch($this->podstran){
case 'crosstab':
$this->displayCrosstabSettings($chartID, $settings);
break;
case 'ttest':
$this->displayTTestSettings($chartID, $settings);
break;
case 'mean':
$this->displayMeanSettings($chartID, $settings);
break;
case 'break':
$this->displayBreakSettings($chartID, $settings);
break;
default:
break;
}
echo '
';
// NAPREDNE NASTAVITVE
echo 'settings_mode == 0 ? ' style="display:none;"' : '').'>';
switch($this->podstran){
case 'crosstab':
case 'mean':
case 'break':
// visoka locljivost grafa
echo '
';
echo $lang['srv_chart_hq'].': ';
echo ' ';
echo '
';
break;
case 'ttest':
// prikaz numerusa
echo '
';
$checked = ($settings['show_numerus']=='1') ? ' checked="checked"': '';
echo $lang['srv_chart_showNumerus'].': ';
echo ' ';
echo '
';
default:
break;
}
// Link na urejanje label
//echo '
'.$lang['srv_chart_advancedLink_labels'].' ';
// Vprasajcek za pomoc
//echo Help :: display('displaychart_settings_labels');
// Link na urejanje barv
echo '
'.$lang['srv_chart_advancedLink_colors'].' ';
// Vprasajcek za pomoc
echo Help :: display('displaychart_settings_colors');
// Link na rekodiranje
//echo '
'.$lang['srv_chart_advancedLink_recoding'].' ';
// Vprasajcek za pomoc
//echo Help :: display('displaychart_settings_recoding');
echo '
';
}
// ikone na vrhu posameznih nastavitev (izvozi)
function displayExportIcons($chartID){
global $site_path;
global $lang;
// linki
echo '';
// Ikona za print
echo '
';
echo ' ';
echo ' ';
// Izvoz posameznega grafa v PDF/RTF/PPT
echo '
';
echo '
';
echo '
';
echo '
';
}
// Nastavitve za crosstab graf
function displayCrosstabSettings($chartID, $settings){
global $site_path;
global $lang;
// Tip grafa
echo '';
echo $lang['srv_chart_type'].': ';
if($this->crossCheck){
// navedbe
if($this->classInstance->crossNavVsEno == 0){
echo ' '.$lang['srv_chart_horizontal'].' ';
echo ' '.$lang['srv_chart_vertical'].' ';
echo ' '.$lang['srv_chart_pie'].' ';
echo ' '.$lang['srv_chart_3Dpie'].' ';
echo ' '.$lang['srv_chart_structure_hor'].' ';
echo ' '.$lang['srv_chart_structure_ver'].' ';
}
// enote
else{
echo ' '.$lang['srv_chart_structure_hor'].' ';
echo ' '.$lang['srv_chart_structure_ver'].' ';
echo ' '.$lang['srv_chart_horizontal'].' ';
echo ' '.$lang['srv_chart_vertical'].' ';
}
}
else{
echo ' '.$lang['srv_chart_structure_hor'].' ';
echo ' '.$lang['srv_chart_structure_ver'].' ';
echo ' '.$lang['srv_chart_horizontal'].' ';
echo ' '.$lang['srv_chart_vertical'].' ';
}
echo ' ';
echo '
';
// tip izpisa vrednosti
echo '';
echo $lang['srv_chart_valtype'].': ';
echo ' '.$lang['srv_chart_percent'].' ';
echo ' '.$lang['srv_chart_freq'].' ';
echo ' ';
echo '
';
// prikaz label v stolpcih
//if($settings['type'] == 0 || $settings['type'] == 1){
echo '';
echo $lang['srv_chart_barLabel'].': ';
echo ' ';
echo '
';
//}
// sirina label
/*if($settings['type'] == 0 || $settings['type'] == 3){
echo '';
echo $lang['srv_wide_chart'].': ';
echo ' 50% ';
echo ' 20% ';
echo ' ';
echo '
';
}*/
}
// Nastavitve za ttest graf
function displayTTestSettings($chartID, $settings){
global $site_path;
global $lang;
// sirina label
echo '';
echo $lang['srv_wide_chart'].': ';
echo ' 50% ';
echo ' 20% ';
echo ' ';
echo '
';
// visoka locljivost grafa
echo '';
echo $lang['srv_chart_hq'].': ';
echo ' ';
echo '
';
}
// Nastavitve za mean graf
function displayMeanSettings($chartID, $settings){
global $site_path;
global $lang;
// Tip grafa
echo '';
echo $lang['srv_chart_type'].': ';
echo ' '.$lang['srv_chart_avg_hor'].' ';
echo ' '.$lang['srv_chart_avg_radar'].' ';
echo ' '.$lang['srv_chart_avg_line'].' ';
echo ' ';
echo '
';
// sortiranje
echo '';
echo $lang['srv_chart_sort'].': ';
echo ' ';
echo '
';
// sirina label
if($settings['type'] == 0){
echo '';
echo $lang['srv_wide_chart'].': ';
echo ' 50% ';
echo ' 20% ';
echo ' ';
echo '
';
}
// Tip radarja
if($settings['type'] == 1){
echo '';
echo $lang['srv_chart_radar_type'].': ';
echo ' '.$lang['srv_chart_radar_type0'].' ';
echo ' '.$lang['srv_chart_radar_type1'].' ';
echo ' ';
echo '
';
}
// Postavitev skale pri radarju
if($settings['type'] == 1){
echo '';
echo $lang['srv_chart_radar_scale'].': ';
echo ' '.$lang['srv_chart_radar_scale0'].' ';
echo ' '.$lang['srv_chart_radar_scale1'].' ';
echo ' ';
echo '
';
}
}
// Nastavitve za crosstab graf
function displayBreakSettings($chartID, $settings){
global $site_path;
global $lang;
$tip = $this->break_spremenljivka['tip'];
// Tip grafa
echo '';
echo $lang['srv_chart_type'].': ';
if($tip != 7)
echo ' '.$lang['srv_chart_radar'].' ';
echo ' '.$lang['srv_chart_vertical'].' ';
echo ' '.$lang['srv_chart_horizontal'].' ';
echo ' '.$lang['srv_chart_line'].' ';
echo ' ';
echo '
';
// sortiranje
echo '';
echo $lang['srv_chart_sort'].': ';
echo ' '.$lang['srv_chart_sort_no'].' ';
if($tip != 7)
echo ' '.$lang['srv_chart_sort_category'].' ';
echo ' '.$lang['srv_chart_sort_first'].' ';
echo ' ';
echo '
';
// Obrnjeni gridi in variable
echo '';
if($settings['rotate']=='1'){
echo $lang['srv_chart_rotate_grids'].' ';
echo '
';
echo '
';
echo ' '.$lang['srv_chart_rotate_vars'].' ';
}
else{
echo $lang['srv_chart_rotate_vars'].' ';
echo '
';
echo '
';
echo ' '.$lang['srv_chart_rotate_grids'];
}
echo '
';
// Tip radarja
if($settings['type'] == '0'){
echo '';
echo $lang['srv_chart_radar_type'].': ';
echo ' '.$lang['srv_chart_radar_type0'].' ';
echo ' '.$lang['srv_chart_radar_type1'].' ';
echo ' ';
echo '
';
}
// Postavitev skale pri radarju
if($settings['type'] == '0'){
echo '';
echo $lang['srv_chart_radar_scale'].': ';
echo ' '.$lang['srv_chart_radar_scale0'].' ';
echo ' '.$lang['srv_chart_radar_scale1'].' ';
echo ' ';
echo '
';
}
}
// Napredne nastavitve grafa
function displayAdvancedSettings($chartID){
global $site_path;
global $lang;
echo ''.$lang['srv_detail_settings'].' ';
echo '';
/* ZAVIHKI NA DESNI */
echo '';
echo '
';
echo '';
echo $lang['srv_chart_advanced_colors'];
echo ' ';
/*echo '';
echo $lang['srv_chart_advanced_labels'];
echo ' ';*/
echo ' ';
echo '
';
/* GUMBI NA DNU */
echo '';
}
// Urejanje barv posameznega grafa
function displayAdvancedSettingsColors($chartID){
global $site_path;
global $lang;
echo '';
echo '
';
$default_colors = SurveyChart::getDefaultColors($this->skin);
for($i=0; $i<7; $i++){
$name = 'color'.($i+1);
$value = ($this->settings['colors'][$i] != '') ? $this->settings['colors'][$i] : $default_colors[$i];
echo ' '.$lang['srv_color'].' '.($i+1).':
';
}
// reset na default barvo
echo 'skin).'\')">'.$lang['srv_chart_advanced_default_color'].' ';
// nastavitev ene od palet
echo ''.$lang['srv_chart_advanced_skin'].': ';
echo '';
echo ' skin == '1ka' ? ' selected="selected"' : '') . ' value="1ka">'.$lang['srv_chart_skin_1ka'].' ';
echo ' skin == 'lively' ? ' selected="selected"' : '') . ' value="lively">'.$lang['srv_chart_skin_0'].' ';
echo ' skin == 'mild' ? ' selected="selected"' : '') . ' value="mild">'.$lang['srv_chart_skin_1'].' ';
echo ' skin == 'office' ? ' selected="selected"' : '') . ' value="office">'.$lang['srv_chart_skin_6'].' ';
echo ' skin == 'pastel' ? ' selected="selected"' : '') . ' value="pastel">'.$lang['srv_chart_skin_7'].' ';
echo ' skin == 'green' ? ' selected="selected"' : '') . ' value="green">'.$lang['srv_chart_skin_2'].' ';
echo ' skin == 'blue' ? ' selected="selected"' : '') . ' value="blue">'.$lang['srv_chart_skin_3'].' ';
echo ' skin == 'red' ? ' selected="selected"' : '') . ' value="red">'.$lang['srv_chart_skin_4'].' ';
echo ' skin == 'multi' ? ' selected="selected"' : '') . ' value="multi">'.$lang['srv_chart_skin_5'].' ';
$customSkins = $this->getCustomSkins();
foreach($customSkins as $customSkin){
echo ' skin == $customSkin['id'] ? ' selected="selected"' : '') . ' value="'.$customSkin['colors'].'">'.$customSkin['name'].' ';
}
echo ' ';
}
function getCustomSkins(){
global $global_user_id;
$skins = array();
$sql = sisplet_query("SELECT * FROM srv_chart_skin WHERE usr_id='$global_user_id'");
while($row = mysqli_fetch_array($sql)){
$skins[] = $row;
}
return $skins;
}
/** Funkcije ki skrbijo za ajax del
*
*/
public function ajax() {
if (isset ($_POST['anketa'])) {
$anketa = $_POST['anketa'];
$this->anketa = $_POST['anketa'];
}
if (isset ($_POST['chartID']))
$chartID = $_POST['chartID'];
if (isset ($_POST['chart_type']))
$chart_type = $_POST['chart_type'];
if (isset ($_POST['podstran']))
$this->podstran = $_POST['podstran'];
// dobimo vse nastavitve iz sessiona
if(isset($this->sessionData[$this->podstran.'_charts'][$chartID]))
$this->settings = $this->sessionData[$this->podstran.'_charts'][$chartID];
else
$this->settings = $this->getDefaultSettings();
if (isset ($_POST['what']))
$what = $_POST['what'];
if (isset ($_POST['value']))
$value = $_POST['value'];
$this->settings[$what] = $value;
$this->sessionData[$this->podstran.'_charts'][$chartID] = $this->settings;
// Shranimo spremenjene nastavitve v bazo
SurveyUserSession::saveData($this->sessionData);
if ($_GET['a'] == 'table_chart_advanced_settings') {
$this->displayAdvancedSettings($chartID);
}
if ($_GET['a'] == 'chart_save_advanced_settings') {
// SHRANIMO BARVE
// preverimo najprej ce shranjujemo vrednosti, ki so enake kot izbran skin
$default = true;
$default_colors = SurveyChart::getDefaultColors($this->skin);
for($i=1; $i<8; $i++){
if($_POST['color'.$i] != $default_colors[$i-1]){
$default = false;
break;
}
}
for($i=1; $i<8; $i++){
// ce niso default vrednosti shranimo nastavljeno barvo
if($default == false)
$color = $_POST['color'.$i];
// ce so default vrednosti shranimo prazno
else
$color = '';
$this->settings['colors'][$i-1] = $color;
}
$this->sessionData[$this->podstran.'_charts'][$chartID] = $this->settings;
// Shranimo spremenjene nastavitve v bazo
SurveyUserSession::saveData($this->sessionData);
}
// Globalne nastavitve za vse grafe
if ($_GET['a'] == 'change_global_settings') {
SurveyUserSetting :: getInstance()->saveSettings('default_chart_profile_'.$what, $value);
//$this->display();
}
if ($_GET['a'] == 'change_chart') {
if($this->podstran == 'break'){
$this->classInstance = new SurveyBreak($this->anketa);
$this->break_forSpr = $this->sessionData['break_charts'][$chartID]['forSpr'];
$this->break_frequencys = $this->sessionData['break_charts'][$chartID]['frequencys'];
$this->break_spremenljivka = $this->sessionData['break_charts'][$chartID]['spremenljivka'];
}
// imamo crosstab graf
else{
$this->classInstance = new SurveyCrosstabs();
$this->classInstance->Init($this->anketa);
// Napolnimo podatke crosstabu
$crossData1 = $this->sessionData['crosstab_charts'][$chartID]['spr1'];
$crossData2 = $this->sessionData['crosstab_charts'][$chartID]['spr2'];
$this->classInstance->setVariables($crossData1['seq'],$crossData1['spr'],$crossData1['grd'],$crossData2['seq'],$crossData2['spr'],$crossData2['grd']);
$this->break_spremenljivka['tip'] = 1;
$this->break_spremenljivka['skala'] = 0;
}
$this->displayBreakChart($chartID);
}
if ($_GET['a'] == 'chart_reload_advanced_settings') {
// SHRANIMO BARVE
// preverimo najprej ce shranjujemo vrednosti, ki so enake kot izbran skin
$default = true;
$default_colors = SurveyChart::getDefaultColors($this->skin);
for($i=1; $i<8; $i++){
if($_POST['color'.$i] != $default_colors[$i-1]){
$default = false;
break;
}
}
for($i=1; $i<8; $i++){
// ce niso default vrednosti shranimo nastavljeno barvo
if($default == false)
$color = $_POST['color'.$i];
// ce so default vrednosti shranimo prazno
else
$color = '';
$this->settings['colors'][$i-1] = $color;
}
$this->sessionData[$this->podstran.'_charts'][$chartID] = $this->settings;
if($this->podstran == 'break'){
$this->classInstance = new SurveyBreak($this->anketa);
$this->break_forSpr = $this->sessionData['break_charts'][$chartID]['forSpr'];
$this->break_frequencys = $this->sessionData['break_charts'][$chartID]['frequencys'];
$this->break_spremenljivka = $this->sessionData['break_charts'][$chartID]['spremenljivka'];
}
// imamo crosstab graf
else{
$this->classInstance = new SurveyCrosstabs();
$this->classInstance->Init($this->anketa);
// Napolnimo podatke crosstabu
$crossData1 = $this->sessionData['crosstab_charts'][$chartID]['spr1'];
$crossData2 = $this->sessionData['crosstab_charts'][$chartID]['spr2'];
$this->classInstance->setVariables($crossData1['seq'],$crossData1['spr'],$crossData1['grd'],$crossData2['seq'],$crossData2['spr'],$crossData2['grd']);
$this->break_spremenljivka['tip'] = 1;
$this->break_spremenljivka['skala'] = 0;
}
// Shranimo spremenjene nastavitve v bazo
SurveyUserSession::saveData($this->sessionData);
$this->displayBreakChart($chartID);
}
}
}
?>