Proyectos de Subversion Moodle

Rev

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

{"version":3,"file":"aiprovider_instance_management_table.min.js","sources":["../src/aiprovider_instance_management_table.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\nimport PluginManagementTable from 'core_admin/plugin_management_table';\nimport {call as fetchMany} from 'core/ajax';\nimport {refreshTableContent} from 'core_table/dynamic';\nimport Pending from 'core/pending';\nimport {fetchNotifications} from 'core/notification';\nimport {prefetchStrings} from 'core/prefetch';\nimport {getString} from 'core/str';\nimport DeleteCancelModal from 'core/modal_delete_cancel';\nimport ModalEvents from 'core/modal_events';\n\nlet watching = false;\n\n/**\n * Handles setting plugin state for the AI provider management table.\n *\n * @module     core_ai/aiprovider_instance_management_table\n * @copyright  2024 Matt Porritt <matt.porritt@moodle.com>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nexport default class extends PluginManagementTable {\n    constructor() {\n        super();\n        this.addClickHandler(this.handleDelete);\n    }\n\n    /**\n     * Initialise an instance of the class.\n     *\n     * This is just a way of making it easier to initialise an instance of the class from PHP.\n     */\n    static init() {\n        if (watching) {\n            return;\n        }\n\n        prefetchStrings('core_ai', [\n            'providerinstancedelete',\n            'providerinstancedeleteconfirm',\n        ]);\n\n        watching = true;\n        new this();\n    }\n\n    /**\n     * Call the delete service.\n     *\n     * @param {string} methodname The web service to call\n     * @param {number} providerid The provider id.\n     * @return {Promise} The promise.\n     */\n    deleteProvider(methodname, providerid) {\n        return fetchMany([{\n            methodname,\n            args: {\n                providerid,\n            },\n        }])[0];\n    }\n\n    /**\n     * Handle delete.\n     *\n     * @param {HTMLElement} tableRoot\n     * @param {Event} e\n     */\n    async handleDelete(tableRoot, e) {\n        const deleteElement = e.target.closest('[data-delete-method]');\n        if (deleteElement) {\n            e.preventDefault();\n            const providerId = e.target.dataset.id;\n            const deleteMethod = e.target.dataset.deleteMethod;\n            const bodyParams = {\n                provider: e.target.dataset.provider,\n                name: e.target.dataset.name,\n            };\n            const modal = await DeleteCancelModal.create({\n                title: getString('providerinstancedelete', 'core_ai'),\n                body: getString('providerinstancedeleteconfirm', 'core_ai', bodyParams),\n                show: true,\n                removeOnClose: true,\n            });\n\n            // Handle delete event.\n            modal.getRoot().on(ModalEvents.delete, async(e) => {\n                e.preventDefault();\n                const pendingPromise = new Pending('core_table/dynamic:deleteProvider');\n                await this.deleteProvider(deleteMethod, providerId);\n                // Reload the table, so we get the updated list of providers, and any messages.\n                await Promise.all([\n                    refreshTableContent(tableRoot),\n                    fetchNotifications(),\n                ]);\n                modal.destroy();\n                pendingPromise.resolve();\n            });\n        }\n    }\n}\n"],"names":["watching","PluginManagementTable","constructor","addClickHandler","this","handleDelete","deleteProvider","methodname","providerid","args","tableRoot","e","target","closest","preventDefault","providerId","dataset","id","deleteMethod","bodyParams","provider","name","modal","DeleteCancelModal","create","title","body","show","removeOnClose","getRoot","on","ModalEvents","delete","async","pendingPromise","Pending","Promise","all","destroy","resolve"],"mappings":"0wBAyBIA,UAAW;;;;;;;4BAScC,iCACzBC,2BAESC,gBAAgBC,KAAKC,4BAStBL,yCAIY,UAAW,CACvB,yBACA,kCAGJA,UAAW,MACPI,MAURE,eAAeC,WAAYC,mBAChB,cAAU,CAAC,CACdD,WAAAA,WACAE,KAAM,CACFD,WAAAA,eAEJ,sBASWE,UAAWC,MACJA,EAAEC,OAAOC,QAAQ,wBACpB,CACfF,EAAEG,uBACIC,WAAaJ,EAAEC,OAAOI,QAAQC,GAC9BC,aAAeP,EAAEC,OAAOI,QAAQE,aAChCC,WAAa,CACfC,SAAUT,EAAEC,OAAOI,QAAQI,SAC3BC,KAAMV,EAAEC,OAAOI,QAAQK,MAErBC,YAAcC,6BAAkBC,OAAO,CACzCC,OAAO,kBAAU,yBAA0B,WAC3CC,MAAM,kBAAU,gCAAiC,UAAWP,YAC5DQ,MAAM,EACNC,eAAe,IAInBN,MAAMO,UAAUC,GAAGC,sBAAYC,QAAQC,MAAAA,IACnCtB,EAAEG,uBACIoB,eAAiB,IAAIC,iBAAQ,2CAC7B/B,KAAKE,eAAeY,aAAcH,kBAElCqB,QAAQC,IAAI,EACd,gCAAoB3B,YACpB,wCAEJY,MAAMgB,UACNJ,eAAeK"}