UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

59 lines 7.22 kB
import { Injectable } from '@angular/core'; import { LoadingEmitter } from '../../utility/loading-emitter'; import * as i0 from "@angular/core"; import * as i1 from "../../logger/services/logger.service"; import * as i2 from "../../utility/call-chain/call-chain.service"; /** * This service handles the queuing and execution of task related events (assign, finish, cancel, delegate, setData and getData) */ export class EventQueueService { _log; _afterActionService; _queue; _performingEvent; constructor(_log, _afterActionService) { this._log = _log; this._afterActionService = _afterActionService; this._queue = []; this._performingEvent = new LoadingEmitter(); } /** * Schedules the execution of the provided event * @param event */ scheduleEvent(event) { if (this._performingEvent.isActive) { this._log.debug(`Adding scheduled event to queue. Position in queue: ${this._queue.length}`); this._queue.push(event); } else { this._log.debug('Event queue is empty. Executing scheduled event immediately.'); this._performingEvent.on(); this.executeEvent(event); } } executeEvent(event) { event.resolve(this._afterActionService.create(() => { this.executeNextEventFromQueue(); })); } executeNextEventFromQueue() { this._log.debug('Event finished execution.'); if (this._queue.length === 0) { this._performingEvent.off(); this._log.debug('Last event in queue was executed.'); return; } this._log.debug('Executing next event in queue.'); this.executeEvent(this._queue.shift()); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EventQueueService, deps: [{ token: i1.LoggerService }, { token: i2.CallChainService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EventQueueService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EventQueueService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.LoggerService }, { type: i2.CallChainService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtcXVldWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZXZlbnQtcXVldWUvc2VydmljZXMvZXZlbnQtcXVldWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUc3RDs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFLSjtJQUErQjtJQUgzQyxNQUFNLENBQXFCO0lBQzNCLGdCQUFnQixDQUFpQjtJQUUzQyxZQUFzQixJQUFtQixFQUFZLG1CQUFxQztRQUFwRSxTQUFJLEdBQUosSUFBSSxDQUFlO1FBQVksd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFrQjtRQUN0RixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxDQUFDLEtBQWtCO1FBQ25DLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtZQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyx1REFBdUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzdGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO2FBQU07WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVTLFlBQVksQ0FBQyxLQUFrQjtRQUNyQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQy9DLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRVMseUJBQXlCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFN0MsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDckQsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO3dHQTFDUSxpQkFBaUI7NEdBQWpCLGlCQUFpQixjQUZkLE1BQU07OzRGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtRdWV1ZWRFdmVudH0gZnJvbSAnLi4vbW9kZWwvcXVldWVkLWV2ZW50JztcbmltcG9ydCB7TG9hZGluZ0VtaXR0ZXJ9IGZyb20gJy4uLy4uL3V0aWxpdHkvbG9hZGluZy1lbWl0dGVyJztcbmltcG9ydCB7Q2FsbENoYWluU2VydmljZX0gZnJvbSAnLi4vLi4vdXRpbGl0eS9jYWxsLWNoYWluL2NhbGwtY2hhaW4uc2VydmljZSc7XG5cbi8qKlxuICogVGhpcyBzZXJ2aWNlIGhhbmRsZXMgdGhlIHF1ZXVpbmcgYW5kIGV4ZWN1dGlvbiBvZiB0YXNrIHJlbGF0ZWQgZXZlbnRzIChhc3NpZ24sIGZpbmlzaCwgY2FuY2VsLCBkZWxlZ2F0ZSwgc2V0RGF0YSBhbmQgZ2V0RGF0YSlcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFdmVudFF1ZXVlU2VydmljZSB7XG5cbiAgICBwcm90ZWN0ZWQgX3F1ZXVlOiBBcnJheTxRdWV1ZWRFdmVudD47XG4gICAgcHJvdGVjdGVkIF9wZXJmb3JtaW5nRXZlbnQ6IExvYWRpbmdFbWl0dGVyO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsIHByb3RlY3RlZCBfYWZ0ZXJBY3Rpb25TZXJ2aWNlOiBDYWxsQ2hhaW5TZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX3F1ZXVlID0gW107XG4gICAgICAgIHRoaXMuX3BlcmZvcm1pbmdFdmVudCA9IG5ldyBMb2FkaW5nRW1pdHRlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNjaGVkdWxlcyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBwcm92aWRlZCBldmVudFxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzY2hlZHVsZUV2ZW50KGV2ZW50OiBRdWV1ZWRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5fcGVyZm9ybWluZ0V2ZW50LmlzQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoYEFkZGluZyBzY2hlZHVsZWQgZXZlbnQgdG8gcXVldWUuIFBvc2l0aW9uIGluIHF1ZXVlOiAke3RoaXMuX3F1ZXVlLmxlbmd0aH1gKTtcbiAgICAgICAgICAgIHRoaXMuX3F1ZXVlLnB1c2goZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKCdFdmVudCBxdWV1ZSBpcyBlbXB0eS4gRXhlY3V0aW5nIHNjaGVkdWxlZCBldmVudCBpbW1lZGlhdGVseS4nKTtcbiAgICAgICAgICAgIHRoaXMuX3BlcmZvcm1pbmdFdmVudC5vbigpO1xuICAgICAgICAgICAgdGhpcy5leGVjdXRlRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGV4ZWN1dGVFdmVudChldmVudDogUXVldWVkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucmVzb2x2ZSh0aGlzLl9hZnRlckFjdGlvblNlcnZpY2UuY3JlYXRlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZU5leHRFdmVudEZyb21RdWV1ZSgpO1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGV4ZWN1dGVOZXh0RXZlbnRGcm9tUXVldWUoKSB7XG4gICAgICAgIHRoaXMuX2xvZy5kZWJ1ZygnRXZlbnQgZmluaXNoZWQgZXhlY3V0aW9uLicpO1xuXG4gICAgICAgIGlmICh0aGlzLl9xdWV1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3BlcmZvcm1pbmdFdmVudC5vZmYoKTtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZygnTGFzdCBldmVudCBpbiBxdWV1ZSB3YXMgZXhlY3V0ZWQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2cuZGVidWcoJ0V4ZWN1dGluZyBuZXh0IGV2ZW50IGluIHF1ZXVlLicpO1xuICAgICAgICB0aGlzLmV4ZWN1dGVFdmVudCh0aGlzLl9xdWV1ZS5zaGlmdCgpKTtcbiAgICB9XG59XG4iXX0=