简体   繁体   English

显示多个eventSources的事件取决于Fullcalendar中复选框的选择

[英]Showing events for multiple eventSources depend on checkboxes' choice in Fullcalendar

I'm adding the feature like in Solgema Fullcalendar - http://plone.org/products/solgema.fullcalendar/releases/2.1.2 (selecting and showing events with checkboxes selection) 我将像Solgema Fullcalendar功能- http://plone.org/products/solgema.fullcalendar/releases/2.1.2 (选择并显示出复选框选择事件)

My eventSourses look like: 我的事件源看起来像:

eventSources: [
            ...
            {
                url: '/admin_schedule/get_schedule_db_recurring_events_on_daysweek/',//"<?echo $data_path?>",
                type: 'GET',
                data: {sch_teacher_id: sch_teacher_id},
                backgroundColor: 'red',
            }

        ],

And I want implement checkboxes for "filtering" events by teachers, checked in checkboxes. 我想实现复选框,以便教师“过滤”事件,并在复选框中选中。 For beginning make just one checkbox (later make foreach cover) 首先,只需选中一个复选框(以后再制作foreach封面)

<div class="box">
        <?php
        $js = 'onClick="rerender_schedule()"';
        echo form_checkbox('teacher', 'vika', FALSE, $js)." Vika";  
        ?>
</div>

By this code as I think, fullcalendar must call rerender_schedule() function which filters data from eventSource with vika's sch_teacher_id 我认为,通过此代码,fullcalendar必须调用rerender_schedule()函数,该函数使用vika的sch_teacher_id过滤来自eventSource的数据

If somebody could help with rerender_schedule() function, I will be thankful, because not good in ajax. 如果有人可以帮助rerender_schedule()函数,我会很感激,因为ajax不好。

EDIT: (thanks to tocallaghan!). 编辑:(感谢tocallaghan!)。 It's just a beginning right now. 这只是一个开始。

  1. My 3 checkboxes: 我的3个复选框:

      $data = array( 'name' => 'teacher', 'class' => 'teacher', 'id' => 'teacher', 'value' => '128', 'checked' => FALSE, 'style' => 'margin:10px', ); echo form_checkbox($data); echo "Вика"; $data = array( 'name' => 'teacher', 'class' => 'teacher', 'id' => 'teacher2', 'value' => '111', 'checked' => FALSE, 'style' => 'margin:10px', ); echo form_checkbox($data); echo "Вася"; $data = array( 'name' => 'teacher', 'class' => 'teacher', 'id' => 'teacher3', 'value' => '1', 'checked' => FALSE, 'style' => 'margin:10px', ); echo form_checkbox($data); echo "Саша"; 
  2. ajax on change them: 阿贾克斯改变他们:

     $('.teacher').change(function (event) { events1.data.sch_teacher_id = $(this).val(); events2.data.sch_teacher_id = $(this).val(); events3.data.sch_teacher_id = $(this).val(); $calendar.fullCalendar('refetchEvents'); }); 
  3. vars for eventSourses: 事件来源的vars:

     var events1 = { url: 'url1', type: 'GET', data: {sch_teacher_id: $('#teacher').val() }, success: function (response) { return response; } }; var events2 = { url: 'url2', type: 'GET', data: {sch_teacher_id: $('#teacher').val() }, backgroundColor: 'green', success: function (response) { return response; } }; var events3 = { url: 'url3', type: 'GET', data: { sch_teacher_id: $('#teacher').val() }, backgroundColor: 'red', success: function (response) { return response; } }; 
  4. my eventSources call 我的eventSources呼叫

     eventSources: [ events1, events2, events3 ], 

You need refetchEvents , but be careful to update you data parameter before calling (otherwise it will remain the initially set value) 您需要refetchEvents ,但是在调用之前要小心更新数据参数(否则它将保留初始设置的值)

$('.CheckBoxClass').change(function () {
    events.data.sch_teacher_id = $(this).val();
    $('#calendar').fullCalendar('refetchEvents');
});

Edit: code to declare events object: 编辑:声明事件对象的代码:

var events = {
    url: 'url',
    type: 'GET',
    data: { Id: $('#divId').val() },
    success: function (response) {
        return response;
    }
};

$('#calendar').fullCalendar({
    events: events
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM