Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

{"version":3,"file":"calendar_filter.min.js","sources":["../src/calendar_filter.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * This module is responsible for the calendar filter.\n *\n * @module     core_calendar/calendar_filter\n * @copyright  2017 Andrew Nicols <andrew@nicols.co.uk>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([\n    'jquery',\n    'core_calendar/selectors',\n    'core_calendar/events',\n    'core/str',\n    'core/templates',\n],\nfunction(\n    $,\n    CalendarSelectors,\n    CalendarEvents,\n    Str,\n    Templates\n) {\n\n    var registerEventListeners = function(root) {\n        root.on('click', CalendarSelectors.eventFilterItem, function(e) {\n            var target = $(e.currentTarget);\n\n            toggleFilter(target);\n\n            e.preventDefault();\n        });\n\n        $('body').on(CalendarEvents.viewUpdated, function() {\n            var filters = root.find(CalendarSelectors.eventFilterItem);\n\n            filters.each(function(i, filter) {\n                filter = $(filter);\n                if (filter.data('eventtype-hidden')) {\n                    var data = getFilterData(filter);\n                    fireFilterChangedEvent(data);\n                }\n            });\n        });\n    };\n\n    var toggleFilter = function(target) {\n        var data = getFilterData(target);\n\n        // Toggle the hidden. We need to render the template before we change the value.\n        data.hidden = !data.hidden;\n\n        M.util.js_pending(\"core_calendar/calendar_filter:toggleFilter\");\n        return Str.get_string('eventtype' + data.eventtype, 'calendar')\n        .then(function(nameStr) {\n            data.name = nameStr;\n            data.icon = true;\n            data.key = 'i/' + data.eventtype + 'event';\n            data.component = 'core';\n\n            return data;\n        })\n        .then(function(context) {\n            return Templates.render('core_calendar/event_filter_key', context);\n        })\n        .then(function(html, js) {\n            return Templates.replaceNode(target, html, js);\n        })\n        .then(function() {\n            fireFilterChangedEvent(data);\n            M.util.js_complete(\"core_calendar/calendar_filter:toggleFilter\");\n            return;\n        });\n    };\n\n    /**\n     * Fire the filterChanged event for the specified data.\n     *\n     * @param   {object} data The data to include\n     */\n    var fireFilterChangedEvent = function(data) {\n        M.util.js_pending(\"month-mini-filterChanged\");\n        $('body').trigger(CalendarEvents.filterChanged, {\n            type: data.eventtype,\n            hidden: data.hidden,\n        });\n        M.util.js_complete(\"month-mini-filterChanged\");\n    };\n\n    /**\n     * Get the filter data for the specified target.\n     *\n     * @param   {jQuery} target The target node\n     * @return  {Object}\n     */\n    var getFilterData = function(target) {\n        return {\n            eventtype: target.data('eventtype'),\n            hidden: target.data('eventtype-hidden'),\n        };\n    };\n\n    return {\n        init: function(root) {\n            root = $(root);\n\n            registerEventListeners(root);\n        }\n    };\n});\n"],"names":["define","$","CalendarSelectors","CalendarEvents","Str","Templates","toggleFilter","target","data","getFilterData","hidden","M","util","js_pending","get_string","eventtype","then","nameStr","name","icon","key","component","context","render","html","js","replaceNode","fireFilterChangedEvent","js_complete","trigger","filterChanged","type","init","root","on","eventFilterItem","e","currentTarget","preventDefault","viewUpdated","find","each","i","filter","registerEventListeners"],"mappings":";;;;;;;AAsBAA,uCAAO,CACH,SACA,0BACA,uBACA,WACA,mBAEJ,SACIC,EACAC,kBACAC,eACAC,IACAC,eAyBIC,aAAe,SAASC,YACpBC,KAAOC,cAAcF,eAGzBC,KAAKE,QAAUF,KAAKE,OAEpBC,EAAEC,KAAKC,WAAW,8CACXT,IAAIU,WAAW,YAAcN,KAAKO,UAAW,YACnDC,MAAK,SAASC,gBACXT,KAAKU,KAAOD,QACZT,KAAKW,MAAO,EACZX,KAAKY,IAAM,KAAOZ,KAAKO,UAAY,QACnCP,KAAKa,UAAY,OAEVb,QAEVQ,MAAK,SAASM,gBACJjB,UAAUkB,OAAO,iCAAkCD,YAE7DN,MAAK,SAASQ,KAAMC,WACVpB,UAAUqB,YAAYnB,OAAQiB,KAAMC,OAE9CT,MAAK,WACFW,uBAAuBnB,MACvBG,EAAEC,KAAKgB,YAAY,kDAUvBD,uBAAyB,SAASnB,MAClCG,EAAEC,KAAKC,WAAW,4BAClBZ,EAAE,QAAQ4B,QAAQ1B,eAAe2B,cAAe,CAC5CC,KAAMvB,KAAKO,UACXL,OAAQF,KAAKE,SAEjBC,EAAEC,KAAKgB,YAAY,6BASnBnB,cAAgB,SAASF,cAClB,CACHQ,UAAWR,OAAOC,KAAK,aACvBE,OAAQH,OAAOC,KAAK,4BAIrB,CACHwB,KAAM,SAASC,OA/EU,SAASA,MAClCA,KAAKC,GAAG,QAAShC,kBAAkBiC,iBAAiB,SAASC,OACrD7B,OAASN,EAAEmC,EAAEC,eAEjB/B,aAAaC,QAEb6B,EAAEE,oBAGNrC,EAAE,QAAQiC,GAAG/B,eAAeoC,aAAa,WACvBN,KAAKO,KAAKtC,kBAAkBiC,iBAElCM,MAAK,SAASC,EAAGC,YACrBA,OAAS1C,EAAE0C,SACAnC,KAAK,oBAAqB,KAC7BA,KAAOC,cAAckC,QACzBhB,uBAAuBnB,aAkE/BoC,CAFAX,KAAOhC,EAAEgC"}