Proyectos de Subversion Moodle

Rev

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

{"version":3,"file":"message_drawer_view_group_info.min.js","sources":["../src/message_drawer_view_group_info.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 * Controls the group info page of the message drawer.\n *\n * @module     core_message/message_drawer_view_group_info\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/str',\n    'core/templates',\n    'core_message/message_repository',\n    'core_message/message_drawer_lazy_load_list',\n],\nfunction(\n    $,\n    Str,\n    Templates,\n    Repository,\n    LazyLoadList\n) {\n\n    var LOAD_MEMBERS_LIMIT = 50;\n\n    var SELECTORS = {\n        CONTENT_CONTAINER: '[data-region=\"group-info-content-container\"]',\n        MEMBERS_LIST: '[data-region=\"members-list\"]',\n    };\n\n    var TEMPLATES = {\n        CONTENT: 'core_message/message_drawer_view_group_info_body_content',\n        MEMBERS_LIST: 'core_message/message_drawer_view_group_info_participants_list'\n    };\n\n    /**\n     * Get the content container of the group info view container.\n     *\n     * @param {Object} root Contact container element.\n     * @return {Object} jQuery object\n     */\n    var getContentContainer = function(root) {\n        return root.find(SELECTORS.CONTENT_CONTAINER);\n    };\n\n    /**\n     * Render the group info page.\n     *\n     * @param {Object} root Container element.\n     * @param {Object} conversation The group conversation.\n     * @param {Number} loggedInUserId The logged in user's id.\n     * @return {Object} jQuery promise\n     */\n    var render = function(root, conversation, loggedInUserId) {\n        var placeholderCount = conversation.totalMemberCount > 50 ? 50 : conversation.totalMemberCount;\n        var placeholders = Array.apply(null, Array(placeholderCount)).map(function() {\n            return true;\n        });\n        var templateContext = {\n            name: conversation.name,\n            subname: conversation.subname,\n            imageurl: conversation.imageUrl,\n            placeholders: placeholders,\n            loggedinuser: {\n                id: loggedInUserId\n            }\n        };\n\n        return Templates.render(TEMPLATES.CONTENT, templateContext)\n            .then(function(html) {\n                getContentContainer(root).append(html);\n                return html;\n            });\n    };\n\n    /**\n     * Get the callback to load members of the conversation.\n     *\n     * @param {Object} conversation The conversation\n     * @param {Number} limit How many members to load\n     * @param {Number} offset How many memebers to skip\n     * @return {Function} the callback.\n     */\n    var getLoadMembersCallback = function(conversation, limit, offset) {\n        return function(root, userId) {\n            return Repository.getConversationMembers(conversation.id, userId, limit + 1, offset)\n                .then(function(members) {\n                    if (members.length > limit) {\n                        members = members.slice(0, -1);\n                    } else {\n                        LazyLoadList.setLoadedAll(root, true);\n                    }\n\n                    offset = offset + limit;\n\n                    // Filter out the logged in user so that they don't appear in the list.\n                    return members.filter(function(member) {\n                        return member.id != userId;\n                    });\n                });\n        };\n    };\n\n    /**\n     * Function to render the members in the list.\n     *\n     * @param {Object} contentContainer The list content container.\n     * @param {Array} members The list of members to render\n     * @return {Object} jQuery promise\n     */\n    var renderMembersCallback = function(contentContainer, members) {\n        return Templates.render(TEMPLATES.MEMBERS_LIST, {contacts: members})\n            .then(function(html) {\n                contentContainer.append(html);\n                return html;\n            });\n    };\n\n    /**\n     * Setup the contact page.\n     *\n     * @param {string} namespace The route namespace.\n     * @param {Object} header Contact header container element.\n     * @param {Object} body Contact body container element.\n     * @param {Object} footer Contact body container element.\n     * @param {Number} conversation The conversation\n     * @param {Number} loggedInUserId The logged in user id\n     * @return {Object} jQuery promise\n     */\n    var show = function(namespace, header, body, footer, conversation, loggedInUserId) {\n        var root = $(body);\n\n        getContentContainer(root).empty();\n        return render(root, conversation, loggedInUserId)\n            .then(function() {\n                var listRoot = LazyLoadList.getRoot(root);\n                LazyLoadList.show(\n                    listRoot,\n                    getLoadMembersCallback(conversation, LOAD_MEMBERS_LIMIT, 0),\n                    renderMembersCallback\n                );\n                return;\n            });\n    };\n\n    /**\n     * String describing this page used for aria-labels.\n     *\n     * @param {Object} root Contact container element.\n     * @param {Number} conversation The conversation\n     * @return {Object} jQuery promise\n     */\n    var description = function(root, conversation) {\n        return Str.get_string('messagedrawerviewgroupinfo', 'core_message', conversation.name);\n    };\n\n    return {\n        show: show,\n        description: description\n    };\n});\n"],"names":["define","$","Str","Templates","Repository","LazyLoadList","SELECTORS","TEMPLATES","getContentContainer","root","find","renderMembersCallback","contentContainer","members","render","contacts","then","html","append","show","namespace","header","body","footer","conversation","loggedInUserId","empty","placeholderCount","totalMemberCount","placeholders","Array","apply","map","templateContext","name","subname","imageurl","imageUrl","loggedinuser","id","listRoot","getRoot","limit","offset","userId","getConversationMembers","length","slice","setLoadedAll","filter","member","getLoadMembersCallback","description","get_string"],"mappings":";;;;;;;AAsBAA,qDACA,CACI,SACA,WACA,iBACA,kCACA,+CAEJ,SACIC,EACAC,IACAC,UACAC,WACAC,kBAKIC,4BACmB,+CAInBC,kBACS,2DADTA,uBAEc,gEASdC,oBAAsB,SAASC,aACxBA,KAAKC,KAAKJ,8BAoEjBK,sBAAwB,SAASC,iBAAkBC,gBAC5CV,UAAUW,OAAOP,uBAAwB,CAACQ,SAAUF,UACtDG,MAAK,SAASC,aACXL,iBAAiBM,OAAOD,MACjBA,eA0CZ,CACHE,KA5BO,SAASC,UAAWC,OAAQC,KAAMC,OAAQC,aAAcC,oBAC3DhB,KAAOR,EAAEqB,aAEbd,oBAAoBC,MAAMiB,QA/EjB,SAASjB,KAAMe,aAAcC,oBAClCE,iBAAmBH,aAAaI,iBAAmB,GAAK,GAAKJ,aAAaI,iBAC1EC,aAAeC,MAAMC,MAAM,KAAMD,MAAMH,mBAAmBK,KAAI,kBACvD,KAEPC,gBAAkB,CAClBC,KAAMV,aAAaU,KACnBC,QAASX,aAAaW,QACtBC,SAAUZ,aAAaa,SACvBR,aAAcA,aACdS,aAAc,CACVC,GAAId,wBAILtB,UAAUW,OAAOP,kBAAmB0B,iBACtCjB,MAAK,SAASC,aACXT,oBAAoBC,MAAMS,OAAOD,MAC1BA,QA8DRH,CAAOL,KAAMe,aAAcC,gBAC7BT,MAAK,eACEwB,SAAWnC,aAAaoC,QAAQhC,MACpCJ,aAAac,KACTqB,SAtDa,SAAShB,aAAckB,MAAOC,eAChD,SAASlC,KAAMmC,eACXxC,WAAWyC,uBAAuBrB,aAAae,GAAIK,OAAQF,MAAQ,EAAGC,QACxE3B,MAAK,SAASH,gBACPA,QAAQiC,OAASJ,MACjB7B,QAAUA,QAAQkC,MAAM,GAAI,GAE5B1C,aAAa2C,aAAavC,MAAM,GAGpCkC,QAAkBD,MAGX7B,QAAQoC,QAAO,SAASC,eACpBA,OAAOX,IAAMK,cAyCxBO,CAAuB3B,aAnHd,GAmHgD,GACzDb,2BAmBZyC,YANc,SAAS3C,KAAMe,qBACtBtB,IAAImD,WAAW,6BAA8B,eAAgB7B,aAAaU"}