X7ROOT File Manager
Current Path:
/home/cbholdings/pasukulu/lib/amd/src/local/process_monitor
home
/
cbholdings
/
pasukulu
/
lib
/
amd
/
src
/
local
/
process_monitor
/
📁
..
📄
events.js
(1.86 KB)
📄
index.php
(1.96 KB)
📄
loadingprocess.js
(5.6 KB)
📄
manager.js
(5.37 KB)
📄
monitor.js
(3.59 KB)
📄
process.js
(3.58 KB)
📄
processqueue.js
(3.55 KB)
Editing: manager.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/>. /** * The course file uploader. * * This module is used to upload files directly into the course. * * @module core/local/process_monitor/manager * @copyright 2022 Ferran Recio <ferran@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ import {Reactive} from 'core/reactive'; import {eventTypes, dispatchStateChangedEvent} from 'core/local/process_monitor/events'; const initialState = { display: { show: false, }, queue: [], }; /** * The reactive file uploader class. * * As all the upload queues are reactive, any plugin can implement its own upload monitor. * * @module core/local/process_monitor/manager * @class ProcessMonitorManager * @copyright 2021 Ferran Recio <ferran@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class ProcessMonitorManager extends Reactive { /** * The next process id to use. * * @attribute nextId * @type number * @default 1 * @package */ nextId = 1; /** * Generate a unique process id. * @return {number} a generated process Id */ generateProcessId() { return this.nextId++; } } /** * @var {Object} mutations the monitor mutations. */ const mutations = { /** * Add a new process to the queue. * * @param {StateManager} stateManager the current state manager * @param {Object} processData the upload id to finish */ addProcess: function(stateManager, processData) { const state = stateManager.state; stateManager.setReadOnly(false); state.queue.add({...processData}); state.display.show = true; stateManager.setReadOnly(true); }, /** * Remove a process from the queue. * * @param {StateManager} stateManager the current state manager * @param {Number} processId the process id */ removeProcess: function(stateManager, processId) { const state = stateManager.state; stateManager.setReadOnly(false); state.queue.delete(processId); if (state.queue.size === 0) { state.display.show = false; } stateManager.setReadOnly(true); }, /** * Update a process process to the queue. * * @param {StateManager} stateManager the current state manager * @param {Object} processData the upload id to finish * @param {Number} processData.id the process id */ updateProcess: function(stateManager, processData) { if (processData.id === undefined) { throw Error(`Missing process ID in process data`); } const state = stateManager.state; stateManager.setReadOnly(false); const queueItem = state.queue.get(processData.id); if (!queueItem) { throw Error(`Unkown process with id ${processData.id}`); } for (const [prop, propValue] of Object.entries(processData)) { queueItem[prop] = propValue; } stateManager.setReadOnly(true); }, /** * Set the monitor show attribute. * * @param {StateManager} stateManager the current state manager * @param {Boolean} show the show value */ setShow: function(stateManager, show) { const state = stateManager.state; stateManager.setReadOnly(false); state.display.show = show; if (!show) { this.cleanFinishedProcesses(stateManager); } stateManager.setReadOnly(true); }, /** * Remove a processes from the queue. * * @param {StateManager} stateManager the current state manager */ removeAllProcesses: function(stateManager) { const state = stateManager.state; stateManager.setReadOnly(false); state.queue.forEach((element) => { state.queue.delete(element.id); }); state.display.show = false; stateManager.setReadOnly(true); }, /** * Clean all finished processes. * * @param {StateManager} stateManager the current state manager */ cleanFinishedProcesses: function(stateManager) { const state = stateManager.state; stateManager.setReadOnly(false); state.queue.forEach((element) => { if (element.finished && !element.error) { state.queue.delete(element.id); } }); if (state.queue.size === 0) { state.display.show = false; } stateManager.setReadOnly(true); }, }; const manager = new ProcessMonitorManager({ name: `ProcessMonitor`, eventName: eventTypes.processMonitorStateChange, eventDispatch: dispatchStateChangedEvent, mutations: mutations, state: initialState, }); export {manager};
Upload File
Create Folder