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 /*