@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
48 lines • 7.49 kB
JavaScript
import { Injectable } from '@angular/core';
import { OperationService, OperationStatus } from '@c8y/client';
import { AlertService, gettext, ModalService, Status } from '@c8y/ngx-components';
import { assign, difference, has, includes, keys, pickBy, without } from 'lodash-es';
import { RESERVED_KEYS, STANDARD_KEYS } from './operations.model';
import * as i0 from "@angular/core";
import * as i1 from "@c8y/client";
import * as i2 from "@c8y/ngx-components";
export class OperationsService {
constructor(operationService, modal, alertService) {
this.operationService = operationService;
this.modal = modal;
this.alertService = alertService;
}
getStandardKeys(operation) {
return pickBy(STANDARD_KEYS, (_, key) => has(operation, key));
}
getNonStandardKeys(operation, excluding = []) {
return without(difference(this.getKeys(operation), keys(this.getStandardKeys(operation))), ...excluding);
}
async cancel(operation) {
try {
await this.modal.confirm(gettext('Cancel operation'), gettext('You are about to cancel the operation. Do you want to proceed?'), Status.DANGER);
const operationAfterUpdate = (await this.operationService.update({
id: operation.id,
status: OperationStatus.FAILED,
failureReason: gettext('Operation cancelled by user.')
})).data;
assign(operation, operationAfterUpdate);
this.alertService.success(gettext('Operation cancelled.'));
}
catch (er) {
if (er) {
this.alertService.addServerFailure(er);
}
}
}
getKeys(managedObject) {
return Object.keys({ ...managedObject }).filter(key => !includes(RESERVED_KEYS, key));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OperationsService, deps: [{ token: i1.OperationService }, { token: i2.ModalService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OperationsService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OperationsService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: i1.OperationService }, { type: i2.ModalService }, { type: i2.AlertService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vb3BlcmF0aW9ucy9zaGFyZWQvb3BlcmF0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyRixPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBR2xFLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFDVSxnQkFBa0MsRUFDbEMsS0FBbUIsRUFDbkIsWUFBMEI7UUFGMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQ2pDLENBQUM7SUFFSixlQUFlLENBQUMsU0FBcUI7UUFDbkMsT0FBTyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxTQUFxQixFQUFFLFlBQXNCLEVBQUU7UUFDaEUsT0FBTyxPQUFPLENBQ1osVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUMxRSxHQUFHLFNBQVMsQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBOEI7UUFDekMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDdEIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQzNCLE9BQU8sQ0FBQyxnRUFBZ0UsQ0FBQyxFQUN6RSxNQUFNLENBQUMsTUFBTSxDQUNkLENBQUM7WUFFRixNQUFNLG9CQUFvQixHQUFHLENBQzNCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztnQkFDakMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFO2dCQUNoQixNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU07Z0JBQzlCLGFBQWEsRUFBRSxPQUFPLENBQUMsOEJBQThCLENBQUM7YUFDdkQsQ0FBQyxDQUNILENBQUMsSUFBSSxDQUFDO1lBQ1AsTUFBTSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDWixJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sT0FBTyxDQUFDLGFBQWE7UUFDM0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7K0dBNUNVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBREosTUFBTTs7NEZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uLCBPcGVyYXRpb25TZXJ2aWNlLCBPcGVyYXRpb25TdGF0dXMgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIGdldHRleHQsIE1vZGFsU2VydmljZSwgU3RhdHVzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBhc3NpZ24sIGRpZmZlcmVuY2UsIGhhcywgaW5jbHVkZXMsIGtleXMsIHBpY2tCeSwgd2l0aG91dCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBSRVNFUlZFRF9LRVlTLCBTVEFOREFSRF9LRVlTIH0gZnJvbSAnLi9vcGVyYXRpb25zLm1vZGVsJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25zU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3BlcmF0aW9uU2VydmljZTogT3BlcmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxuICApIHt9XG5cbiAgZ2V0U3RhbmRhcmRLZXlzKG9wZXJhdGlvbjogSU9wZXJhdGlvbikge1xuICAgIHJldHVybiBwaWNrQnkoU1RBTkRBUkRfS0VZUywgKF8sIGtleSkgPT4gaGFzKG9wZXJhdGlvbiwga2V5KSk7XG4gIH1cblxuICBnZXROb25TdGFuZGFyZEtleXMob3BlcmF0aW9uOiBJT3BlcmF0aW9uLCBleGNsdWRpbmc6IHN0cmluZ1tdID0gW10pIHtcbiAgICByZXR1cm4gd2l0aG91dChcbiAgICAgIGRpZmZlcmVuY2UodGhpcy5nZXRLZXlzKG9wZXJhdGlvbiksIGtleXModGhpcy5nZXRTdGFuZGFyZEtleXMob3BlcmF0aW9uKSkpLFxuICAgICAgLi4uZXhjbHVkaW5nXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbChvcGVyYXRpb246IFBhcnRpYWw8SU9wZXJhdGlvbj4pIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdDYW5jZWwgb3BlcmF0aW9uJyksXG4gICAgICAgIGdldHRleHQoJ1lvdSBhcmUgYWJvdXQgdG8gY2FuY2VsIHRoZSBvcGVyYXRpb24uIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/JyksXG4gICAgICAgIFN0YXR1cy5EQU5HRVJcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IG9wZXJhdGlvbkFmdGVyVXBkYXRlID0gKFxuICAgICAgICBhd2FpdCB0aGlzLm9wZXJhdGlvblNlcnZpY2UudXBkYXRlKHtcbiAgICAgICAgICBpZDogb3BlcmF0aW9uLmlkLFxuICAgICAgICAgIHN0YXR1czogT3BlcmF0aW9uU3RhdHVzLkZBSUxFRCxcbiAgICAgICAgICBmYWlsdXJlUmVhc29uOiBnZXR0ZXh0KCdPcGVyYXRpb24gY2FuY2VsbGVkIGJ5IHVzZXIuJylcbiAgICAgICAgfSlcbiAgICAgICkuZGF0YTtcbiAgICAgIGFzc2lnbihvcGVyYXRpb24sIG9wZXJhdGlvbkFmdGVyVXBkYXRlKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnT3BlcmF0aW9uIGNhbmNlbGxlZC4nKSk7XG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIGlmIChlcikge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEtleXMobWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh7IC4uLm1hbmFnZWRPYmplY3QgfSkuZmlsdGVyKGtleSA9PiAhaW5jbHVkZXMoUkVTRVJWRURfS0VZUywga2V5KSk7XG4gIH1cbn1cbiJdfQ==