1909 lines
81 KiB
PHP
1909 lines
81 KiB
PHP
<?php
|
|
|
|
global $site_path;
|
|
|
|
include_once('../../function.php');
|
|
include_once('../survey/definition.php');
|
|
include_once('../exportclases/class.pdfIzvozAnalizaFunctions.php');
|
|
require_once('../exportclases/class.enka.pdf.php');
|
|
|
|
define("ALLOW_HIDE_ZERRO_REGULAR", false); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za navadne odgovore
|
|
define("ALLOW_HIDE_ZERRO_MISSING", true); // omogočimo delovanje prikazovanja/skrivanja ničelnih vnosti za missinge
|
|
|
|
define("NUM_DIGIT_AVERAGE", 2); // stevilo digitalnih mest za povprecje
|
|
define("NUM_DIGIT_DEVIATION", 2); // stevilo digitalnih mest za povprecje
|
|
|
|
define("M_ANALIZA_DESCRIPTOR", "descriptor");
|
|
define("M_ANALIZA_FREQUENCY", "frequency");
|
|
|
|
define("FNT_FREESERIF", "freeserif");
|
|
define("FNT_FREESANS", "freesans");
|
|
define("FNT_HELVETICA", "helvetica");
|
|
|
|
define("FNT_MAIN_TEXT", FNT_FREESANS);
|
|
define("FNT_QUESTION_TEXT", FNT_FREESANS);
|
|
define("FNT_HEADER_TEXT", FNT_FREESANS);
|
|
|
|
define("FNT_MAIN_SIZE", 10);
|
|
define("FNT_QUESTION_SIZE", 9);
|
|
define("FNT_HEADER_SIZE", 10);
|
|
|
|
define("RADIO_BTN_SIZE", 3);
|
|
define("CHCK_BTN_SIZE", 3);
|
|
define("LINE_BREAK", 6);
|
|
|
|
define ('PDF_MARGIN_HEADER', 8);
|
|
define ('PDF_MARGIN_FOOTER', 12);
|
|
define ('PDF_MARGIN_TOP', 18);
|
|
define ('PDF_MARGIN_BOTTOM', 18);
|
|
define ('PDF_MARGIN_LEFT', 15);
|
|
define ('PDF_MARGIN_RIGHT', 15);
|
|
|
|
define ('SNIPPET_LENGTH', 300);
|
|
|
|
|
|
/** Class za generacijo latex
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
class AnalizaMultiCrosstab extends LatexAnalysisElement {
|
|
|
|
var $anketa;// = array(); // trenutna anketa
|
|
|
|
var $pi=array('canCreate'=>false); // za shrambo parametrov in sporocil
|
|
var $pdf;
|
|
var $currentStyle;
|
|
var $db_table = '';
|
|
|
|
public $multiCrosstabClass = null; // crosstab class
|
|
|
|
private $cellWidth = 1; // sirina celice s podatki
|
|
private $cellHeight = 1; // visina celice s podadtki
|
|
private $cellSpan = 1; // stevilo vrstic v celici s podatki
|
|
|
|
protected $texNewLine = '\\\\ ';
|
|
protected $export_format;
|
|
protected $horizontalLineTex = "\\hline ";
|
|
protected $show_valid_percent;
|
|
protected $texBigSkip = '\bigskip';
|
|
protected $spaceBetweenTables = ' \newline \vspace*{1 cm} \newline';
|
|
|
|
protected $tableSettingsNumerus;
|
|
protected $tableSettingsPercent;
|
|
protected $tableSettingsSums;
|
|
protected $tableSettingsAvgVar;
|
|
protected $tableSettingsDelezVar;
|
|
|
|
|
|
/**
|
|
* @desc konstruktor
|
|
*/
|
|
function __construct ($anketa = null){
|
|
global $site_path;
|
|
global $global_user_id;
|
|
|
|
// preverimo ali imamo stevilko ankete
|
|
//if ( is_numeric($anketa) ){
|
|
if ( is_numeric($anketa['id']) ){
|
|
//$this->anketa['id'] = $anketa;
|
|
$this->anketa = $anketa;
|
|
// create new PDF document
|
|
//$this->pdf = new enka_TCPDF('L', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
|
|
}
|
|
else{
|
|
$this->pi['msg'] = "Anketa ni izbrana!";
|
|
$this->pi['canCreate'] = false;
|
|
|
|
return false;
|
|
}
|
|
$_GET['a'] = A_ANALYSIS;
|
|
|
|
|
|
//ustvarimo multicrosstabs objekt
|
|
//$this->multiCrosstabClass = new SurveyMultiCrosstabs($anketa);
|
|
|
|
//if ( SurveyInfo::getInstance()->SurveyInit($this->anketa['id']) && $this->init()){
|
|
if ( SurveyInfo::getInstance()->SurveyInit($this->anketa['id']) ){
|
|
$this->anketa['uid'] = $global_user_id;
|
|
|
|
SurveyUserSetting::getInstance()->Init($this->anketa['id'], $this->anketa['uid']);
|
|
SurveyDataSettingProfiles::Init($this->anketa['id']);
|
|
}
|
|
else
|
|
return false;
|
|
|
|
// ce smo prisli do tu je vse ok
|
|
$this->pi['canCreate'] = true;
|
|
|
|
return true;
|
|
}
|
|
|
|
// SETTERS && GETTERS
|
|
function checkCreate(){
|
|
return $this->pi['canCreate'];
|
|
}
|
|
|
|
function getFile($fileName=''){
|
|
//Close and output PDF document
|
|
ob_end_clean();
|
|
$this->pdf->Output($fileName, 'I');
|
|
}
|
|
|
|
public function displayTable($multiCrosstabClass=null, $export_format=''){
|
|
global $site_path;
|
|
global $lang;
|
|
|
|
$tabela = '';
|
|
|
|
$this->multiCrosstabClass = $multiCrosstabClass;
|
|
|
|
// Napolnimo variable ki so ze izbrane
|
|
$this->multiCrosstabClass->getSelectedVars();
|
|
|
|
// Izpisemo naslov tabele
|
|
//echo "naslov tabele: ".$this->encodeText($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['title'])."</br>";
|
|
$tabela .= '\textbf{'.$this->encodeText($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['title']).'}'.$this->texBigSkip.$this->texNewLine;
|
|
//echo $tabela."</br>";
|
|
/* $this->pdf->setFont('','B','10');
|
|
$this->pdf->MultiCell(150, 5, $this->encodeText($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['title']), 0, 'L', 0, 1, 0 ,0, true);
|
|
$this->pdf->ln(5);
|
|
$this->pdf->setFont('','','6'); */
|
|
|
|
|
|
// TABELA
|
|
|
|
// Najprej izracunamo dimenzije
|
|
$lineHeight = 6;
|
|
$fullWidth = 270;
|
|
|
|
if($this->multiCrosstabClass->rowSpan == 0)
|
|
//$colspan = 1;
|
|
$colspan = 2;
|
|
elseif(!$this->multiCrosstabClass->rowLevel2)
|
|
$colspan = 2;
|
|
else
|
|
$colspan = 4;
|
|
|
|
$metaWidth = $colspan * 35;
|
|
$dataWidth = $fullWidth - $metaWidth;
|
|
|
|
$dataCellSpan = 0;
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1)
|
|
$dataCellSpan++;
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1)
|
|
$dataCellSpan++;
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] != '')
|
|
$dataCellSpan++;
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] != '')
|
|
$dataCellSpan++;
|
|
|
|
$this->cellSpan = ($dataCellSpan == 0) ? 1 : $dataCellSpan;
|
|
$this->cellHeight = ($this->cellSpan > 1) ? $this->cellSpan * 5 : $lineHeight;
|
|
|
|
$this->tableSettingsNumerus = $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'];
|
|
$this->tableSettingsPercent = $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'];
|
|
$this->tableSettingsSums = $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'];
|
|
$this->tableSettingsAvgVar = $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'];
|
|
$this->tableSettingsDelezVar = $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'];
|
|
|
|
$steviloPodstolpcevV1 = array(); //hrani stevilo podstolpcev za 1. vrstico
|
|
$steviloPodstolpcevV2 = array(); //hrani stevilo podstolpcev za 2. vrstico
|
|
$steviloPodstolpcevV3 = array(); //hrani stevilo podstolpcev za 3. vrstico
|
|
$indeksMultiRow = array(); //hrani, kje je potrebna crta med vrsticami tabele (1) in kje ne (0)
|
|
|
|
//$tabela .= $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'];
|
|
|
|
$cntVerVars=0;
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
|
|
$cntVerVars++;
|
|
}
|
|
//echo "cntVerVars: ".$cntVerVars."</br>";
|
|
|
|
if($this->multiCrosstabClass->colSpan == 0){
|
|
//$this->cellWidth = $dataWidth/2;
|
|
//$this->pdf->MultiCell($metaWidth, 0, '', 'B', 'L', 0, 1, 0 ,0, true);
|
|
$steviloPodstolpcev = 1;
|
|
$steviloPodstolpcevV1[] = $steviloPodstolpcev;
|
|
}
|
|
// Imamo 2 nivoja
|
|
elseif($this->multiCrosstabClass->colLevel2){
|
|
//echo "vertikalno izbrane sprem. 1. vrstica, ko imamo 2 nivoja</br>";
|
|
|
|
$this->cellWidth = $dataWidth / $this->multiCrosstabClass->colSpan;
|
|
|
|
//pridobivanje podatkov zadnja vrstica
|
|
if(count($this->multiCrosstabClass->selectedVars['ver'])){
|
|
$cetrtaVrsticaVert = array();
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $parentVar){
|
|
$steviloPodstolpcev = 0;
|
|
$cetrtaVrsticaVertTmp = array(); //za pridobitev stevila podstolpcev za posamezno spremenljivko, ce jih je vec
|
|
// ce imamo childe na 2. nivoju
|
|
if(count($parentVar['sub']) > 0){
|
|
foreach($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options'] as $option){
|
|
foreach($parentVar['sub'] as $var){
|
|
foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $suboption){
|
|
//$this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->snippet($suboption, 25), 1, 'C', 0, 0, 0 ,0, true, $stretch=0, $ishtml=false, $autopadding=false, $maxh=0);
|
|
if($export_format != 'xls'){
|
|
$cetrtaVrsticaVertText = $this->snippet($suboption, 25);
|
|
$cetrtaVrsticaVertTmpText = $this->snippet($suboption, 25);
|
|
}else{
|
|
$cetrtaVrsticaVertText = $suboption;
|
|
$cetrtaVrsticaVertTmpText = $suboption;
|
|
}
|
|
$cetrtaVrsticaVert[] = $cetrtaVrsticaVertText;
|
|
$cetrtaVrsticaVertTmp[] = $cetrtaVrsticaVertTmpText;
|
|
$indeksMultiRow[] = 1;
|
|
}
|
|
$steviloPodstolpcevV3[] = count($this->multiCrosstabClass->variablesList[$var['spr']]['options']);
|
|
}
|
|
$steviloPodstolpcev = count($cetrtaVrsticaVertTmp);
|
|
}
|
|
}
|
|
else{
|
|
//$this->pdf->MultiCell($this->cellWidth*count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']), $lineHeight, '', 0, 'C', 0, 0, 0 ,0, true);
|
|
|
|
foreach($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options'] as $option){
|
|
//$this->pdf->MultiCell($this->cellWidth, $lineHeight*2, $this->snippet($option, 25), 1, 'C', 0, 0, 0 ,0, true);
|
|
|
|
/* $cetrtaVrsticaVert[] = $this->snippet($option, 25);
|
|
$cetrtaVrsticaVertTmp[] = $this->snippet($suboption, 25); */
|
|
if($export_format != 'xls'){
|
|
$cetrtaVrsticaVertText = $this->snippet($option, 25);
|
|
$cetrtaVrsticaVertTmpText = $this->snippet($suboption, 25);
|
|
}else{
|
|
$cetrtaVrsticaVertText = $option;
|
|
$cetrtaVrsticaVertTmpText = $suboption;
|
|
}
|
|
$cetrtaVrsticaVert[] = $cetrtaVrsticaVertText;
|
|
$cetrtaVrsticaVertTmp[] = $cetrtaVrsticaVertTmpText;
|
|
$indeksMultiRow[] = 0;
|
|
}
|
|
$steviloPodstolpcev = count($cetrtaVrsticaVertTmp);
|
|
$steviloPodstolpcevV3[] = count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']);
|
|
}
|
|
if($steviloPodstolpcev!=0){
|
|
$steviloPodstolpcevV1[] = $steviloPodstolpcev;
|
|
}
|
|
}
|
|
}
|
|
//pridobivanje podatkov zadnja vrstica - konec
|
|
|
|
|
|
// Izrisemo VERTIKALNO izbrane spremenljivkec - 1. vrstica
|
|
//$this->pdf->MultiCell($metaWidth, $lineHeight, '', 0, 'L', 0, 0, 0 ,0, true);
|
|
|
|
if(count($this->multiCrosstabClass->selectedVars['ver'])){
|
|
$prvaVrsticaVert = array();
|
|
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
|
|
|
|
// Ce imamo tudi 2. nivo pri doloceni spremenljivki
|
|
if(count($var['sub']) > 0){
|
|
$rowspan = 1;
|
|
$width = $this->cellWidth * count($this->multiCrosstabClass->variablesList[$var['sub'][0]['spr']]['options']) * count($this->multiCrosstabClass->variablesList[$var['spr']]['options']);
|
|
if($export_format != 'xls'){
|
|
$naslov = $this->encodeText($this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25));
|
|
}else{
|
|
$naslov = $this->encodeText($this->multiCrosstabClass->variablesList[$var['spr']]['naslov']);
|
|
}
|
|
}
|
|
else{
|
|
$rowspan = 2;
|
|
$width = $this->cellWidth * count($this->multiCrosstabClass->variablesList[$var['spr']]['options']);
|
|
if($export_format != 'xls'){
|
|
$naslov = '\multirow{2}{*}{ '.$this->encodeText($this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25)).' }';
|
|
}else{
|
|
$naslov = $this->encodeText($this->multiCrosstabClass->variablesList[$var['spr']]['naslov']);
|
|
}
|
|
}
|
|
//$this->pdf->MultiCell($width, $lineHeight*$rowspan, $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25), 1, 'C', 0, 0, 0 ,0, true);
|
|
|
|
//$naslov = $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25);
|
|
//$naslov = $this->encodeText($this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25));
|
|
|
|
$prvaVrsticaVert[] = $naslov;
|
|
//echo "naslov: ".$naslov."</br>";
|
|
}
|
|
}
|
|
//$this->pdf->MultiCell(1, $lineHeight, '', 0, 'L', 0, 1, 0 ,0, true);
|
|
|
|
// Izris vrstic za 2. nivo - 3. in 4. vrstica
|
|
//$this->pdf->MultiCell($metaWidth, $lineHeight, '', 0, 'L', 0, 0, 0 ,0, true);
|
|
if(count($this->multiCrosstabClass->selectedVars['ver'])){
|
|
$tretjaVrsticaVert = array();
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $parentVar){
|
|
// ce imamo childe na 2. nivoju
|
|
if(count($parentVar['sub']) > 0){
|
|
//$tretjaVrsticaVert = array();
|
|
foreach($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options'] as $option){
|
|
$width = $this->cellWidth * count($this->multiCrosstabClass->variablesList[$parentVar['sub'][0]['spr']]['options']);
|
|
foreach($parentVar['sub'] as $var){
|
|
//$this->pdf->MultiCell($width, $lineHeight, $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25), 1, 'C', 0, 0, 0 ,0, true);
|
|
if($export_format != 'xls'){
|
|
$tretjaVrsticaVert[] = $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25);
|
|
}else{
|
|
$tretjaVrsticaVert[] = $this->multiCrosstabClass->variablesList[$var['spr']]['naslov'];
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
else{
|
|
//$this->pdf->MultiCell($this->cellWidth*count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']), $lineHeight, '', 0, 'C', 0, 0, 0 ,0, true);
|
|
|
|
//$tretjaVrsticaVert[] = '';
|
|
$tretjaVrsticaVert[] = '\multirow{2}{*}{}';
|
|
|
|
|
|
}
|
|
}
|
|
//echo "3. vrstica podvrstice: ".count($tretjaVrsticaVert)."</br>";
|
|
}
|
|
|
|
// Izrisemo VARIABLE za spremenljivko - 2. vrstica
|
|
//$this->pdf->MultiCell($metaWidth, $lineHeight, '', 0, 'L', 0, 0, 0 ,0, true);
|
|
if(count($this->multiCrosstabClass->selectedVars['ver'])){
|
|
$drugaVrsticaVert = array();
|
|
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
|
|
|
|
// Ce imamo tudi 2. nivo pri doloceni spremenljivki
|
|
if(count($var['sub']) > 0){
|
|
$drugaVrsticaVertTmp = array();
|
|
//$width = $this->cellWidth * count($this->multiCrosstabClass->variablesList[$var['sub'][0]['spr']]['options']);
|
|
foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $option){
|
|
//$this->pdf->MultiCell($width, $lineHeight, $this->snippet($option, 25), 1, 'C', 0, 0, 0 ,0, true);
|
|
if($export_format != 'xls'){
|
|
$drugaVrsticaVert[] = $this->snippet($option, 25);
|
|
$drugaVrsticaVertTmp[] = $this->snippet($option, 25);
|
|
}else{
|
|
$drugaVrsticaVert[] = $option;
|
|
$drugaVrsticaVertTmp[] = $option;
|
|
}
|
|
}
|
|
|
|
foreach($drugaVrsticaVertTmp as $druga){
|
|
$steviloPodstolpcev = 0;
|
|
for($i=0;$i<count($var['sub']);$i++){
|
|
$steviloPodstolpcev = $steviloPodstolpcev + count($this->multiCrosstabClass->variablesList[$var['sub'][$i]['spr']]['options']);
|
|
}
|
|
$steviloPodstolpcevV2[] = $steviloPodstolpcev;
|
|
}
|
|
}
|
|
else{
|
|
$drugaVrsticaVert[] = '';
|
|
$steviloPodstolpcevV2[] = count($this->multiCrosstabClass->variablesList[$var['spr']]['options']);
|
|
}
|
|
}
|
|
}
|
|
//$this->pdf->MultiCell(1, $lineHeight, '', 0, 'L', 0, 1, 0 ,0, true);
|
|
}
|
|
// Imamo samo 1 nivo
|
|
else{
|
|
// Izrisemo VERTIKALNO izbrane spremenljivkec - 1. vrstica
|
|
//echo "Samo 1 nivo </br>";
|
|
// Izracunamo sirine celic
|
|
$this->cellWidth = $dataWidth / $this->multiCrosstabClass->fullColSpan;
|
|
|
|
//$this->pdf->MultiCell($metaWidth, $lineHeight, '', 0, 'C', 0, 0, 0 ,0, true);
|
|
|
|
if(count($this->multiCrosstabClass->selectedVars['ver'])){
|
|
$prvaVrsticaVert = array();
|
|
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
|
|
$naslov = $this->multiCrosstabClass->variablesList[$var['spr']]['naslov'];
|
|
|
|
if($naslov!=''||($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'] == 1 && !$this->multiCrosstabClass->rowLevel2)){
|
|
if($export_format != 'xls'){
|
|
$prvaVrsticaVert[] = $this->snippet($naslov, 35);
|
|
}else{
|
|
$prvaVrsticaVert[] = $naslov;
|
|
}
|
|
}
|
|
|
|
//$prvaVrsticaVert[] = $this->snippet($naslov, 35);
|
|
|
|
//$sprWidth = count($this->multiCrosstabClass->variablesList[$var['spr']]['options']) * $this->cellWidth;
|
|
//if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'] == 1 && !$this->multiCrosstabClass->rowLevel2)
|
|
//$sprWidth += $this->cellWidth;
|
|
//$this->pdf->MultiCell($sprWidth, $lineHeight, $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 35), 1, 'C', 0, 0, 0 ,0, true);
|
|
|
|
}
|
|
|
|
//$this->pdf->MultiCell(1, $lineHeight, '', 0, 'C', 0, 1, 0 ,0, true);
|
|
//$tabela .= $this->tableRow($prvaVrsticaVert);
|
|
//echo $tabela;
|
|
}
|
|
// Nimamo nobene vertikalne spremenljivke in 2 horizontalni
|
|
elseif($this->multiCrosstabClass->rowLevel2){
|
|
//$this->pdf->MultiCell($dataWidth, $lineHeight, '', 0, 'C', 0, 0, 0 ,0, true);
|
|
echo "Nimamo nobene vertikalne spremenljivke in 2 horizontalni </br>";
|
|
}
|
|
|
|
|
|
// Izrisemo VARIABLE za spremenljivko - 2. vrstica
|
|
if(count($this->multiCrosstabClass->selectedVars['ver'])){
|
|
$drugaVrsticaVert = array();
|
|
|
|
// Iracunamo visino najvisje celice
|
|
$cellHeight = $lineHeight;
|
|
/* foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
|
|
|
|
foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $option){
|
|
$height = $this->getCellHeight($this->snippet($option, 25), $this->cellWidth);
|
|
|
|
$cellHeight = ($height > $cellHeight) ? $height : $cellHeight;
|
|
}
|
|
} */
|
|
|
|
//$this->pdf->MultiCell($metaWidth, $cellHeight, '', 'B', 'C', 0, 0, 0 ,0, true);
|
|
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $var){
|
|
$steviloPodstolpcev = 0;
|
|
// Loop cez variable spremenljivke
|
|
foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $option){
|
|
//$this->pdf->MultiCell($this->cellWidth, $cellHeight, $this->snippet($option, 25), 1, 'C', 0, 0, 0 ,0, true);
|
|
if($export_format != 'xls'){
|
|
$drugaVrsticaVert[] = $this->snippet($option, 25);
|
|
}else{
|
|
$drugaVrsticaVert[] = $option;
|
|
}
|
|
}
|
|
|
|
$steviloPodstolpcev = count($this->multiCrosstabClass->variablesList[$var['spr']]['options']);
|
|
|
|
// Suma (ce jo imamo vklopljeno)
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'] == 1 && !$this->multiCrosstabClass->rowLevel2){
|
|
//$this->pdf->MultiCell($this->cellWidth, $cellHeight, $lang['srv_analiza_crosstab_skupaj'], 1, 'C', 0, 0, 0 ,0, true);
|
|
$drugaVrsticaVert[] = $lang['srv_analiza_crosstab_skupaj'];
|
|
$steviloPodstolpcev++;
|
|
}
|
|
|
|
/* if($colspan<4){
|
|
$steviloPodstolpcevV2[] = $steviloPodstolpcev;
|
|
}elseif($steviloPodstolpcev!=0&&$colspan==4){
|
|
$steviloPodstolpcevV2[] = $steviloPodstolpcev;
|
|
} */
|
|
if($steviloPodstolpcev!=0){
|
|
$steviloPodstolpcevV1[] = $steviloPodstolpcev;
|
|
}
|
|
|
|
//$steviloPodstolpcevV2[] = $steviloPodstolpcev;
|
|
}
|
|
//$tabela .= $this->tableRow($drugaVrsticaVert);
|
|
//$this->pdf->MultiCell(1, $cellHeight, '', 0, 'C', 0, 1, 0 ,0, true);
|
|
}
|
|
}
|
|
|
|
##########################################################################################
|
|
/*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis*/
|
|
$steviloStolpcevParameterTabular = $this->getSteviloPodstolpcev($steviloPodstolpcevV1);
|
|
$steviloStolpcevParameterTabular = $steviloStolpcevParameterTabular + $colspan;
|
|
//echo "Stevilo stolpcev: ".$steviloStolpcevParameterTabular."</br>";
|
|
$steviloOstalihStolpcev = $steviloStolpcevParameterTabular - 1; /*stevilo stolpcev brez prvega stolpca, ki ima fiksno sirino*/
|
|
$sirinaOstalihStolpcev = 0.9/$steviloOstalihStolpcev;
|
|
|
|
$cntHorVars=0;
|
|
foreach($this->multiCrosstabClass->selectedVars['hor'] as $var){
|
|
$cntHorVars++;
|
|
}
|
|
|
|
//echo "cntHorVars: ".$cntHorVars."</br>";
|
|
if($cntHorVars>=1||$this->multiCrosstabClass->rowSpan == 0){
|
|
$parameterTabular = '|';
|
|
}
|
|
|
|
for($i = 0; $i < $steviloStolpcevParameterTabular; $i++){
|
|
$parameterTabular .= ($export_format == 'pdf' ? 'c|' : 'c|');
|
|
}
|
|
/*Priprava parametrov za tabelo in ostala polja za nadaljnji izpis - konec*/
|
|
|
|
//zacetek latex tabele z obrobo za prvo tabelo
|
|
$pdfTable = 'tabularx';
|
|
$rtfTable = 'tabular';
|
|
$pdfTableWidth = 1;
|
|
$rtfTableWidth = 1;
|
|
|
|
$tabela .= $this->StartLatexTable($export_format, $parameterTabular, $pdfTable, $rtfTable, $pdfTableWidth, $rtfTableWidth); /*zacetek tabele*/
|
|
##########################################################################################
|
|
if($export_format != 'xls'){
|
|
$tabela .= "\\cline{".($colspan+1)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica na vrhu tabele
|
|
}
|
|
|
|
$tabela .= $this->MultiColCellLatex($colspan, '', 1, $export_format); //prazne celice v prvi vrstici
|
|
//$tabela .= $this->tableRow($prvaVrsticaVert, 1, 0, 0, $steviloPodstolpcevV1); //izpis prve vrstice tabele
|
|
$tabela .= $this->tableRow($prvaVrsticaVert, 1, 0, 0, '', $export_format, $steviloPodstolpcevV1); //izpis prve vrstice tabele
|
|
|
|
//prekinjena horizontalna vrstica po prvi vrstici
|
|
if($export_format != 'xls'){
|
|
$tabela .= $this->urediCrteTabele($indeksMultiRow, $colspan, $steviloStolpcevParameterTabular);
|
|
}
|
|
//prekinjena horizontalna vrstica po prvi vrstici - konec
|
|
|
|
if(count($drugaVrsticaVert)){
|
|
$tabela .= $this->MultiColCellLatex($colspan, '', 1, $export_format); //prazne celice v drugi vrstici
|
|
if(count($steviloPodstolpcevV2)){
|
|
//$tabela .= $this->tableRow($drugaVrsticaVert, 1, 0, 0, $steviloPodstolpcevV2);
|
|
$tabela .= $this->tableRow($drugaVrsticaVert, 1, 0, 0, '', $export_format, $steviloPodstolpcevV2);
|
|
}else{
|
|
$tabela .= $this->tableRow($drugaVrsticaVert, 1);
|
|
}
|
|
|
|
//prekinjena horizontalna vrstica po drugi vrstici
|
|
if($export_format != 'xls'){
|
|
$tabela .= $this->urediCrteTabele($indeksMultiRow, $colspan, $steviloStolpcevParameterTabular);
|
|
}
|
|
//prekinjena horizontalna vrstica po drugi vrstici - konec
|
|
}
|
|
|
|
if(count($tretjaVrsticaVert)){
|
|
$tabela .= $this->MultiColCellLatex($colspan, '', 1, $export_format); //prazne celice v drugi vrstici
|
|
if(count($steviloPodstolpcevV3)){
|
|
//$tabela .= $this->tableRow($tretjaVrsticaVert, 1, 0, 0, $steviloPodstolpcevV3);
|
|
$tabela .= $this->tableRow($tretjaVrsticaVert, 1, 0, 0, '', $export_format, $steviloPodstolpcevV3);
|
|
}else{
|
|
$tabela .= $this->tableRow($tretjaVrsticaVert, 1);
|
|
}
|
|
if($export_format != 'xls'){
|
|
$tabela .= "\\cline{".($colspan+1)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica po tretji vrstici
|
|
}
|
|
}
|
|
|
|
if(count($cetrtaVrsticaVert)){
|
|
$tabela .= $this->MultiColCellLatex($colspan, '', 1, $export_format); //prazne celice v drugi vrstici
|
|
$tabela .= $this->tableRow($cetrtaVrsticaVert, 1);
|
|
}
|
|
|
|
|
|
// Izrisemo HORIZONTALNO izbrane variable
|
|
if(count($this->multiCrosstabClass->selectedVars['hor'])){
|
|
|
|
// Imamo 2 nivoja vrstic
|
|
if($this->multiCrosstabClass->rowLevel2){
|
|
if($export_format != 'xls'){
|
|
$tabela .= ' \hline '; //horizontalna crta na zacetku tabele
|
|
}
|
|
|
|
foreach($this->multiCrosstabClass->selectedVars['hor'] as $parentVar){
|
|
|
|
$cnt = 0;
|
|
$order0 = 0;
|
|
|
|
foreach($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options'] as $option){
|
|
//echo "option hor 2. nivoja: ".$option."</br>";
|
|
$cnt2 = 0;
|
|
|
|
// ce imamo childe na 2. nivoju
|
|
if(count($parentVar['sub']) > 0){
|
|
|
|
$width = $metaWidth / 4;
|
|
|
|
foreach($parentVar['sub'] as $var){
|
|
|
|
$cnt3 = 0;
|
|
|
|
foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $suboption){
|
|
|
|
// Spodnji border pri zadnjem
|
|
/* if($cnt == count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']) * count($this->multiCrosstabClass->variablesList[$var['spr']]['options']) - 1)
|
|
$border1 = 'B';
|
|
else
|
|
$border1 = '';
|
|
if($cnt2 == count($this->multiCrosstabClass->variablesList[$var['spr']]['options'])-1)
|
|
$border2 = 'B';
|
|
else
|
|
$border2 = ''; */
|
|
|
|
//if($cnt == floor((count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']) * count($this->multiCrosstabClass->variablesList[$var['spr']]['options'])) / 2)){
|
|
|
|
|
|
|
|
|
|
//$tabela .= ' \hline ';
|
|
|
|
if($cnt == 0){
|
|
if($export_format != 'xls'){
|
|
$tabela .= $this->encodeText($this->snippet($this->multiCrosstabClass->variablesList[$parentVar['spr']]['naslov'], 25))." & ";
|
|
}else{
|
|
$tabela .= $this->encodeText($this->multiCrosstabClass->variablesList[$parentVar['spr']]['naslov'])." & ";
|
|
}
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($this->multiCrosstabClass->variablesList[$parentVar['spr']]['naslov'], 25), 'LR', 'C', 0, 0, 0 ,0, true);
|
|
//echo "naslov : ".$this->snippet($this->multiCrosstabClass->variablesList[$parentVar['spr']]['naslov'], 25)."</br>";
|
|
}
|
|
else{
|
|
$tabela .= " & ";
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, '', 'LR'.$border1, 'C', 0, 0, 0 ,0, true);
|
|
//echo "naslov : </br>";
|
|
}
|
|
|
|
|
|
// Variabla
|
|
//if($cnt2 == floor(count($this->multiCrosstabClass->variablesList[$var['spr']]['options'])/2)){
|
|
if($cnt2 == 0){
|
|
if($export_format != 'xls'){
|
|
$tabela .= $this->encodeText($this->snippet($option, 25))." & ";
|
|
}else{
|
|
$tabela .= $this->encodeText($option)." & ";
|
|
}
|
|
//echo "variabla : ".$this->snippet($option, 25)."</br>";
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($option, 25), 'LR', 'C', 0, 0, 0 ,0, true);
|
|
}
|
|
else{
|
|
$tabela .= " & ";
|
|
//echo "variabla : </br>";
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, '', 'LR'.$border2, 'C', 0, 0, 0 ,0, true);
|
|
}
|
|
|
|
//if($cnt3 == floor(count($this->multiCrosstabClass->variablesList[$var['spr']]['options'])/2)){
|
|
if($cnt3 == 0){
|
|
if($export_format != 'xls'){
|
|
$tabela .= $this->encodeText($this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25))." & ";
|
|
}else{
|
|
$tabela .= $this->encodeText($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'])." & ";
|
|
}
|
|
//echo "variabla cnt3: ".$this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25)."</br>";
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25), 'LR', 'C', 0, 0, 0 ,0, true);
|
|
}
|
|
else{
|
|
$tabela .= " & ";
|
|
//echo "variabla cnt3: </br>";
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, '', 'LR'.$border2, 'C', 0, 0, 0 ,0, true);
|
|
}
|
|
|
|
// Variabla 2
|
|
if($export_format != 'xls'){
|
|
$tabela .= $this->encodeText($this->snippet($suboption, 25))." & ";
|
|
}else{
|
|
$tabela .= $this->encodeText($suboption)." & ";
|
|
}
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($suboption, 25), 1, 'C', 0, 0, 0 ,0, true);
|
|
//echo "option variabla 2: ".$this->snippet($suboption, 25)."</br>";
|
|
|
|
// Celice s podatki
|
|
$vrsticaPodatki = $this->displayDataCells($parentVar, $order0, $var, $cnt3);
|
|
//print_r($vrsticaPodatki);
|
|
################# izpis celic s podatki
|
|
$tabela .= $this->displayDataCellLatex($vrsticaPodatki, $this->tableSettingsNumerus, $this->tableSettingsAvgVar, $this->tableSettingsDelezVar, $colspan, $steviloStolpcevParameterTabular, $export_format);
|
|
################# izpis celic s podatki - konec
|
|
// Celice s podatki - konec
|
|
|
|
//$this->pdf->MultiCell(1, $this->cellHeight, '', 0, 'C', 0, 1, 0 ,0, true);
|
|
|
|
$cnt++;
|
|
$cnt2++;
|
|
$cnt3++;
|
|
|
|
//prekinjena horizontalna crta med moznostmi 2. nivoja horizontalne spremenljivke
|
|
if($export_format != 'xls'){
|
|
$tabela .= ' \cline {4-'.$steviloStolpcevParameterTabular.'}';
|
|
}
|
|
}
|
|
|
|
//prekinjena horizontalna crta med moznostmi 1. nivoja horizontalne spremenljivke
|
|
if($export_format != 'xls'){
|
|
$tabela .= ' \cline {2-'.$steviloStolpcevParameterTabular.'}';
|
|
}
|
|
|
|
$order0++;
|
|
}
|
|
}
|
|
else{
|
|
$width = $metaWidth / 2;
|
|
|
|
// Spodnji border pri zadnjem
|
|
if($cnt == count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options']) - 1)
|
|
$border1 = 'B';
|
|
else
|
|
$border1 = '';
|
|
|
|
if($cnt == floor(count($this->multiCrosstabClass->variablesList[$parentVar['spr']]['options'])/2)){
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($this->multiCrosstabClass->variablesList[$parentVar['spr']]['naslov'], 25), 'LR', 'C', 0, 0, 0 ,0, true);
|
|
}
|
|
else{
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, '', 'LR'.$border1, 'C', 0, 0, 0 ,0, true);
|
|
}
|
|
|
|
// Variabla
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($option, 25), 1, 'C', 0, 0, 0 ,0, true);
|
|
|
|
// Celice s podatki
|
|
//$this->displayDataCells($parentVar, $cnt);
|
|
|
|
//$this->pdf->MultiCell(1, $this->cellHeight, '', 0, 'C', 0, 1, 0 ,0, true);
|
|
|
|
$cnt++;
|
|
}
|
|
}
|
|
}
|
|
|
|
if($export_format != 'xls'){
|
|
$tabela .= ' \hline '; //horizontalna crta na koncu tabele
|
|
}
|
|
|
|
}
|
|
// Imamo samo 1 nivo vrstic
|
|
else{
|
|
//echo "1 nivo vrstic";
|
|
$width = $metaWidth / 2;
|
|
if($export_format != 'xls'){
|
|
$tabela .= ' \hline '; //horizontalna vrstica
|
|
}
|
|
$cntHorVars = 0;
|
|
foreach($this->multiCrosstabClass->selectedVars['hor'] as $var){
|
|
|
|
// Ce imamo sumo
|
|
$suma = ($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'] == 1 && count($this->multiCrosstabClass->selectedVars['ver']) > 0 && !$this->multiCrosstabClass->colLevel2) ? true : false;
|
|
|
|
$cnt = 0;
|
|
$vrsticaPodatki = array();
|
|
$vrstica = array();
|
|
|
|
foreach($this->multiCrosstabClass->variablesList[$var['spr']]['options'] as $option){ //vrstice s spremenljivkami
|
|
//echo "option hor 1. nivo: ".$option."</br>";
|
|
//Naslov horizontalne vrstice
|
|
if($cnt==0){
|
|
if($export_format != 'xls'){
|
|
$naslovVarHor = $this->snippet($this->multiCrosstabClass->variablesList[$var['spr']]['naslov'], 25);
|
|
}else{
|
|
$naslovVarHor = $this->multiCrosstabClass->variablesList[$var['spr']]['naslov'];
|
|
}
|
|
//$tabela .= $naslovVarHor." & ";
|
|
}else{
|
|
$naslovVarHor = '';
|
|
}
|
|
//echo "naslovVarHor: ".$naslovVarHor."</br>";
|
|
$tabela .= $naslovVarHor." & ";
|
|
|
|
// Variabla
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, $this->snippet($option, 25), '1', 'C', 0, 0, 0 ,0, true);
|
|
//echo "variabla: ".$this->snippet($option, 25)."</br>";
|
|
if($export_format != 'xls'){
|
|
$tabela .= $this->snippet($option, 25)." & ";
|
|
}else{
|
|
$tabela .= $option." & ";
|
|
}
|
|
|
|
// Celice s podatki
|
|
//echo "celica s podatki: ".$var."</br>";
|
|
// Ce nimamo nobenega krizanja izpisemo prazne
|
|
if($spr2 == '' && $this->multiCrosstabClass->colSpan == 0){
|
|
//$tabela .= " & ";
|
|
$tabela .= $this->texNewLine;
|
|
}else{
|
|
$vrsticaPodatki = $this->displayDataCells($var, $cnt);
|
|
//print_r($vrsticaPodatki);
|
|
################# izpis celic s podatki
|
|
$tabela .= $this->displayDataCellLatex($vrsticaPodatki, $this->tableSettingsNumerus, $this->tableSettingsAvgVar, $this->tableSettingsDelezVar, $colspan, $steviloStolpcevParameterTabular, $export_format);
|
|
################# izpis celic s podatki - konec
|
|
}
|
|
//$this->pdf->MultiCell(1, $this->cellHeight, '', 0, 'C', 0, 1, 0 ,0, true);
|
|
|
|
if($export_format != 'xls'){
|
|
$tabela .= "\\cline{".($colspan)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica
|
|
}
|
|
|
|
$cnt++;
|
|
}
|
|
// Vrstica za sumo (ce jo imamo vklopljeno)
|
|
if($suma){
|
|
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, '', 'BLR', 'C', 0, 0, 0 ,0, true);
|
|
//$this->pdf->MultiCell($width, $this->cellHeight, $lang['srv_analiza_crosstab_skupaj'], '1', 'C', 0, 0, 0 ,0, true);
|
|
$tabela .= " & ".$this->encodeText($lang['srv_analiza_crosstab_skupaj'])." & ";
|
|
//$tabela .= $this->encodeText($lang['srv_analiza_crosstab_skupaj'])." & ";
|
|
|
|
$vrsticaPodatkiSumNum = array();
|
|
$vrsticaPodatkiSumPer = array();
|
|
$vrsticaPodatkiSumAvg = array();
|
|
$vrsticaPodatkiSumDelez = array();
|
|
// Loop cez vse stolpce
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $spr2){
|
|
|
|
// Loop cez variable trenutnega stolpca
|
|
$cnt = 0;
|
|
foreach($this->multiCrosstabClass->variablesList[$spr2['spr']]['options'] as $var2){
|
|
//echo "var2: ".$var2."</br>";
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$var['spr'].'-'.$spr2['spr']];
|
|
|
|
$keys1 = array_keys($crosstabs['options1']);
|
|
$val = $keys1[$cnt];
|
|
|
|
//$this->displaySumsCell($var, $spr2, $val, $orientation=1);
|
|
$celicaSums = $this->displaySumsCell($var, $spr2, $val, $orientation=1);
|
|
if($this->tableSettingsNumerus){
|
|
$vrsticaPodatkiSumNum[] = $celicaSums['numerus'];
|
|
}
|
|
if($this->tableSettingsPercent){
|
|
$vrsticaPodatkiSumPer[] = $celicaSums['percent'];
|
|
}
|
|
if($this->tableSettingsAvgVar){
|
|
$vrsticaPodatkiSumAvg[] = $celicaSums['avg'];
|
|
}
|
|
if($this->tableSettingsDelezVar){
|
|
$vrsticaPodatkiSumDelez[] = $celicaSums['delez'];
|
|
}
|
|
//echo "Loop cez variable trenutnega stolpca </br>";
|
|
$cnt++;
|
|
}
|
|
|
|
// Krizanje navpicne in vodoravne sume
|
|
$celicaSums = $this->displaySumsCell($var, $spr2, 0, $orientation=2);
|
|
if($this->tableSettingsNumerus){
|
|
$vrsticaPodatkiSumNum[] = $celicaSums['numerus'];
|
|
}
|
|
if($this->tableSettingsPercent){
|
|
$vrsticaPodatkiSumPer[] = $celicaSums['percent'];
|
|
}
|
|
if($this->tableSettingsAvgVar){
|
|
$vrsticaPodatkiSumAvg[] = $celicaSums['avg'];
|
|
}
|
|
if($this->tableSettingsDelezVar){
|
|
$vrsticaPodatkiSumDelez[] = $celicaSums['delez'];
|
|
}
|
|
|
|
//echo "Krizanje navpicne in vodoravne sume </br>";
|
|
}
|
|
if($this->tableSettingsNumerus){
|
|
$tabela .= $this->tableRow($vrsticaPodatkiSumNum,1);
|
|
if($this->tableSettingsPercent||$this->tableSettingsAvgVar||$this->tableSettingsDelezVar){ //ce je potrebno izpisati se ostale vrstice izracunov
|
|
if($export_format != 'xls'){
|
|
$tabela .= "\\cline{".($colspan+1)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica
|
|
}
|
|
$tabela .= $this->AddEmptyCells($colspan);
|
|
}
|
|
}
|
|
if($this->tableSettingsPercent){
|
|
$tabela .= $this->tableRow($vrsticaPodatkiSumPer,1);
|
|
if($this->tableSettingsAvgVar||$this->tableSettingsDelezVar){ //ce je potrebno izpisati se ostale vrstice izracunov
|
|
if($export_format != 'xls'){
|
|
$tabela .= "\\cline{".($colspan+1)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica
|
|
}
|
|
$tabela .= $this->AddEmptyCells($colspan);
|
|
}
|
|
}
|
|
if($this->tableSettingsAvgVar!= ''){
|
|
$color = 'blue';
|
|
//$tabela .= $this->tableRow($vrsticaPodatkiSumAvg,1);
|
|
$tabela .= $this->tableRow($vrsticaPodatkiSumAvg,1,0,0,$color, $export_format);
|
|
if($this->tableSettingsDelezVar){ //ce je potrebno izpisati se ostale vrstice izracunov
|
|
if($export_format != 'xls'){
|
|
$tabela .= "\\cline{".($colspan+1)."-".$steviloStolpcevParameterTabular."}"; //prekinjena horizontalna vrstica
|
|
}
|
|
$tabela .= $this->AddEmptyCells($colspan);
|
|
}
|
|
}
|
|
if($this->tableSettingsDelezVar!= ''){
|
|
$color = 'red';
|
|
//$tabela .= $this->tableRow($vrsticaPodatkiSumDelez,1);
|
|
$tabela .= $this->tableRow($vrsticaPodatkiSumDelez,1,0,0,$color, $export_format);
|
|
}
|
|
}
|
|
if($export_format != 'xls'){
|
|
$tabela .= ' \hline '; //horizontalna vrstica
|
|
}
|
|
$cntHorVars++;
|
|
}
|
|
|
|
if($cntVerVars==1&&$cntHorVars==0&&$this->multiCrosstabClass->rowSpan!=0){
|
|
$tabela .= ' \multicolumn{1}{|c}{} & \multicolumn{3}{|c|}{}';
|
|
//$tabela .= ' \multicolumn{1}{|X}{} & \multicolumn{3}{|X|}{}';
|
|
$tabela .= $this->texNewLine;
|
|
if($export_format != 'xls'){
|
|
$tabela .= ' \hline ';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//zaljucek latex tabele z obrobo za drugo tabelo
|
|
$tabela .= ($export_format == 'pdf' ? "\\end{tabularx}" : "\\end{tabular}");
|
|
//zaljucek latex tabele z obrobo za drugo tabelo - konec
|
|
//echo "tabela: ".$tabela;
|
|
return $tabela;
|
|
}
|
|
|
|
// Izpis celic v vrstici s podatki
|
|
function displayDataCells($spr1='', $var1='', $spr2='', $var2=''){
|
|
$vrstica = '';
|
|
$celica = array();
|
|
$celicaSums = array();
|
|
$superCelicaNum = array();
|
|
$superCelicaPer = array();
|
|
$superCelicaAvg = array();
|
|
$superCelicaDelez = array();
|
|
$superCelica = array();
|
|
|
|
// Ce nimamo nobenega krizanja izpisemo prazne
|
|
if($spr2 == '' && $this->multiCrosstabClass->colSpan == 0){
|
|
|
|
for($i=0; $i<$this->multiCrosstabClass->colSpan; $i++){
|
|
//$this->pdf->MultiCell($width, $height, '', '1', 'C', 0, 0, 0 ,0, true);
|
|
}
|
|
|
|
//$this->pdf->MultiCell($dataWidth, $this->cellHeight, '', 1, 'C', 0, 0, 0 ,0, true);
|
|
//$this->pdf->MultiCell(1, $this->cellHeight, '', 0, 'C', 0, 1, 0 ,0, true);
|
|
echo "ni ničesar </br>";
|
|
}
|
|
|
|
// Ce nimamo stolpcev - krizanje dveh vrstic
|
|
elseif($spr2 != '' && $this->multiCrosstabClass->colSpan == 0){
|
|
echo "krizanje dveh vrstic </br>";
|
|
$spr1_temp = explode('-', $spr1['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr1['spr']]['grd_id'];
|
|
$variabla1 = array('seq' => $spr1_temp[1], 'spr' => $spr1_temp[0], 'grd' => $grd);
|
|
|
|
$spr2_temp = explode('-', $spr2['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr2['spr']]['grd_id'];
|
|
$variabla2 = array('seq' => $spr2_temp[1], 'spr' => $spr2_temp[0], 'grd' => $grd);
|
|
|
|
// Ce se nimamo izracunanih rezultatov jih izracunamo
|
|
if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']]))
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
|
|
else{
|
|
$variables = array();
|
|
$variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
|
|
$variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
|
|
|
|
$this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
|
|
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
|
|
}
|
|
|
|
$keys1 = array_keys($crosstabs['options1']);
|
|
$val1 = $keys1[$var1];
|
|
|
|
$keys2 = array_keys($crosstabs['options2']);
|
|
$val2 = $keys2[$var2];
|
|
|
|
$crosstab = (isset($crosstabs['crosstab'][$val1][$val2])) ? $crosstabs['crosstab'][$val1][$val2] : 0;
|
|
$percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
|
|
$avg = (isset($crosstabs['avg'][$val1][$val2])) ? $crosstabs['avg'][$val1][$val2] : 0;
|
|
$delez = (isset($crosstabs['delez'][$val1][$val2])) ? $crosstabs['delez'][$val1][$val2] : 0;
|
|
|
|
$this->displayDataCell($crosstab, $percent, $avg, $delez);
|
|
}
|
|
|
|
// Krizanje 1 vrstice in 1 stolpca
|
|
elseif($spr2 == '' && !$this->multiCrosstabClass->colLevel2){
|
|
//echo "Krizanje 1 vrstice in 1 stolpca </br>";
|
|
// Loop cez vse stolpce
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $spr2){
|
|
|
|
$spr1_temp = explode('-', $spr1['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr1['spr']]['grd_id'];
|
|
$variabla1 = array('seq' => $spr1_temp[1], 'spr' => $spr1_temp[0], 'grd' => $grd);
|
|
|
|
$spr2_temp = explode('-', $spr2['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr2['spr']]['grd_id'];
|
|
$variabla2 = array('seq' => $spr2_temp[1], 'spr' => $spr2_temp[0], 'grd' => $grd);
|
|
|
|
|
|
// Ce se nimamo izracunanih rezultatov jih izracunamo
|
|
if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']]))
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
|
|
else{
|
|
$variables = array();
|
|
$variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
|
|
$variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
|
|
|
|
$this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
|
|
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
|
|
}
|
|
|
|
$keys1 = array_keys($crosstabs['options1']);
|
|
$val1 = $keys1[$var1];
|
|
|
|
// Loop cez variable trenutnega stolpca
|
|
$cnt = 0;
|
|
foreach($this->multiCrosstabClass->variablesList[$spr2['spr']]['options'] as $var2){
|
|
|
|
$keys2 = array_keys($crosstabs['options2']);
|
|
$val2 = $keys2[$cnt];
|
|
|
|
$crosstab = (isset($crosstabs['crosstab'][$val1][$val2])) ? $crosstabs['crosstab'][$val1][$val2] : 0;
|
|
$percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
|
|
$avg = (isset($crosstabs['avg'][$val1][$val2])) ? $crosstabs['avg'][$val1][$val2] : 0;
|
|
$delez = (isset($crosstabs['delez'][$val1][$val2])) ? $crosstabs['delez'][$val1][$val2] : 0;
|
|
|
|
//echo "cnt: ".$cnt."</br>";
|
|
//$celica = $this->displayDataCell($crosstab, $percent, $avg, $delez);
|
|
$celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt);
|
|
|
|
if($this->tableSettingsNumerus){
|
|
$superCelicaNum[] = $celica['numerus'][$cnt];
|
|
//echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
|
|
}
|
|
|
|
if($this->tableSettingsPercent){
|
|
$superCelicaPer[] = $celica['percent'][$cnt];
|
|
}
|
|
|
|
if($this->tableSettingsAvgVar){
|
|
$superCelicaAvg[] = $celica['avg'][$cnt];
|
|
}
|
|
|
|
if($this->tableSettingsDelezVar){
|
|
$superCelicaDelez[] = $celica['delez'][$cnt];
|
|
}
|
|
|
|
//echo "Celica: ".$celica['numerus'][$cnt]."</br>";
|
|
|
|
$cnt++;
|
|
}
|
|
|
|
// Suma (ce jo imamo vklopljeno)
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['sums'] == 1 && !$this->multiCrosstabClass->rowLevel2){
|
|
$celicaSums = $this->displaySumsCell($spr1, $spr2, $val1, $orientation=0);
|
|
if($this->tableSettingsNumerus){
|
|
$superCelicaNum[] = $celicaSums['numerus'];
|
|
}
|
|
if($this->tableSettingsPercent){
|
|
$superCelicaPer[] = $celicaSums['percent'];
|
|
}
|
|
if($this->tableSettingsAvgVar){
|
|
$superCelicaAvg[] = $celicaSums['avg'];
|
|
}
|
|
if($this->tableSettingsDelezVar){
|
|
$superCelicaDelez[] = $celicaSums['delez'];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Izpisemo vecnivojske podatke (krizanje 3 ali 4 spremenljivk)
|
|
else{
|
|
//echo "Izpisemo vecnivojske podatke (krizanje 3 ali 4 spremenljivk) </br>";
|
|
// Nastavimo 1. vrsticno variablo
|
|
$spr1_temp = explode('-', $spr1['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr1['spr']]['grd_id'];
|
|
$variabla1 = array('seq' => $spr1_temp[1], 'spr' => $spr1_temp[0], 'grd' => $grd);
|
|
|
|
// Krizanje 2 vrstic in 1 stolpca
|
|
if(!$this->multiCrosstabClass->colLevel2){
|
|
|
|
// Nastavimo 2. vrsticno variablo
|
|
$spr2_temp = explode('-', $spr2['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr2['spr']]['grd_id'];
|
|
$variabla2 = array('seq' => $spr2_temp[1], 'spr' => $spr2_temp[0], 'grd' => $grd);
|
|
|
|
// Loop cez vse stolpce
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $spr3){
|
|
|
|
$spr3_temp = explode('-', $spr3['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr3['spr']]['grd_id'];
|
|
$variabla3 = array('seq' => $spr3_temp[1], 'spr' => $spr3_temp[0], 'grd' => $grd);
|
|
|
|
// Ce se nimamo izracunanih rezultatov jih izracunamo
|
|
if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']]))
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
|
|
else{
|
|
$variables = array();
|
|
$variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
|
|
$variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
|
|
$variables[2] = array('seq' => $variabla3['seq'], 'spr' => $variabla3['spr'], 'grd' => $variabla3['grd']);
|
|
|
|
$this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
|
|
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
|
|
}
|
|
|
|
$keys1 = array_keys($crosstabs['options1']);
|
|
$val1 = $keys1[$var1];
|
|
|
|
$keys2 = array_keys($crosstabs['options2']);
|
|
$val2 = $keys2[$var2];
|
|
|
|
// Loop cez variable trenutnega stolpca
|
|
$cnt = 0;
|
|
foreach($this->multiCrosstabClass->variablesList[$spr3['spr']]['options'] as $var3){
|
|
|
|
$keys3 = array_keys($crosstabs['options3']);
|
|
$val3 = $keys3[$cnt];
|
|
|
|
$crosstab = (isset($crosstabs['crosstab'][$val1][$val2][$val3])) ? $crosstabs['crosstab'][$val1][$val2][$val3] : 0;
|
|
$percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
|
|
$avg = (isset($crosstabs['avg'][$val1][$val2][$val3])) ? $crosstabs['avg'][$val1][$val2][$val3] : 0;
|
|
$delez = (isset($crosstabs['delez'][$val1][$val2][$val3])) ? $crosstabs['delez'][$val1][$val2][$val3] : 0;
|
|
|
|
//$this->displayDataCell($crosstab, $percent, $avg, $delez);
|
|
$celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt);
|
|
|
|
if($this->tableSettingsNumerus){
|
|
$superCelicaNum[] = $celica['numerus'][$cnt];
|
|
//echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
|
|
}
|
|
|
|
if($this->tableSettingsPercent){
|
|
$superCelicaPer[] = $celica['percent'][$cnt];
|
|
}
|
|
|
|
if($this->tableSettingsAvgVar){
|
|
$superCelicaAvg[] = $celica['avg'][$cnt];
|
|
}
|
|
|
|
if($this->tableSettingsDelezVar){
|
|
$superCelicaDelez[] = $celica['delez'][$cnt];
|
|
}
|
|
|
|
$cnt++;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Krizanje 1 vrstice in 2 stolpcev
|
|
elseif($spr2 == ''){
|
|
//echo "Krizanje 1 vrstice in 2 stolpcev </br>";
|
|
// Loop cez vse stolpce 1. navpicne spremenljivke
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $spr2){
|
|
|
|
$spr2_temp = explode('-', $spr2['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr2['spr']]['grd_id'];
|
|
$variabla2 = array('seq' => $spr2_temp[1], 'spr' => $spr2_temp[0], 'grd' => $grd);
|
|
|
|
// Loop cez variable 1. navpicne spremnljivke
|
|
$cnt2 = 0;
|
|
foreach($this->multiCrosstabClass->variablesList[$spr2['spr']]['options'] as $var2){
|
|
|
|
// Loop cez vse navpicne spremenljivke 2. nivoja - ce obstajajo
|
|
if(count($spr2['sub']) > 0){
|
|
foreach($spr2['sub'] as $spr3){
|
|
|
|
// Nastavimo navpicno spremenljivko 2. nivoja
|
|
$spr3_temp = explode('-', $spr3['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr3['spr']]['grd_id'];
|
|
$variabla3 = array('seq' => $spr3_temp[1], 'spr' => $spr3_temp[0], 'grd' => $grd);
|
|
|
|
// Ce se nimamo izracunanih rezultatov jih izracunamo
|
|
if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']]))
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
|
|
else{
|
|
$variables = array();
|
|
$variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
|
|
$variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
|
|
$variables[2] = array('seq' => $variabla3['seq'], 'spr' => $variabla3['spr'], 'grd' => $variabla3['grd']);
|
|
|
|
$this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
|
|
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
|
|
}
|
|
|
|
$keys1 = array_keys($crosstabs['options1']);
|
|
$val1 = $keys1[$var1];
|
|
|
|
$keys2 = array_keys($crosstabs['options2']);
|
|
$val2 = $keys2[$cnt2];
|
|
|
|
// Loop cez variable spremenljivke 2. nivoja
|
|
$cnt3 = 0;
|
|
foreach($this->multiCrosstabClass->variablesList[$spr3['spr']]['options'] as $var3){
|
|
|
|
$keys3 = array_keys($crosstabs['options3']);
|
|
$val3 = $keys3[$cnt3];
|
|
|
|
$crosstab = (isset($crosstabs['crosstab'][$val1][$val2][$val3])) ? $crosstabs['crosstab'][$val1][$val2][$val3] : 0;
|
|
$percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
|
|
$avg = (isset($crosstabs['avg'][$val1][$val2][$val3])) ? $crosstabs['avg'][$val1][$val2][$val3] : 0;
|
|
$delez = (isset($crosstabs['delez'][$val1][$val2][$val3])) ? $crosstabs['delez'][$val1][$val2][$val3] : 0;
|
|
|
|
//$this->displayDataCell($crosstab, $percent, $avg, $delez);
|
|
$celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt3);
|
|
|
|
if($this->tableSettingsNumerus){
|
|
$superCelicaNum[] = $celica['numerus'][$cnt3];
|
|
//echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
|
|
}
|
|
|
|
if($this->tableSettingsPercent){
|
|
$superCelicaPer[] = $celica['percent'][$cnt3];
|
|
}
|
|
|
|
if($this->tableSettingsAvgVar){
|
|
$superCelicaAvg[] = $celica['avg'][$cnt3];
|
|
}
|
|
|
|
if($this->tableSettingsDelezVar){
|
|
$superCelicaDelez[] = $celica['delez'][$cnt3];
|
|
}
|
|
$cnt3++;
|
|
}
|
|
}
|
|
}
|
|
// 1 nivojska spremenljivka v stolpcu
|
|
else{
|
|
// Ce se nimamo izracunanih rezultatov jih izracunamo
|
|
if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']]))
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
|
|
else{
|
|
$variables = array();
|
|
$variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
|
|
$variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
|
|
|
|
$this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
|
|
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
|
|
}
|
|
|
|
$keys1 = array_keys($crosstabs['options1']);
|
|
$val1 = $keys1[$var1];
|
|
|
|
$keys2 = array_keys($crosstabs['options2']);
|
|
$val2 = $keys2[$cnt2];
|
|
|
|
$crosstab = (isset($crosstabs['crosstab'][$val1][$val2])) ? $crosstabs['crosstab'][$val1][$val2] : 0;
|
|
$percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
|
|
$avg = (isset($crosstabs['avg'][$val1][$val2])) ? $crosstabs['avg'][$val1][$val2] : 0;
|
|
$delez = (isset($crosstabs['delez'][$val1][$val2])) ? $crosstabs['delez'][$val1][$val2] : 0;
|
|
|
|
//$this->displayDataCell($crosstab, $percent, $avg, $delez);
|
|
$celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt2);
|
|
|
|
if($this->tableSettingsNumerus){
|
|
$superCelicaNum[] = $celica['numerus'][$cnt2];
|
|
//echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
|
|
}
|
|
|
|
if($this->tableSettingsPercent){
|
|
$superCelicaPer[] = $celica['percent'][$cnt2];
|
|
}
|
|
|
|
if($this->tableSettingsAvgVar){
|
|
$superCelicaAvg[] = $celica['avg'][$cnt2];
|
|
}
|
|
|
|
if($this->tableSettingsDelezVar){
|
|
$superCelicaDelez[] = $celica['delez'][$cnt2];
|
|
}
|
|
}
|
|
|
|
$cnt2++;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Krizanje 2 vrstic in 2 stolpcev
|
|
else{
|
|
//echo "Krizanje 2 vrstic in 2 stolpcev </br>";
|
|
// Nastavimo 2. vrsticno variablo
|
|
$spr2_temp = explode('-', $spr2['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr2['spr']]['grd_id'];
|
|
$variabla2 = array('seq' => $spr2_temp[1], 'spr' => $spr2_temp[0], 'grd' => $grd);
|
|
|
|
// Loop cez vse stolpce 1. navpicne spremenljivke
|
|
foreach($this->multiCrosstabClass->selectedVars['ver'] as $spr3){
|
|
|
|
$spr3_temp = explode('-', $spr3['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr3['spr']]['grd_id'];
|
|
$variabla3 = array('seq' => $spr3_temp[1], 'spr' => $spr3_temp[0], 'grd' => $grd);
|
|
|
|
// Loop cez variable 1. navpicne spremnljivke
|
|
$cnt3 = 0;
|
|
foreach($this->multiCrosstabClass->variablesList[$spr3['spr']]['options'] as $var3){
|
|
|
|
// Loop cez vse navpicne spremenljivke 2. nivoja
|
|
if(count($spr3['sub']) > 0){
|
|
foreach($spr3['sub'] as $spr4){
|
|
|
|
// Nastavimo navpicno spremenljivko 2. nivoja
|
|
$spr4_temp = explode('-', $spr4['spr']);
|
|
$grd = $this->multiCrosstabClass->variablesList[$spr4['spr']]['grd_id'];
|
|
$variabla4 = array('seq' => $spr4_temp[1], 'spr' => $spr4_temp[0], 'grd' => $grd);
|
|
|
|
// Ce se nimamo izracunanih rezultatov jih izracunamo
|
|
if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr'].'-'.$spr4['spr']]))
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr'].'-'.$spr4['spr']];
|
|
else{
|
|
$variables = array();
|
|
$variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
|
|
$variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
|
|
$variables[2] = array('seq' => $variabla3['seq'], 'spr' => $variabla3['spr'], 'grd' => $variabla3['grd']);
|
|
$variables[3] = array('seq' => $variabla4['seq'], 'spr' => $variabla4['spr'], 'grd' => $variabla4['grd']);
|
|
|
|
$this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr'].'-'.$spr4['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
|
|
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr'].'-'.$spr4['spr']];
|
|
}
|
|
|
|
$keys1 = array_keys($crosstabs['options1']);
|
|
$val1 = $keys1[$var1];
|
|
|
|
$keys2 = array_keys($crosstabs['options2']);
|
|
$val2 = $keys2[$var2];
|
|
|
|
$keys3 = array_keys($crosstabs['options3']);
|
|
$val3 = $keys3[$cnt3];
|
|
|
|
// Loop cez variable spremenljivke 2. nivoja
|
|
$cnt4 = 0;
|
|
foreach($this->multiCrosstabClass->variablesList[$spr4['spr']]['options'] as $var4){
|
|
|
|
$keys4 = array_keys($crosstabs['options4']);
|
|
$val4 = $keys4[$cnt4];
|
|
|
|
$crosstab = (isset($crosstabs['crosstab'][$val1][$val2][$val3][$val4])) ? $crosstabs['crosstab'][$val1][$val2][$val3][$val4] : 0;
|
|
$percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
|
|
$avg = (isset($crosstabs['avg'][$val1][$val2][$val3][$val4])) ? $crosstabs['avg'][$val1][$val2][$val3][$val4] : 0;
|
|
$delez = (isset($crosstabs['delez'][$val1][$val2][$val3][$val4])) ? $crosstabs['delez'][$val1][$val2][$val3][$val4] : 0;
|
|
|
|
//$this->displayDataCell($crosstab, $percent, $avg, $delez);
|
|
$celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt4);
|
|
|
|
if($this->tableSettingsNumerus){
|
|
$superCelicaNum[] = $celica['numerus'][$cnt4];
|
|
//echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
|
|
}
|
|
|
|
if($this->tableSettingsPercent){
|
|
$superCelicaPer[] = $celica['percent'][$cnt4];
|
|
}
|
|
|
|
if($this->tableSettingsAvgVar){
|
|
$superCelicaAvg[] = $celica['avg'][$cnt4];
|
|
}
|
|
|
|
if($this->tableSettingsDelezVar){
|
|
$superCelicaDelez[] = $celica['delez'][$cnt4];
|
|
}
|
|
|
|
$cnt4++;
|
|
}
|
|
}
|
|
}
|
|
// 1 nivo navpicne spremenljivke
|
|
else{
|
|
// Ce se nimamo izracunanih rezultatov jih izracunamo
|
|
if(isset($this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']]))
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
|
|
else{
|
|
$variables = array();
|
|
$variables[0] = array('seq' => $variabla1['seq'], 'spr' => $variabla1['spr'], 'grd' => $variabla1['grd']);
|
|
$variables[1] = array('seq' => $variabla2['seq'], 'spr' => $variabla2['spr'], 'grd' => $variabla2['grd']);
|
|
$variables[2] = array('seq' => $variabla3['seq'], 'spr' => $variabla3['spr'], 'grd' => $variabla3['grd']);
|
|
|
|
$this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']] = $this->multiCrosstabClass->createCrostabulation($variables);
|
|
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr'].'-'.$spr3['spr']];
|
|
}
|
|
|
|
$keys1 = array_keys($crosstabs['options1']);
|
|
$val1 = $keys1[$var1];
|
|
|
|
$keys2 = array_keys($crosstabs['options2']);
|
|
$val2 = $keys2[$var2];
|
|
|
|
$keys3 = array_keys($crosstabs['options3']);
|
|
$val3 = $keys3[$cnt3];
|
|
|
|
$crosstab = (isset($crosstabs['crosstab'][$val1][$val2][$val3])) ? $crosstabs['crosstab'][$val1][$val2][$val3] : 0;
|
|
$percent = ($crosstab > 0) ? $this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaVrstica'][$val1], $crosstab) : 0;
|
|
$avg = (isset($crosstabs['avg'][$val1][$val2][$val3])) ? $crosstabs['avg'][$val1][$val2][$val3] : 0;
|
|
$delez = (isset($crosstabs['delez'][$val1][$val2][$val3])) ? $crosstabs['delez'][$val1][$val2][$val3] : 0;
|
|
|
|
//$this->displayDataCell($crosstab, $percent, $avg, $delez);
|
|
$celica = $this->displayDataCell($crosstab, $percent, $avg, $delez, $cnt3);
|
|
|
|
if($this->tableSettingsNumerus){
|
|
$superCelicaNum[] = $celica['numerus'][$cnt3];
|
|
//echo "Celica izven numerus: ".$celica['numerus'][$cnt]."</br>";
|
|
}
|
|
|
|
if($this->tableSettingsPercent){
|
|
$superCelicaPer[] = $celica['percent'][$cnt3];
|
|
}
|
|
|
|
if($this->tableSettingsAvgVar){
|
|
$superCelicaAvg[] = $celica['avg'][$cnt3];
|
|
}
|
|
|
|
if($this->tableSettingsDelezVar){
|
|
$superCelicaDelez[] = $celica['delez'][$cnt3];
|
|
}
|
|
|
|
}
|
|
|
|
$cnt3++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if($this->tableSettingsNumerus){
|
|
$superCelica['numerus'][] = $superCelicaNum;
|
|
}
|
|
|
|
if($this->tableSettingsPercent){
|
|
$superCelica['percent'][] = $superCelicaPer;
|
|
}
|
|
|
|
if($this->tableSettingsAvgVar){
|
|
$superCelica['avg'][] = $superCelicaAvg;
|
|
}
|
|
|
|
if($this->tableSettingsDelezVar){
|
|
$superCelica['delez'][] = $superCelicaDelez;
|
|
}
|
|
|
|
return $superCelica;
|
|
}
|
|
|
|
// Izpis celic v vrstici s sumami ($orientation 0->vrstica, 1->stolpec, 2->skupaj)
|
|
function displaySumsCell($spr1=null, $spr2=null, $val=null, $orientation=null){
|
|
$celicaSums = array();
|
|
|
|
//echo "Orientacija skupaj: ".$orientation."</br>";
|
|
/* $startX = $this->pdf->getX();
|
|
$startY = $this->pdf->getY(); */
|
|
|
|
// Nastavimo visino posamezne vrstice
|
|
/* $cellSpan = 0;
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1)
|
|
$cellSpan++;
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1)
|
|
$cellSpan++;
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] != '')
|
|
$cellSpan++;
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] != '')
|
|
$cellSpan++;
|
|
$cellSpan = ($cellSpan > 0) ? $cellSpan : 1;
|
|
$lineHeight = $this->cellHeight / $cellSpan; */
|
|
|
|
// Nastavimo barvo texta
|
|
/* $this->pdf->SetTextColor(160, 0, 0);
|
|
$this->pdf->setFont('','B','6'); */
|
|
|
|
$crosstabs = $this->multiCrosstabClass->crosstabData[$spr1['spr'].'-'.$spr2['spr']];
|
|
|
|
// Celica s skupno sumo
|
|
if($orientation == 2){
|
|
|
|
// Numerus
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
|
|
$celicaSums['numerus'] = $crosstabs['sumaSkupna'];
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $crosstabs['sumaSkupna'], 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
|
|
// Procenti
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
|
|
//$celicaSums['percent'] = $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
$celicaSums['percent'] = $this->encodeText($this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
|
|
// Povprecje
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0){
|
|
|
|
// Loop cez vse in izracunamo povprecje z ustreznimi utezmi
|
|
$avg = 0;
|
|
if($crosstabs['crosstab']){
|
|
$tempAvg = 0;
|
|
foreach($crosstabs['crosstab'] as $key1 => $row){
|
|
foreach($row as $key2 => $count){
|
|
$tempAvg += $count * $crosstabs['avg'][$key1][$key2];
|
|
}
|
|
}
|
|
$avg = $tempAvg / $crosstabs['sumaSkupna'];
|
|
}
|
|
$celicaSums['avg'] = $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'));
|
|
/* $this->pdf->SetFillColor(220, 220, 255);
|
|
$this->pdf->SetTextColor(0, 0, 230);
|
|
$this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE')), 1, 'C', 1, 0, 0 ,0, true);
|
|
$this->pdf->SetFillColor(250, 250, 250);
|
|
$this->pdf->SetTextColor(0, 0, 0);
|
|
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
|
|
// Delez
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
|
|
|
|
// Loop cez vrstico in izracunamo skupen delez
|
|
$delez = 0;
|
|
if($crosstabs['delez']){
|
|
foreach($crosstabs['delez'] as $row){
|
|
foreach($row as $tempDelez){
|
|
$delez += $tempDelez;
|
|
}
|
|
}
|
|
}
|
|
//$celicaSums['delez'] = $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
$celicaSums['delez'] = $this->encodeText($this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
|
|
/* $this->pdf->SetFillColor(255, 220, 220);
|
|
$this->pdf->SetTextColor(230, 0, 0);
|
|
$this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 1, 0, 0 ,0, true);
|
|
$this->pdf->SetFillColor(250, 250, 250);
|
|
$this->pdf->SetTextColor(0, 0, 0);
|
|
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
}
|
|
// Suma na koncu vrstice
|
|
elseif($orientation == 0){
|
|
|
|
// Izpisemo podatek
|
|
if($crosstabs['sumaVrstica'][$val]){
|
|
|
|
// Numerus
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $crosstabs['sumaVrstica'][$val], 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
$celicaSums['numerus'] = $crosstabs['sumaVrstica'][$val];
|
|
}
|
|
// Procenti
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
//$celicaSums['percent'] = $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
$celicaSums['percent'] = $this->encodeText($this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
|
|
}
|
|
}
|
|
else{
|
|
|
|
// Numerus
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
|
|
$celicaSums['numerus'] = '0';
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, '0', 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
// Procenti
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
|
|
//$celicaSums['percent'] = $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
$celicaSums['percent'] = $this->encodeText($this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
}
|
|
|
|
// Povprecje
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0){
|
|
|
|
// Loop cez vrstico in izracunamo povprecje z ustreznimi utezmi
|
|
$avg = 0;
|
|
if($crosstabs['crosstab'][$val]){
|
|
$tempAvg = 0;
|
|
foreach($crosstabs['crosstab'][$val] as $key => $count){
|
|
$tempAvg += $count * $crosstabs['avg'][$val][$key];
|
|
}
|
|
$avg = $tempAvg / $crosstabs['sumaVrstica'][$val];
|
|
}
|
|
|
|
$celicaSums['avg'] = $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'));
|
|
|
|
/* $this->pdf->SetFillColor(220, 220, 255);
|
|
$this->pdf->SetTextColor(0, 0, 230);
|
|
$this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE')), 1, 'C', 1, 0, 0 ,0, true);
|
|
$this->pdf->SetFillColor(250, 250, 250);
|
|
$this->pdf->SetTextColor(0, 0, 0);
|
|
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
|
|
// Delez
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
|
|
|
|
// Loop cez vrstico in izracunamo skupen delez
|
|
$delez = 0;
|
|
if($crosstabs['delez'][$val]){
|
|
foreach($crosstabs['delez'][$val] as $tempDelez){
|
|
$delez += $tempDelez;
|
|
}
|
|
}
|
|
|
|
//$celicaSums['delez'] = $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
$celicaSums['delez'] = $this->encodeText($this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
|
|
|
|
/* $this->pdf->SetFillColor(255, 220, 220);
|
|
$this->pdf->SetTextColor(230, 0, 0);
|
|
$this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 1, 0, 0 ,0, true);
|
|
$this->pdf->SetFillColor(250, 250, 250);
|
|
$this->pdf->SetTextColor(0, 0, 0);
|
|
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
}
|
|
// Suma za stolpce
|
|
else{
|
|
// Izpisemo podatek
|
|
if(isset($crosstabs['sumaStolpec'][$val])){
|
|
|
|
// Numerus
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
|
|
$celicaSums['numerus'] = $crosstabs['sumaStolpec'][$val];
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $crosstabs['sumaStolpec'][$val], 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
// Procenti
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
|
|
//$celicaSums['percent'] = $this->formatNumber($this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaSkupna'], $crosstabs['sumaStolpec'][$val]), SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
$celicaSums['percent'] = $this->encodeText($this->formatNumber($this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaSkupna'], $crosstabs['sumaStolpec'][$val]), SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($this->multiCrosstabClass->getCrossTabPercentage($crosstabs['sumaSkupna'], $crosstabs['sumaStolpec'][$val]), SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
}
|
|
else{
|
|
|
|
// Numerus
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
|
|
$celicaSums['numerus'] = '0';
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, '0', 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
// Procenti
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
|
|
//$celicaSums['percent'] = $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
$celicaSums['percent'] = $this->encodeText($this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
}
|
|
|
|
// Povprecje
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0){
|
|
|
|
// Loop cez vrstico in izracunamo povprecje z ustreznimi utezmi
|
|
$avg = 0;
|
|
if($crosstabs['crosstab']){
|
|
$tempAvg = 0;
|
|
foreach($crosstabs['crosstab'] as $key => $row){
|
|
if($row[$val] > 0)
|
|
$tempAvg += $row[$val] * $crosstabs['avg'][$key][$val];
|
|
}
|
|
$avg = $tempAvg / $crosstabs['sumaStolpec'][$val];
|
|
}
|
|
$celicaSums['avg'] = $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'));
|
|
|
|
/* $this->pdf->SetFillColor(220, 220, 255);
|
|
$this->pdf->SetTextColor(0, 0, 230);
|
|
$this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE')), 1, 'C', 1, 0, 0 ,0, true);
|
|
$this->pdf->SetFillColor(250, 250, 250);
|
|
$this->pdf->SetTextColor(0, 0, 0);
|
|
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
|
|
// Delez
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
|
|
|
|
// Loop cez vrstico in izracunamo skupen delez
|
|
$delez = 0;
|
|
if($crosstabs['delez']){
|
|
foreach($crosstabs['delez'] as $tempDelez){
|
|
$delez += $tempDelez[$val];
|
|
}
|
|
}
|
|
//$celicaSums['delez'] = $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
$celicaSums['delez'] = $this->encodeText($this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
|
|
/* $this->pdf->SetFillColor(255, 220, 220);
|
|
$this->pdf->SetTextColor(230, 0, 0);
|
|
$this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 1, 0, 0 ,0, true);
|
|
$this->pdf->SetFillColor(250, 250, 250);
|
|
$this->pdf->SetTextColor(0, 0, 0);
|
|
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
}
|
|
|
|
/* $this->pdf->SetTextColor(0, 0, 0);
|
|
$this->pdf->setFont('','','6');
|
|
$this->pdf->setXY($startX + $this->cellWidth, $startY); */
|
|
|
|
return $celicaSums;
|
|
}
|
|
|
|
// Izpis celice z vrednostmi
|
|
//function displayDataCell($crosstab, $percent, $avg, $delez){
|
|
function displayDataCell($crosstab=null, $percent=null, $avg=null, $delez=null, $cnt=null){
|
|
|
|
//$podatekCelice = '';
|
|
$podatekCelice = array();
|
|
//$startX = $this->pdf->getX();
|
|
//$startY = $this->pdf->getY();
|
|
|
|
$lineHeight = ($this->cellSpan > 1) ? 5 : 6;
|
|
|
|
if($crosstab > 0){
|
|
|
|
// Numerus
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $crosstab, 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
//$podatekCelice = $crosstab;
|
|
$podatekCelice['numerus'][$cnt] = $crosstab;
|
|
//echo "Crosstab ce crosstab > 0: ".$crosstab."</br>";
|
|
}
|
|
// Procenti
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($percent, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
//$podatekCelice = $this->formatNumber($percent, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
//$podatekCelice['percent'][$cnt] = $this->formatNumber($percent, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
$podatekCelice['percent'][$cnt] = $this->encodeText($this->formatNumber($percent, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
|
|
//echo "Procenti ce crosstab > 0: ".$podatekCelice."</br>";
|
|
}
|
|
}
|
|
else{
|
|
// Numerus
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['numerus'] == 1){
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, '0', 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
$podatekCelice['numerus'][$cnt] = '0';
|
|
}
|
|
// Procenti
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['percent'] == 1){
|
|
/* $this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 0, 0, 0 ,0, true);
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
//$podatekCelice = $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
//$podatekCelice['percent'][$cnt] = $this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
$podatekCelice['percent'][$cnt] = $this->encodeText($this->formatNumber(0, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
|
|
}
|
|
}
|
|
|
|
// Povprecje
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0){
|
|
//$podatekCelice = $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'));
|
|
//echo "Povprecje: ".$podatekCelice."</br>";
|
|
$podatekCelice['avg'][$cnt] = $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE'));
|
|
/* $this->pdf->SetFillColor(220, 220, 255);
|
|
$this->pdf->SetTextColor(0, 0, 230);
|
|
$this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($avg, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_AVERAGE')), 1, 'C', 1, 0, 0 ,0, true);
|
|
$this->pdf->SetFillColor(250, 250, 250);
|
|
$this->pdf->SetTextColor(0, 0, 0);
|
|
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
|
|
// Delez
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
|
|
//$podatekCelice = $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%');
|
|
//echo "Delez: ".$podatekCelice."</br>";
|
|
$podatekCelice['delez'][$cnt] = $this->encodeText($this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'));
|
|
/* $this->pdf->SetFillColor(255, 220, 220);
|
|
$this->pdf->SetTextColor(230, 0, 0);
|
|
$this->pdf->MultiCell($this->cellWidth, $lineHeight, $this->formatNumber($delez*100, SurveyDataSettingProfiles :: getSetting('NUM_DIGIT_PERCENT'), '%'), 1, 'C', 1, 0, 0 ,0, true);
|
|
$this->pdf->SetFillColor(250, 250, 250);
|
|
$this->pdf->SetTextColor(0, 0, 0);
|
|
|
|
$this->pdf->setXY($this->pdf->getX() - $this->cellWidth, $this->pdf->getY() + $lineHeight); */
|
|
}
|
|
|
|
//$this->pdf->setXY($startX + $this->cellWidth, $startY);
|
|
return $podatekCelice;
|
|
}
|
|
|
|
// Izris legende na dnu
|
|
function displayLegend($export_format){
|
|
global $lang;
|
|
$legend = '';
|
|
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0 || $this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
|
|
//za zacetek sredinske poravnave
|
|
|
|
$legend .= ' \begin{center} ';
|
|
|
|
if($export_format == 'rtf'){ //ce je rtf dodaj tole besedilo, ker drugace prva od izpisanih zadev v legendi ni sredinsko poravnana
|
|
$legend .= $lang['srv_analiza_legenda'].': \\\\';
|
|
}
|
|
|
|
|
|
// Povprecje
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar'] > 0){
|
|
$text = $lang['srv_multicrosstabs_avg'].': ';
|
|
if($export_format == 'pdf'){
|
|
$color = 'crta';
|
|
}else{ //ce je rtf
|
|
$color = 'cyan'; //v rtf pride modra
|
|
}
|
|
|
|
|
|
$legend .= $this->coloredTextLatex($color, $text);
|
|
|
|
$legend .= $this->multiCrosstabClass->variablesList[$this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['avgVar']]['variable'];
|
|
$legend .= $this->texNewLine;
|
|
}
|
|
|
|
// Delez
|
|
if($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar'] > 0){
|
|
$text = $lang['srv_multicrosstabs_delez'].': ';
|
|
|
|
if($export_format == 'pdf'){
|
|
$color = 'crtaGraf';
|
|
}else{ //ce je rtf
|
|
$color = 'yellow'; //v rtf pride rdece
|
|
}
|
|
|
|
$legend .= $this->coloredTextLatex($color, $text);
|
|
|
|
$delez = unserialize($this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delez']);
|
|
$string = '';
|
|
$cnt = 1;
|
|
foreach($delez as $val){
|
|
if($val == 1)
|
|
$string .= $cnt.', ';
|
|
$cnt++;
|
|
}
|
|
$string = $this->multiCrosstabClass->variablesList[$this->multiCrosstabClass->table_settings[$this->multiCrosstabClass->table_id]['delezVar']]['variable'].' ('.substr($string, 0, -2).')';
|
|
|
|
$legend .= $string;
|
|
$legend .= $this->texNewLine;
|
|
}
|
|
|
|
//za konec sredinske poravnave
|
|
$legend .= ' \end{center} ';
|
|
|
|
}
|
|
|
|
return $legend;
|
|
}
|
|
|
|
|
|
function formatNumber($value=null, $digit=0, $sufix=""){
|
|
|
|
if ($value <> 0 && $value != null)
|
|
$result = round($value, $digit);
|
|
else
|
|
$result = "0";
|
|
|
|
# polovimo decimalna mesta in vejice za tisočice
|
|
$decimal_point = SurveyDataSettingProfiles :: getSetting('decimal_point');
|
|
$thousands = SurveyDataSettingProfiles :: getSetting('thousands');
|
|
|
|
$result = number_format($result, $digit, $decimal_point, $thousands) . $sufix;
|
|
|
|
return $result;
|
|
}
|
|
|
|
/* function encodeText($text){
|
|
// popravimo sumnike ce je potrebno
|
|
$text = html_entity_decode($text, ENT_NOQUOTES, 'UTF-8');
|
|
$text = str_replace(array("š","š","č"),array("š","š","č"),$text);
|
|
|
|
return strip_tags($text);
|
|
} */
|
|
|
|
/*Skrajsa tekst in doda '...' na koncu*/
|
|
function snippet($text='', $length=64, $tail="..."){
|
|
$length=SNIPPET_LENGTH;
|
|
|
|
$text = trim($text);
|
|
$txtl = strlen($text);
|
|
if($txtl > $length){
|
|
for($i=1;$text[$length-$i]!=" ";$i++){
|
|
if($i == $length)
|
|
{
|
|
return substr($text,0,$length) . $tail;
|
|
}
|
|
}
|
|
$text = substr($text,0,$length-$i+1) . $tail;
|
|
}
|
|
|
|
return $text;
|
|
}
|
|
|
|
function drawLine(){
|
|
|
|
$cy = $this->pdf->getY();
|
|
$this->pdf->Line(15, $cy , 195, $cy , $this->currentStyle);
|
|
}
|
|
|
|
function getCellHeight($string='', $width=null){
|
|
|
|
$this->pdf->startTransaction();
|
|
// get the number of lines calling you method
|
|
$linecount = $this->pdf->MultiCell($width, 0, $string, 0, 'L', 0, 0, '', '', true, 0, false, true, 0);
|
|
// restore previous object
|
|
$this->pdf = $this->pdf->rollbackTransaction();
|
|
|
|
$height = ($linecount <= 1) ? 4.7 : $linecount * ($this->pdf->getFontSize() * $this->pdf->getCellHeightRatio()) + 2;
|
|
|
|
return $height;
|
|
}
|
|
|
|
}
|
|
|
|
?>
|