UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

59 lines 8.19 kB
/** * Holds the common functionality for all Services that work with a single Task object. */ export class TaskHandlingService { _taskContentService; _selectedCaseService; /** * @param _taskContentService the service that holds the currently selected task, that is handled by the implementation of this class * @param _selectedCaseService an optional service, that holds the currently selected case. * It should be injected with the `@Optional()` annotation, since it might not be always provided. */ constructor(_taskContentService, _selectedCaseService = null) { this._taskContentService = _taskContentService; this._selectedCaseService = _selectedCaseService; } /** * @returns the Task object held by {@link TaskContentService} or `undefined` if the Service currently holds no Task. */ get _task() { return this._taskContentService.task; } /** * Throws an error if the {@link TaskContentService} didn't have the Task object set yet. * * @returns the Task object held by {@link TaskContentService}. */ get _safeTask() { const task = this._taskContentService.task; if (!task) { throw new Error('Attempting to access Task object of an uninitialized TaskContentService'); } return task; } /** * @returns `true` if a {@link Task} instance is set, `false` otherwise */ isTaskPresent() { return !!this._taskContentService.task; } /** * Checks whether the current state of the {@link TaskContentService} and optionally if the {@link SelectedCaseService}, is still * relevant to the task that was requested. * * This method is useful if you use {@link UnlimitedTaskContentService}, or a similar implementation. It is possible for the currently * "selected" task to change in-between a backend request was sent and the response was received. In that case the response is no longer * relevant and should be discarded, otherwise an illegal task state could be achieved on frontend. * @param requestedTaskId the `stringId` of the requested task * @returns `true` if the requested task is still relevant to the state of the frontend. Returns `false` otherwise. */ isTaskRelevant(requestedTaskId) { return this.isTaskPresent() && this._task.stringId === requestedTaskId && (!this._selectedCaseService || (!!this._selectedCaseService && !!this._selectedCaseService.selectedCase && this._task.caseId === this._selectedCaseService.selectedCase.stringId)); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1oYW5kbGluZy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi90YXNrL3NlcnZpY2VzL3Rhc2staGFuZGxpbmctc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7R0FFRztBQUNILE1BQU0sT0FBZ0IsbUJBQW1CO0lBT0w7SUFDQTtJQU5oQzs7OztPQUlHO0lBQ0gsWUFBZ0MsbUJBQXVDLEVBQ3ZDLHVCQUE0QyxJQUFJO1FBRGhELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE0QjtJQUNoRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFjLEtBQUs7UUFDZixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFjLFNBQVM7UUFDbkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO1NBQzlGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ08sYUFBYTtRQUNuQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDTyxjQUFjLENBQUMsZUFBdUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFO2VBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLGVBQWU7ZUFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0I7bUJBQ3ZCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0I7dUJBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWTt1QkFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQzNFLENBQ0osQ0FBQztJQUNWLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGFza0NvbnRlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi90YXNrLWNvbnRlbnQvc2VydmljZXMvdGFzay1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtUYXNrfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3Rhc2snO1xuaW1wb3J0IHtTZWxlY3RlZENhc2VTZXJ2aWNlfSBmcm9tICcuL3NlbGVjdGVkLWNhc2Uuc2VydmljZSc7XG5cbi8qKlxuICogSG9sZHMgdGhlIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBhbGwgU2VydmljZXMgdGhhdCB3b3JrIHdpdGggYSBzaW5nbGUgVGFzayBvYmplY3QuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYXNrSGFuZGxpbmdTZXJ2aWNlIHtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBfdGFza0NvbnRlbnRTZXJ2aWNlIHRoZSBzZXJ2aWNlIHRoYXQgaG9sZHMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0YXNrLCB0aGF0IGlzIGhhbmRsZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgY2xhc3NcbiAgICAgKiBAcGFyYW0gX3NlbGVjdGVkQ2FzZVNlcnZpY2UgYW4gb3B0aW9uYWwgc2VydmljZSwgdGhhdCBob2xkcyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNhc2UuXG4gICAgICogSXQgc2hvdWxkIGJlIGluamVjdGVkIHdpdGggdGhlIGBAT3B0aW9uYWwoKWAgYW5ub3RhdGlvbiwgc2luY2UgaXQgbWlnaHQgbm90IGJlIGFsd2F5cyBwcm92aWRlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF90YXNrQ29udGVudFNlcnZpY2U6IFRhc2tDb250ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zZWxlY3RlZENhc2VTZXJ2aWNlOiBTZWxlY3RlZENhc2VTZXJ2aWNlID0gbnVsbCkge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBUYXNrIG9iamVjdCBoZWxkIGJ5IHtAbGluayBUYXNrQ29udGVudFNlcnZpY2V9IG9yIGB1bmRlZmluZWRgIGlmIHRoZSBTZXJ2aWNlIGN1cnJlbnRseSBob2xkcyBubyBUYXNrLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgX3Rhc2soKTogVGFzayB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXNrQ29udGVudFNlcnZpY2UudGFzaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIHtAbGluayBUYXNrQ29udGVudFNlcnZpY2V9IGRpZG4ndCBoYXZlIHRoZSBUYXNrIG9iamVjdCBzZXQgeWV0LlxuICAgICAqXG4gICAgICogQHJldHVybnMgdGhlIFRhc2sgb2JqZWN0IGhlbGQgYnkge0BsaW5rIFRhc2tDb250ZW50U2VydmljZX0uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldCBfc2FmZVRhc2soKTogVGFzayB7XG4gICAgICAgIGNvbnN0IHRhc2sgPSB0aGlzLl90YXNrQ29udGVudFNlcnZpY2UudGFzaztcbiAgICAgICAgaWYgKCF0YXNrKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gYWNjZXNzIFRhc2sgb2JqZWN0IG9mIGFuIHVuaW5pdGlhbGl6ZWQgVGFza0NvbnRlbnRTZXJ2aWNlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhc2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIGEge0BsaW5rIFRhc2t9IGluc3RhbmNlIGlzIHNldCwgYGZhbHNlYCBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNUYXNrUHJlc2VudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLnRhc2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHtAbGluayBUYXNrQ29udGVudFNlcnZpY2V9IGFuZCBvcHRpb25hbGx5IGlmIHRoZSB7QGxpbmsgU2VsZWN0ZWRDYXNlU2VydmljZX0sIGlzIHN0aWxsXG4gICAgICogcmVsZXZhbnQgdG8gdGhlIHRhc2sgdGhhdCB3YXMgcmVxdWVzdGVkLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGlmIHlvdSB1c2Uge0BsaW5rIFVubGltaXRlZFRhc2tDb250ZW50U2VydmljZX0sIG9yIGEgc2ltaWxhciBpbXBsZW1lbnRhdGlvbi4gSXQgaXMgcG9zc2libGUgZm9yIHRoZSBjdXJyZW50bHlcbiAgICAgKiBcInNlbGVjdGVkXCIgdGFzayB0byBjaGFuZ2UgaW4tYmV0d2VlbiBhIGJhY2tlbmQgcmVxdWVzdCB3YXMgc2VudCBhbmQgdGhlIHJlc3BvbnNlIHdhcyByZWNlaXZlZC4gSW4gdGhhdCBjYXNlIHRoZSByZXNwb25zZSBpcyBubyBsb25nZXJcbiAgICAgKiByZWxldmFudCBhbmQgc2hvdWxkIGJlIGRpc2NhcmRlZCwgb3RoZXJ3aXNlIGFuIGlsbGVnYWwgdGFzayBzdGF0ZSBjb3VsZCBiZSBhY2hpZXZlZCBvbiBmcm9udGVuZC5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkVGFza0lkIHRoZSBgc3RyaW5nSWRgIG9mIHRoZSByZXF1ZXN0ZWQgdGFza1xuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcmVxdWVzdGVkIHRhc2sgaXMgc3RpbGwgcmVsZXZhbnQgdG8gdGhlIHN0YXRlIG9mIHRoZSBmcm9udGVuZC4gUmV0dXJucyBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNUYXNrUmVsZXZhbnQocmVxdWVzdGVkVGFza0lkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNUYXNrUHJlc2VudCgpXG4gICAgICAgICAgICAmJiB0aGlzLl90YXNrLnN0cmluZ0lkID09PSByZXF1ZXN0ZWRUYXNrSWRcbiAgICAgICAgICAgICYmICghdGhpcy5fc2VsZWN0ZWRDYXNlU2VydmljZVxuICAgICAgICAgICAgICAgIHx8ICghIXRoaXMuX3NlbGVjdGVkQ2FzZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgJiYgISF0aGlzLl9zZWxlY3RlZENhc2VTZXJ2aWNlLnNlbGVjdGVkQ2FzZVxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLl90YXNrLmNhc2VJZCA9PT0gdGhpcy5fc2VsZWN0ZWRDYXNlU2VydmljZS5zZWxlY3RlZENhc2Uuc3RyaW5nSWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==