|
|
<extend name="Public/base" />
|
|
|
<block name="css">
|
|
|
<link rel="stylesheet" href="__CSS__/open-egret.css">
|
|
|
<link rel="stylesheet" href="__CSS__/index_new.css"/>
|
|
|
<link rel="stylesheet" href="__CSS__/overview.css">
|
|
|
<style>.tc1{width:50px;} .tc2{width:80px;}
|
|
|
.data-box {width:100%;overflow:hidden;height:100%;overflow-x:auto;}
|
|
|
.data-box .data-wrap {overflow:hidden;height:100%;}
|
|
|
.data-box table {border:none;table-layout:fixed;width:100%;border-collapse:separate;}
|
|
|
.data-box tr th,.data-box tr td {border:none;width:100px;}
|
|
|
.data-box th~th,.data-box td~td {border-left:1px solid #ddd;}
|
|
|
.data-box tr~tr td{border-top:1px solid #ddd;}
|
|
|
.m-channel-data .main_content_main_item {width:16.66666%;}
|
|
|
.main_content_main_item>div {border:none;}
|
|
|
.xg_zhchart {min-height:515px;}
|
|
|
|
|
|
.highchart_area_notice {line-height:32px;font-size:14px;position:absolute;z-index:1;}
|
|
|
.highchart_area_notice a,.highchart_area_notice a:hover {color:#666;border:none;border-bottom:2px solid transparent;}
|
|
|
.highchart_area_notice a.mcurr {color:#18b1ea;border-bottom-color:#18b1ea;}
|
|
|
|
|
|
.highchart_area_notice span~span,.highchart_area_notice a~a{margin-left:20px;}
|
|
|
|
|
|
.highchart_area_subtab {display:none;}
|
|
|
.highchart_area_subtab.show {display:block;}
|
|
|
|
|
|
|
|
|
|
|
|
.main-place .question_list span:first-child {width: 118px;}
|
|
|
.question_content .question_list span {width: 390px;}
|
|
|
|
|
|
.main_content_platform span.s-c-title{line-height:20px;height:20px;display:block;}
|
|
|
|
|
|
.timeandtab,.time_fl {height:34px;line-height:34px;}
|
|
|
.icon_date {vertical-align:middle;margin-top:-5px;}
|
|
|
.htchart_area {margin-top:0;}
|
|
|
|
|
|
.new_users_tb .circle {width:6px;height:6px;}
|
|
|
</style>
|
|
|
</block>
|
|
|
<block name="body">
|
|
|
<div style="padding: 0 20px 20px;">
|
|
|
|
|
|
<div class="cf main-place top_nav_list navtab_list" style="margin-bottom:0;">
|
|
|
<h3 class="page_title">应用概况</h3>
|
|
|
<p class="description_text">说明:统计移动端(SDK)的设备数及机型</p>
|
|
|
<div class="question frq">
|
|
|
<i class="question_mark">?</i>
|
|
|
<ul class="question_content">
|
|
|
<li class="question_title">数据相关说明</li>
|
|
|
<li class="question_list">
|
|
|
<span class="">今日新增设备</span>
|
|
|
<span class="">今日首次安装并且打开游戏的设备数。一台设备,只在首次安装打开应用时计作新增设备数1,安装多款游戏的同一设备不会重复计量</span>
|
|
|
</li>
|
|
|
<li class="question_list">
|
|
|
<span class="">昨日新增设备</span>
|
|
|
<span class="">昨日首次安装并且打开游戏的设备数(去重)。</span>
|
|
|
</li>
|
|
|
<li class="question_list">
|
|
|
<span class="">累计设备</span>
|
|
|
<span class="">首次安装并打开应用的设备总数(去重)。</span>
|
|
|
</li>
|
|
|
<li class="question_list">
|
|
|
<span class="">近7日活跃设备</span>
|
|
|
<span class="">最近7日(截止昨日)至少启动一次应用的设备数。</span>
|
|
|
</li>
|
|
|
<li class="question_list">
|
|
|
<span class="">近7日单设备使用时长</span>
|
|
|
<span class="">最近7日(截止昨日),每日单设备使用应用的时长均值之和的平均值,即近7日单设备使用时长=截止昨日的7日的每日单设备使用应用的时长均值的总和 / 7。(当用户登录后通过系统关闭进程,此时无法统计到应用关闭时间,则给予本次登录使用时长一个默认值2.5h来进行计算)</span>
|
|
|
</li>
|
|
|
<li class="question_list">
|
|
|
<span class="">活跃设备</span>
|
|
|
<span class="">每日至少启动一次应用的设备数(去重),统计时间段内只记录第一次启动的时间点。</span>
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="row blockinfo">
|
|
|
|
|
|
<div class="main_content_main m-channel-data main_content_platform" style="border-bottom:1px solid #ddd;margin-bottom:15px;padding:17px 0;">
|
|
|
<div class="main_content_main_item">
|
|
|
<div class="col-md-2" onclick="gettotal(1,'#today');">
|
|
|
<strong class="s-c-orange" id = "today">加载中...</strong> <span class="s-c-title">今日新增设备</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="main_content_main_item">
|
|
|
<div class="col-md-2" onclick="gettotal(2,'#yesterday')">
|
|
|
<strong class="s-c-orange" id = "yesterday">加载中...</strong> <span class="s-c-title">昨日新增设备</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="main_content_main_item">
|
|
|
<div class="col-md-2" onclick="gettotal(0,'#total')">
|
|
|
<strong class="s-c-orange" id = "total">加载中...</strong> <span class="s-c-title">累计设备</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="main_content_main_item">
|
|
|
<div class="col-md-2" onclick="gettotal(3,'#day7')">
|
|
|
<strong class="s-c-orange" id = "day7">加载中...</strong> <span class="s-c-title">近7日活跃设备</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="main_content_main_item">
|
|
|
<div class="col-md-2" onclick="gettotal(4,'#day30')">
|
|
|
<strong class="s-c-orange"id = "day30">加载中...</strong> <span class="s-c-title">近30日活跃设备</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="main_content_main_item">
|
|
|
<div class="col-md-2" onclick="gettotal(5,'#duration7')">
|
|
|
<strong class="s-c-orange" id = "duration7">加载中...</strong> <span class="s-c-title">近7日单设备日均使用时长</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="xg_zhchart">
|
|
|
<div class="timeandtab">
|
|
|
<div class="time_fl jsctitle">
|
|
|
<div class="pt-datepicker__date js-pt-calendar">
|
|
|
<i class="icon_date"></i>
|
|
|
<time class="pt-datepicker__date-from pt-fl js-pt-calendar-from jsctitle1">{:str_replace('-','/',substr(I('start',date('Y/m/d',strtotime('-1 day'))),5))}</time>
|
|
|
<time class="pt-datepicker__date-to js-pt-calendar-to jsctitle2">{:str_replace('-','/',substr(I('end',date('Y/m/d',strtotime('-1 day'))),5))}</time>
|
|
|
<i class="xg_dropi js-pt-datepicker__date-i"></i>
|
|
|
</div>
|
|
|
<div class="xg_daterangepicker js-show-calendar">
|
|
|
<div class="ranges">
|
|
|
<ul>
|
|
|
<li class="<eq name='num' value='1'>datapick_active</eq>"><a href="{:U('device_survey',array('tb'=>I('tb'),'type'=>I('type'),'category'=>I('category'),'start'=>date('Y-m-d'),'end'=>date('Y-m-d'),'num'=>1))}">今天</a></li>
|
|
|
<li class="<eq name='num' value='2'>datapick_active</eq>"><a href="{:U('device_survey',array('tb'=>I('tb'),'type'=>I('type'),'category'=>I('category'),'start'=>date('Y-m-d',strtotime('-1 day')),'end'=>date('Y-m-d',strtotime('-1 day')),'num'=>2))}">昨天</a></li>
|
|
|
<li class="<eq name='num' value='3'>datapick_active</eq>"><a href="{:U('device_survey',array('tb'=>I('tb'),'type'=>I('type'),'category'=>I('category'),'start'=>date('Y-m-d',mktime(0,0,0,date('m'),date('d')-6-date('w'),date('Y'))),'end'=>date('Y-m-d',mktime(0,0,0,date('m'),date('d')-date('w'),date('Y'))),'num'=>3))}">过去整周</a></li>
|
|
|
<li class="<eq name='num' value='4'>datapick_active</eq>"><a href="{:U('device_survey',array('tb'=>I('tb'),'type'=>I('type'),'category'=>I('category'),'start'=>date('Y-m-d',mktime(0,0,0,date('m')-1,1,date('Y'))),'end'=>date('Y-m-d',mktime(0,0,0,date('m'),1,date('Y'))-1),'num'=>4))}">过去整月</a></li>
|
|
|
<li class="<eq name='num' value='5'>datapick_active</eq>"><a href="{:U('device_survey',array('tb'=>I('tb'),'type'=>I('type'),'category'=>I('category'),'start'=>date('Y-m-d',strtotime('-7 day')),'end'=>date('Y-m-d',strtotime('-1 day')),'num'=>5))}">过去7天</a></li>
|
|
|
<li class="<eq name='num' value='6'>datapick_active</eq>"><a href="{:U('device_survey',array('tb'=>I('tb'),'type'=>I('type'),'category'=>I('category'),'start'=>date('Y-m-d',strtotime('-30 day')),'end'=>date('Y-m-d',strtotime('-1 day')),'num'=>6))}">过去30天</a></li>
|
|
|
<!-- <li class="<eq name='num' value='7'>datapick_active</eq>"><a href="{:U('device_survey',array('tb'=>I('tb'),'type'=>I('type'),'category'=>I('category'),'start'=>date('Y-m-d',strtotime('-365 day')),'end'=>date('Y-m-d',strtotime('-1 day')),'num'=>7))}">过去一年</a></li>-->
|
|
|
</ul>
|
|
|
<div class="range_inputs">
|
|
|
<button class="applyBtn pt-btn btn-success js_determine" type="button">确定</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="xg_zcalendar xg_left">
|
|
|
<div class="calendar-table">
|
|
|
<table class="table-condensed jscalendar1">
|
|
|
<thead>
|
|
|
<tr>
|
|
|
<th class="prev available jspn" data-range-key="{$calendar.prev}"><i class=" page-Previous "></i></th>
|
|
|
<th colspan="5" class="month">{$calendar.ftitle}</th>
|
|
|
<th></th>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<th>一</th>
|
|
|
<th>二</th>
|
|
|
<th>三</th>
|
|
|
<th>四</th>
|
|
|
<th>五</th>
|
|
|
<th>六</th>
|
|
|
<th>日</th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
<tbody class="jscalendarcontent">
|
|
|
<volist name="calendar[first]" id="vo">
|
|
|
<tr>
|
|
|
<volist name="vo" id="v" key="j">
|
|
|
<td class="<eq name='v.full' value='$calendar.today'>today</eq> <eq name='j' value='6'>weekend<else /><eq name='j' value='7'>weekend</eq></eq> available <notempty name='v.value'>jsselect</notempty>" data-key="{$v.full}"><span>{$v.value|default=' '}</span></td>
|
|
|
</volist>
|
|
|
</tr>
|
|
|
</volist>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="xg_zcalendar xg_right">
|
|
|
<div class="calendar-table">
|
|
|
<table class="table-condensed jscalendar2">
|
|
|
<thead>
|
|
|
<tr>
|
|
|
<th></th>
|
|
|
<th colspan="5" class="month">{$calendar.ltitle}</th>
|
|
|
<th class="next <eq name='calendar.iscurrent' value='1'>available jspn</eq>" data-range-key="{$calendar.next}"><i class="page-next"></i></th>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<th>一</th>
|
|
|
<th>二</th>
|
|
|
<th>三</th>
|
|
|
<th>四</th>
|
|
|
<th>五</th>
|
|
|
<th>六</th>
|
|
|
<th>日</th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
<tbody class="jscalendarcontent">
|
|
|
<volist name="calendar[last]" id="vo">
|
|
|
<tr>
|
|
|
<volist name="vo" id="v" key="j">
|
|
|
<td class="<eq name='v.full' value='$calendar.today'>today</eq> <notempty name='v.value'><eq name='v.no' value='1'>noselect<else />jsselect</eq></notempty> <eq name='j' value='6'>weekend<else /><eq name='j' value='7'>weekend</eq></eq> available" data-key="{$v.full}" ><span>{$v.value|default=' '}</span></td>
|
|
|
</volist>
|
|
|
</tr>
|
|
|
</volist>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!-- 图表数据图切换按钮 begin-->
|
|
|
<div class="tab_fr tab_head">
|
|
|
<a href="#0" data-key="news" class="<empty name='Think.get.tb'>current<else /><eq name='Think.get.tb' value='0'>current</eq></empty>">新增设备</a>
|
|
|
<a href="#1" data-key="active" class="<eq name='Think.get.tb' value='1'>current</eq>">活跃设备</a>
|
|
|
<a href="#2" data-key="model" class="<eq name='Think.get.tb' value='2'>current</eq>">启动机型</a>
|
|
|
</div>
|
|
|
<!--end 图表数据图切换按钮-->
|
|
|
<!-- heightChart! begin -->
|
|
|
<?php $count = count($table['date']);?>
|
|
|
<div class="htchart_area tab_content">
|
|
|
<div class="htchart_area_tab <empty name='Think.get.tb'>show<else /><eq name='Think.get.tb' value='0'>show</eq></empty>">
|
|
|
<div class="highchart_area_notice"><span>合计(去重) {$table.sum.news|default=0}</span><span>日均 {$table.average.news|default=0}</span></div>
|
|
|
<div class="highchart_area">
|
|
|
<div class="highchart_area_tab" id="container1" style="width:100%;height:220px;"></div>
|
|
|
</div>
|
|
|
<div class="new_users">
|
|
|
<table class="new_users_tb">
|
|
|
<tr>
|
|
|
<th class="tc1">显示</th>
|
|
|
<th class="tc2">指标</th>
|
|
|
<th class="tc3" rowspan="3">
|
|
|
<div class="data-box">
|
|
|
<div class="data-wrap" style="width:<eq name='foldline.hours' value='0'><gt name='count' value='14'><eq name='Think.get.num' value='7'>100%<else />{$count*100+100}px</eq><else />100%</gt><else />{13*96}px</eq>">
|
|
|
<table>
|
|
|
<tr>
|
|
|
<eq name="foldline.hours" value="0">
|
|
|
<volist name="table.date" id="vo">
|
|
|
<th>{$vo}</th>
|
|
|
</volist>
|
|
|
<else />
|
|
|
<th>0:00</th>
|
|
|
<th>2:00</th>
|
|
|
<th>4:00</th>
|
|
|
<th>6:00</th>
|
|
|
<th>8:00</th>
|
|
|
<th>10:00</th>
|
|
|
<th>12:00</th>
|
|
|
<th>14:00</th>
|
|
|
<th>16:00</th>
|
|
|
<th>18:00</th>
|
|
|
<th>20:00</th>
|
|
|
<th>22:00</th>
|
|
|
</eq>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<volist name="table.news.ios" id="vo">
|
|
|
<td style="background:#FFF;">{$vo}</td>
|
|
|
</volist>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<volist name="table.news.and" id="vo">
|
|
|
<td style="background:#FFF;">{$vo}</td>
|
|
|
</volist>
|
|
|
</tr>
|
|
|
</table>
|
|
|
</div>
|
|
|
</div>
|
|
|
</th>
|
|
|
</tr>
|
|
|
<tr class="data-last" style="">
|
|
|
<td class="tc1"><i class="circle"></i></td>
|
|
|
<td class="tc2">iOS设备</td>
|
|
|
</tr>
|
|
|
<tr class="data-last" style="<eq name='foldline.hours' value='0'><gt name='count' value='14'><eq name='Think.get.num' value='7'><else />height:52px;</eq><else /></gt><else /></eq>">
|
|
|
<td class="tc1"><i class="circle"></i></td>
|
|
|
<td class="tc2">Android设备</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td class="tc1">汇总</td>
|
|
|
<td colspan="2"><strong class="txt_blue">{$table.sum.news|default=0}</strong></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="htchart_area_tab <eq name='Think.get.tb' value='1'>show</eq>">
|
|
|
<div class="highchart_area_notice"><span>合计(去重) {$table.duplicate.active|default=0}</span><span>日均 {$table.average.active|default=0}</span></div>
|
|
|
<div class="highchart_area">
|
|
|
<div class="highchart_area_tab" id="container2" style="width:100%;height:220px;"></div>
|
|
|
</div>
|
|
|
<div class="new_users">
|
|
|
<table class="new_users_tb">
|
|
|
<tr>
|
|
|
<th class="tc1">显示</th>
|
|
|
<th class="tc2">指标</th>
|
|
|
<th class="tc3" rowspan="3">
|
|
|
<div class="data-box">
|
|
|
<div class="data-wrap" style="width:<eq name='foldline.hours' value='0'><gt name='count' value='14'><eq name='Think.get.num' value='7'>100%<else />{$count*100+100}px</eq><else />100%</gt><else />{13*96}px</eq>">
|
|
|
<table>
|
|
|
<tr>
|
|
|
<eq name="foldline.hours" value="0">
|
|
|
<volist name="table.date" id="vo">
|
|
|
<th>{$vo}</th>
|
|
|
</volist>
|
|
|
<else />
|
|
|
<th>0:00</th>
|
|
|
<th>2:00</th>
|
|
|
<th>4:00</th>
|
|
|
<th>6:00</th>
|
|
|
<th>8:00</th>
|
|
|
<th>10:00</th>
|
|
|
<th>12:00</th>
|
|
|
<th>14:00</th>
|
|
|
<th>16:00</th>
|
|
|
<th>18:00</th>
|
|
|
<th>20:00</th>
|
|
|
<th>22:00</th>
|
|
|
</eq>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<volist name="table.active.ios" id="vo">
|
|
|
<td style="background:#FFF;">{$vo}</td>
|
|
|
</volist>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<volist name="table.active.and" id="vo">
|
|
|
<td style="background:#FFF;">{$vo}</td>
|
|
|
</volist>
|
|
|
</tr>
|
|
|
</table>
|
|
|
</div>
|
|
|
</div>
|
|
|
</th>
|
|
|
</tr>
|
|
|
<tr class="data-last" style="">
|
|
|
<td class="tc1"><i class="circle"></i></td>
|
|
|
<td class="tc2">iOS设备</td>
|
|
|
</tr>
|
|
|
<tr class="data-last" style="<eq name='foldline.hours' value='0'><gt name='count' value='14'><eq name='Think.get.num' value='7'><else />height:52px;</eq><else /></gt><else /></eq>">
|
|
|
<td class="tc1"><i class="circle"></i></td>
|
|
|
<td class="tc2">Android设备</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td class="tc1">汇总</td>
|
|
|
<td colspan="2"><strong class="txt_blue">{$table.sum.active|default=0}</strong></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="htchart_area_tab <eq name='Think.get.tb' value='2'>show</eq>">
|
|
|
<div class="highchart_area_notice">
|
|
|
<a href="javascript:;" data-key="modelios" class=" jsmodelchange <empty name='Think.get.ml'>mcurr<else /><eq name='Think.get.ml' value='0'>mcurr</eq></empty>">iOS设备</a>
|
|
|
<a href="javascript:;" data-key="modeland" class=" jsmodelchange <eq name='Think.get.ml' value='1'>mcurr</eq>">Android设备</a>
|
|
|
</div>
|
|
|
<div class="highchart_area_subtab jsmodeltab <empty name='Think.get.ml'>show<else /><eq name='Think.get.ml' value='0'>show</eq></empty>">
|
|
|
<?php $xmodelioscount = count($table['xmodel']['ios']);?>
|
|
|
<div class="highchart_area">
|
|
|
<div class="highchart_area_tab" id="container3" style="width:100%;height:220px;"></div>
|
|
|
</div>
|
|
|
<div class="new_users">
|
|
|
<table class="new_users_tb">
|
|
|
<tr>
|
|
|
<th class="tc1">显示</th>
|
|
|
<th class="tc2">指标</th>
|
|
|
<th class="tc3" rowspan="2">
|
|
|
<div class="data-box">
|
|
|
<div class="data-wrap" style="width:<gt name='xmodelioscount' value='14'><eq name='Think.get.num' value='7'>100%<else />{$xmodelioscount*100+100}px</eq><else />100%</gt>">
|
|
|
<table>
|
|
|
<tr>
|
|
|
|
|
|
<volist name="table.xmodel.ios" id="vo">
|
|
|
<th>{:str_replace("'",'',$vo)}</th>
|
|
|
</volist>
|
|
|
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<volist name="table.model.ios" id="vo">
|
|
|
<td style="background:#FFF;">{$vo}</td>
|
|
|
</volist>
|
|
|
</tr>
|
|
|
</table>
|
|
|
</div>
|
|
|
</div>
|
|
|
</th>
|
|
|
</tr>
|
|
|
<tr class="data-last" style="<gt name='xmodelioscount' value='14'><eq name='Think.get.num' value='7'><else />height:52px;</eq><else /></gt>">
|
|
|
<td class="tc1"><i class="circle"></i></td>
|
|
|
<td class="tc2">iOS机型</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="highchart_area_subtab jsmodeltab <eq name='Think.get.ml' value='1'>show</eq>">
|
|
|
<?php $xmodelandcount = count($table['xmodel']['and']);?>
|
|
|
<div class="highchart_area">
|
|
|
<div class="highchart_area_tab" id="container4" style="width:100%;height:220px;"></div>
|
|
|
</div>
|
|
|
<div class="new_users">
|
|
|
<table class="new_users_tb">
|
|
|
<tr>
|
|
|
<th class="tc1">显示</th>
|
|
|
<th class="tc2">指标</th>
|
|
|
<th class="tc3" rowspan="2">
|
|
|
<div class="data-box">
|
|
|
<div class="data-wrap" style="width:<gt name='xmodelandcount' value='10'><eq name='Think.get.num' value='7'>100%<else />{$xmodelandcount*100+100}px</eq><else />100%</gt>">
|
|
|
<table>
|
|
|
<tr>
|
|
|
|
|
|
<volist name="table.xmodel.and" id="vo">
|
|
|
<th>{:str_replace("'",'',$vo)}</th>
|
|
|
</volist>
|
|
|
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<volist name="table.model.and" id="vo">
|
|
|
<td style="background:#FFF;">{$vo}</td>
|
|
|
</volist>
|
|
|
</tr>
|
|
|
</table>
|
|
|
</div>
|
|
|
</div>
|
|
|
</th>
|
|
|
</tr>
|
|
|
<tr class="data-last" style="<gt name='xmodelandcount' value='10'><eq name='Think.get.num' value='7'><else />height:52px;</eq><else /></gt>">
|
|
|
<td class="tc1"><i class="circle"></i></td>
|
|
|
<td class="tc2">Android机型</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
<!--end heightChart!-->
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="export_box"><a class="jsexport" url="{:U('Export/device_survey',array(
|
|
|
'start'=>I('start',date('Y-m-d',strtotime('-1 day'))),
|
|
|
'end'=>I('end',date('Y-m-d',strtotime('-1 day'))),
|
|
|
'num'=>I('num'),'hours'=>$foldline['hours'],'xlsname'=>'数据分析_应用概况'
|
|
|
),false)}"><i></i><span>导出</span></a></div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</block>
|
|
|
|
|
|
<block name="script">
|
|
|
<link href="__STATIC__/datetimepicker/css/datetimepicker.css" rel="stylesheet" type="text/css">
|
|
|
<php>if(C('COLOR_STYLE')=='blue_color') echo '
|
|
|
<link href="__STATIC__/datetimepicker/css/datetimepicker_blue.css" rel="stylesheet" type="text/css">';</php>
|
|
|
<link href="__STATIC__/datetimepicker/css/dropdown.css" rel="stylesheet" type="text/css">
|
|
|
<script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
|
|
|
<script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js" charset="UTF-8"></script>
|
|
|
<script src="__JS__/zwmjs/highcharts.js"></script>
|
|
|
<script>
|
|
|
var datelist;
|
|
|
|
|
|
function gettotal(types,ids) {
|
|
|
$(ids).text("加载中...");
|
|
|
$(ids).css('color','#FBA10D');
|
|
|
$.ajax({
|
|
|
type:'post',
|
|
|
dataType:'json',
|
|
|
url:'{:U("stat/getDevice")}',
|
|
|
data:{type:types},
|
|
|
success:function(data) {
|
|
|
|
|
|
$(ids).text(data)
|
|
|
},error:function() {
|
|
|
$(ids).text("加载失败");
|
|
|
$(ids).css('color','red');
|
|
|
layer.msg('服务器错误,请稍候再试');that.removeClass('disabled');
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
$(function() {
|
|
|
|
|
|
gettotal(0,'#total');
|
|
|
gettotal(1,'#today');
|
|
|
gettotal(2,'#yesterday');
|
|
|
gettotal(3,'#day7');
|
|
|
gettotal(4,'#day30');
|
|
|
gettotal(5,'#duration7');
|
|
|
|
|
|
|
|
|
|
|
|
$('.data-box').each(function() {
|
|
|
var that = $(this);
|
|
|
if (that.width()>that.find('.data-wrap').width()) {
|
|
|
that.find('.data-wrap').css({'width':'100%'});
|
|
|
that.closest('tr').siblings('tr.data-last').css({'height':'38px'});
|
|
|
}
|
|
|
});
|
|
|
change_export_postion();
|
|
|
//点击时间显示日历 begin
|
|
|
$(".js-pt-calendar").click(function(){
|
|
|
$(".js-show-calendar").toggle();
|
|
|
})
|
|
|
//end 点击时间显示日历
|
|
|
|
|
|
//点击确定关闭日历 begin
|
|
|
$(".js_determine").click(function(){
|
|
|
$(".js-show-calendar").hide();
|
|
|
});
|
|
|
//end 点击确定关闭日历
|
|
|
|
|
|
$('.jsexport').on('click',function() {
|
|
|
var that=$(this),url = $.trim(that.attr('url')).replace(/((\.htm(l?))?)$/g,'');
|
|
|
|
|
|
var but = $('.tab_head a.current');
|
|
|
url += '/name/'+$.trim(but.text())+'/key/'+but.attr('data-key');
|
|
|
window.location.href = url;
|
|
|
});
|
|
|
|
|
|
if({$foldline.hours|default=1}==1) {
|
|
|
Highcharts.setOptions({
|
|
|
chart:{type:'spline',spacingLeft:0,spacingTop:40},
|
|
|
title:{text: null},legend:{align:'right',verticalAlign:'top',floating:true,x:0,y:-38,itemStyle:{'lineHeight':'32px'}},yAxis:{title:{text:null}},
|
|
|
tooltip:{backgroundColor: '#fff',borderColor:'white',borderRadius:10,borderWidth:1,shadow:true,animation:true,style:{color: "#999",fontSize: "12px",fontWeight: "blod",fontFamily: "Microsoft Yahei"},shared: true,useHTML: true,valueDecimals:2,
|
|
|
formatter:function(){
|
|
|
var s = '<table>';
|
|
|
$.each(this.points,function() {
|
|
|
s += '<tr><td style="color:#1bb2eb;"><span style="padding-right:2px;">'+this.series.name+':</span><span>'+this.y+'</span></td></tr>';
|
|
|
});
|
|
|
s += '</table><small>';
|
|
|
s += $('.jsctitle1').text()+'/';s += this.x+'~'+(parseInt(this.x)+1)+':00';s += '</small>';
|
|
|
return s;
|
|
|
},
|
|
|
},
|
|
|
credits:{enabled: false},
|
|
|
xAxis:{tickInterval:2,categories:['0:00','1:00','2:00','3:00','4:00','5:00','6:00','7:00','8:00','9:00','10:00','11:00','12:00','13:00','14:00','15:00','16:00','17:00','18:00','19:00','20:00','21:00','22:00','23:00'],tickmarkPlacement:'on'},
|
|
|
});
|
|
|
datelist = [{$foldline.date}];
|
|
|
} else {
|
|
|
var tooltip = '';
|
|
|
Highcharts.setOptions({
|
|
|
chart:{type:'spline',spacingLeft:0,spacingTop:40},
|
|
|
title:{text: null},legend:{align:'right',verticalAlign:'top',floating:true,x:0,y:-38,itemStyle:{'lineHeight':'32px'}},yAxis:{title:{text:null}},
|
|
|
tooltip:{backgroundColor: '#fff',borderColor:'white',borderRadius:10,borderWidth:1,shadow:true,animation:true,style:{color: "#999",fontSize: "12px",fontWeight: "blod",fontFamily: "Microsoft Yahei"},shared: true,useHTML: true,
|
|
|
headerFormat:'<table>',
|
|
|
pointFormat:'<tr><td style="color:#1bb2eb;"><span style="padding-right:2px;">{series.name}:</span><span>{point.y}</span></td></tr>',
|
|
|
footerFormat:'</table><small>{point.key}</small>',
|
|
|
},
|
|
|
credits:{enabled: false},
|
|
|
xAxis:{categories:[{$foldline.date}],tickmarkPlacement:'on'},
|
|
|
});
|
|
|
|
|
|
datelist = [{$foldline.date}];
|
|
|
}
|
|
|
|
|
|
selectrange(datelist);
|
|
|
|
|
|
$('#container1').highcharts({legend:{labelFormat:'{name}设备'},
|
|
|
series:[{name:'iOS',data:[{$foldline.news.ios}]},{name:'Android',data:[{$foldline.news.and}]}]
|
|
|
});
|
|
|
|
|
|
$('#container2').highcharts({legend:{labelFormat:'{name}设备'},
|
|
|
series:[{name:'iOS',data:[{$foldline.active.ios}]},{name:'Android',data:[{$foldline.active.and}]}]
|
|
|
});
|
|
|
|
|
|
$('#container3').highcharts({
|
|
|
legend:{enabled:false},chart:{type:'column'},
|
|
|
plotOptions:{column:{fillOpacity:0.5,borderWidth:0,pointWidth:20,}},
|
|
|
tooltip:{valueDecimals:0,formatter:'',headerFormat:'<table>',pointFormat:'<tr><td style="color:#1bb2eb;">{point.y}</td></tr>',footerFormat:'</table><small>{point.key}</small>',},
|
|
|
xAxis:{tickInterval:1,categories:[{$foldline.xmodel.ios}]},
|
|
|
series:[{data:[{$foldline.model.ios}]}]
|
|
|
|
|
|
});
|
|
|
|
|
|
$('#container4').highcharts({
|
|
|
legend:{enabled:false},chart:{type:'column'},
|
|
|
plotOptions:{column:{fillOpacity:0.5,borderWidth:0,pointWidth:20,}},
|
|
|
tooltip:{valueDecimals:0,formatter:'',headerFormat:'<table>',pointFormat:'<tr><td style="color:#1bb2eb;">{point.y}</td></tr>',footerFormat:'</table><small>{point.key}</small>',},
|
|
|
xAxis:{tickInterval:1,categories:[{$foldline.xmodel.and}]},
|
|
|
series:[{data:[{$foldline.model.and}]}]
|
|
|
|
|
|
});
|
|
|
|
|
|
//新增用户和付费用户数据图表切换
|
|
|
$('.tab_head a').click(function() {
|
|
|
var that=$(this),sib = that.closest('.tab_head').siblings('.tab_content');
|
|
|
that.siblings().removeClass('current');
|
|
|
var index= that.addClass('current').index();
|
|
|
|
|
|
sib.find('.htchart_area_tab').removeClass('show').eq(index).addClass('show');
|
|
|
$('.ranges li a').each(function() {
|
|
|
var url = $.trim($(this).attr('href')).replace(/((\.htm(l?))?)$/g,'').replace(/\/tb\/[012]/g,'');
|
|
|
|
|
|
$(this).attr('href',url+'/tb/'+index+'.html');
|
|
|
});
|
|
|
$('.each_box .nav li a').each(function() {
|
|
|
var url = $.trim($(this).attr('href')).replace(/((\.htm(l?))?)$/g,'').replace(/\/tb\/[012]/g,'');
|
|
|
|
|
|
$(this).attr('href',url+'/tb/'+index+'.html');
|
|
|
});
|
|
|
|
|
|
change_export_postion();
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
$('.jsmodelchange').on('click',function() {
|
|
|
var that = $(this);
|
|
|
var index = that.addClass('mcurr').index();
|
|
|
that.siblings().removeClass('mcurr');
|
|
|
$('.jsmodeltab').removeClass('show').eq(index).addClass('show');
|
|
|
|
|
|
return false;
|
|
|
});
|
|
|
|
|
|
$('.jsranges li').on('click',function() {
|
|
|
var that = $(this),range = $.trim(that.attr('data-range-key')).split(',');
|
|
|
if (that.hasClass('datapick_active')) {return false;}
|
|
|
that.addClass('datapick_active').siblings('li').removeClass('datapick_active');
|
|
|
parent = that.closest('.jsctitle');
|
|
|
|
|
|
chartdata(range[0],range[1],parent);
|
|
|
|
|
|
$(".js-show-calendar").toggle();
|
|
|
|
|
|
return false;
|
|
|
});
|
|
|
|
|
|
$('.jspn').on('click',function() {
|
|
|
|
|
|
jspn($(this));
|
|
|
|
|
|
return false;
|
|
|
});
|
|
|
|
|
|
$('.js_determine').on('click',function() {
|
|
|
var that = $(this),parent = that.closest('.jsctitle');
|
|
|
if (parent.find('.in-range').length>0) {
|
|
|
var first = parent.find('.jscalendarcontent .in-range.first').attr('data-key');
|
|
|
var last = parent.find('.jscalendarcontent .in-range.last').attr('data-key');
|
|
|
|
|
|
chartdata(first,last,parent);
|
|
|
|
|
|
} else {
|
|
|
layer.msg('请选择时间范围');
|
|
|
}
|
|
|
return false;
|
|
|
});
|
|
|
|
|
|
jsselect();
|
|
|
|
|
|
});
|
|
|
|
|
|
function selectrange(range) {
|
|
|
if (range) {
|
|
|
$.each(range,function(i,n) {
|
|
|
if (i == 0) {$('.available[data-key="'+n+'"]').addClass('in-range first');}
|
|
|
else if (i == range.length-1) {$('.available[data-key="'+n+'"]').addClass('in-range last');}
|
|
|
else {$('.available[data-key="'+n+'"]').addClass('in-range');}
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function chartdata(start,end,parent) {
|
|
|
|
|
|
var href = '{:U("device_survey",array("type"=>I("type"),"category"=>I("category")))}';
|
|
|
end = end?end:start;
|
|
|
var tb = $.trim($('.tab_head a.current').attr('href')).replace('#','');
|
|
|
|
|
|
|
|
|
window.location.href = href.replace('.html','')+'/start/'+start+'/end/'+end+'/tb/'+tb+'.html';
|
|
|
|
|
|
}
|
|
|
|
|
|
function getdatelist(start,end) {
|
|
|
var i = start,j=0;
|
|
|
var range=[];
|
|
|
while(i<=end) {
|
|
|
var date = new Date(i);
|
|
|
range[j++] = date.getFullYear()+'-'+supplement_zero(date.getMonth()+1)+'-'+supplement_zero(date.getDate());
|
|
|
i+=86400000;
|
|
|
}
|
|
|
return range;
|
|
|
}
|
|
|
|
|
|
function supplement_zero(num) {
|
|
|
return num.toString().length==1?'0'+num:num;
|
|
|
}
|
|
|
|
|
|
function jsselect() {
|
|
|
$('.jsselect').on('click',function(){
|
|
|
var that = $(this),sib = $('.jsselect.active');
|
|
|
if (sib.length<1) {
|
|
|
$('.jsselect').removeClass('in-range first last');
|
|
|
that.addClass('active first');
|
|
|
} else if (sib.length==1) {
|
|
|
that.addClass('active last');
|
|
|
|
|
|
if($('.jsselect.last').length>1) {
|
|
|
$('.jsselect.last').removeClass('last');
|
|
|
}
|
|
|
|
|
|
that.addClass('active last');
|
|
|
|
|
|
var val = (new Date($.trim(that.attr('data-key')).replace(/-/g,'/'))).getTime();
|
|
|
var sibval = (new Date($.trim(sib.attr('data-key')).replace(/-/g,'/'))).getTime();
|
|
|
|
|
|
if (val<sibval) {
|
|
|
that.removeClass('last').addClass('first');
|
|
|
sib.removeClass('first').addClass('last');
|
|
|
var temp = val;val = sibval;sibval=temp;
|
|
|
}
|
|
|
var dl = getdatelist(sibval,val);
|
|
|
|
|
|
$.each(dl,function(i,n) {
|
|
|
$('.jsselect[data-key="'+n+'"]').addClass('in-range');
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
$('.jsselect').removeClass('in-range active first last');
|
|
|
that.addClass('active first');
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
function jspn(that) {
|
|
|
|
|
|
var range = $.trim(that.attr('data-range-key')).split(',');
|
|
|
if (that.hasClass('disabled')) {return false;}
|
|
|
that.addClass('disabled');
|
|
|
$.ajax({
|
|
|
type:'post',
|
|
|
dataType:'json',
|
|
|
url:'{:U("Index/calendar")}',
|
|
|
data:{start:range[0],end:range[1],flag:true},
|
|
|
success:function(data) {
|
|
|
var first = $('.jscalendar1');
|
|
|
var last = $('.jscalendar2');
|
|
|
|
|
|
var dfirst = data.first;
|
|
|
var dlast = data.last;
|
|
|
|
|
|
first.find('.month').text(data.ftitle).siblings('.prev').attr('data-range-key',data.prev);
|
|
|
var next = last.find('.month').text(data.ltitle).siblings('.next').attr('data-range-key',data.next);
|
|
|
if (parseInt(data.iscurrent)==1){next.addClass('available jspn');} else {next.removeClass('available jspn');}
|
|
|
var ftemp = '';var ltemp = '';
|
|
|
$.each(dfirst,function(i,n) {
|
|
|
ftemp += '<tr>';
|
|
|
$.each(n,function(j,m) {
|
|
|
var classname = '';
|
|
|
if (m.full == data.today) {classname += ' today ';}
|
|
|
if (m.no == 1) {classname += ' noselect ';}
|
|
|
if (j == 6 || j == 7) {classname += ' weekend ';}
|
|
|
ftemp += '<td class="available jsselect '+classname+' " data-key="'+m.full+'" ><span>';
|
|
|
if (m.value) {ftemp += m.value;}
|
|
|
else {ftemp += ' ';}
|
|
|
ftemp += '</span></td> ';
|
|
|
});
|
|
|
ftemp += '</tr>';
|
|
|
|
|
|
});
|
|
|
|
|
|
first.find('.jscalendarcontent').html('').html(ftemp);
|
|
|
|
|
|
$.each(dlast,function(i,n) {
|
|
|
ltemp += '<tr>';
|
|
|
$.each(n,function(j,m) {
|
|
|
var classname = '';
|
|
|
if (m.full == data.today) {classname += ' today ';}
|
|
|
if (m.no == 1) {classname += ' noselect ';} else {classname += ' jsselect ';}
|
|
|
if (j == 6 || j == 7) {classname += ' weekend ';}
|
|
|
ltemp += '<td class="available '+classname+' " data-key="'+m.full+'" ><span>';
|
|
|
if (m.value) {ltemp += m.value;}
|
|
|
else {ltemp += ' ';}
|
|
|
ltemp += '</span></td> ';
|
|
|
});
|
|
|
ltemp += '</tr>';
|
|
|
|
|
|
});
|
|
|
|
|
|
last.find('.jscalendarcontent').html('').html(ltemp);
|
|
|
|
|
|
that.removeClass('disabled');
|
|
|
|
|
|
$('.jspn').on('click',function() {jspn($(this)); return false;});
|
|
|
selectrange(datelist);
|
|
|
jsselect();
|
|
|
},error:function() {
|
|
|
layer.msg('服务器错误,请稍候再试');that.removeClass('disabled');
|
|
|
}
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
function change_export_postion() {
|
|
|
$('.tab_head a').each(function(i,n) {
|
|
|
var that = $(n);
|
|
|
if(that.hasClass('current')) {
|
|
|
if(that.attr('data-key') == 'model') {
|
|
|
$('.export_box').css('bottom','80px');
|
|
|
} else {
|
|
|
$('.export_box').css('bottom','10px');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
</script>
|
|
|
<script type="text/javascript">
|
|
|
//导航高亮
|
|
|
highlight_subnav("{:U('Stat/device_survey')}");
|
|
|
$("#main").removeClass('main');
|
|
|
$("#main").addClass('openegretmain');
|
|
|
|
|
|
/*列表和统计图切换*/
|
|
|
$('.tab_btn span').click(function() {
|
|
|
var that = $(this),flag = $.trim(that.attr('data-flag')).split('_');
|
|
|
var sib = that.closest('.tab_btn').siblings('.tab_con');
|
|
|
that.siblings().removeClass('current');
|
|
|
var index = that.addClass('current').index();
|
|
|
sib.find('.content_part').hide().eq(index).show();
|
|
|
var reg = '/'+flag[0]+'/'+(1-flag[1]);
|
|
|
$('.ranges li a').each(function() {
|
|
|
var url = $.trim($(this).attr('href')).replace(/((\.htm(l?))?)$/g,'').replace(reg,'');
|
|
|
|
|
|
$(this).attr('href',url+'/'+flag[0]+'/'+flag[1]+'.html');
|
|
|
});
|
|
|
$('.each_box .nav li a').each(function() {
|
|
|
var href = $.trim($(this).attr('href')).split('#');
|
|
|
var url = href[0].replace(/((\.htm(l?))?)$/g,'').replace(reg,'');
|
|
|
var hash = '';
|
|
|
if (href[1]) {hash = '#'+href[1];}
|
|
|
$(this).attr('href',url+'/'+flag[0]+'/'+flag[1]+'.html'+hash);
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
var myChartLine = "";
|
|
|
|
|
|
//heightChart! begin
|
|
|
$(function () {
|
|
|
chartLine();
|
|
|
|
|
|
//柱子颜色渐变
|
|
|
var colors = ['#3FDBF2', '#F79FC9','#F8D488'];
|
|
|
Highcharts.getOptions().colors = Highcharts.map(colors, function (color) {
|
|
|
return {
|
|
|
radialGradient: {cx: 0, cy: 1.3, r: 2.3},
|
|
|
stops: [[0, color], [2, Highcharts.Color(color).brighten(14).get('rgb')] // darken
|
|
|
]
|
|
|
};
|
|
|
});
|
|
|
|
|
|
/*柱状图1*/
|
|
|
$('#device_surveyChart1').highcharts({
|
|
|
chart: {
|
|
|
type: 'column'
|
|
|
},
|
|
|
title: {
|
|
|
text: null
|
|
|
},
|
|
|
xAxis: {
|
|
|
categories: [{$game_chart.game}],
|
|
|
crosshair: true,
|
|
|
tickInterval:1
|
|
|
},
|
|
|
yAxis: {
|
|
|
min: 0,
|
|
|
title: {
|
|
|
text: null
|
|
|
}
|
|
|
},
|
|
|
tooltip: {
|
|
|
headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
|
|
|
pointFormat:'',
|
|
|
footerFormat:'</table>',
|
|
|
pointFormatter:function(){
|
|
|
var s = '';
|
|
|
s += '<tr><td style="color:'+this.series.color+';padding:0">'+this.series.name+': </td>' +
|
|
|
'<td style="padding:0"><b>'+this.y+'</b></td></tr>';
|
|
|
return s;
|
|
|
},
|
|
|
shared: true,
|
|
|
useHTML: true
|
|
|
},
|
|
|
credits: {
|
|
|
enabled: false
|
|
|
},
|
|
|
legend: {
|
|
|
align: 'center',
|
|
|
verticalAlign: 'top',
|
|
|
enabled:true,
|
|
|
y: -30,
|
|
|
symbolRadius: 0,
|
|
|
itemStyle: {
|
|
|
color: '#A2B8C5',
|
|
|
fontWeight: 'bold'
|
|
|
}
|
|
|
},
|
|
|
plotOptions: {
|
|
|
column: {
|
|
|
borderWidth: 0,
|
|
|
pointWidth: 20, //柱子宽度
|
|
|
}
|
|
|
},
|
|
|
series: [{
|
|
|
name: '注册用户(人)',
|
|
|
//color: '#3FDBF2',
|
|
|
data: [{$game_chart.reg}]
|
|
|
}, {
|
|
|
name: '活跃用户(人)',
|
|
|
// color: '#F79FC9',
|
|
|
data: [{$game_chart.active}]
|
|
|
}, {
|
|
|
name: '充值金额(元)',
|
|
|
// color: '#F8D488',
|
|
|
data: [{$game_chart.pay}]
|
|
|
}]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
|
|
|
//heightChart! begin
|
|
|
$(function () {
|
|
|
chartLine();
|
|
|
|
|
|
//柱子颜色渐变
|
|
|
var colors = ['#3FDBF2', '#F79FC9','#F8D488'];
|
|
|
Highcharts.getOptions().colors = Highcharts.map(colors, function (color) {
|
|
|
return {
|
|
|
radialGradient: {cx: 0, cy: 1.3, r: 2.3},
|
|
|
stops: [[0, color], [2, Highcharts.Color(color).brighten(14).get('rgb')] // darken
|
|
|
]
|
|
|
};
|
|
|
});
|
|
|
|
|
|
/*柱状图2*/
|
|
|
$('#device_surveyChart2').highcharts({
|
|
|
chart: {
|
|
|
type: 'column'
|
|
|
},
|
|
|
title: {
|
|
|
text: null
|
|
|
},
|
|
|
xAxis: {
|
|
|
categories: [{$promote_chart.promote}],
|
|
|
crosshair: true,
|
|
|
tickInterval:1
|
|
|
},
|
|
|
yAxis: {
|
|
|
min: 0,
|
|
|
title: {
|
|
|
text: null
|
|
|
}
|
|
|
},
|
|
|
tooltip: {
|
|
|
headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
|
|
|
pointFormat:'',
|
|
|
footerFormat:'</table>',
|
|
|
pointFormatter:function(){
|
|
|
var s = '';
|
|
|
s += '<tr><td style="color:'+this.series.color+';padding:0">'+this.series.name+': </td>' +
|
|
|
'<td style="padding:0"><b>'+this.y+'</b></td></tr>';
|
|
|
return s;
|
|
|
},
|
|
|
shared: true,
|
|
|
useHTML: true
|
|
|
},
|
|
|
credits: {
|
|
|
enabled:false
|
|
|
},
|
|
|
legend: {
|
|
|
align: 'center',
|
|
|
verticalAlign: 'top',
|
|
|
enabled:true,
|
|
|
y: -30,
|
|
|
symbolRadius: 0,
|
|
|
itemStyle: {
|
|
|
color: '#A2B8C5',
|
|
|
fontWeight: 'bold'
|
|
|
}
|
|
|
},
|
|
|
plotOptions: {
|
|
|
column: {
|
|
|
borderWidth:0,
|
|
|
pointWidth:20, //柱子宽度
|
|
|
}
|
|
|
},
|
|
|
series: [{
|
|
|
name: '注册用户(人)',
|
|
|
//color: '#3FDBF2',
|
|
|
data: [{$promote_chart.reg}]
|
|
|
},{
|
|
|
name: '活跃用户(人)',
|
|
|
//color: '#F79FC9',
|
|
|
data: [{$promote_chart.active}]
|
|
|
},{
|
|
|
name: '充值金额(元)',
|
|
|
//color: '#F8D488',
|
|
|
data: [{$promote_chart.pay}]
|
|
|
}]
|
|
|
});
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
function chartLine(){
|
|
|
myChartLine = {
|
|
|
chart: {
|
|
|
renderTo: 'container',
|
|
|
type: 'areaspline'
|
|
|
},
|
|
|
title: {
|
|
|
text: null
|
|
|
},
|
|
|
legend: {
|
|
|
layout: 'vertical',
|
|
|
align: 'left',
|
|
|
verticalAlign: 'top',
|
|
|
x: 150,
|
|
|
y: 100,
|
|
|
floating: true,
|
|
|
borderWidth: 1,
|
|
|
symbolRadius: 0,
|
|
|
backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
|
|
|
},
|
|
|
xAxis: {
|
|
|
categories: ['1月','2月','3月','5月','6月']
|
|
|
},
|
|
|
yAxis: {
|
|
|
title: {
|
|
|
text: null
|
|
|
}
|
|
|
},
|
|
|
tooltip: {
|
|
|
backgroundColor: '#fff', // 背景颜色
|
|
|
borderColor: 'white', // 边框颜色
|
|
|
borderRadius: 10, // 边框圆角
|
|
|
borderWidth: 1, // 边框宽度
|
|
|
shadow: true, // 是否显示阴影
|
|
|
animation: true, // 是否启用动画效果
|
|
|
style: { // 文字内容相关样式
|
|
|
color: "#999",
|
|
|
fontSize: "12px",
|
|
|
fontWeight: "blod",
|
|
|
fontFamily: "Microsoft Yahei"
|
|
|
},
|
|
|
shared: true,
|
|
|
useHTML: true,
|
|
|
headerFormat: '<small style="color:#1bb2eb;margin-left:18px;">{point.y}</small><br/><small>{point.key}-{point.key}</small><table>',
|
|
|
pointFormat: '',
|
|
|
footerFormat: '</table>',
|
|
|
valueDecimals: 2
|
|
|
},
|
|
|
credits: {
|
|
|
enabled: false
|
|
|
},
|
|
|
plotOptions: {
|
|
|
areaspline: {
|
|
|
fillOpacity: 0.5
|
|
|
}
|
|
|
},
|
|
|
series: [{
|
|
|
data: []
|
|
|
}]
|
|
|
};
|
|
|
//new Highcharts.Chart(myChartLine)
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
|
|
|
<!-- ECharts单文件引入 -->
|
|
|
<script src="http://echarts.baidu.com/build/dist/echarts.js"></script>
|
|
|
<script type="text/javascript">
|
|
|
$('.jsnav li a').on('click', function() {
|
|
|
var that = $(this),
|
|
|
url = $.trim(that.attr('href')),
|
|
|
li = that.closest('li'),
|
|
|
sib = that.closest('.jsnav').siblings('.mchart');
|
|
|
li.addClass('active').siblings('li').removeClass('active');
|
|
|
sib.html('');
|
|
|
var html = '<iframe src="' + url + '" id="iframepage" name="iframepage" frameBorder=0 scrolling=no width="100%" height="100%" ></iframe>';
|
|
|
sib.html(html);
|
|
|
return false;
|
|
|
});
|
|
|
</script>
|
|
|
</block> |