function go() { $type = 'total'; $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $aOffsetData = $aOutput['total']; foreach ($aOutput['total'] as $date_i => $aData) { foreach ($aData as $i => $aTmp) { $compareFlag = $date_i != 0 ? 1 : 0; foreach ($aTmp as $metric => $v) { if ($compareFlag) { if (empty($v)) { $offerPercent = 0; } else { $offerPercent = $aOutput['total'][0][0][$metric] ? ($aOutput['total'][0][0][$metric] - $v) * 100 / $v : 0; } $aOffsetData[$date_i][$metric] = $offerPercent; } } } } $this->_formatMetric($type); //格式化 $oPlugin = \YcheukfReport\Lib\ALYS\ALYSFunction::loadPlugin("total"); $aOutput['total.output'] = $oPlugin->ALYSfmtOutputHtml($aOffsetData); \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); }
/** * 负责csv的字符串的组织与输出 @return string 处理过后的csv 字符串 */ function ALYSfmtOutputCsv() { $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $sCsv = ""; if ($aInput['nodateFlag'] == false) { foreach ($aInput['date'] as $aTmp) { $sCsv .= "#" . $aTmp['s'] . "~" . $aTmp['e'] . "\r\n"; } $sCsv .= "\r\n\r\n"; } if (isset($aOutput['flash.output'])) { $sCsv .= $aOutput['flash.output']; $sCsv .= "\r\n\r\n"; } if (isset($aOutput['total.output'])) { $sCsv .= $aOutput['total.output']; $sCsv .= "\r\n\r\n"; } if (isset($aOutput['detail.output'])) { $sCsv .= $aOutput['detail.output']; $sCsv .= "\r\n\r\n"; } return $sCsv; }
function go() { $headertop = ""; //设置头标题上部份 $headerfoot = ""; //设置头标题下部份 $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $aOutput['total.output'] = self::_forma_pdf_total($aOutput['total.output']); $aOutput['detail.output'] = self::_format_pdf_list($aOutput['detail.output']); if (isset($aInput["custom"]["image"]) && !empty($aInput["custom"]["image"])) { $image = $aInput["custom"]["image"]; $_ALYSconfig = \YcheukfReport\Lib\ALYS\ALYSConfig::get(); \YcheukfReport\Lib\ALYS\ALYSFunction::removeLifeFile($_ALYSconfig['pdf']['path'], $_ALYSconfig['pdf']['lifetime'], $_ALYSconfig['pdf']['remove']); if (isset($aInput["custom"]["headertop"]) || isset($aInput["custom"]["headerfoot"])) { $headertop = $aInput["custom"]["headertop"]; $headerfoot = $aInput["custom"]["headerfoot"]; $pagefooter = @$aInput["custom"]["pagefooter"]; } else { $aHeader = \YcheukfReport\Lib\ALYS\ALYSFunction::loadPlugin("Css"); $aHeader = $aHeader->ALYSfmtOuputPdfTitle(); $headertop = $aHeader["titletop"]; $headerfoot = $aHeader["titlefoot"]; $pagefooter = @$aHeader["pagefooter"]; } $aOutput['output'] = self::_createPdf($image, $aOutput['total.output'], $aOutput['detail.output'], "f", $headertop, $headerfoot, $pagefooter); \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); } }
public function go() { $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $sHtml = ""; $oPluginStatic = \YcheukfReport\Lib\ALYS\ALYSFunction::loadPlugin("Statichtml"); if (isset($aOutput['flash.output'])) { $sHtml .= $oPluginStatic->ALYSfmtOutputFlash($aOutput['flash.output']); } if (isset($aOutput['total.output'])) { $aOutput['total.output'] = parent::_forma_html_total($aOutput['total.output']); $sHtml .= $oPluginStatic->ALYSfmtOutputTotal($aOutput['total.output']); } if (isset($aOutput['detail.output'])) { $aOutput['detail.output'] = parent::_format_html_list($aOutput['detail.output']); $sHtml .= $oPluginStatic->ALYSfmtOutputList($aOutput['detail.output']); } $sHtml = self::_fmtHtml($sHtml); $cache = \YcheukfReport\Lib\ALYS\ALYSFunction::loadClass("ALYSCache"); $cache->setHandle('report_static_html'); $keyName = uniqid(); $cache->save($keyName, $sHtml); $aOutput['output'] = $keyName; \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); return $keyName; }
function go() { $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $aryListData = $aOutput['detail']; $xmlDataEntity = ""; for ($i = 0; $i < count($aryListData); $i++) { if (isset($aryListData[$i]) && is_array($aryListData[$i])) { foreach ($aryListData[$i] as $key => $aTmp) { foreach ($aTmp as $ii => $item) { $colspan = isset($item['colspan']) ? $item['colspan'] : 1; if ($colspan == 0) { continue; } //被前面的td跨列 $label = isset($item['label']) ? $item['label'] : ''; //$label = strip_tags(preg_replace('/'.$separator.'/', " ", $label)); $label = strip_tags(str_replace("\t", " ", $label)); $label = strip_tags(str_replace("\r\n", " ", $label)); $label = strip_tags(str_replace("\n", " ", $label)); $xmlDataEntity .= "\n\t\t<column>" . $label . "<column>"; } } } $xmlDataEntity .= "\n\t</entity>\n\t<entity>"; } $xmlDataEntity = substr($xmlDataEntity, 0, strrpos($xmlDataEntity, "<entity")); $aRe = array("title" => 'xx', "data" => empty($xmlDataEntity) ? "<entitys></entitys>" : "<entitys>\n\t<entity>" . $xmlDataEntity . "\n</entitys>", 'pagination' => array('listCount' => $listCount, 'items_per_page' => $aParm['items_per_page'], 'current_page' => $aParm['current_page'])); // var_export($aRe); $aOutput['detail.output'] = $aOutput['detail']; \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); }
/** * 负责Email发送 @param string staticKey 静态html链接的key @return array 处理过后的email数组 @description 处理 */ public function ALYSbefore_email($staticKey) { $_ALYSconfig = \YcheukfReport\Lib\ALYS\ALYSConfig::get(); $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); //配置静态页面时间 $time = $_ALYSconfig['cache']['report_static_html']['lifeTime']; $nDate = intval($time / (3600 * 24)); //配置静态页面链接 $url = $_ALYSconfig['rooturl'] . "demo/advance_get_statichtml.php"; //配置email信息 $aEmail = array(); $mailBody = isset($aInput['custom']['email']['mailBody']) ? $aInput['custom']['email']['mailBody'] : "hello world"; $aEmail['subject'] = 'report engine'; $aEmail['fromEmail'] = '*****@*****.**'; $aEmail['toEmail'] = isset($aInput['custom']['email']['toEmail']) ? join(',', $aInput['custom']['email']['toEmail']) : "'ycheukf@gmail.com,ruzhuo_feng@allyes.com'"; //逗号分割 $aEmail['body'] = <<<OUTPUT \t\t\t<p>您好: \t\t\t{$mailBody} \t\t\t<p>\t请点击链接查看报表 \t\t\t<p>\t{$url}?id={$staticKey} \t\t\t<p>\t本条链接在{$nDate}天内有效 OUTPUT; //var_export($aEmail); return $aEmail; }
/** * 获得数据入口 */ public function getData() { $type = 'total'; if (\YcheukfReport\Lib\ALYS\Report\Advance::isAdvanced($type)) { $aData = $this->getAdvancedData($type); } else { $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $aConf = $this->getConf($type); $aDatesNew = $this->getDateNew($type); $aDates = $this->getDate($type); $aConfs = array(); foreach ($aDates as $k => $Date) { foreach ($aConf as $table => $Conf) { $aConfs[$k][$table] = $Conf; $aCondition = $Conf['condition']; if (isset($aInput['nodateFlag']) && !$aInput['nodateFlag']) { //have date $aCondition = array_merge(array($aDatesNew[$k][$table]), $aCondition); } // $aCondition=array_merge(array($aDatesNew[$k][$table]),$aCondition); $aConfs[$k][$table]['condition'] = $aCondition; } } //\YcheukfReport\Lib\ALYS\ALYSFunction::debug($aConfs, 'a', 'aConfs'); foreach ($aConfs as $k => $aConf) { foreach ($aConf as $table => $Conf) { list($aData[$k][$table], $nTmpTotal) = $this->{$type}->getAlldata($Conf); } } } $aData = $this->_executeSqlData($type, $aData); return $aData; }
public function preStart() { $aInput = $this->aInput['input'][$this->_type]['table']; //检查 横向维度 并初始化:将xdimen加入到dimen $i = 1; foreach ($aInput as $table => $aTable) { if ($i == 1) { if (empty($aTable['xdimen']) || count($aTable['xdimen']) != 1) { throw new \YcheukfReport\Lib\ALYS\ALYSException('ALYSEXPT_KEY_WRONG', 'need xdimen,and just one xdimen'); } $aInput[$table]['dimen'] = array_merge($aTable['dimen'], $aTable['xdimen']); foreach ($aTable['xdimen'] as $v) { $aInput[$table]['xdimen_key'][] = $v['key']; } foreach ($aTable['dimen'] as $v) { if (!(isset($v['group']) && false == $v['group'])) { //去重 if (empty($aInput[$table]['ydimen_key']) || !in_array($v['key'], $aInput[$table]['ydimen_key'])) { $aInput[$table]['ydimen_key'][] = $v['key']; } $aInput[$table]['ydimen_key_select'][$v['key']] = $v['selected'] ? $v['selected'] : $v['key']; } } } $i++; //$aInput[$table]['xdimen'][] = $aTable['xdimen'][] } $this->aInput['input'][$this->_type]['table'] = $aInput; \YcheukfReport\Lib\ALYS\Report\Start::setInput($this->aInput); }
function go() { $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $oDict = \YcheukfReport\Lib\ALYS\ALYSFunction::loadDictionary('Metric'); $separator = $this->_getCsvSeparator(); $trendType = $aInput['input']['flash']['type'] = isset($aInput['input']['flash']['type']) ? $aInput['input']['flash']['type'] : "trend"; $aOffsetData = $aOutput['total']; foreach ($aOutput['total'] as $i => $aTmp) { $compareFlag = $i != 0 ? 1 : 0; foreach ($aTmp as $metric => $v) { if ($compareFlag) { if (empty($v)) { $offerPercent = 0; } else { $offerPercent = $aOutput['total'][0][0][$metric] ? ($aOutput['total'][0][0][$metric] - $v) * 100 / $v : 0; } $aOffsetData[$i][$metric] = $offerPercent; } } } $sHTML = ""; // \YcheukfReport\Lib\ALYS\ALYSFunction::debug($aOutput,'a', 'aOutputaOutput'); switch (strtolower($trendType)) { default: case "trend": case "multdate": $index = 0; foreach ($aOutput['total'][0] as $metric => $vvv) { foreach ($vvv as $metric2 => $vvv2) { if ($metric != $metric2) { continue; } $sHTML .= "\r\n"; $keyLabel = \YcheukfReport\Lib\ALYS\ALYSLang::_($metric2); $keyLabelTip = \YcheukfReport\Lib\ALYS\ALYSLang::_($metric2 . '-tip'); $sHTML .= '"' . $keyLabel . '"' . $separator; $offerPercentHTML = ""; if ($ii != 0) { if ($aOffsetData[$ii][$metric] == 0) { $offerPercentCls = "zero"; } else { $offerPercentCls = $aOffsetData[$ii][$metric] > 0 ? "plus2" : 'negative'; } $offerPercentLabel = abs(round($aOffsetData[$ii][$metric], 2)) . "%"; $offsetPercentHTML = '(' . $offerPercentLabel . ')'; $sHTML .= '"' . $vvv2 . '' . $offsetPercentHTML . '"' . $separator; } else { $sHTML .= '"' . $oDict->ALYSmetricFormat($metric2, $vvv2) . '"' . $separator; } } $index++; } break; } $sHTML .= "\r\n"; // var_export($sHTML); $aOutput['total.output'] = $sHTML; \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); }
/** * set date type */ public function _setFlashType($type) { $aTmpField = array(); $aDate = $this->aInput['date']; if (count($aDate) > 1) { $this->aInput['input'][$type]['type'] = 'multDate'; } else { if ($type == 'flash') { $aTables = $this->aInput['input']['flash']['table']; if (is_array($aTables)) { foreach ($aTables as $aTable) { foreach ($aTable['metric'] as $aMetric) { if ($aMetric['show']) { $aTmpField[] = $aMetric['key']; } } break; } } if (count($aTmpField) > 1) { $this->aInput['input'][$type]['type'] = 'multMetric'; } } } \YcheukfReport\Lib\ALYS\Report\Start::setInput($this->aInput); }
function go() { $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $trendType = $aInput['input']['flash']['type'] = isset($aInput['input']['flash']['type']) ? $aInput['input']['flash']['type'] : "trend"; $xmlDataEntity = ""; if ('bubble' == $trendType) { $xmlDataEntity .= "\n\r<bubble>"; foreach ($aOutput['flash'] as $i => $aTmp) { $xmlDataEntity .= "\n\r<entity>\n"; $xmlDataEntity .= "<column>" . $i . "</column>\n"; foreach ($aTmp as $date => $aTmp2) { $xmlDataEntity .= "<column>" . $aTmp2 . "</column>"; } $xmlDataEntity .= "\n</entity>"; } $xmlDataEntity .= "\n\r</bubble>"; } else { foreach ($aOutput['flash'] as $i => $aTmp) { $xmlDataEntity .= "\n\r<trend>"; foreach ($aTmp as $date => $aTmp2) { $xmlDataEntity .= "\n\r<entity>\n"; $xmlDataEntity .= "<column>" . $date . "</column>\n"; $xmlDataEntity .= "<column>" . current(array_values($aTmp2)) . "</column>"; $xmlDataEntity .= "\n</entity>"; } $xmlDataEntity .= "\n\r</trend>"; } } $aOutput['flash.output'] = "<flash>\n\n" . $xmlDataEntity . "</flash>\n\n"; \YcheukfReport\Lib\ALYS\Report\Start::setInput($aInput); \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); }
public function _fmtOutput($type = 'detail') { $this->_fmtDimen_Metric($type); // $this->ALYSformat($type); $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $o = \YcheukfReport\Lib\ALYS\ALYSFunction::loadClass("report.output." . $type . ".format." . $this->aInput['output']['format']); $o->go(); }
function go() { $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $oPlugin = \YcheukfReport\Lib\ALYS\ALYSFunction::loadPlugin("csv"); $sCsv = $oPlugin->ALYSfmtOutputCsv($aOutput); $aOutput['output'] = $sCsv; \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); }
function go() { $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $sXmlTh = ""; foreach ($aInput['groups'] as $k => $aTmp) { foreach ($aTmp as $key => $aGroup) { /** * aGroup 数据结构 $aGroup = array( 'type'=>xxx 'key'=>xxx 'pieFieldSelected'=>true|false 是否为在饼图中被选中的指标 'pieFieldAble'=>true|false 是否出现在饼图的选择项中 'sortAble'=>true|false 'orderbyClass'=>''|orderby_asc|orderby 'thclass'=>array() 'tipclass'=>array() ) */ $key = $aGroup['key']; $label = \YcheukfReport\Lib\ALYS\ALYSLang::_($aGroup['key']); $sXmlTh .= "\n\t\t<th>" . $label . "</th>"; } } $sXmlTh = "\t<thead>\n" . $sXmlTh . "\n\t</thead>\n"; $aryListData = $this->aOutput['detail']; $xmlDataEntity = ""; for ($i = 0; $i < count($aryListData); $i++) { if (isset($aryListData[$i]) && is_array($aryListData[$i])) { $xmlDataEntity .= "\n\t\t<entity>"; foreach ($aryListData[$i] as $key => $aTmp) { foreach ($aTmp as $ii => $item) { if ($ii == 0 && $key == 'dimens') { continue; } $label = isset($item['label']) ? $item['label'] : ''; //$label = strip_tags(preg_replace('/'.$separator.'/', " ", $label)); $label = strip_tags(str_replace("\t", " ", $label)); $label = strip_tags(str_replace("\r\n", " ", $label)); $label = strip_tags(str_replace("\n", " ", $label)); $xmlDataEntity .= "\n\t\t\t<column>" . $label . "</column>"; } } $xmlDataEntity .= "\n\t\t</entity>"; } } $xmlDataEntity = "\t<data>\n" . $xmlDataEntity . "\n\t</data>\n"; $xmlPage = ""; if (isset($aInput['input']['detail']['page'])) { foreach ($aInput['input']['detail']['page'] as $key => $v) { $xmlPage .= "\n\t\t<{$key}>" . $v . "</{$key}>"; } } $xmlPage = "\t<pagenation>\n" . $xmlPage . "\n\t</pagenation>\n"; // var_export($aRe); $this->aOutput['detail.output'] = "<list>\n" . $sXmlTh . $xmlDataEntity . $xmlPage . "\n</list>\n"; \YcheukfReport\Lib\ALYS\Report\Start::setOutput($this->aOutput); }
public function _fmtOutput() { // $this->ALYSformat($type); $this->_getPercent(); $type = 'detail'; $this->aOutput[$type] = $this->_fmtTdStyle($type); \YcheukfReport\Lib\ALYS\Report\Start::setOutput($this->aOutput); //$aOutput['detail'] = $this->_fmtData(); $o = \YcheukfReport\Lib\ALYS\ALYSFunction::loadClass("report.output." . $type . ".format." . $this->aInput['output']['format']); $o->go(); }
public static function getAdvanceSQL($type) { $aInputData = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $aInput = $aInputData['input'][$type]; $sqls = array(); if (!empty($aInput['advanced']['statement'])) { $sqls = $aInput['advanced']['statement']; //$sql = str_replace("\n",'',$sql); //这里可对sql进行查检 } return $sqls; }
/** * 负责csv输出时的表头的处理 @param string s 将要输出的html @return string 处理过后的html @description 传进来的html中已经埋了一些可替换的字符串, 用于不同系统的不同需求的替换 */ public function ALYSxml_title() { $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $s = ""; foreach ($aInput['date'] as $aTmp) { $s .= "<date>" . $aTmp['s'] . "~" . $aTmp['e'] . "</date>\r\n"; } $s = "<header>\n" . $s . "</header>\n\n"; // $s .= "#some title \r\n"; $s .= "\r\n\r\n\r\n"; return $s; }
public static function getDateFeildByTable($type = '', $table = '') { if (empty($type) || empty($table)) { return \YcheukfReport\Lib\ALYS\ALYSConfig::get('dateField'); } $Input = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $aInput = $Input['input'][$type]; $dateFeild = @$aInput['table'][$table]['dateFeild']; if (empty($dateFeild)) { $dateFeild = \YcheukfReport\Lib\ALYS\ALYSConfig::get('dateField'); } return $dateFeild; }
function go() { $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $aOutput['total.output'] = isset($aOutput['total.output']) ? parent::_forma_html_total($aOutput['total.output']) : ""; $aOutput['detail.output'] = isset($aOutput['detail.output']) ? parent::_format_html_list($aOutput['detail.output']) : ""; $sHTML = ""; $sHTML .= isset($aOutput['flash.output']) ? $aOutput['flash.output'] : ""; $sHTML .= "\r\n\r\n"; $sHTML .= isset($aOutput['total.output']) ? $aOutput['total.output'] : ""; $sHTML .= "\r\n\r\n"; $sHTML .= isset($aOutput['detail.output']) ? $aOutput['detail.output'] : ""; $sHTML .= "\r\n\r\n"; $aOutput['output'] = $sHTML; \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); }
function go() { $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $aJson = array(); if (isset($aOutput['flash.output'])) { $aJson['flash'] = $aOutput['flash.output']; } if (isset($aOutput['total.output'])) { $aJson['total'] = $aOutput['total.output']; } if (isset($aOutput['detail.output'])) { $aJson['detail'] = $aOutput['detail.output']; } $aOutput['output'] = json_encode($aJson); \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); }
/** * 格式化成concatKey作为key */ public function _formatAssoc($type) { $aMainTable = $this->aInput['input'][$type]['mainTable']; //echo "aMainTable['showField']=";print_r($aMainTable['showField']); $aDataN = array(); //echo "this->aOutput[$type]=";print_r($this->aOutput[$type]); foreach ($this->aOutput[$type] as $date_i => $aDatas) { foreach ($aDatas as $i => $aData) { foreach ($aMainTable['showField'] as $j => $showField) { $aDataN[$date_i][$i][$showField] = $aData[$showField]; } } } $this->aOutput[$type] = $aDataN; //echo "this->aOutput[$type]=";print_r($this->aOutput[$type]); \YcheukfReport\Lib\ALYS\Report\Start::setOutput($this->aOutput); }
/** * 格式化成concatKey作为key */ public function _formatAssoc($type) { $aMainTable = $this->aInput['input'][$type]['mainTable']; //echo "aMainTable=";print_r($aMainTable); $aDatas = array(); $countField = count($aMainTable['showField']); $aOData = empty($this->aOutput[$type][0]) ? array() : $this->aOutput[$type][0]; if (is_array($aOData)) { foreach ($aOData as $i => $aData) { $concatKey = $aData['concatKey']; unset($aData['concatKey']); $aDatas[$concatKey] = $aData; } } $this->aOutput[$type] = $aDatas; \YcheukfReport\Lib\ALYS\Report\Start::setOutput($this->aOutput); }
function go() { $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $aJson = array(); $aReturn = ""; foreach ($aOutput['flash'] as $i => $aTmp) { foreach ($aTmp as $x => $aTmp2) { foreach ($aTmp2 as $metric => $v) { $aReturn[$i][$x]['x'] = $x; $aReturn[$i][$x]['y'] = \YcheukfReport\Lib\ALYS\ALYSLang::_("metric_" . $metric); $aReturn[$i][$x]['v'] = $v; } } } $aOutput['flash.output'] = $aReturn; \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); }
function go() { $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); $sHtml = ""; if (isset($aOutput['flash.output'])) { $sHtml .= $aOutput['flash.output'] . "\n\n"; } if (isset($aOutput['total.output'])) { $sHtml .= $aOutput['total.output'] . "\n\n"; } if (isset($aOutput['detail.output'])) { $sHtml .= $aOutput['detail.output'] . "\n\n"; } $oPlugin = \YcheukfReport\Lib\ALYS\ALYSFunction::loadPlugin("xml"); $sTitle = $oPlugin->ALYSxml_title(); $aOutput['output'] = "<?xml version='1.0' encoding='UTF-8'?>\n<report>\n\n" . $sTitle . $sHtml . "\n\n</report>"; \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); }
function go() { $aOutput = \YcheukfReport\Lib\ALYS\Report\Start::getOutput(); // \YcheukfReport\Lib\ALYS\ALYSFunction::debug($aOutput,'a', 'aOutputaOutput'); $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); $trendType = $aInput['input']['flash']['type'] = isset($aInput['input']['flash']['type']) ? $aInput['input']['flash']['type'] : "trend"; $aTmp2 = array(); foreach ($aOutput['total'] as $i => $aTmp) { $ii = 0; foreach ($aTmp as $metric => $v) { $aTmp2[$i][$ii]['label'] = \YcheukfReport\Lib\ALYS\ALYSLang::_("metric_" . $metric); $aTmp2[$i][$ii]['value'] = $v; $ii++; } } $aOutput['total.output'] = $aTmp2; \YcheukfReport\Lib\ALYS\Report\Start::setOutput($aOutput); }
/** * 为柱状条格式化TD 属性 */ public function _percent($type) { $sSelectedMetric = $this->aInput['input']['detail']['selected']; $sTotalMetric = $this->aInput['input']['detail']['totalselected']; //total的字段名 用于计算百分比 if (!isset($sSelectedMetric)) { //没有设置百分比选项,使用默认 $keys = array_keys($this->aInput['groups']['metric']); $sSelectedMetric = $keys[0]; } //total的字段名 if (isset($sTotalMetric) && !empty($sTotalMetric)) { $sTotalSelectedMetric = $sTotalMetric; } else { $sTotalSelectedMetric = preg_replace('/_nosum$/', '', $sSelectedMetric); //去掉最后的“不加”标识 } /* $temps = array(); foreach($this->aOutput[$type] as $k => $v){ foreach($v as $kk => $vv){ $temps[] = $vv[$sSelectedMetric]; } } $sum = array_sum($temps); */ //计算总和 //取得total总和 $sum = $this->aInput['internal']['total']['datas'][0][0][$sTotalSelectedMetric]; //组织伪指标中的内容 $aOrgData = $this->aInput['internal'][$type]['datas']; //原始数据 用于计算 foreach ($this->aOutput[$type] as $k => $v) { foreach ($v as $kk => $vv) { $percent = ($sum > 0 ? round($aOrgData[$k][$kk][$sSelectedMetric] / $sum * 100, 2) : 0) . "%"; $this->aOutput[$type][$k][$kk][$this->sThLabel] = "<div class='tbbar'><div style='width:{$percent}'><span >{$percent}</span></div></div>"; } } \YcheukfReport\Lib\ALYS\Report\Start::setOutput($this->aOutput); //为th增加一列伪指标:百分比 array_push($this->aMetric, $this->sThLabel); // var_export($this->aMetric); }
/** * 格式化flash输出的样式的样式 * @return array 两维数组, 第一位为chart级别, 第二位为data级别 */ public function ALYSoutput_flash_trend_html_style() { //////////chart 级别样式///// $aChartStyle = array("MSCombi2D" => array("chartLeftMargin" => 0, "chartRightMargin" => 0, "formatNumberScale" => 0, "showAlternateHGridColor" => 1, "labelDisplay" => "STAGGER", "isSliced" => 1, "slicingDistance" => 20, "decimalPrecision" => 0, "baseFontSize" => 12, "showShadow" => 0, "aboutMenuItemLabel" => \YcheukfReport\Lib\ALYS\ALYSLang::_('ALYSFLASH_ABOUT_ABLEL'), "aboutMenuItemLink" => \YcheukfReport\Lib\ALYS\ALYSLang::_('ALYSFLASH_ABOUT_LINK'), "aboutIdiggerURL" => 1, "exportShowMenuItem" => 0, "exportEnabled" => 1, "exportfilename" => 'ALYSimage_', "exportAction" => 'save', "exportCallback" => 'myexportCallBack', "exportDialogColor" => 'e1f5ff', "exportDialogBorderColor" => '0372ab', "exportDialogFontColor" => '0372ab', "exportDialogPBColor" => '0372ab', "exportDialogMessage" => \YcheukfReport\Lib\ALYS\ALYSLang::_('ALYSFLASH_EXPORT_MSG')), "Bubble" => array("divLineColor" => "c3c3c3", "catVerticalLineColor" => "ff0000", "bgColor" => "ffffff", "canvasBorderColor" => '666666', "alternateHGridColor" => 'f0fff0', "showBorder" => '0', "numberSuffix" => '%', "bubbleScale" => "1", "baseFontColor" => '000000', "palette" => '3', "is3D" => 1, "animation" => 1, 'clipBubbles' => 1, 'showPlotBorder' => '1', 'exportEnabled' => '1', 'exportfilename' => 'ALYSimage_', 'exportAction' => 'save', 'exportCallback' => 'myexportCallBack'), "Bar2d" => array('numberSuffix' => '%', 'bgSWF' => '', 'exportEnabled' => '1', 'exportfilename' => 'ALYSimage_', 'exportAction' => 'save', 'exportCallback' => 'myexportCallBack'), "geography" => array("formatNumberScale" => '0', "animation" => '1', "showShadow" => '1', "baseFontSize" => '12', "showMarkerLabels" => '0', "fillColor" => 'F1f1f1', "borderColor" => '000000', "markerBorderColor" => '000000', "markerBgColor" => 'FF5904', "markerRadius" => '6', "legendPosition" => 'RIGHT', "useHoverColor" => '1', "showMarkerToolTip" => '1', "showBevel" => '1', "bgColor" => 'e4f4fc', "aboutMenuItemLabel" => \YcheukfReport\Lib\ALYS\ALYSLang::_('ALYSFLASH_ABOUT_ABLEL'), "aboutMenuItemLink" => \YcheukfReport\Lib\ALYS\ALYSLang::_('ALYSFLASH_ABOUT_LINK'), "aboutIdiggerURL" => 1, "exportShowMenuItem" => 0, "exportEnabled" => 1, "exportfilename" => 'ALYSimage_', "exportAction" => 'save', "exportCallback" => 'myexportCallBack', "exportDialogColor" => 'e1f5ff', "exportDialogBorderColor" => '0372ab', "exportDialogFontColor" => '0372ab', "exportDialogPBColor" => '0372ab', "exportDialogMessage" => \YcheukfReport\Lib\ALYS\ALYSLang::_('ALYSFLASH_EXPORT_MSG')), "pie3D" => array("palette" => '4', "decimals" => '0', "enableSmartLabels" => '0', "enableRotation" => '0', "bgColor" => 'FFFFFF', "bgAlpha" => '40,100', "bgRatio" => '0,100', "bgAngle" => '360', "showBorder" => '0', "startingAngle" => '70', "baseFontSize" => '12', "showValues" => '0', "showLabels" => '0', "formatNumberScale" => '0', "aboutMenuItemLabel" => \YcheukfReport\Lib\ALYS\ALYSLang::_('ALYSFLASH_ABOUT_ABLEL'), "aboutMenuItemLink" => \YcheukfReport\Lib\ALYS\ALYSLang::_('ALYSFLASH_ABOUT_LINK'), "aboutIdiggerURL" => 1)); $aChartStyle['MultiAxisLine'] = $aChartStyle["MSCombi2D"]; $aChartStyle['MSCombiDY2D'] = $aChartStyle["MSCombi2D"]; // $aChartStyle['MSCombiDY2D']['leftYAxis'] = 'M,K,L'; $aChartStyle['MSCombiDY2D']['useRoundEdges'] = '1'; $aChartStyle['MSCombiDY2D']['sNumberSuffix'] = ''; // //自定义样式 $aChartStyleCustom = array("MSCombi2D" => array("showLegend" => 1, "useRoundEdges" => "1", "showBorder" => "0", "divLineColor" => "#cccccc", "numDivLines" => 5, "numVDivLines" => 5, "showAlternateHGridColor" => "0", "canvasPadding" => 10, "canvasLeftMargin" => 90, "canvasBorderThickness" => "0", "canvasBgAlpha" => 0, "chartRightMargin" => 40, "bgSWFAlpha" => 100), "Bubble" => array("chartRightMargin" => "10", "divLineColor" => "c3c3c3", "catVerticalLineColor" => "ff0000", "bgColor" => "ffffff", "canvasBorderColor" => '666666', "alternateHGridColor" => 'f0fff0', "alternateHGridAlpha" => "100", "showBorder" => '0', "numberSuffix" => '%', "bubbleScale" => "1", "baseFontColor" => '000000', "palette" => '3', "is3D" => 1, "animation" => 1, 'clipBubbles' => 1, 'yAxisMinValue' => '0', 'yAxisMaxValue' => '6', 'xAxisMinValue' => '10', 'xAxisMaxValue' => '100', 'showPlotBorder' => '1', 'xAxisName' => 'Stickiness', 'yAxisName' => 'Cost Per Service'), "MultiAxisLine" => array("canvasBorderColor" => "#cccccc", "canvasBorderThickness" => "2", "showAlternateVGridColor" => "1", "alternateVGridColor" => "#FF3333", "useRoundEdges" => "1", "showBorder" => "0", "bgColor" => "#ffffff", "canvasBgColor" => "#ffffff"), "geography" => array("bgColor" => "ffffff", "showBorder" => "0", "canvasBorderColor" => "#ffffff")); //自定义flash属性 可传入 $aInput['custom']['flashstyle'] $aInput = \YcheukfReport\Lib\ALYS\Report\Start::getInput(); if (isset($aInput['custom']) && !empty($aInput['custom']['flashstyle']) && is_array($aInput['custom']['flashstyle'])) { foreach ($aInput['custom']['flashstyle'] as $key => $val) { if (is_array($val)) { foreach ($val as $k => $v) { $aChartStyleCustom[$key][$k] = $v; } } } } if (isset($aChartStyleCustom["Bubble"]) && isset($aChartStyle["Bubble"])) { $aChartStyle["Bubble"] = array_merge($aChartStyle["Bubble"], $aChartStyleCustom["Bubble"]); } if (isset($aChartStyleCustom["MSCombi2D"]) && isset($aChartStyle["MSCombi2D"])) { $aChartStyle["MSCombi2D"] = array_merge($aChartStyle["MSCombi2D"], $aChartStyleCustom["MSCombi2D"]); } if (isset($aChartStyleCustom["MultiAxisLine"]) && isset($aChartStyle["MultiAxisLine"])) { $aChartStyle["MultiAxisLine"] = array_merge($aChartStyle["MultiAxisLine"], $aChartStyleCustom["MultiAxisLine"]); } if (isset($aChartStyleCustom["geography"]) && isset($aChartStyle["geography"])) { $aChartStyle["geography"] = array_merge($aChartStyle["geography"], $aChartStyleCustom["geography"]); } if (isset($aChartStyleCustom["MSCombiDY2D"]) && isset($aChartStyle["MSCombiDY2D"])) { $aChartStyle["MSCombiDY2D"] = array_merge($aChartStyle["MSCombiDY2D"], $aChartStyleCustom["MSCombiDY2D"]); } //////////data 级别样式///// $aDataStyle = array(array('color' => '1874cd', 'alpha' => "70", 'anchorRadius' => 5, 'lineThickness' => 3, 'anchorBgColor' => 'ffffff', 'anchorBorderColor' => '1874cd'), array('color' => '008b00', 'alpha' => '70', 'anchorRadius' => 4, 'lineThickness' => 2, 'anchorBgColor' => '008b00', 'anchorBorderColor' => 'ffffff'), array('color' => 'ff7f24', 'alpha' => '70', 'anchorRadius' => 4, 'lineThickness' => 1, 'anchorBgColor' => 'ffffff', 'anchorBorderColor' => 'ff7f24'), array('color' => '87ceeb', 'anchorBgColor' => '87ceeb', 'anchorBorderColor' => 'ffffff'), array('color' => '40e0d0', 'anchorBgColor' => 'ffffff', 'anchorBorderColor' => '40e0d0')); return array($aChartStyle, $aDataStyle); }
/** *扩展父类中的输入参数 */ public function fmtInput() { parent::fmtInput(); $type = 'flash'; $aDefaultIndex = array(); for ($i = 0; $i < $this->aInput['input']['detail']['page']['total']; $i++) { $aDefaultIndex[] = $i; } if (isset($this->aInput['input'][$type]['sort_indexs'])) { //用户传递了列表的参数 $this->aInput['input'][$type]['sort_indexs'] = count($this->aInput['input'][$type]['sort_indexs']) < $this->aInput['input']['detail']['page']['total'] ? $this->aInput['input'][$type]['sort_indexs'] : $aDefaultIndex; } else { //默认 $this->aInput['input'][$type]['sort_indexs'] = $this->aInput['input']['detail']['page']['total'] > 4 ? array(0, 1, 2, 3, 4) : $aDefaultIndex; } //初始化 sort模式下的几个默认选中排列项目 $this->aInput['input'][$type]['sort_totalflag'] = isset($this->aInput['input'][$type]['sort_totalflag']) ? $this->aInput['input'][$type]['sort_totalflag'] : 0; \YcheukfReport\Lib\ALYS\Report\Start::setInput($this->aInput); // var_export($this->aInput['input']['detail']['page']['total']); }
/** * 格式小数位数等 */ public function _formatMetric($type) { $aMainTable = $this->aInput['input'][$type]['mainTable']; $oDict = \YcheukfReport\Lib\ALYS\ALYSFunction::loadDictionary('Metric'); $this->aInput['internal'][$type]['datas'] = $aOrgData = $this->aOutput[$type]; if (isset($this->aInput['input']['flash']['type']) && $this->aInput['input']['flash']['type'] == 'geography' and $type == 'flash') { if (count($aOrgData)) { foreach ($aOrgData as $date_i => $aData) { if (count($aData) < 1) { continue; } foreach ($aData as $field => $data) { if (count($data) < 1) { continue; } foreach ($data as $k => $v) { $this->aOutput[$type][$date_i][$field][$k] = $oDict->ALYSmetricFormat($field, $v, $data); } } } } } else { if (count($aOrgData)) { foreach ($aOrgData as $date_i => $aData) { if (count($aData) < 1) { continue; } foreach ($aData as $date => $data) { if (count($aMainTable['showField']) < 1) { continue; } foreach ($aMainTable['showField'] as $metric) { $this->aOutput[$type][$date_i][$date][$metric] = $oDict->ALYSmetricFormat($metric, $data[$metric], $data); } } } } } \YcheukfReport\Lib\ALYS\Report\Start::setInput($this->aInput); \YcheukfReport\Lib\ALYS\Report\Start::setOutput($this->aOutput); }
function go() { $th = ''; $sOutputFormat = strtolower($this->aInput['output']['format']); $oPlugin = \YcheukfReport\Lib\ALYS\ALYSFunction::loadPlugin('detail'); //标题列 $th .= $oPlugin->ALYSfmt_list_title($this->aInput['groups'], $sOutputFormat); //根据不同的输出类型处理是否要出现饼图/柱状图 if ($this->aInput['input']['detail']['showBarColFlag']) { $sHTML = ""; $keys = array_keys($this->aInput['groups']['metric']); for ($i = 0; $i < count($this->aInput['groups']['metric']); $i++) { $j = $keys[$i]; $aGroup = $this->aInput['groups']['metric'][$j]; if (!$aGroup['pieFieldAble']) { continue; } if (isset($aGroup['ispercent']) && false == $aGroup['ispercent']) { continue; } $selected = $this->aInput['input']['detail']['selected']; if ($aGroup['key'] == $selected) { $selected = 'selected'; } //$selected = $aGroup['pieFieldSelected'] ? 'selected':''; $sHTML .= '<OPTION VALUE="' . $aGroup['key'] . '" ' . $selected . '>' . \YcheukfReport\Lib\ALYS\ALYSLang::_($aGroup['label']) . '</OPTION>'; } $th .= "\n<th nowrap class='thPieList' class='td250'>" . \YcheukfReport\Lib\ALYS\ALYSLang::_('percent') . "<SELECT class='pieList'>{$sHTML}</SELECT></th>"; } ////表格主体//// $aryListData = $this->aOutput['detail']; //列表内容的HTML生成 $html = $oPlugin->ALYSfmt_list($aryListData); //外包装 $sContent = $oPlugin->ALYSfmt_list_table($th, $html); $this->aOutput['detail.output'] = $sContent; \YcheukfReport\Lib\ALYS\Report\Start::setOutput($this->aOutput); // var_export($this->aOutput); }