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(fun
ction(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('messagedrawerv
iewgroupinfo', '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,SAA
UF,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"}