Authored by xiaofeng.yao@yoho.cn

后天展示在线人数折线图

... ... @@ -4,6 +4,8 @@ namespace backend\controllers;
use Yii;
use app\models\SysConfig;
use app\models\Vest;
use backend\components\Pagination;
use common\models\RoomsNumsReport;
/**
* Site controller
*/
... ... @@ -101,5 +103,25 @@ class SystemController extends BaseController
return $this->render('vest',['imVestNums'=>$imVestNums]);
}
/**
* 在线人数统计
* @return type
*/
public function actionStatics()
{
$condition = Yii::$app->request->get();
$list = [];
if(array_filter($condition)){
$model = RoomsNumsReport::condition($condition);
$count = clone $model;
$pagination = new Pagination(['totalCount' => $count->count()]);
$list = $model->offset($pagination->offset)->limit($pagination->limit)->orderBy(['create_time' => SORT_ASC])->all();
}
return $this->render('statics',[
'list'=>$list,
'condition'=>$condition,
'pagination'=>$pagination,
]);
}
}
... ...
<?php
use yii\web\View;
use backend\widgets\LinkPager;
$this->title = '管理后台首页';
?>
<div class="col-md-6">
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title">在线人数</h5>
</div>
<div class="panel-body">
<form class="form-inline" action="">
<div class="form-group">
<label class="sr-only" for="begin">begin</label>
<input type="text" class="form-control" name="begin" id="begin" placeholder="begin" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="<?=$condition['begin']?>">
</div><!-- form-group -->
<div class="form-group">
<label class="sr-only" for="end">end</label>
<input type="text" class="form-control" name="end" id="end" placeholder="end" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="<?=$condition['end']?>">
</div><!-- form-group -->
<div class="form-group" id="btn_bar">
<button type="submit" class="btn btn-primary mr5">查询</button>
</div>
</form>
<div class="table-responsive">
<table class="table table-dark mb30">
<thead>
<tr>
<th>时间</th>
<th>人数</th>
</tr>
</thead>
<tbody>
<?php
if($list):
foreach($list as $v):
?>
<tr>
<td><?=date('Y-m-d H:i:s',$v['create_time'])?></td>
<td><?=$v['online_num']?></td>
</tr>
<?php endforeach; endif;?>
</tbody>
</table>
</div>
<!-- table-responsive -->
<?php echo LinkPager::widget(['pagination' => $pagination]);?>
</div>
</div>
</div>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script type="text/javascript" src="/js/My97DatePicker/WdatePicker.js" ></script>
<script>
$(function () {
$('#container').highcharts({
title: {
text: 'Monthly Average Temperature',
x: -20 //center
},
subtitle: {
text: 'Source: WorldClimate.com',
x: -20
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
yAxis: {
title: {
text: '人数 (个)'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
valueSuffix: '°C'
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
series: [{
name: 'Tokyo',
data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
}, {
name: 'New York',
data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
}, {
name: 'Berlin',
data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
}, {
name: 'London',
data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
}]
});
});
</script>
... ...
... ... @@ -3,6 +3,7 @@
namespace common\models;
use Yii;
use yii\helpers\ArrayHelper;
/**
* This is the model class for table "{{%rooms_nums_report}}".
... ... @@ -81,4 +82,14 @@ class RoomsNumsReport extends \yii\db\ActiveRecord
];
return $this->save(false);
}
public static function condition($condtion)
{
$model = parent::find();
$filters = ArrayHelper::filter($condtion,['begin','end']);
if($filters['begin'] && $filters['end']){
$model->andWhere('create_time>='.strtotime($filters['begin']).' AND create_time<='.strtotime($filters['end']));
}
return $model;
}
}
... ...