diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index da8d5f76d5..14ecec4d19 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,22 @@ +2012-03-06 Sergio Martin + + * include/functions_graph.php + include/graphs/functions_pchart.php + include/graphs/functions_flot.php + include/graphs/flot/pandora.flot.js + include/graphs/fgraph.php + include/pchart_graph.php + include/FusionCharts + include/pChart + include/functions_ui.php + images/chart_curve_threshold.png: Clean graphs code + and add threshold (warning and critical min) + + * operation/reporting/reporting_viewer.php + include/functions_reporting.php: Improve the top_n + merged from 4.0 + + 2012-03-05 Miguel de Dios * pandora_console/include/graphs/functions_flot.php: added the function diff --git a/pandora_console/images/chart_curve_threshold.png b/pandora_console/images/chart_curve_threshold.png new file mode 100644 index 0000000000..b71c867f82 Binary files /dev/null and b/pandora_console/images/chart_curve_threshold.png differ diff --git a/pandora_console/include/FusionCharts/FCF_Area2D.swf b/pandora_console/include/FusionCharts/FCF_Area2D.swf deleted file mode 100644 index 224fb17ebf..0000000000 Binary files a/pandora_console/include/FusionCharts/FCF_Area2D.swf and /dev/null differ diff --git a/pandora_console/include/FusionCharts/FCF_Column3D.swf b/pandora_console/include/FusionCharts/FCF_Column3D.swf deleted file mode 100644 index a023642920..0000000000 Binary files a/pandora_console/include/FusionCharts/FCF_Column3D.swf and /dev/null differ diff --git a/pandora_console/include/FusionCharts/FCF_MSArea2D.swf b/pandora_console/include/FusionCharts/FCF_MSArea2D.swf deleted file mode 100644 index bff3774ae9..0000000000 Binary files a/pandora_console/include/FusionCharts/FCF_MSArea2D.swf and /dev/null differ diff --git a/pandora_console/include/FusionCharts/FCF_MSLine.swf b/pandora_console/include/FusionCharts/FCF_MSLine.swf deleted file mode 100644 index 26329e644d..0000000000 Binary files a/pandora_console/include/FusionCharts/FCF_MSLine.swf and /dev/null differ diff --git a/pandora_console/include/FusionCharts/FCF_Pie3D.swf b/pandora_console/include/FusionCharts/FCF_Pie3D.swf deleted file mode 100644 index 1d78f79b03..0000000000 Binary files a/pandora_console/include/FusionCharts/FCF_Pie3D.swf and /dev/null differ diff --git a/pandora_console/include/FusionCharts/FCF_StackedArea2D.swf b/pandora_console/include/FusionCharts/FCF_StackedArea2D.swf deleted file mode 100644 index 5f8d3e7a11..0000000000 Binary files a/pandora_console/include/FusionCharts/FCF_StackedArea2D.swf and /dev/null differ diff --git a/pandora_console/include/FusionCharts/FusionCharts.js b/pandora_console/include/FusionCharts/FusionCharts.js deleted file mode 100644 index fbfa1a439a..0000000000 --- a/pandora_console/include/FusionCharts/FusionCharts.js +++ /dev/null @@ -1,361 +0,0 @@ -/** - * FusionCharts: Flash Player detection and Chart embedding. - * Version 1.2.3F ( 22 November 2008) - Specialized for FusionChartsFREE - * Checking Flash Version >=6 and added updateChartXML() for FREE Charts. - * Version: 1.2.3 (1st September, 2008) - Added Fix for % and & characters, scaled dimensions, fixes in to properly handling of double quotes and single quotes in setDataXML() function. - * Version: 1.2.2 (10th July, 2008) - Added Fix for % scaled dimensions, fixes in setDataXML() and setDataURL() functions - * Version: 1.2.1 (21st December, 2007) - Added setting up Transparent/opaque mode: setTransparent() function - * Version: 1.2 (1st November, 2007) - Added FORM fixes for IE - * Version: 1.1 (29th June, 2007) - Added Player detection, New conditional fixes for IE - * - * Morphed from SWFObject (http://blog.deconcept.com/swfobject/) under MIT License: - * http://www.opensource.org/licenses/mit-license.php - * - */ -if(typeof infosoftglobal == "undefined") var infosoftglobal = new Object(); -if(typeof infosoftglobal.FusionChartsUtil == "undefined") infosoftglobal.FusionChartsUtil = new Object(); -infosoftglobal.FusionCharts = function(swf, id, w, h, debugMode, registerWithJS, c, scaleMode, lang, detectFlashVersion, autoInstallRedirect){ - if (!document.getElementById) { return; } - - //Flag to see whether data has been set initially - this.initialDataSet = false; - - //Create container objects - this.params = new Object(); - this.variables = new Object(); - this.attributes = new Array(); - - //Set attributes for the SWF - if(swf) { this.setAttribute('swf', swf); } - if(id) { this.setAttribute('id', id); } - - w=w.toString().replace(/\%$/,"%25"); - if(w) { this.setAttribute('width', w); } - h=h.toString().replace(/\%$/,"%25"); - if(h) { this.setAttribute('height', h); } - - - //Set background color - if(c) { this.addParam('bgcolor', c); } - - //Set Quality - this.addParam('quality', 'high'); - - //Add scripting access parameter - this.addParam('allowScriptAccess', 'always'); - - //Pass width and height to be appended as chartWidth and chartHeight - this.addVariable('chartWidth', w); - this.addVariable('chartHeight', h); - - //Whether in debug mode - debugMode = debugMode ? debugMode : 0; - this.addVariable('debugMode', debugMode); - //Pass DOM ID to Chart - this.addVariable('DOMId', id); - //Whether to registed with JavaScript - registerWithJS = registerWithJS ? registerWithJS : 0; - this.addVariable('registerWithJS', registerWithJS); - - //Scale Mode of chart - scaleMode = scaleMode ? scaleMode : 'noScale'; - this.addVariable('scaleMode', scaleMode); - - //Application Message Language - lang = lang ? lang : 'EN'; - this.addVariable('lang', lang); - - //Whether to auto detect and re-direct to Flash Player installation - this.detectFlashVersion = detectFlashVersion?detectFlashVersion:1; - this.autoInstallRedirect = autoInstallRedirect?autoInstallRedirect:1; - - //Ger Flash Player version - this.installedVer = infosoftglobal.FusionChartsUtil.getPlayerVersion(); - - if (!window.opera && document.all && this.installedVer.major > 7) { - // Only add the onunload cleanup if the Flash Player version supports External Interface and we are in IE - infosoftglobal.FusionCharts.doPrepUnload = true; - } -}; - -infosoftglobal.FusionCharts.prototype = { - setAttribute: function(name, value){ - this.attributes[name] = value; - }, - getAttribute: function(name){ - return this.attributes[name]; - }, - addParam: function(name, value){ - this.params[name] = value; - }, - getParams: function(){ - return this.params; - }, - addVariable: function(name, value){ - this.variables[name] = value; - }, - getVariable: function(name){ - return this.variables[name]; - }, - getVariables: function(){ - return this.variables; - }, - getVariablePairs: function(){ - var variablePairs = new Array(); - var key; - var variables = this.getVariables(); - for(key in variables){ - variablePairs.push(key +"="+ variables[key]); - } - return variablePairs; - }, - getSWFHTML: function() { - var swfNode = ""; - if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { - // netscape plugin architecture - swfNode = ' 0){ swfNode += 'flashvars="'+ pairs +'"'; } - swfNode += '/>'; - } else { // PC IE - swfNode = ''; - swfNode += ''; - var params = this.getParams(); - for(var key in params) { - swfNode += ''; - } - var pairs = this.getVariablePairs().join("&"); - if(pairs.length > 0) {swfNode += '';} - swfNode += ""; - } - return swfNode; - }, - setDataURL: function(strDataURL){ - //This method sets the data URL for the chart. - //If being set initially - if (this.initialDataSet==false){ - this.addVariable('dataURL',strDataURL); - //Update flag - this.initialDataSet = true; - }else{ - //Else, we update the chart data using External Interface - //Get reference to chart object - var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(this.getAttribute('id')); - - if (!chartObj.setDataURL) - { - __flash__addCallback(chartObj, "setDataURL"); - } - - chartObj.setDataURL(strDataURL); - } - }, - //This function : - //fixes the double quoted attributes to single quotes - //Encodes all quotes inside attribute values - //Encodes % to %25 and & to %26; - encodeDataXML: function(strDataXML){ - - var regExpReservedCharacters=["\\$","\\+"]; - var arrDQAtt=strDataXML.match(/=\s*\".*?\"/g); - if (arrDQAtt){ - for(var i=0;i compatibility - //Check if it's added in Mozilla embed array or if already exits - if(!document.embeds[this.getAttribute('id')] && !window[this.getAttribute('id')]) - window[this.getAttribute('id')]=document.getElementById(this.getAttribute('id')); - //or else document.forms[formName/formIndex][chartId] - return true; - } - } -}; - -/* ---- detection functions ---- */ -infosoftglobal.FusionChartsUtil.getPlayerVersion = function(){ - var PlayerVersion = new infosoftglobal.PlayerVersion([0,0,0]); - if(navigator.plugins && navigator.mimeTypes.length){ - var x = navigator.plugins["Shockwave Flash"]; - if(x && x.description) { - PlayerVersion = new infosoftglobal.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".")); - } - }else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0){ - //If Windows CE - var axo = 1; - var counter = 3; - while(axo) { - try { - counter++; - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+ counter); - PlayerVersion = new infosoftglobal.PlayerVersion([counter,0,0]); - } catch (e) { - axo = null; - } - } - } else { - // Win IE (non mobile) - // Do minor version lookup in IE, but avoid Flash Player 6 crashing issues - try{ - var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); - }catch(e){ - try { - var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); - PlayerVersion = new infosoftglobal.PlayerVersion([6,0,21]); - axo.AllowScriptAccess = "always"; // error if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code) - } catch(e) { - if (PlayerVersion.major == 6) { - return PlayerVersion; - } - } - try { - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); - } catch(e) {} - } - if (axo != null) { - PlayerVersion = new infosoftglobal.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(",")); - } - } - return PlayerVersion; -}; -infosoftglobal.PlayerVersion = function(arrVersion){ - this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0; - this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0; - this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0; -}; -// ------------ Fix for Out of Memory Bug in IE in FP9 ---------------// -/* Fix for video streaming bug */ -infosoftglobal.FusionChartsUtil.cleanupSWFs = function() { - var objects = document.getElementsByTagName("OBJECT"); - for (var i = objects.length - 1; i >= 0; i--) { - objects[i].style.display = 'none'; - for (var x in objects[i]) { - if (typeof objects[i][x] == 'function') { - objects[i][x] = function(){}; - } - } - } -}; -// Fixes bug in fp9 -if (infosoftglobal.FusionCharts.doPrepUnload) { - if (!infosoftglobal.unloadSet) { - infosoftglobal.FusionChartsUtil.prepUnload = function() { - __flash_unloadHandler = function(){}; - __flash_savedUnloadHandler = function(){}; - window.attachEvent("onunload", infosoftglobal.FusionChartsUtil.cleanupSWFs); - }; - window.attachEvent("onbeforeunload", infosoftglobal.FusionChartsUtil.prepUnload); - infosoftglobal.unloadSet = true; - } -} -/* Add document.getElementById if needed (mobile IE < 5) */ -if (!document.getElementById && document.all) { document.getElementById = function(id) { return document.all[id]; };} -/* Add Array.push if needed (ie5) */ -if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; };} - -/* Function to return Flash Object from ID */ -infosoftglobal.FusionChartsUtil.getChartObject = function(id) -{ - var chartRef=null; - if (navigator.appName.indexOf("Microsoft Internet")==-1) { - if (document.embeds && document.embeds[id]) - chartRef = document.embeds[id]; - else - chartRef = window.document[id]; - } - else { - chartRef = window[id]; - } - if (!chartRef) - chartRef = document.getElementById(id); - - return chartRef; -}; -/* - Function to update chart's data at client side (FOR FusionCharts vFREE and 2.x -*/ -infosoftglobal.FusionChartsUtil.updateChartXML = function(chartId, strXML){ - //Get reference to chart object - var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(chartId); - //Set dataURL to null - chartObj.SetVariable("_root.dataURL",""); - //Set the flag - chartObj.SetVariable("_root.isNewData","1"); - //Set the actual data - chartObj.SetVariable("_root.newData",strXML); - //Go to the required frame - chartObj.TGotoLabel("/", "JavaScriptHandler"); -}; - - -/* Aliases for easy usage */ -var getChartFromId = infosoftglobal.FusionChartsUtil.getChartObject; -var updateChartXML = infosoftglobal.FusionChartsUtil.updateChartXML; -var FusionCharts = infosoftglobal.FusionCharts; \ No newline at end of file diff --git a/pandora_console/include/FusionCharts/FusionCharts.php b/pandora_console/include/FusionCharts/FusionCharts.php deleted file mode 100644 index b856779c0f..0000000000 --- a/pandora_console/include/FusionCharts/FusionCharts.php +++ /dev/null @@ -1,150 +0,0 @@ -0) - $strDataURL .= "&FCCurrTime=" . Date("H_i_s"); - else - $strDataURL .= "?FCCurrTime=" . Date("H_i_s"); - } - // URL Encode it - return urlencode($strDataURL); -} - - -// datePart function converts MySQL database based on requested mask -// Param: $mask - what part of the date to return "m' for month,"d" for day, and "y" for year -// Param: $dateTimeStr - MySQL date/time format (yyyy-mm-dd HH:ii:ss) -function datePart($mask, $dateTimeStr) { - @list($datePt, $timePt) = explode(" ", $dateTimeStr); - $arDatePt = explode("-", $datePt); - $dataStr = ""; - // Ensure we have 3 parameters for the date - if (count($arDatePt) == 3) { - list($year, $month, $day) = $arDatePt; - // determine the request - switch ($mask) { - case "m": return (int)$month; - case "d": return (int)$day; - case "y": return (int)$year; - } - // default to mm/dd/yyyy - return (trim($month . "/" . $day . "/" . $year)); - } - return $dataStr; -} - - -// renderChart renders the JavaScript + HTML code required to embed a chart. -// This function assumes that you've already included the FusionCharts JavaScript class -// in your page. - -// $chartSWF - SWF File Name (and Path) of the chart which you intend to plot -// $strURL - If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method) -// $strXML - If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method) -// $chartId - Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id. -// $chartWidth - Intended width for the chart (in pixels) -// $chartHeight - Intended height for the chart (in pixels) -function renderChart($chartSWF, $strURL, $strXML, $chartId, $chartWidth, $chartHeight) { - //First we create a new DIV for each chart. We specify the name of DIV as "chartId"Div. - //DIV names are case-sensitive. - - // The Steps in the script block below are: - // - // 1)In the DIV the text "Chart" is shown to users before the chart has started loading - // (if there is a lag in relaying SWF from server). This text is also shown to users - // who do not have Flash Player installed. You can configure it as per your needs. - // - // 2) The chart is rendered using FusionCharts Class. Each chart's instance (JavaScript) Id - // is named as chart_"chartId". - // - // 3) Check whether we've to provide data using dataXML method or dataURL method - // save the data for usage below - if ($strXML=="") - $tempData = "//Set the dataURL of the chart\n\t\tchart_$chartId.setDataURL(\"$strURL\")"; - else - $tempData = "//Provide entire XML data using dataXML method\n\t\tchart_$chartId.setDataXML(\"$strXML\")"; - - // Set up necessary variables for the RENDERCAHRT - $chartIdDiv = $chartId . "Div"; - - // create a string for outputting by the caller - $render_chart = << -
- Chart. -
- - -RENDERCHART; - - return $render_chart; -} - - -//renderChartHTML function renders the HTML code for the JavaScript. This -//method does NOT embed the chart using JavaScript class. Instead, it uses -//direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll -//see the "Click to activate..." message on the chart. -// $chartSWF - SWF File Name (and Path) of the chart which you intend to plot -// $strURL - If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method) -// $strXML - If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method) -// $chartId - Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id. -// $chartWidth - Intended width for the chart (in pixels) -// $chartHeight - Intended height for the chart (in pixels) -function renderChartHTML($chartSWF, $strURL, $strXML, $chartId, $chartWidth, $chartHeight) { - // Generate the FlashVars string based on whether dataURL has been provided - // or dataXML. - $strFlashVars = "&chartWidth=" . $chartWidth . "&chartHeight=" . $chartHeight ; - if ($strXML=="") - // DataURL Mode - $strFlashVars .= "&dataURL=" . $strURL; - else - //DataXML Mode - $strFlashVars .= "&dataXML=" . $strXML; - -$HTML_chart = << - - - - - - - - -HTMLCHART; - - return $HTML_chart; -} - -// boolToNum function converts boolean values to numeric (1/0) -function boolToNum($bVal) { - return (($bVal==true) ? 1 : 0); -} - -?> \ No newline at end of file diff --git a/pandora_console/include/FusionCharts/FusionCharts_Gen.php b/pandora_console/include/FusionCharts/FusionCharts_Gen.php deleted file mode 100644 index 29981c577a..0000000000 --- a/pandora_console/include/FusionCharts/FusionCharts_Gen.php +++ /dev/null @@ -1,2166 +0,0 @@ - single series, 2=> multi-series, 5=>Gantt ( - # For Future Use : 3=> scatter and bubble, 4=> MSStacked - var $seriesType; - - # Charts Atribute array - var $chartParams = array(); #List of Chart Parameters - var $chartParamsCounter; #Number of Chart parameters - - var $categoriesParam; # Categories Parameter Setting - var $categoryNames = array(); # Category array for storing Category set - var $categoryNamesCounter; # Category array counter - - var $dataset = array(); # dataset array - var $datasetParam = array(); # dataset parameter setting array - var $datasetCounter; # dataset array counter - var $setCounter; # set array counter - - - # trendLines array - var $trendLines = array(); # trendLines array - var $tLineCounter; # trendLines array counter - - #chart messages - var $chartMSG; - - var $chartSWF = array(); # Charts SWF array - var $arr_FCColors = array(); # Color Set to be applied to dataplots - var $UserColorON; # User define color define true or false - var $userColorCounter; - - // Cache Control - var $noCache; - - var $DataBaseType; # DataBase Type - - var $encodeChars; # XML for dataXML or dataURL - -#############============ For Gantt Chart ============================ - # Gantt categories - var $GT_categories = array(); - var $GT_categories_Counter; - var $GT_categoriesParam = array(); - - var $GT_subcategories_Counter; - - # Gantt processes - var $GT_processes = array(); - var $GT_processes_Counter; - var $GT_processes_Param; - - # Gantt Tasks - var $GT_Tasks = array(); - var $GT_Tasks_Counter; - var $GT_Tasks_Param; - - # Gantt Connectors - var $GT_Connectors = array(); - var $GT_Connectors_Counter; - var $GT_Connectors_Param; - - # Gantt Milestones - var $GT_Milestones = array(); - var $GT_Milestones_Counter; - var $GT_Milestones_Param; - - # Gantt datatable - var $GT_datatable = array(); - var $GT_datatable_Counter; - var $GT_datatableParam; - var $GT_dataColumnParam = array(); - - var $GT_subdatatable_Counter; - - #------- For Futute Use (start)---------------- - # Gantt legend - var $GT_legend = array(); - var $GT_legend_Counter; - var $GT_legend_Param; - #------- For Futute Use (end)---------------- - - var $wMode; - - # Advanced Chart settings - var $JSC = array(); - -#############============ For Future Use (start)============================ - # dataset for MSStackedColumn2D - - var $MSSDataset = array(); # dataset array for MSStackedColumn2D - var $MSSDatasetParams = array(); # MSSDataset parameter setting - - var $MSSDatasetCounter; # MSSDataset array counter - var $MSSSubDatasetCounter; # ms sub dataset array counter - var $MSSSetCounter; # msset array counter - - # lineset - var $lineSet = array(); # lineSet array - var $lineSetParam = array(); # lineSet Parameter setting array - - var $lineCounter; # line array counter - var $lineSetCounter; # lineset array counter - var $lineIDCounter; # lineID counter; - - # vtrendLines array - var $vtrendLines = array(); # vtrendLines array - var $vtLineCounter; # vtrendLines array counter - - # style array - var $styles = array(); # styles array - var $styleDefCounter; # define counter - var $styleAppCounter; # apply counter - - -#############============ For Future Use (end)============================ - - - # FusionCharts Constructor, its take 4 Parameters. - # when we create object of FusionCharts, then Constructor will auto run and initialize - # chats array parameter like chartType, width, height, chartsID - function FusionCharts($chartType="column2d",$width="400",$height="300",$chartID="",$isTransparent=""){ - - $this->wMode=$isTransparent; - # Setting All Charts Array - $this->setChartArrays(); - - #initialise colorList - $this->colorInit(); - - # Setting Chart name - $this->chartType=strtolower($chartType); - # Getting Charts Series Type - $this->getSeriesType(); - - # Setting Charts Width and Height - $this->width=$width; - $this->height=$height; - - # Setting ChartID, Defult is Charts Name - if ($chartID==""){ - $chartCounter=@$_SESSION['chartcount']; - if($chartCounter<=0 || $chartCounter==NULL){ - $chartCounter=1; - } - - $this->chartID=$chartType . $chartCounter; - $_SESSION['chartcount']=++$chartCounter; - - }else{ - $this->chartID=$chartID; - } - - # Setting Defult Parameter Delimiter to ';' - $this->del=";"; - - # Setting Default SWF Path - $this->SWFPath=""; - $this->SWFFile=$this->SWFPath . "FCF_" . $this->chartSWF[$this->chartType][0] . ".swf"; - # Initialize categoriesParam - $this->categoriesParam=""; - $this->categoryNamesCounter=1; - - # Creating Category Array - $this->createCategory($this->categoryNamesCounter); - - # Initialize Dataset Variables - $this->datasetCounter=0; - $this->setCounter= 0; - if($this->seriesType>1){ - $this->setCounter++; - } - - # Initialize MSSDataset Variables - if($this->seriesType==4){ - $this->MSSDatasetCounter=0; - $this->MSSSubDatasetCounter=0; - $this->MSSSetCounter=0; - - $this->lineCounter=0; - $this->lineSetCounter=0; - $this->lineIDCounter=0; - } - - # vTrendLines Array inisialize - if($this->seriesType==3){ - $this->vtLineCounter=1; - $this->createvTrendLines($this->vtLineCounter); - } - - # TrendLines Array inisialize - $this->tLineCounter=1; - $this->createTrendLines($this->tLineCounter); - - # Styles Array inisialize - $this->styleDefCounter=1; - $this->styleAppCounter=1; - $this->createStyles("definition"); - $this->createSubStyles("definition","style"); - $this->createSubStylesParam("definition","style",$this->styleDefCounter); - - $this->GT_categories_Counter=0; - $this->GT_subcategories_Counter=0; - - $this->GT_processes_Counter=0; - $this->GT_processes_Param=""; - - $this->GT_Tasks_Counter=0; - $this->GT_Tasks_Param=""; - - # Gantt Connectors - $this->GT_Connectors_Counter=0; - $this->GT_Connectors_Param=""; - - # Gantt datatable - $this->GT_datatable_Counter=0; - $this->GT_datatableParam=""; - $this->GT_subdatatable_Counter=0; - - # Gantt legend - $this->GT_legend_Counter=0; - $this->GT_legend_Param=""; - - $this->chartMSG=""; - # XML store Variables - $this->strXML=""; - - $this->UserColorON = false; - $this->userColorCounter=0; - - $this->noCache=false; - $this->DataBaseType="mysql"; - - // JS Constructor - $this->JSC["debugmode"]=false; # debugmode default is false - $this->JSC["registerwithjs"]=false; # registerwithJS default is false - $this->JSC["bgcolor"]=""; # bgcolor default not set - $this->JSC["scalemode"]="noScale"; # scalemode default noScale - $this->JSC["lang"]="EN"; # Language default EN - - // dataXML type encode - $this->encodeChars=true; - - } - - -##------------ PUBLIC FUNCTIONS ---------------------------------------------------------------- - # Special Character - function encodeXMLChars($option=true){ - $this->$encodeChars=$option; - } - # Setting Parameter Delimiter, Defult Parameter Separator is ";" - function setParamDelimiter($strDel){ - $this->del=$strDel; - } - - # Database type set like ORACLE and MYSQL - function setDataBaseType($dbType){ - $this->DataBaseType=strtolower($dbType); - } - - # Setting path of SWF file. file name like FCF_Column3D.swf. where FCF_ is common for all SWF file - function setSWFPath($SWFPath){ - $this->SWFPath=$SWFPath; - $this->SWFFile=$this->SWFPath . "FCF_" . $this->chartSWF[$this->chartType][0] . ".swf"; - } - - # We can add or change single Chart parameter by setChartParam function - # its take Parameter Name and its Value - function setChartParam($paramName, $paramValue){ - $this->chartParams[$paramName]=$this->encodeSpecialChars($paramValue); - } - - # We can add or change Chart parameter sets by setChartParams function - # its take parameterset [ caption=xyz caption;subCaption=abcd abcd abcd;xAxisName=x axis;yAxisName=y's axis;bgColor=f2fec0;animation=1 ] - # Defult Parameter Separator is ";" - function setChartParams($strParam){ - $listArray=explode($this->del,$strParam); - foreach ($listArray as $valueArray) { - $paramValue=explode("=",$valueArray,2); - if($this->validateParam($paramValue)==true){ - $this->chartParams[$paramValue[0]]=$this->encodeSpecialChars($paramValue[1]); - } - } - } - - - # Setting Categories Parameter into categoriesParam variables - function setCategoriesParams($strParam){ - - $this->categoriesParam .= $this->ConvertParamToXMLAttribute($strParam); - } - - - # Function addCategoryFromDatabase adding Category from dataset - function addCategoryFromDatabase($query_result, $categoryColumn){ - if($this->DataBaseType=="mysql"){ - # fetching recordset till eof - while($row = mysql_fetch_array($query_result)){ - # add category - $this->addCategory($row[$categoryColumn],"","" ); - } - }elseif($this->DataBaseType=="oracle"){ - # fetching recordset till eof - while(OCIFetchInto($query_result, $row, OCI_ASSOC)){ - # add category - $this->addCategory($row[$categoryColumn],"","" ); - } - - } - } - - # Function addCategoryFromArray adding Category from Array - function addCategoryFromArray($categoryArray){ - # convert array to category set - foreach ($categoryArray as $value) { - # adding category - $this->addCategory($value); - } - } - - # Function for create set and catagory, dataset , set from array - function addChartDataFromArray($dataArray, $dataCatArray=""){ - if(is_array($dataArray)){ - if ($this->seriesType==1){ - # Single series Array - # aa[..][..]="name" aa[..][..]="value" - foreach($dataArray as $arrayvalue){ - if(is_array($arrayvalue)){ - $this->addChartData($arrayvalue[1],"name=" . $arrayvalue[0] ); - } - } - }else{ - # Multi series Array - if(is_array($dataCatArray)){ - foreach($dataCatArray as $value){ - $this->addCategory($value); - } - } - foreach($dataArray as $arrayvalue){ - if(is_array($arrayvalue)){ - $i=0; - $aaa[0]="";$aaa[1]=""; - foreach($arrayvalue as $value){ - if($i>=2){ - $this->addChartData($value); - }else{ - $aaa[$i]=$value; - } - if($i==1){ - $this->addDataset($aaa[0],$aaa[1]); - } - $i++; - - } - } - } - } - } - } - - # Function addCategory adding Category and vLine element - function addCategory($label="",$catParam="",$vlineParam = "" ){ - $strCatXML=""; - $strParam=""; - $label=$this->encodeSpecialChars($label); - # cheking vlineParam equal blank - if($vlineParam==""){ - # cheking catParam not blank - if($catParam!=""){ - - $strParam = $this->ConvertParamToXMLAttribute($catParam); - - } - # adding label and parameter set to category - $strCatXML =""; - - }else{ - - $strParam = $this->ConvertParamToXMLAttribute($vlineParam); - - # adding parameter set to vLine - $strCatXML=""; - } - # storing into categoryNames array - $this->categoryNames[$this->categoryNamesCounter]=$strCatXML; - # Increase Counter - $this->categoryNamesCounter++; - } - - - # adding dataset array element - function addDataset($seriesName, $strParam=""){ - $this->datasetCounter++; - $this->createDataset($this->datasetCounter); - - $this->setCounter++; - $this->createDataValues($this->datasetCounter,"_" . $this->setCounter); - - $seriesName=$this->encodeSpecialChars($seriesName); - # creating seriesName and dataset parameter set - $tempParam=""; - $tempParam ="seriesName='" . $seriesName . "' "; - $tempParam .= $this->ConvertParamToXMLAttribute($strParam); - - $colorParam=""; - $pos = strpos(strtolower($tempParam), " color"); - if ($pos === false) { - $colorParam=" color='" . $this->getColor($this->datasetCounter-1) . "'"; - } - - # setting datasetParam array - $this->datasetParam[$this->datasetCounter]=$tempParam . $colorParam; - - } - - - # Function addChartData adding set data element - function addChartData($value="",$setParam="",$vlineParam = "" ){ - $strSetXML=""; - - # Choosing dataset depend on seriesType and getting XML set - if($this->seriesType>=1 and $this->seriesType<=2){ - - $strSetXML=$this->setSSMSDataArray($value,$setParam,$vlineParam); - - }elseif ($this->seriesType==3){ - - $strSetXML=$this->setScatterBubbleDataArray($value,$setParam,$vlineParam); - - }elseif (($this->seriesType==4)){ - - $strSetXML=$this->setSSMSDataArray($value,$setParam,$vlineParam); - - } - - # Adding xml set to dataset array and Increase set counter - if ($this->seriesType==1){ - $this->dataset[$this->setCounter]=$strSetXML; - $this->setCounter++; - }elseif($this->seriesType>1 and $this->seriesType<4){ - $this->dataset[$this->datasetCounter]["_" . $this->setCounter]=$strSetXML; - $this->setCounter++; - }elseif($this->seriesType==4){ - $this->MSSDataset[$this->MSSDatasetCounter][$this->MSSSubDatasetCounter][$this->MSSSetCounter]=$strSetXML; - $this->MSSSetCounter++; - } - } - - # The addDatasetsFromDatabase() function adds dataset and set elements from - - # database, by Default, from MySql recordset. You can use setDatabaseType() function - - # to set the type of database to work on. - function addDatasetsFromDatabase($query_result, $ctrlField, $valueField,$datsetParamArray="",$link=""){ - - # Initialize variables - $paramset=""; - $tempContrl=""; - if(is_array($datsetParamArray)==false){ - $datsetParamArray=array(); - } - - # Calculate total no of array elements in datsetParamArray - $arrLimit=count($datsetParamArray); - $i=1; - $tempParam=""; - if($this->DataBaseType=="mysql"){ - ##### For My SQL Connection - $FieldArray=explode($this->del,$valueField); - if(count($FieldArray)>1){ - ### Muli Series - # fetching recordset - while($row = mysql_fetch_array($query_result)){ - # Add Category - $this->addCategory($row[$ctrlField]); - } - - $k=0; - # Add daatset for multiple fields - foreach ($FieldArray as $FieldName) { - - if($k<$arrLimit){ - $tempParam = $datsetParamArray[$k]; - }else{ - $tempParam=""; - } - # Add Dataset with adddataset() function - $this->addDataset($FieldName,$tempParam); - - # rewind query result - mysql_data_seek($query_result,0); - while($row = mysql_fetch_array($query_result)){ - - # Generating URL link - if($link==""){ - $paramset=""; - }else{ - # Generating URL link from getLinkFromPattern - $paramset="link=" . urlencode($this->getLinkFromPattern($row,$link)); - } - # add value to dataset - $this->addChartData($row[$FieldName], $paramset, ""); - - } - $k++; - } - - }else{ - - ### Single Series - # fetching recordset - while($row = mysql_fetch_array($query_result)){ - # Creating Control break depending on ctrlField - # if ctrlField value changes then dataset will be Generated - if ($tempContrl!=$row[$ctrlField]){ - if($i<=$arrLimit){ - $tempParam = $datsetParamArray[$i-1]; - }else{ - $tempParam=""; - } - # Add Dataset with adddataset() function - $this->addDataset($row[$ctrlField],$tempParam); - $tempContrl=$row[$ctrlField]; - $i++; - } - # Generating URL link - if($link==""){ - $paramset=""; - }else{ - # Generating URL link from getLinkFromPattern - $paramset="link=" . urlencode($this->getLinkFromPattern($row,$link)); - } - # add value to dataset - $this->addChartData($row[$valueField], $paramset, ""); - - } - } - }elseif($this->DataBaseType=="oracle"){ - # For Oracle Connection - # fetching recordset - while(OCIFetchInto($query_result, $row, OCI_ASSOC)){ - # Create Control break depending on ctrlField - # if ctrlField value changes then dataset will be Generated - if ($tempContrl!=$row[$ctrlField]){ - if($i<=$arrLimit){ - $tempParam = $datsetParamArray[$i-1]; - }else{ - $tempParam=""; - } - # add Dataset - $this->addDataset($row[$ctrlField],$tempParam); - $tempContrl=$row[$ctrlField]; - $i++; - } - # Generating URL link - if($link==""){ - $paramset=""; - }else{ - # Generating URL link from getLinkFromPattern - $paramset="link=" . urlencode($this->getLinkFromPattern($row,$link)); - } - # add value to dataset - $this->addChartData($row[$valueField], $paramset, ""); - } - } - } - - # addDataFromDatabase funcion take 5 parameter like query_result, label field, value field - # and initialize dataset variables and link - function addDataFromDatabase($query_result, $db_field_ChartData,$db_field_CategoryNames="", $strParam="",$LinkPlaceHolder=""){ - - $paramset=""; - if($this->DataBaseType=="mysql"){ - # fetching recordset till eof - while($row = mysql_fetch_array($query_result)){ - - if($LinkPlaceHolder==""){ - $paramset=""; - }else{ - # Getting link - $paramset="link=" . urlencode($this->getLinkFromPattern($row,$LinkPlaceHolder)); - } - if ($strParam=""){ - $strParam=$paramset; - }else{ - $strParam .= ";" . $paramset; - } - - # covert to set element and save to $partXML - if($db_field_CategoryNames==""){ - $data=@$row[$db_field_ChartData]; - if($strParam!="") - $this->addChartData($this->encodeSpecialChars($data),$strParam); - else - $this->addChartData($this->encodeSpecialChars($data)); - } - else{ - $data=@$row[$db_field_ChartData]; - $label=@$row[$db_field_CategoryNames]; - $this->addChartData($this->encodeSpecialChars($data),"name=" . $this->encodeSpecialChars($label) . ";" .$strParam,"" ); - } - } - }elseif($this->DataBaseType=="oracle"){ - # fetching recordset till eof - while(OCIFetchInto($query_result, $row, OCI_ASSOC)){ - - if($LinkPlaceHolder==""){ - $paramset=""; - }else{ - # Getting link - $paramset="link=" . urlencode($this->getLinkFromPattern($row,$LinkPlaceHolder)); - } - if ($strParam=""){ - $strParam=$paramset; - }else{ - $strParam .= ";" . $paramset; - } - - # covert to set element and save to $partXML - if($db_field_CategoryNames==""){ - $data=@$row[$db_field_ChartData]; - if($strParam!="") - $this->addChartData($this->encodeSpecialChars($data),$strParam); - else - $this->addChartData($this->encodeSpecialChars($data)); - } - else{ - $data=@$row[$db_field_ChartData]; - $label=@$row[$db_field_CategoryNames]; - $this->addChartData($this->encodeSpecialChars($data),"name=" . $this->encodeSpecialChars($label) . ";" .$strParam,"" ); - } - } - } - } - - # setTLine create TrendLine parameter - function addTrendLine($strParam){ - - $listArray=explode($this->del,$strParam); - foreach ($listArray as $valueArray) { - $paramValue=explode("=",$valueArray,2); - if($this->validateParam($paramValue)==true){ - $this->trendLines[$this->tLineCounter][$paramValue[0]]=$this->encodeSpecialChars($paramValue[1]); - } - } - $this->tLineCounter++; - } - - - #this function sets chart messages - function setChartMessage($strParam){ - $this->chartMSG="?"; - - $listArray=explode($this->del,$strParam); - foreach ($listArray as $valueArray) { - $paramValue=explode("=",$valueArray,2); - if($this->validateParam($paramValue)==true){ - $this->chartMSG.=$paramValue[0] . "=" . $this->encodeSpecialChars($paramValue[1]) . "&"; - } - } - $this->chartMSG=substr($this->chartMSG,0,strlen($this->chartMSG)-1); - } - - #### - This function is mostly for Future USE ----------------------------- - # set JS constructor of FusionCharts.js - function setAddChartParams($debugMode, $registerWithJS=0, $c="", $scaleMode="", $lang=""){ - $this->JSC["debugmode"]=$debugMode; - $this->JSC["registerwithjs"]=$registerWithJS; - $this->JSC["bgcolor"]=$c; - $this->JSC["scalemode"]=$scaleMode; - $this->JSC["lang"]=$lang; - - } - - # The function SetInitParam() adds extra chart settings - function setInitParam($tname,$tvalue){ - - $trimName= strtolower(str_replace(" ","",$tname)); - $this->JSC[$trimName]=$tvalue; - - } - - # getXML render all class arrays to XML output - function getXML(){ - - $this->strXML=""; - - $strChartParam=""; - - - $strChartParam=$this->getChartParamsXML(); - if($this->seriesType==1){ - if(gettype(strpos($this->chartType,"line"))!="boolean"){ - if(strpos($strChartParam,"lineColor")===false){ - $colorSet=$this->getColor(0); - $this->setChartParams("lineColor=" . $colorSet ); - } - - } - if(gettype(strpos($this->chartType,"area"))!="boolean"){ - if(strpos($strChartParam,"areaBgColor")===false){ - $colorSet=$this->getColor(0); - $this->setChartParams("areaBgColor=" . $colorSet ); - } - } - } - - - # calling getChartParamsXML function for chart parameter - $this->strXML = "getChartParamsXML() . " >"; - if ($this->seriesType >= 0 and $this->seriesType <= 4) { - - # calling getCategoriesXML function for Category element - $this->strXML .= $this->getCategoriesXML(); - # calling getDatasetXML function for set element - $this->strXML .= $this->getDatasetXML(); - # calling getvTrendLinesXML function for vTrendLines element - if($this->seriesType==3){ - $this->strXML .= $this->getvTrendLinesXML(); - } - # Calling getLinesetXML - if($this->seriesType==4){ - $this->strXML .= $this->getLinesetXML(); - } - # calling getTrendLinesXML function for TrendLines element - $this->strXML .= $this->getTrendLinesXML(); - # calling getStylesXML function for Styles element - $this->strXML .= $this->getStylesXML(); - - }else if($this->seriesType == 5) { - $this->strXML .= $this->getGanttCategoriesXML(); - $this->strXML .= $this->getProcessesXML(); - $this->strXML .= $this->getGanttDatatableXML(); - $this->strXML .= $this->getTasksXML(); - $this->strXML .= $this->getConnectorsXML(); - $this->strXML .= $this->getMilestonesXML(); - # calling getTrendLinesXML function for TrendLines element - $this->strXML .= $this->getTrendLinesXML(); - # calling getStylesXML function for Styles element - $this->strXML .= $this->getStylesXML(); - $this->strXML .= $this->getLegendXML(); - } - - # Closing Chart element - $this->strXML .= ""; - - # Return XML output - return $this->strXML; - } - - # set wMode - function setwMode($isTransparent=""){ - $this->wMode=$isTransparent; - } - - # Function getXML render all class arrays to XML output - function renderChart($isHTML=false, $display=true){ - - $this->strXML=$this->getXML(); - $this->SWFFile=$this->SWFPath . "FCF_" . $this->chartSWF[$this->chartType][0] . ".swf"; - - if($this->noCache==true){ - if($this->chartMSG==""){ - $this->chartMSG = "?nocache=" . microtime(); - }else{ - $this->chartMSG .= "&nocache=" . microtime(); - } - } - - # print the charts - if($isHTML==false){ - if($display){ - print $this->renderChartJS($this->SWFFile . $this->chartMSG,"",$this->strXML,$this->chartID, $this->width, $this->height,$this->JSC["debugmode"], $this->JSC["registerwithjs"],$this->wMode); - }else{ - return $this->renderChartJS($this->SWFFile . $this->chartMSG,"",$this->strXML,$this->chartID, $this->width, $this->height,$this->JSC["debugmode"], $this->JSC["registerwithjs"],$this->wMode); - } - - }else{ - if($display){ - print $this->renderChartHTML($this->SWFFile . $this->chartMSG,"",$this->strXML,$this->chartID, $this->width, $this->height,$this->JSC["debugmode"], $this->JSC["registerwithjs"],$this->wMode); - }else{ - return $this->renderChartHTML($this->SWFFile . $this->chartMSG,"",$this->strXML,$this->chartID, $this->width, $this->height,$this->JSC["debugmode"], $this->JSC["registerwithjs"],$this->wMode); - } - } - - } - - # Sets whether chart SWF files are not to be cached - function setOffChartCaching($swfNoCache=false){ - $this->noCache=$swfNoCache; - } - - # Renders Chart form External XML data source - function renderChartFromExtXML($dataXML){ - print $this->renderChartJS($this->SWFFile,"",$dataXML,$this->chartID, $this->width, $this->height, $this->JSC["debugmode"], $this->JSC["registerwithjs"], $this->wMode); - } - - // RenderChartJS renders the JavaScript + HTML code required to embed a chart. - // This function assumes that you've already included the FusionCharts JavaScript class - // in your page. - - // $chartSWF - SWF File Name (and Path) of the chart which you intend to plot - // $strURL - If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method) - // $strXML - If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method) - // $chartId - Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id. - // $chartWidth - Intended width for the chart (in pixels) - // $chartHeight - Intended height for the chart (in pixels) - // $debugMode - Whether to start the chart in debug mode - // $registerWithJS - Whether to ask chart to register itself with JavaScript - // $setTransparent - Transparent mode - function renderChartJS($chartSWF, $strURL, $strXML, $chartId, $chartWidth, $chartHeight, $debugMode=false, $registerWithJS=false, $setTransparent="") { - //First we create a new DIV for each chart. We specify the name of DIV as "chartId"Div. - //DIV names are case-sensitive. - - // The Steps in the script block below are: - // - // 1)In the DIV the text "Chart" is shown to users before the chart has started loading - // (if there is a lag in relaying SWF from server). This text is also shown to users - // who do not have Flash Player installed. You can configure it as per your needs. - // - // 2) The chart is rendered using FusionCharts Class. Each chart's instance (JavaScript) Id - // is named as chart_"chartId". - // - // 3) Check whether to provide data using dataXML method or dataURL method - // save the data for usage below - $strHTML=""; - - if ($strXML=="") - $tempData = "\t//Set the dataURL of the chart\n\tchart_$chartId.setDataURL(\"$strURL\");"; - else - $tempData = "\t//Provide entire XML data using dataXML method\n\tchart_$chartId.setDataXML(\"$strXML\");"; - - // Set up necessary variables for the RENDERCHART - $chartIdDiv = $chartId . "Div"; - $ndebugMode = $this->boolToNum($debugMode); - $nregisterWithJS = $this->boolToNum($registerWithJS); - $nsetTransparent=($setTransparent?"true":"false"); - - - // Create a string for output by the caller - - $strHTML .= "\n \n\n"; - - $strHTML .= "
\n"; - $strHTML .= "\tChart.\n"; - $strHTML .= "
\n"; - $strHTML .= "\n\n"; - $strHTML .= "\n"; - - return $strHTML; - - } - - - //RenderChartHTML function renders the HTML code for the JavaScript. This - //method does NOT embed the chart using JavaScript class. Instead, it uses - //direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll - //see the "Click to activate..." message on the chart. - // $chartSWF - SWF File Name (and Path) of the chart which you intend to plot - // $strURL - If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method) - // $strXML - If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method) - // $chartId - Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id. - // $chartWidth - Intended width for the chart (in pixels) - // $chartHeight - Intended height for the chart (in pixels) - // $debugMode - Whether to start the chart in debug mode - // $registerWithJS - Whether to ask chart to register itself with JavaScript - // $setTransparent - Transparent mode - function renderChartHTML($chartSWF, $strURL, $strXML, $chartId, $chartWidth, $chartHeight, $debugMode=false,$registerWithJS=false, $setTransparent="") { - // Generate the FlashVars string based on whether dataURL has been provided or dataXML. - - $strHTML=""; - $strFlashVars = "&chartWidth=" . $chartWidth . "&chartHeight=" . $chartHeight . "&debugMode=" . $this->boolToNum($debugMode); - - $strFlashVars .= "&scaleMode=" . $this->JSC["scalemode"] . "&lang=" . $this->JSC["lang"]; - - if ($strXML=="") - // DataURL Mode - $strFlashVars .= "&dataURL=" . $strURL; - else - //DataXML Mode - $strFlashVars .= "&dataXML=" . $strXML; - - $nregisterWithJS = $this->boolToNum($registerWithJS); - if($setTransparent!=""){ - $nsetTransparent=($setTransparent==false?"opaque":"transparent"); - }else{ - $nsetTransparent="window"; - } - - $strHTML .= "\n\n\n"; - - $HTTP="http"; - if(strtolower($_SERVER['HTTPS'])=="on") - { - $HTTP="https"; - } - - $Strval = $_SERVER['HTTP_USER_AGENT']; - $pos=strpos($Strval,"MSIE"); - if($pos===false){ - - $strHTML .= "JSC["bgcolor"]!="")? " bgcolor=\"" . $this->JSC["bgcolor"] . "\"":"" . " allowScriptAccess=\"always\" type=\"application/x-shockwave-flash\" pluginspage=\"$HTTP://www.macromedia.com/go/getflashplayer\" wmode=\"$nsetTransparent\" \n"; - - }else{ - $strHTML .= " \n"; - $strHTML .= "\t \n"; - $strHTML .= "\t \n"; - $strHTML .= "\t \n"; - $strHTML .= "\t \n"; - $strHTML .= "\t \n"; - //Set background color - if($this->JSC["bgcolor"] !="") { - $strHTML .= "\tJSC["bgcolor"] . "\" /> \n"; - } - - $strHTML .= "\n"; - $strHTML .= "\n"; - - } - return $strHTML; - } - - // The function boolToNum() function converts boolean values to numeric (1/0) - function boolToNum($bVal) { - return (($bVal==true) ? 1 : 0); - } - - -##------------ PRIVATE FUNCTIONS ---------------------------------------------------------------- - - # getDatasetXML create set chart xml - function getDatasetXML(){ - # Calling dataset function depending on seriesType - switch ($this->seriesType){ - case 1 : - return $this->getSSDatasetXML(); - break; - case 2 : - return $this->getMSDatasetXML(); - break; - case 3 : - return $this->getMSDatasetXML(); - break; - case 4 : - return $this->getMSStackedDatasetXML(); - break; - } - } - # By getChartParamsXML, we can fetch charts array and convert into XML - # and return like "caption='xyz' xAxisName='x side' ............ - function getChartParamsXML(){ - $partXML=""; - # feching charts each array and converting into chat parameter - foreach($this->chartParams as $part_type => $part_name){ - $partXML .= $part_type . "='" . $this->encodeSpecialChars($part_name) . "' "; - } - # Return Chart Parameter - return $partXML; - } - - - # Function getCategoriesXML for getting Category part XML - function getCategoriesXML(){ - if($this->seriesType>1){ - $partXML=""; - # adding categories parameter - $partXML="categoriesParam . " >"; - if($this->categoryNamesCounter>1){ - foreach($this->categoryNames as $part_type => $part_name){ - if($part_name!=""){ - # adding elements - if($part_name!="Array"){ - $partXML .= $part_name; - } - } - } - } - # Closing - $partXML .=""; - return $partXML; - } - } - # creating single set element - # - # - - function getSSDatasetXML(){ - if($this->seriesType==1){ - $partXML=""; - foreach($this->dataset as $part_type => $part_name){ - if($part_name!=""){ - # adding elements - if($part_name!="Array"){ - $partXML .= $part_name; - } - } - } - return $partXML; - } - } - - # getMSDatasetXML for getting datset part XML - # - # - # - # - function getMSDatasetXML(){ - if($this->seriesType>1){ - $partXML=""; - foreach($this->dataset as $part_type => $part_name){ - $partXML .="datasetParam[$part_type] . " >"; - foreach($this->dataset[$part_type] as $part_type1 => $part_name1){ - if($part_name1!=""){ - # Adding elements - if($part_name1!="Array"){ - $partXML .= $part_name1; - } - } - } - $partXML .=""; - } - return $partXML; - } - } - - - # getTrendLinesXML create XML output depending on trendLines array - # - # - # - function getTrendLinesXML(){ - $partXML=""; - $lineXML=""; - # fetching trendLines array - foreach($this->trendLines as $l_type => $l_name){ - # staring line element - $lineXML .="trendLines[$l_type] as $part_type => $part_name){ - - $lineXML .= $part_type . "='" . $this->encodeSpecialChars($part_name) . "' "; - - } - # close line element - $lineXML .=" />"; - } - # if line element present then adding $lineXML with in trendLines element - - $pos = strpos($lineXML, "="); - if ($pos!==false){ - $partXML = "" . $lineXML . ""; - }else{ - # return nothing - $partXML=""; - } - # return trendLines xml - return $partXML; - } - - - - # adding set element to dataset element for seriesType 1 and 2 - function setSSMSDataArray($value="",$setParam="",$vlineParam = "" ){ - $strSetXML=""; - $strParam=""; - $color=0; - if($vlineParam==""){ - if($setParam!=""){ - $strParam = $this->ConvertParamToXMLAttribute($setParam); - - } - - $colorSet=""; - if ($this->UserColorON == true){ - if($this->seriesType==1 && (gettype(strpos($this->chartType,"line"))=="boolean" && gettype(strpos($this->chartType,"area"))=="boolean")){ - if(strpos(strtolower($strParam)," color")===false){ - $colorSet=" color='" . $this->getColor($this->setCounter) . "' "; - } - } - }else{ - if($this->seriesType==1 && (gettype(strpos($this->chartType,"pie"))=="boolean" && gettype(strpos($this->chartType,"line"))=="boolean" && gettype(strpos($this->chartType,"area"))=="boolean")){ - if(strpos(strtolower($strParam)," color")===false){ - $colorSet=" color='" . $this->getColor($this->setCounter) . "' "; - } - } - } - # setting set parameter - $strSetXML =""; - - }else{ - $strParam = $this->ConvertParamToXMLAttribute($strParam); - - # setting vline parameter - $strSetXML=""; - } - return $strSetXML; - } - - ## - - - - - - Array Init Functions - - --- - -- - - - - - - -- - - - - - - - # Function createCategory create array element with in Categories - function createCategory($catID){ - $this->categoryNames[$catID]= array(); - } - # createDataset dataset array element - function createDataset($dataID){ - $this->dataset[$dataID]= array(); - } - # creating set dataset array element - function createDataValues($datasetID, $dataID){ - $this->dataset[$datasetID][$dataID]= array(); - } - # createTrendLines create TrendLines array - function createTrendLines($lineID){ - $this->trendLines[$lineID] = array(); - } - # setTLine create TrendLine parameter - function setTLine($lineID,$paramName, $paramValue){ - $this->trendLines[$lineID][$paramName]=$paramValue; - } - - - # ----- ---------- ----- Misc utility functions ---- ------ ----------- - - # converting ' and " to %26apos; and " - function encodeSpecialChars($strValue){ - - $pattern="/%(?![\da-f]{2}|[\da-f]{4})/i"; - $strValue=preg_replace($pattern, "%25", $strValue); - - if ($this->encodeChars==true){ - $strValue=str_replace("&","%26",$strValue); - $strValue=str_replace("'","%26apos;",$strValue); - $strValue=str_replace("\"","%26quot;",$strValue); - - $strValue=preg_replace("/\", "%26gt;",$strValue); - }else{ - $strValue=str_replace("'","'",$strValue); - $strValue=str_replace("\"",""",$strValue); - - $strValue=preg_replace("/\", ">",$strValue); - } - - $strValue=str_replace("=","%3d",$strValue); - $strValue=str_replace("+","%2b",$strValue); - - $strValue=str_replace("¢","%a2",$strValue); - $strValue=str_replace("£","%a3",$strValue); - $strValue=str_replace("€","%E2%82%AC",$strValue); - $strValue=str_replace("¥","%a5",$strValue); - $strValue=str_replace("₣","%e2%82%a3",$strValue); - - return $strValue; - - } - - # Its convert pattern link to original link - # abcd.php?cid=##Field_name_1##&pname=##Field_name_2## - function getLinkFromPattern($row,$tempLink){ - # convert link into array break on '##' - $aa=explode("##",$tempLink); - # Reading array - foreach($aa as $v){ - # Finding '=' into array - $pos = strpos($v, "="); - # not found '=' - if($pos === false){ - if($v!=""){ - $pet="##" . $v . "##"; - $tempLink=str_replace($pet,$row[$v],$tempLink); - } - } - } - return $tempLink; - } - - - # convertion of semi colon(;) separeted paramater to XML attribute - function ConvertParamToXMLAttribute($strParam){ - - $xmlParam=""; - $listArray=explode($this->del,$strParam); - foreach ($listArray as $valueArray) { - $paramValue=explode("=",$valueArray,2); - if($this->validateParam($paramValue)==true){ - # creating parameter set - $xmlParam .= $paramValue[0] . "='" . $this->encodeSpecialChars($paramValue[1]) . "' "; - } - } - - # Return - return $xmlParam; - - } - - function validateParam($paramValue){ - if(count($paramValue)>=2){ - if(trim($paramValue[0])==""){ - return false; - } - return true; - }else{ - return false; - } - } - - # Getting Charts series type from charts array. 1 => single series, 2=> multi-series, 3=> scatter and bubble, 4=> MSStacked. defult 1 => single series - function getSeriesType(){ - $sValue=1; - if(is_array($this->chartSWF[$this->chartType])){ - $sValue=$this->chartSWF[$this->chartType][1]; - }else{ - $sValue=1; - } - $this->seriesType=$sValue; - } - - #this function returns a color from a list of colors - function getColor($counter){ - - $strColor=""; - if ($this->UserColorON == false){ - $strColor=$this->arr_FCColors[$counter % count($this->arr_FCColors)]; - }else{ - $strColor=$this->UserColor[$counter % count($this->UserColor)]; - } - - return $strColor; - } - - # Clear User Color - function ClearUserColor() - { - $this->UserColorON = false; - } - - # add User Colors - function addColors($ColorList) - { - $listArray=explode($this->del, $ColorList); - $this->UserColorON = true; - foreach ($listArray as $valueArray) { - $this->UserColor[$this->userColorCounter]=$valueArray; - $this->userColorCounter++; - } - } - - ### ----- Pupulate Color and Chart SWF array ------ ------- --------------------- - function colorInit(){ - $this->arr_FCColors[] = "AFD8F8"; - $this->arr_FCColors[] = "F6BD0F"; - $this->arr_FCColors[] = "8BBA00"; - $this->arr_FCColors[] = "FF8E46"; - $this->arr_FCColors[] = "008E8E"; - $this->arr_FCColors[] = "D64646"; - $this->arr_FCColors[] = "8E468E"; - $this->arr_FCColors[] = "588526"; - $this->arr_FCColors[] = "B3AA00"; - $this->arr_FCColors[] = "008ED6"; - $this->arr_FCColors[] = "9D080D"; - $this->arr_FCColors[] = "A186BE"; - $this->arr_FCColors[] = "CC6600"; - $this->arr_FCColors[] = "FDC689"; - $this->arr_FCColors[] = "ABA000"; - $this->arr_FCColors[] = "F26D7D"; - $this->arr_FCColors[] = "FFF200"; - $this->arr_FCColors[] = "0054A6"; - $this->arr_FCColors[] = "F7941C"; - $this->arr_FCColors[] = "CC3300"; - $this->arr_FCColors[] = "006600"; - $this->arr_FCColors[] = "663300"; - $this->arr_FCColors[] = "6DCFF6"; - - } - - - - # Setting FusionCharts SWF file array list and series - function setChartArrays(){ - - $this->chartSWF['area2d'][0]="Area2D"; - $this->chartSWF['area2d'][1]=1; - $this->chartSWF['bar2d'][0]="Bar2D"; - $this->chartSWF['bar2d'][1]=1; - $this->chartSWF['column2d'][0]="Column2D"; - $this->chartSWF['column2d'][1]=1; - $this->chartSWF['column3d'][0]="Column3D"; - $this->chartSWF['column3d'][1]=1; - $this->chartSWF['doughnut2d'][0]="Doughnut2D"; - $this->chartSWF['doughnut2d'][1]=1; - $this->chartSWF['doughnut3d'][0]="Doughnut3D"; - $this->chartSWF['doughnut3d'][1]=1; - $this->chartSWF['line'][0]="Line"; - $this->chartSWF['line'][1]=1; - $this->chartSWF['pie2d'][0]="Pie2D"; - $this->chartSWF['pie2d'][1]=1; - $this->chartSWF['pie3d'][0]="Pie3D"; - $this->chartSWF['pie3d'][1]=1; - $this->chartSWF['funnel'][0]="Funnel"; - $this->chartSWF['funnel'][1]=1; - - $this->chartSWF['msarea'][0]="MSArea"; - $this->chartSWF['msarea'][1]=2; - $this->chartSWF['msarea2d'][0]="MSArea2D"; - $this->chartSWF['msarea2d'][1]=2; - $this->chartSWF['msbar2d'][0]="MSBar2D"; - $this->chartSWF['msbar2d'][1]=2; - $this->chartSWF['mscolumn2d'][0]="MSColumn2D"; - $this->chartSWF['mscolumn2d'][1]=2; - $this->chartSWF['mscolumn3d'][0]="MSColumn3D"; - $this->chartSWF['mscolumn3d'][1]=2; - $this->chartSWF['mscolumn3dlinedy'][0]="MSColumn3DLineDY"; - $this->chartSWF['mscolumn3dlinedy'][1]=2; - $this->chartSWF['mscolumnLine3D'][0]="MSColumnLine3D"; - $this->chartSWF['mscolumnLine3D'][1]=2; - $this->chartSWF['mscombi2d'][0]="MSCombi2D"; - $this->chartSWF['mscombi2d'][1]=2; - $this->chartSWF['mscombidy2d'][0]="MSCombiDY2D"; - $this->chartSWF['mscombidy2d'][1]=2; - $this->chartSWF['msline'][0]="MSLine"; - $this->chartSWF['msline'][1]=2; - $this->chartSWF['scrollarea2d'][0]="ScrollArea2D"; - $this->chartSWF['scrollarea2d'][1]=2; - $this->chartSWF['scrollcolumn2d'][0]="ScrollColumn2D"; - $this->chartSWF['scrollcolumn2d'][1]=2; - $this->chartSWF['scrollcombi2d'][0]="ScrollCombi2D"; - $this->chartSWF['scrollcombi2d'][1]=2; - $this->chartSWF['scrollcombidy2d'][0]="ScrollCombiDY2D"; - $this->chartSWF['scrollcombidy2d'][1]=2; - $this->chartSWF['scrollline2d'][0]="ScrollLine2D"; - $this->chartSWF['scrollline2d'][1]=2; - $this->chartSWF['scrollstackedcolumn2d'][0]="ScrollStackedColumn2D"; - $this->chartSWF['scrollstackedcolumn2d'][1]=2; - $this->chartSWF['stackedarea2d'][0]="StackedArea2D"; - $this->chartSWF['stackedarea2d'][1]=2; - $this->chartSWF['stackedbar2d'][0]="StackedBar2D"; - $this->chartSWF['stackedbar2d'][1]=2; - $this->chartSWF['stackedbar3d'][0]="StackedBar3D"; - $this->chartSWF['stackedbar3d'][1]=2; - $this->chartSWF['stackedcolumn2d'][0]="StackedColumn2D"; - $this->chartSWF['stackedcolumn2d'][1]=2; - $this->chartSWF['stackedcolumn3d'][0]="StackedColumn3D"; - $this->chartSWF['stackedcolumn3d'][1]=2; - $this->chartSWF['stackedcolumn3dlinedy'][0]="StackedColumn3DLineDY"; - $this->chartSWF['stackedcolumn3dlinedy'][1]=2; - $this->chartSWF['mscolumn2dlinedy'][0]="MSColumn2DLineDY"; - $this->chartSWF['mscolumn2dlinedy'][1]=2; - - - $this->chartSWF['bubble'][0]="Bubble"; - $this->chartSWF['bubble'][1]=3; - $this->chartSWF['scatter'][0]="Scatter"; - $this->chartSWF['scatter'][1]=3; - - $this->chartSWF['msstackedcolumn2dlinedy'][0]="MSStackedColumn2DLineDY"; - $this->chartSWF['msstackedcolumn2dlinedy'][1]=4; - $this->chartSWF['msstackedcolumn2d'][0]="MSStackedColumn2D"; - $this->chartSWF['msstackedcolumn2d'][1]=2; - - $this->chartSWF['gantt'][0]="Gantt"; - $this->chartSWF['gantt'][1]=5; - } - - ####################### GANTT CHART (start) ###################################### - # ----------- Public Functions ----------------------------------------------- - - # Function addCategory adding Category and vLine element - function addGanttCategorySet($catParam=""){ - $this->GT_categories_Counter++; - $this->GT_categories[$this->GT_categories_Counter]= array(); - $strParam=""; - - # cheking catParam not blank - if($catParam!=""){ - - $strParam = $this->ConvertParamToXMLAttribute($catParam); - - } - - $this->GT_categoriesParam[$this->GT_categories_Counter]=$strParam; - } - # Function addGanttCategory adding Category - function addGanttCategory($label="",$catParam=""){ - - $strCatXML=""; - $strParam=""; - - # cheking catParam not blank - if($catParam!=""){ - $strParam = $this->ConvertParamToXMLAttribute($catParam); - - } - # adding label and parameter set to category - $strCatXML =""; - - # storing into GT_categories array - $this->GT_categories[$this->GT_categories_Counter][$this->GT_subcategories_Counter]=$strCatXML; - # Increase Counter - $this->GT_subcategories_Counter++; - } - - # Setting Process Parameter into categoriesParam variables - function setGanttProcessesParams($strParam){ - - $this->GT_processes_Param .= $this->ConvertParamToXMLAttribute($strParam); - - } - - # Function addGanttProcess adding Process - function addGanttProcess($label="",$catParam=""){ - - $strCatXML=""; - $strParam=""; - - # cheking catParam not blank - if($catParam!=""){ - - $strParam = $this->ConvertParamToXMLAttribute($catParam); - - } - # adding label and parameter set to category - $strCatXML =""; - - # storing into categoryNames array - $this->GT_processes[$this->GT_processes_Counter]=$strCatXML; - # Increase Counter - $this->GT_processes_Counter++; - } - - - - # Setting Tasks Parameter into TaskParam variables - function setGanttTasksParams($strParam){ - - $this->GT_Tasks_Param .= $this->ConvertParamToXMLAttribute($strParam); - - } - - # Function addGanttTasks adding Tasks - function addGanttTask($label="",$catParam=""){ - - $strCatXML=""; - $strParam=""; - - # cheking catParam not blank - if($catParam!=""){ - - $strParam = $this->ConvertParamToXMLAttribute($catParam); - - } - # adding label and parameter set to category - $strCatXML =""; - - # storing into GT_Tasks array - $this->GT_Tasks[$this->GT_Tasks_Counter]=$strCatXML; - # Increase Counter - $this->GT_Tasks_Counter++; - } - - - - # Setting Tasks Parameter into ConnectorsParam variables - function setGanttConnectorsParams($strParam){ - $this->GT_Connectors_Param .= $this->ConvertParamToXMLAttribute($strParam); - - } - - # Function addGanttConnector adding Connector - function addGanttConnector($From,$To,$catParam=""){ - - $strCatXML=""; - $strParam=""; - - # cheking catParam not blank - if($catParam!=""){ - $strParam = $this->ConvertParamToXMLAttribute($catParam); - - } - # adding label and parameter set to category - $strCatXML =""; - - # storing into GT_Connectors array - $this->GT_Connectors[$this->GT_Connectors_Counter]=$strCatXML; - # Increase Counter - $this->GT_Connectors_Counter++; - } - - - - # Setting Milestones Parameter into MilestonesParam variables - function setGanttMilestonesParams($strParam){ - $this->GT_Milestones_Param .= $this->ConvertParamToXMLAttribute($strParam); - - } - - # Function addGanttMilestones adding Milestones - function addGanttMilestone($taskID,$catParam=""){ - - $strCatXML=""; - $strParam=""; - - # cheking catParam not blank - if($catParam!=""){ - $strParam = $this->ConvertParamToXMLAttribute($catParam); - - } - # adding label and parameter set to Milestones - $strCatXML =""; - - # storing into GT_Milestones array - $this->GT_Milestones[$this->GT_Milestones_Counter]=$strCatXML; - # Increase Counter - $this->GT_Milestones_Counter++; - } - - - - # Setting Legend Parameter into LegendParam variables - function setGanttLegendParams($strParam){ - - $this->GT_legend_Param .= $this->ConvertParamToXMLAttribute($strParam); - - } - - # Function addGanttLegendItem adding LegendItem - function addGanttLegendItem($label,$catParam=""){ - - $strCatXML=""; - $strParam=""; - - # cheking catParam not blank - if($catParam!=""){ - - $strParam = $this->ConvertParamToXMLAttribute($catParam); - - } - # adding label and parameter set to LegendItem - $strCatXML =""; - - # storing into GT_legend array - $this->GT_legend[$this->GT_legend_Counter]=$strCatXML; - # Increase Counter - $this->GT_legend_Counter++; - } - - - # Setting Datatable Parameter into DatatableParam variables - function setGanttDatatableParams($strParam){ - - $this->GT_datatableParam .= $this->ConvertParamToXMLAttribute($strParam); - - } - - # Function addGanttDatacolumn adding Datacolumn - function addGanttDatacolumn($catParam=""){ - $this->GT_datatable_Counter++; - $this->GT_datatable[$this->GT_datatable_Counter]= array(); - $strParam=""; - - # cheking catParam not blank - if($catParam!=""){ - $strParam = $this->ConvertParamToXMLAttribute($catParam); - } - - $this->GT_dataColumnParam[$this->GT_datatable_Counter]=$strParam; - } - # Function addGanttColumnText adding ColumnText - function addGanttColumnText($label="",$catParam=""){ - - $strCatXML=""; - $strParam=""; - - # cheking catParam not blank - if($catParam!=""){ - $strParam = $this->ConvertParamToXMLAttribute($catParam); - } - # adding label and parameter set to category - $strCatXML =""; - - # storing into GT_datatable array - $this->GT_datatable[$this->GT_datatable_Counter][$this->GT_subdatatable_Counter]=$strCatXML; - # Increase Counter - $this->GT_subdatatable_Counter++; - } - - ### ------------- Gantt Private Functoins ---------------------------------------------------------------------- - - #-- Gantt array init ------------------------------------------------ - # Function createCategory create array element with in Categories - function createGanttCategory($catID){ - $this->GT_categories[$catID]= array(); - } - # Function createGanttDatatable create array element with in Datatable - function createGanttDatatable($catID){ - $this->GT_datatable[$catID]= array(); - } - - - #-- GANTT XML genetators ------------------------------------------- - - # Function getCategoriesXML for getting Category part XML - function getGanttCategoriesXML(){ - $partXML=""; - foreach($this->GT_categories as $part_type => $part_name){ - # adding categories parameter - $partXML .="GT_categoriesParam[$part_type] . " >"; - foreach($this->GT_categories[$part_type] as $part_type1 => $part_name1){ - if($part_name1!=""){ - # adding elements - $partXML .= $part_name1; - } - } - # Closing - $partXML .=""; - } - - return $partXML; - } - - # Function getProcessesXML for getting Processes part XML - function getProcessesXML(){ - - $partXML=""; - # adding processes parameter - $partXML="GT_processes_Param . " >"; - foreach($this->GT_processes as $part_type => $part_name){ - if($part_name!=""){ - # adding elements - - $partXML .= $part_name; - - } - } - - # Closing - $partXML .=""; - return $partXML; - } - - - # Function getProcessesXML for getting Processes part XML - function getTasksXML(){ - - $partXML=""; - # adding processes parameter - $partXML="GT_Tasks_Param . " >"; - foreach($this->GT_Tasks as $part_type => $part_name){ - if($part_name!=""){ - # adding elements - - $partXML .= $part_name; - - } - } - - # Closing - $partXML .=""; - return $partXML; - } - - - # Function getConnectorsXML for getting Connectors part XML - function getConnectorsXML(){ - $c=0; - $partXML=""; - # adding connectors parameter - $partXML="GT_Connectors_Param . " >"; - foreach($this->GT_Connectors as $part_type => $part_name){ - if($part_name!=""){ - # adding elements - - $partXML .= $part_name; - $c++; - } - } - - # Closing - $partXML .=""; - if ($c>0){ - return $partXML; - }else{ - return ""; - } - } - - # Function getMilestonesXML for getting Milestones part XML - function getMilestonesXML(){ - $c=0; - $partXML=""; - # adding Milestones parameter - $partXML="GT_Milestones_Param . " >"; - foreach($this->GT_Milestones as $part_type => $part_name){ - if($part_name!=""){ - # adding elements - $partXML .= $part_name; - $c++; - } - } - - # Closing - $partXML .=""; - if ($c>0) { - return $partXML; - }else{ - return ""; - } - } - - - # Function getLegendXML for getting Legend part XML - function getLegendXML(){ - $c=0; - $partXML=""; - # adding Legend parameter - $partXML="GT_legend_Param . " >"; - foreach($this->GT_legend as $part_type => $part_name){ - if($part_name!=""){ - # adding elements - $partXML .= $part_name; - $c++; - } - } - - # Closing - $partXML .=""; - if ($c>0) { - return $partXML; - }else{ - return ""; - } - } - - - # Function getGanttDatatableXML for getting Category part XML - function getGanttDatatableXML(){ - $partXML=""; - foreach($this->GT_datatable as $part_type => $part_name){ - # adding dataColumn parameter - $partXML .="GT_dataColumnParam[$part_type] . " >"; - foreach($this->GT_datatable[$part_type] as $part_type1 => $part_name1){ - if($part_name1!=""){ - # adding elements - $partXML .= $part_name1; - } - } - # Closing - $partXML .=""; - } - $allPart="GT_datatableParam . " >" . $partXML . ""; - return $allPart; - } - - - - ####################### GANTT CHART (end) ###################################### - - - - #====================== For Future Use (start) ===================================== - - ##---------PUBLIC functions ---------------------------------------------------- - # adding Lineset array and parameter to it - function addLineset($seriesName, $strParam){ - $this->createLineset(); - $this->lineSetCounter++; - $this->lineSet[$this->lineCounter][$this->lineSetCounter]= array(); - - $tempParam=""; - $tempParam ="seriesName='" . $seriesName . "' "; - - $tempParam .= $this->ConvertParamToXMLAttribute($strParam); - - $this->lineIDCounter++; - # setting lineSetParam array with Parameter set - $this->lineSetParam [$this->lineSetCounter]=$tempParam; - - - } - - # adding Line's Set data - function addLinesetData($value="",$setParam="",$vlineParam = "" ){ - $strSetXML=""; - # getting parameter set - $strSetXML=$this->setSSMSDataArray($value,$setParam,$vlineParam); - - # setting paramter to lineSet array - $this->lineSet[$this->lineCounter][$this->lineSetCounter][$this->lineIDCounter]=$strSetXML; - - # Increase lineIDCounter - $this->lineIDCounter++; - } - - - # adding ms dataset and parameter - function addMSSSubDataset($seriesName, $strParam){ - $this->MSSSubDatasetCounter++; - $this->MSSDataset[$this->MSSDatasetCounter][$this->MSSSubDatasetCounter]= array(); - - $tempParam=""; - # creating seriesName - $tempParam ="seriesName='" . $seriesName . "' "; - $tempParam .= $this->ConvertParamToXMLAttribute($strParam); - - $this->MSSSetCounter++; - - # adding Parameter to MSSDatasetParams array - $this->MSSDatasetParams[$this->MSSDatasetCounter][$this->MSSSubDatasetCounter]=$tempParam; - - - } - - # adding set element to dataset element for seriesType 3 - function setScatterBubbleDataArray($value="",$setParam="",$vlineParam = "" ){ - $strSetXML=""; - $strParam=""; - if($vlineParam==""){ - if($setParam!=""){ - $strParam = $this->ConvertParamToXMLAttribute($setParam); - - } - # adding Parameter into set elements - $strSetXML =""; - - }else{ - # Parameter for vLine - $strParam = $this->ConvertParamToXMLAttribute($vlineParam); - - # adding vLine element - $strSetXML=""; - } - return $strSetXML; - } - - - # setvTLine create TrendLine parameter - function setVTrendLines($strParam){ - $listArray=explode($this->del,$strParam); - foreach ($listArray as $valueArray) { - $paramValue=explode("=",$valueArray,2); - if($this->validateParam($paramValue)==true){ - $this->vtrendLines[$this->vtLineCounter][$paramValue[0]]=$this->encodeSpecialChars($paramValue[1]); - } - } - $this->vtLineCounter++; - } - - - # setSubStylesParam create sub styles array to store parameters - function addStyleDef($styleName,$styleType,$strParam){ - $this->styles["definition"]["style"][$this->styleDefCounter]["name"]= $styleName; - $this->styles["definition"]["style"][$this->styleDefCounter]["type"]= $styleType; - - $listArray=explode($this->del,$strParam); - foreach ($listArray as $valueArray) { - $paramValue=explode("=",$valueArray,2); - if($this->validateParam($paramValue)==true){ - $this->styles["definition"]["style"][$this->styleDefCounter][$paramValue[0]]= $this->encodeSpecialChars($paramValue[1]); - } - } - $this->styleDefCounter++; - - } - # apply styles - function addStyleApp($toObject,$styles){ - $this->styles["application"]["apply"][$this->styleAppCounter]["toObject"]= $toObject; - $this->styles["application"]["apply"][$this->styleAppCounter]["styles"]= $styles; - - $this->styleAppCounter++; - } - - - ##---------PRIVATE functions ---------------------------------------------------- - - ## - -- - - XML generators - - - - ---- - -- - - - - - # Function getLinesetXML for getting Lineset XML - function getLinesetXML(){ - # if seriesType MSStackedColumn2DLineDY (4) then linset element will be Generate - if($this->seriesType==4){ - $partXML=""; - # Fetching lineSet array and Generating lineset xml element - foreach($this->lineSet as $part_type => $part_name){ - $partXML .= "lineSetParam[$part_type] . " >"; - foreach($this->lineSet[$part_type] as $part_type1 => $part_name1){ - foreach($this->lineSet[$part_type][$part_type1] as $part_type2 => $part_name2){ - if ($part_type2!=""){ - $partXML .= $part_name2; - } - } - } - $partXML .= ""; - } - return $partXML; - } - } - - # Function getMSStackedDatasetXML for getting datset part XML from ms stacked chart dataset array - # - # - # - # - # - # - - function getMSStackedDatasetXML(){ - if($this->seriesType==4){ - $partXML=""; - - foreach($this->MSSDataset as $part_type => $part_name){ - $partXML .= ""; - foreach($this->MSSDataset[$part_type] as $part_type1 => $part_name1){ - $partXML .= "MSSDatasetParams[$part_type][$part_type1] . " >"; - foreach($this->MSSDataset[$part_type][$part_type1] as $part_type2 => $part_name2){ - if ($part_type2!=""){ - $partXML .= $part_name2; - } - } - $partXML .= ""; - } - $partXML .= ""; - } - - return $partXML; - } - } - - - - - # getvTrendLinesXML create XML output depending on trendLines array - # - # - # - function getvTrendLinesXML(){ - $partXML=""; - $lineXML=""; - # fetching vtrendLines array - foreach($this->vtrendLines as $l_type => $l_name){ - # staring line element - $lineXML .="vtrendLines[$l_type] as $part_type => $part_name){ - $lineXML .= $part_type . "='" . $this->encodeSpecialChars($part_name) . "' "; - } - # close line element - $lineXML .=" />"; - } - # if line element present then adding $lineXML with in vtrendLines element - $pos = strpos($lineXML, "="); - if ($pos !== false) { - $partXML = "" . $lineXML . ""; - }else{ - # return nothing - $partXML=""; - } - # return vtrendLines xml - return $partXML; - } - # getStylesXML create the styles XML from styles array - /* - - -