Your IP : 216.73.216.95


Current Path : /var/www/ljmtc/cbt/lib/amd/build/
Upload File :
Current File : /var/www/ljmtc/cbt/lib/amd/build/paged_content_paging_dropdown.min.js.map

{"version":3,"sources":["../src/paged_content_paging_dropdown.js"],"names":["define","$","CustomEvents","PagedContentEvents","PubSub","SELECTORS","ROOT","DROPDOWN_ITEM","DROPDOWN_TOGGLE","ACTIVE_DROPDOWN_ITEM","CARET","getPageNumber","item","parseInt","attr","getAllItems","root","find","getPreviousItems","pageNumber","filter","index","element","getLimit","getOffset","offset","each","prevItem","getActiveItem","generateEventPayload","items","map","limit","get","generatePageNumbers","setActiveItem","id","prevItems","allItems","add","eventPayload","toggle","caret","removeClass","addClass","html","text","append","publish","SHOW_PAGES","init","activeItem","length","events","activate","on","e","data","target","closest","originalEvent","preventDefault","rootSelector"],"mappings":"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","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 * Javascript to manage the paging dropdown control.\n *\n * @module     core/paged_content_paging_dropdown\n * @copyright  2018 Ryan Wyllie <ryan@moodle.com>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(\n    [\n        'jquery',\n        'core/custom_interaction_events',\n        'core/paged_content_events',\n        'core/pubsub'\n    ],\n    function(\n        $,\n        CustomEvents,\n        PagedContentEvents,\n        PubSub\n    ) {\n\n    var SELECTORS = {\n        ROOT: '[data-region=\"paging-dropdown-container\"]',\n        DROPDOWN_ITEM: '[data-region=\"dropdown-item\"]',\n        DROPDOWN_TOGGLE: '[data-region=\"dropdown-toggle\"]',\n        ACTIVE_DROPDOWN_ITEM: '[data-region=\"dropdown-item\"].active',\n        CARET: '[data-region=\"caret\"]'\n    };\n\n    /**\n     * Get the page number.\n     *\n     * @param {jquery} item The dropdown item.\n     * @returns {Number}\n     */\n    var getPageNumber = function(item) {\n        return parseInt(item.attr('data-page-number'), 10);\n    };\n\n    /**\n     * Get all paging dropdown items.\n     *\n     * @param {jquery} root The root element.\n     * @returns {jquery} A jquery object with all items.\n     */\n    var getAllItems = function(root) {\n        return root.find(SELECTORS.DROPDOWN_ITEM);\n    };\n\n    /**\n     * Get all paging dropdown items with lower page numbers than the given\n     * dropdown item.\n     *\n     * @param {jquery} root The root element.\n     * @param {jquery} item The dropdown item.\n     * @returns {jquery} A jquery object with all items.\n     */\n    var getPreviousItems = function(root, item) {\n        var pageNumber = getPageNumber(item);\n        return getAllItems(root).filter(function(index, element) {\n            return getPageNumber($(element)) < pageNumber;\n        });\n    };\n\n    /**\n     * Get the number of items to be loaded for the dropdown item.\n     *\n     * @param {jquery} item The dropdown item.\n     * @returns {Number}\n     */\n    var getLimit = function(item) {\n        return parseInt(item.attr('data-item-count'), 10);\n    };\n\n    /**\n     * Get the offset of items from the start of the itemset for the given\n     * dropdown item.\n     *\n     * @param {jquery} root The root element.\n     * @param {jquery} item The dropdown item.\n     * @returns {Number}\n     */\n    var getOffset = function(root, item) {\n        if (item.attr('data-offset') != undefined) {\n            return parseInt(item.attr('data-offset'), 10);\n        }\n\n        var offset = 0;\n\n        getPreviousItems(root, item).each(function(index, prevItem) {\n            prevItem = $(prevItem);\n            offset += getLimit(prevItem);\n        });\n\n        item.attr('data-offset', offset);\n        return offset;\n    };\n\n    /**\n     * Get the active dropdown item.\n     *\n     * @param {jquery} root The root element.\n     * @returns {jquery} The active dropdown item.\n     */\n    var getActiveItem = function(root) {\n        return root.find(SELECTORS.ACTIVE_DROPDOWN_ITEM);\n    };\n\n    /**\n     * Create the event payload for the list of dropdown items. The event payload\n     * is an array of objects with one object per dropdown item.\n     *\n     * Each payload object contains the page number, limit, and offset for the\n     * corresponding dropdown item.\n     *\n     * For example: If we had 3 dropdown items with incrementing page numbers loading\n     * 25 items per page then the generated payload would look like:\n     * [\n     *      {\n     *          pageNumber: 1,\n     *          limit: 25,\n     *          offset: 0\n     *      },\n     *      {\n     *          pageNumber: 2,\n     *          limit: 25,\n     *          offset: 25\n     *      },\n     *      {\n     *          pageNumber: 3,\n     *          limit: 25,\n     *          offset: 50\n     *      }\n     * ]\n     *\n     * @param {jquery} root The root element.\n     * @param {jquery} items The dropdown items.\n     * @returns {object[]} The payload for the event.\n     */\n    var generateEventPayload = function(root, items) {\n        return items.map(function(index, item) {\n            item = $(item);\n            return {\n                pageNumber: getPageNumber(item),\n                limit: getLimit(item),\n                offset: getOffset(root, item),\n            };\n        }).get();\n    };\n\n    /**\n     * Add page number attributes to each of the given items. The page numbers\n     * start at 1 and increment by 1 for each item, e.g. 1, 2, 3 etc.\n     *\n     * @param {jquery} items The dropdown items.\n     */\n    var generatePageNumbers = function(items) {\n        items.each(function(index, item) {\n            item = $(item);\n            item.attr('data-page-number', index + 1);\n        });\n    };\n\n    /**\n     * Make the given item active by setting the active class on it and firing\n     * the SHOW_PAGES event for the paged content to show the appropriate\n     * pages.\n     *\n     * @param {jquery} root The root element.\n     * @param {jquery} item The dropdown item.\n     * @param {string} id A unique id for this instance.\n     */\n    var setActiveItem = function(root, item, id) {\n        var prevItems = getPreviousItems(root, item);\n        var allItems = prevItems.add(item);\n        var eventPayload = generateEventPayload(root, allItems);\n        var toggle = root.find(SELECTORS.DROPDOWN_TOGGLE);\n        var caret = toggle.find(SELECTORS.CARET);\n\n        getActiveItem(root).removeClass('active');\n        item.addClass('active');\n\n        // Update the dropdown toggle to show which item is selected.\n        toggle.html(item.text());\n        // Bootstrap 2 compatibility.\n        toggle.append(caret);\n        // Fire the event to tell the content to update.\n        PubSub.publish(id + PagedContentEvents.SHOW_PAGES, eventPayload);\n    };\n\n    /**\n     * Initialise the module by firing the SHOW_PAGES event for an existing\n     * active page found and setting up the event listener for the user to select\n     * new pages.\n     *\n     * @param {object} root The root element.\n     * @param {string} id A unique id for this instance.\n     */\n    var init = function(root, id) {\n        root = $(root);\n        var items = getAllItems(root);\n        generatePageNumbers(items);\n\n        var activeItem = getActiveItem(root);\n        if (activeItem.length) {\n            // Fire the first event for the content to make sure it's visible.\n            setActiveItem(root, activeItem, id);\n        }\n\n        CustomEvents.define(root, [\n            CustomEvents.events.activate\n        ]);\n\n        root.on(CustomEvents.events.activate, SELECTORS.DROPDOWN_ITEM, function(e, data) {\n            var item = $(e.target).closest(SELECTORS.DROPDOWN_ITEM);\n            setActiveItem(root, item, id);\n\n            data.originalEvent.preventDefault();\n        });\n    };\n\n    return {\n        init: init,\n        rootSelector: SELECTORS.ROOT,\n    };\n});\n"],"file":"paged_content_paging_dropdown.min.js"}