%PDF- %PDF-
Direktori : /home/vacivi36/ava/admin/tool/behat/amd/src/ |
Current File : /home/vacivi36/ava/admin/tool/behat/amd/src/steps.js |
// This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. import Ajax from 'core/ajax'; import Templates from 'core/templates'; import PendingJS from 'core/pending'; /** * Enhancements for the step definitions page. * * @module tool_behat/steps * @copyright 2022 Catalyst IT EU * @author Mark Johnson <mark.johnson@catalyst-eu.net> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ /** * Call the get_entity_generator web service function * * Takes the name of an entity generator and returns an object containing a list of the required fields. * * @param {String} entityType * @returns {Promise} */ const getGeneratorEntities = (entityType) => Ajax.call([{ methodname: 'tool_behat_get_entity_generator', args: {entitytype: entityType} }])[0]; /** * Render HTML for required fields * * Takes the entity data returned from getGeneratorEntities and renders the HTML to display the required fields. * * @param {String} entityData * @return {Promise} */ const getRequiredFieldsContent = (entityData) => { if (!entityData.required?.length) { return Promise.resolve({ html: '', js: '' }); } return Templates.renderForPromise('tool_behat/steprequiredfields', {fields: entityData.required}); }; export const init = () => { // When an entity is selected in the "the following exist" step, fetch and display the required fields. document.addEventListener('change', async(e) => { const entityElement = e.target.closest('.entities'); const stepElement = e.target.closest('.stepcontent'); if (!entityElement || !stepElement) { return; } const pendingPromise = new PendingJS('tool_behat/steps:change'); const entityData = await getGeneratorEntities(e.target.value); const {html, js} = await getRequiredFieldsContent(entityData); const stepRequiredFields = stepElement.querySelector('.steprequiredfields'); if (stepRequiredFields) { await Templates.replaceNode(stepRequiredFields, html, js); } else { await Templates.appendNodeContents(stepElement, html, js); } pendingPromise.resolve(); }); };