Пример SQL для виджета с параметрами дат. И сам шаблон виджета¶
SQL Отражает информацию о не переданных документах в ИС
select
(select count(1) from i$skk_req_to_isez i where json_res is null and created_at between dates.date1 and dates.date2) as error_count
from users u
join (select ? as date1,
date_add(?,interval 1 day)
as date2 from dual) dates on 1=1
where u.id=:user_id
Шаблон
<!DOCTYPE html>
<section ng-controller="WidgetCustom01Ctrl">
<div ng-if="!loaded">
<h3>
<img src="theme/assets/admin/layout/img/loading-spinner-blue.gif">
Вычисление информации для формирования дэшборда...</h3>
</div>
<div ng-if="loaded">
<div class="row">
<div class="col-md-12 text-center">
<div class="btn-group" role="group" aria-label="...">
<a ng-click="setListPeriodFilter('today')" class="btn btn-default {{listPeriodCode == 'today' ? 'blue':''}}">сегодня</a>
<a ng-click="setListPeriodFilter('yesterday')" class="btn btn-default {{listPeriodCode == 'yesterday' ? 'blue':''}}">вчера</a>
<a ng-click="setListPeriodFilter('this_week')" class="btn btn-default {{listPeriodCode == 'this_week' ? 'blue':''}}">эта неделя</a>
<a ng-click="setListPeriodFilter('this_month')" class="btn btn-default {{listPeriodCode == 'this_month' ? 'blue':''}}">этот месяц</a>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-6">
<div class="dashboard-stat {{data.error_count>0?'red-intense':'blue-madison'}}">
<div class="visual">
<i class="fa fa-comments"></i>
</div>
<div class="details">
<div class="number">
{{data.error_count}}
</div>
<div class="desc">
Не отправленные сообщения в ИСЭЗ <a style="color:#fff" href="#/bpms/view_vars_bp_instances?df_process_id=1045&df_date1={{begin_at}}&df_date2={{end_at}}"><i class="icon-arrow-right"></i></a>
</div>
</div>
<!--<a href="#/mfo/mfo_reqs/" class="more">
Все заявки <i class="m-icon-swapright m-icon-white"></i>
</a>-->
</div>
</div>
</div>
</div>
</section>
Контроллер
function WidgetCustom01Ctrl($scope,$http,RestApiService,$filter){
$scope.listOwnerCode="my";
$scope.percent = 65;
$scope.options = {
animate:{
duration:0,
enabled:false},
barColor:'red',
scaleColor:'black',
lineWidth:3,
lineCap:'circle'
};
$scope.setListOwnerFilter = function(code){
$scope.listOwnerCode=code;
$scope.bind();
}
$scope.setListPeriodFilter = function(code){
$scope.listPeriodCode=code;
var x= Metronic.getIntervalByPeriodCode(code);
console.log(x);
$scope.begin_at = $filter('date')(x[0], "yyyy-MM-dd");
$scope.end_at = $filter('date')(x[1], "yyyy-MM-dd");
$scope.bind();
}
$scope.bind = function runWidget(config){
//Metronic.startPageLoading();
$scope.loaded = false;
RestApiService.get("query/get?code=skk_dashboard¶m1="+$scope.begin_at+"¶m2="+$scope.end_at).
success(function (data) {
if (data.items) {
$scope.data = data.items[0];
}
$scope.loaded = true;
});
}
$scope.setListPeriodFilter("today");
}