Example #1
0
 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);
 }
Example #2
0
 /**
 *	负责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;
 }
Example #3
0
 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);
     }
 }
Example #4
0
 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;
 }
Example #5
0
 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);
 }
Example #6
0
    /**
    *	负责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;
    }
Example #7
0
 /**
  * 获得数据入口
  */
 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;
 }
Example #8
0
 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);
 }
Example #9
0
 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);
 }
Example #10
0
 /**
  * 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);
 }
Example #11
0
 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);
 }
Example #12
0
 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();
 }
Example #13
0
 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);
 }
Example #14
0
 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);
 }
Example #15
0
 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();
 }
Example #16
0
 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;
 }
Example #17
0
 /**
 *	负责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;
 }
Example #18
0
 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;
 }
Example #19
0
 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);
 }
Example #20
0
 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);
 }
Example #21
0
 /**
  * 	格式化成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);
 }
Example #22
0
 /**
  * 	格式化成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);
 }
Example #23
0
 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);
 }
Example #24
0
 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);
 }
Example #25
0
 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);
 }
Example #26
0
 /**
  * 为柱状条格式化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);
 }
Example #27
0
 /**
  * 格式化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);
 }
Example #28
0
 /**
  *扩展父类中的输入参数
  */
 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']);
 }
Example #29
0
 /**
  * 格式小数位数等
  */
 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);
 }
Example #30
0
 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);
 }