AutorÃa | Ultima modificación | Ver Log |
// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** This module is responsible for the calendar filter.** @module core_calendar/calendar_filter* @copyright 2017 Andrew Nicols <andrew@nicols.co.uk>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/define(['jquery','core_calendar/selectors','core_calendar/events','core/str','core/templates',],function($,CalendarSelectors,CalendarEvents,Str,Templates) {var registerEventListeners = function(root) {root.on('click', CalendarSelectors.eventFilterItem, function(e) {var target = $(e.currentTarget);toggleFilter(target);e.preventDefault();});$('body').on(CalendarEvents.viewUpdated, function() {var filters = root.find(CalendarSelectors.eventFilterItem);filters.each(function(i, filter) {filter = $(filter);if (filter.data('eventtype-hidden')) {var data = getFilterData(filter);fireFilterChangedEvent(data);}});});};var toggleFilter = function(target) {var data = getFilterData(target);// Toggle the hidden. We need to render the template before we change the value.data.hidden = !data.hidden;M.util.js_pending("core_calendar/calendar_filter:toggleFilter");return Str.get_string('eventtype' + data.eventtype, 'calendar').then(function(nameStr) {data.name = nameStr;data.icon = true;data.key = 'i/' + data.eventtype + 'event';data.component = 'core';return data;}).then(function(context) {return Templates.render('core_calendar/event_filter_key', context);}).then(function(html, js) {return Templates.replaceNode(target, html, js);}).then(function() {fireFilterChangedEvent(data);M.util.js_complete("core_calendar/calendar_filter:toggleFilter");return;});};/*** Fire the filterChanged event for the specified data.** @param {object} data The data to include*/var fireFilterChangedEvent = function(data) {M.util.js_pending("month-mini-filterChanged");$('body').trigger(CalendarEvents.filterChanged, {type: data.eventtype,hidden: data.hidden,});M.util.js_complete("month-mini-filterChanged");};/*** Get the filter data for the specified target.** @param {jQuery} target The target node* @return {Object}*/var getFilterData = function(target) {return {eventtype: target.data('eventtype'),hidden: target.data('eventtype-hidden'),};};return {init: function(root) {root = $(root);registerEventListeners(root);}};});