Php 克拉维尔背包。图形更新,当Ajax过滤器更改时
请不要给我负面评价,谢谢 在Laravel Backpack admin中,当我们单击日期范围过滤器时,它会过滤我们的表数据,这很好,但我希望在更改ajax过滤器时图形也会发生更改 据我所知,CrudConTroller中的ajax日期范围过滤器代码:Php 克拉维尔背包。图形更新,当Ajax过滤器更改时,php,laravel,graph,admin,backpack-for-laravel,Php,Laravel,Graph,Admin,Backpack For Laravel,请不要给我负面评价,谢谢 在Laravel Backpack admin中,当我们单击日期范围过滤器时,它会过滤我们的表数据,这很好,但我希望在更改ajax过滤器时图形也会发生更改 据我所知,CrudConTroller中的ajax日期范围过滤器代码: $this->crud->addFilter([ 'type' => 'date_range', 'name' => 'created_at', 'label' =&
$this->crud->addFilter([
'type' => 'date_range',
'name' => 'created_at',
'label' => 'Date range'
],
false,
function ($value) { // if the filter is active, apply these constraints
$dates = json_decode($value);
$this->crud->addClause('where', 'created_at', '>=', $dates->from);
$this->crud->addClause('where', 'created_at', '<=', $dates->to . ' 23:59:59');
});
有许多解决方案可以使用php生成图形而不是模板。请参阅中的相关部分。文件
然后使用request参数为图形过滤数据。我将尝试发布一个示例。有许多解决方案可以使用php生成图形而不是模板。请参阅中的相关部分。文件
然后使用request参数为图形过滤数据。我将试着发布一个例子。我也需要这个确切的东西。非常有意思,但我所做的是创建一个新的过滤器,从
date\u范围开始
过滤器,它不是只刷新数据表,而是刷新整个页面
给你。如果将其放置在resources/views/vendor/backack/crud/filters/date\u range\u refresh.blade.php
中,您将能够使用date\u range\u refresh
而不是date\u range
作为过滤器类型,并获得所需的结果:
{{--日期范围背包积垢过滤器--}
当前值)
@php
$dates=(数组)json_解码($filter->currentValue);
$start_date=$dates['from'];
$end_date=$dates['to'];
$date\u range=内爆(“~”,$dates);
$date\u range=str\u replace(“-”、“/”、$date\u range);
$date\u range=str\u replace(“~”、“-”、$date\u range);
@endphp
占位符=“{{$date\u range}}”
@恩迪夫
>
{{-- ########################################### --}}
{{--此特定筛选器的额外CSS和JS--}
{{--过滤额外的CSS--}
{{--在after_styles部分推送内容--}
@推送(“积垢列表样式”)
.input-group.date{
宽度:320px;
最大宽度:100%;}
.daterangepicker.下拉菜单{
z指数:3001!重要;
}
@端推
{{--FILTERS EXTRA JS--}
{{--push在after_scripts部分--}
@推送(“积垢列表脚本”)
函数applyDateRangeFilter{{$filter->key}(开始,结束){
如果(开始和结束){
变量日期={
“发件人”:start.format('YYYY-MM-DD'),
“收件人”:end.format('YYYY-MM-DD')
};
var value=JSON.stringify(日期);
}否则{
//此更改为空字符串,因为addorUpdateUripParameter方法只是判断字符串
var值=“”;
}
var参数=“{{$filter->name}}”;
//ajax表的行为
var ajax_table=$('#crudTable').DataTable();
var current_url=ajax_table.ajax.url();
var new_url=addorUpdateUripParameter(当前_url、参数、值);
//用新的url替换datatables ajax url并重新加载它
new_url=normalizeAmpersand(new_url.toString());
ajax_table.ajax.url(new_url.load();
//将筛选器添加到URL
crud.updateUrl(新url);
//在导航栏过滤器中将此过滤器标记为活动
if(URI(new_url).hasQuery({{{$filter->name}}),true)){
$('li[filter key={{{$filter->key}}]')。removeClass('active')。addClass('active');
}
其他的
{
$('li[filter key={{{$filter->key}}]')。触发器('filter:clear');
}
// ---------------------------------------------------------------
//这就是它不同于常规日期范围过滤器的地方
// ---------------------------------------------------------------
//更改过滤器后,刷新页面,
//以便重新加载顶部的NPS小部件。
document.location.reload();
}
jQuery(文档).ready(函数($){
var dateRangeInput=$('#daterangepicker-{{{$filter->key}}')。daterangepicker({
计时器选择器:错误,
范围:{
“去年”:[moment().startOf('Year')。减去(1,'Year'),moment().endOf('Year')。减去(1,'Year')],
“上个月”:[moment().subtract(1,'月').startOf('月'),moment().subtract(1,'月').endOf('月')],
“上周”:[moment().subtract(1,'周').startOf('周'),moment().subtract(1,'周').endOf('周'),
“今年”:[时刻().startOf('Year'),时刻().endOf('Year'),
“本月”:[moment().startOf('Month'),moment().endOf('Month'),
“本周”:[时刻().startOf('Week'),时刻().endOf('Week')]
},
@如果($filter->currentValue)
开始日期:时刻({{$start\U date}”),
结束日期:时刻(“{{$end_date}”),
@恩迪夫
始终显示日历:正确,
自动更新输入:true
});
dateRangeInput.on('apply.daterangepicker',函数(ev,picker){
ApplyDataRangeFilter{{$filter->key}
$widgets['before_content'][] = [
'type' => 'div',
'class' => 'row',
'content' => [ // widgets
[
'type' => 'chart',
'wrapperClass' => 'mt-4 col-md-12',
// 'class' => 'col-md-12',
'controller' => \App\Http\Controllers\Admin\Charts\UserChartController::class,
'content' => [
'header' => 'New Users', // optional
'body' => 'This chart should make it obvious', // optional
]
],
],
]