AutorÃa | Ultima modificación | Ver Log |
{"version":3,"file":"participants.min.js","sources":["../src/participants.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 * Some UI stuff for participants page.\n * This is also used by the report/participants/index.php because it has the same functionality.\n *\n * @module core_user/participants\n * @copyright 2017 Damyon Wiese\n * @l
icense http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport * as DynamicTable from 'core_table/dynamic';\nimport * as Str from 'core/str';\nimport CheckboxToggleAll from 'core/checkbox-toggleall';\nimport CustomEvents from 'core/custom_interaction_events';\nimport DynamicTableSelectors from 'core_table/local/dynamic/selectors';\nimport ModalEvents from 'core/modal_events';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport jQuery from 'jquery';\nimport {showAddNote, showSendMessage} from 'core_user/local/participants/bulkactions';\nimport 'core/inplace_editable';\n\nconst Selectors = {\n bulkActionSelect: \"#formactionid\",\n bulkUserSelectedCheckBoxes: \"input[data-togglegroup='participants-table'][data-toggle='slave']:checked\",\n checkCountButton: \"#checkall\",\n showCountText: '[data-region=\"participant-count\"]',\n showCountToggle: '[data-action=\"showcount\"]',\n stateHelpIcon: '[data-region=\"state-help-icon\"]',\n t
ableForm: uniqueId => `form[data-table-unique-id=\"${uniqueId}\"]`,\n};\n\nexport const init = ({\n uniqueid,\n noteStateNames = {},\n}) => {\n const root = document.querySelector(Selectors.tableForm(uniqueid));\n const getTableFromUniqueId = uniqueId => root.querySelector(DynamicTableSelectors.main.fromRegionId(uniqueId));\n\n /**\n * Private method.\n *\n * @method registerEventListeners\n * @private\n */\n const registerEventListeners = () => {\n CustomEvents.define(Selectors.bulkActionSelect, [CustomEvents.events.accessibleChange]);\n jQuery(Selectors.bulkActionSelect).on(CustomEvents.events.accessibleChange, e => {\n const bulkActionSelect = e.target.closest('select');\n const action = bulkActionSelect.value;\n const tableRoot = getTableFromUniqueId(uniqueid);\n const checkboxes = tableRoot.querySelectorAll(Selectors.bulkUserSelectedCheckBoxes);\n const pendingPromise = new Pending('core_user/parti
cipants:bulkActionSelect');\n\n if (action.indexOf('#') !== -1) {\n e.preventDefault();\n\n const ids = [];\n checkboxes.forEach(checkbox => {\n ids.push(checkbox.getAttribute('name').replace('user', ''));\n });\n\n let bulkAction;\n if (action === '#messageselect') {\n bulkAction = showSendMessage(ids);\n } else if (action === '#addgroupnote') {\n bulkAction = showAddNote(\n root.dataset.courseId,\n ids,\n noteStateNames,\n root.querySelector(Selectors.stateHelpIcon)\n );\n }\n\n if (bulkAction) {\n const pendingBulkAction = new Pending('core_user/participants:bulkActionSelected');\n bulkAction\n .then(modal => {\n modal
.getRoot().on(ModalEvents.hidden, () => {\n // Focus on the action select when the dialog is closed.\n bulkActionSelect.focus();\n });\n\n pendingBulkAction.resolve();\n return modal;\n })\n .catch(Notification.exception);\n }\n } else if (action !== '' && checkboxes.length) {\n bulkActionSelect.form.submit();\n }\n\n resetBulkAction(bulkActionSelect);\n pendingPromise.resolve();\n });\n\n root.addEventListener('click', e => {\n // Handle clicking of the \"Select all\" actions.\n const checkCountButton = root.querySelector(Selectors.checkCountButton);\n const checkCountButtonClicked = checkCountButton && checkCountButton.contains(e.target);\n\n if (checkCountButtonClicked) {\n e.preventDefault();\n\n
const tableRoot = getTableFromUniqueId(uniqueid);\n\n DynamicTable.setPageSize(tableRoot, checkCountButton.dataset.targetPageSize)\n .then(tableRoot => {\n // Update the toggle state.\n CheckboxToggleAll.setGroupState(root, 'participants-table', true);\n\n return tableRoot;\n })\n .catch(Notification.exception);\n }\n });\n\n // When the content is refreshed, update the row counts in various places.\n root.addEventListener(DynamicTable.Events.tableContentRefreshed, e => {\n const checkCountButton = root.querySelector(Selectors.checkCountButton);\n\n const tableRoot = e.target;\n\n const defaultPageSize = parseInt(tableRoot.dataset.tableDefaultPerPage, 10);\n const currentPageSize = parseInt(tableRoot.dataset.tablePageSize, 10);\n const totalRowCount = parseInt(tableRoot.dataset.tableTotalRows, 10);
\n\n CheckboxToggleAll.updateSlavesFromMasterState(root, 'participants-table');\n\n const pageCountStrings = [\n {\n key: 'countparticipantsfound',\n component: 'core_user',\n param: totalRowCount,\n },\n ];\n\n if (totalRowCount <= defaultPageSize) {\n if (checkCountButton) {\n checkCountButton.classList.add('hidden');\n }\n } else if (totalRowCount <= currentPageSize) {\n // The are fewer than the current page size.\n pageCountStrings.push({\n key: 'selectalluserswithcount',\n component: 'core',\n param: defaultPageSize,\n });\n\n if (checkCountButton) {\n // The 'Check all [x]' button is only visible when there are values to set.\n checkCountButton.classList.add('hi
dden');\n }\n } else {\n pageCountStrings.push({\n key: 'selectalluserswithcount',\n component: 'core',\n param: totalRowCount,\n });\n\n if (checkCountButton) {\n checkCountButton.classList.remove('hidden');\n }\n }\n\n Str.get_strings(pageCountStrings)\n .then(([showingParticipantCountString, selectCountString]) => {\n const showingParticipantCount = root.querySelector(Selectors.showCountText);\n showingParticipantCount.innerHTML = showingParticipantCountString;\n\n if (selectCountString && checkCountButton) {\n checkCountButton.value = selectCountString;\n }\n\n return;\n })\n .catch(Notification.exception);\n });\n };\n\n const resetBulkAction = bulkActionSelect => {\n bulkAction
Select.value = '';\n };\n\n registerEventListeners();\n};\n"],"names":["Selectors","uniqueId","_ref","uniqueid","noteStateNames","root","document","querySelector","getTableFromUniqueId","DynamicTableSelectors","main","fromRegionId","resetBulkAction","bulkActionSelect","value","define","CustomEvents","events","accessibleChange","on","e","target","closest","action","checkboxes","querySelectorAll","pendingPromise","Pending","indexOf","preventDefault","ids","bulkAction","forEach","checkbox","push","getAttribute","replace","dataset","courseId","pendingBulkAction","then","modal","getRoot","ModalEvents","hidden","focus","resolve","catch","Notification","exception","length","form","submit","addEventListener","checkCountButton","contains","tableRoot","DynamicTable","setPageSize","targetPageSize","setGroupState","Events","tableContentRefreshed","defaultPageSize","parseInt","tableDefaultPerPage","currentPageSize","tablePageSize","totalRowCount","tableTotalRows","updateSlavesFromMasterState","pageCountStrings","ke
y","component","param","classList","add","remove","Str","get_strings","_ref2","showingParticipantCountString","selectCountString","innerHTML"],"mappings":";;;;;;;;giBAoCMA,2BACgB,gBADhBA,qCAE0B,4EAF1BA,2BAGgB,YAHhBA,wBAIa,oCAJbA,wBAMa,kCANbA,oBAOSC,+CAA0CA,6BAGrCC,WAACC,SACjBA,SADiBC,eAEjBA,eAAiB,eAEXC,KAAOC,SAASC,cAAcP,oBAAoBG,WAClDK,qBAAuBP,UAAYI,KAAKE,cAAcE,mBAAsBC,KAAKC,aAAaV,WA+I9FW,gBAAkBC,mBACpBA,iBAAiBC,MAAQ,uCAvIZC,OAAOf,2BAA4B,CAACgB,mCAAaC,OAAOC,uCAC9DlB,4BAA4BmB,GAAGH,mCAAaC,OAAOC,kBAAkBE,UAClEP,iBAAmBO,EAAEC,OAAOC,QAAQ,UACpCC,OAASV,iBAAiBC,MAE1BU,WADYhB,qBAAqBL,UACVsB,iBAAiBzB,sCACxC0B,eAAiB,IAAIC,iBAAQ,+CAEN,IAAzBJ,OAAOK,QAAQ,KAAa,CAC5BR,EAAES,uBAEIC,IAAM,OAKRC,cAJJP,WAAWQ,SAAQC,WACfH,IAAII,KAAKD,SAASE,aAAa,QAAQC,QAAQ,OAAQ,QAI5C,mBAAXb,OACAQ,YAAa,gCAAgBD,KACX,kBAAXP,SACPQ,YAAa,4BACT1B,KAAKgC,QAAQC,SACbR,IACA1B,eACAC,KAAKE,cAAcP,2BAIvB+B,WAAY,OACNQ,kBAAoB,IAAIZ,iBAAQ,6CACtCI,WACCS,MAAKC,QACFA,MAAMC,UAAUvB,GAAGwB,sBAAYC,QAAQ,KAEnC/B,iBAAiBgC,WAGrBN,kBAAkBO,UACXL,SAEVM,MAAMC,sBAAaC,gBAEN,KAAX1B,QA
AiBC,WAAW0B,QACnCrC,iBAAiBsC,KAAKC,SAG1BxC,gBAAgBC,kBAChBa,eAAeoB,aAGnBzC,KAAKgD,iBAAiB,SAASjC,UAErBkC,iBAAmBjD,KAAKE,cAAcP,+BACZsD,kBAAoBA,iBAAiBC,SAASnC,EAAEC,QAEnD,CACzBD,EAAES,uBAEI2B,UAAYhD,qBAAqBL,UAEvCsD,aAAaC,YAAYF,UAAWF,iBAAiBjB,QAAQsB,gBAC5DnB,MAAKgB,uCAEgBI,cAAcvD,KAAM,sBAAsB,GAErDmD,aAEVT,MAAMC,sBAAaC,eAK5B5C,KAAKgD,iBAAiBI,aAAaI,OAAOC,uBAAuB1C,UACvDkC,iBAAmBjD,KAAKE,cAAcP,4BAEtCwD,UAAYpC,EAAEC,OAEd0C,gBAAkBC,SAASR,UAAUnB,QAAQ4B,oBAAqB,IAClEC,gBAAkBF,SAASR,UAAUnB,QAAQ8B,cAAe,IAC5DC,cAAgBJ,SAASR,UAAUnB,QAAQgC,eAAgB,+BAE/CC,4BAA4BjE,KAAM,4BAE9CkE,iBAAmB,CACrB,CACIC,IAAK,yBACLC,UAAW,YACXC,MAAON,gBAIXA,eAAiBL,gBACbT,kBACAA,iBAAiBqB,UAAUC,IAAI,UAE5BR,eAAiBF,iBAExBK,iBAAiBrC,KAAK,CAClBsC,IAAK,0BACLC,UAAW,OACXC,MAAOX,kBAGPT,kBAEAA,iBAAiBqB,UAAUC,IAAI,YAGnCL,iBAAiBrC,KAAK,CAClBsC,IAAK,0BACLC,UAAW,OACXC,MAAON,gBAGPd,kBACAA,iBAAiBqB,UAAUE,OAAO,WAI1CC,IAAIC,YAAYR,kBACf/B,MAAKwC,YAAEC,8BAA+BC,yBACH7E,KAAKE,cAAcP,yBAC3BmF,UAAYF,8BAEhCC,mBAAqB5B,mBACrBA,iBAAiBxC,MAAQoE,sBAKhCnC,MAAMC,sBAAaC"}