Php 克拉维尔背包。图形更新,当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' =&

请不要给我负面评价,谢谢

在Laravel Backpack admin中,当我们单击日期范围过滤器时,它会过滤我们的表数据,这很好,但我希望在更改ajax过滤器时图形也会发生更改

据我所知,CrudConTroller中的ajax日期范围过滤器代码:

 $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
                        ]
                    ],
                ],
            ]