{"version":3,"file":"c8y-ngx-components-operations-shared.mjs","sources":["../../operations/shared/nav.factory.ts","../../operations/shared/operations.model.ts","../../operations/shared/operations.service.ts","../../operations/shared/operations-shared.module.ts","../../operations/shared/c8y-ngx-components-operations-shared.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\nimport { isNil, omitBy } from 'lodash-es';\n\nexport const DEVICE_CONTROL_NAVIGATOR_NODE_CONFIG = new InjectionToken<Partial<NavigatorNode>>(\n  'DEVICE_CONTROL_NAVIGATOR_NODE_CONFIG'\n);\n\n@Injectable()\nexport class OperationsNavigationFactory implements NavigatorNodeFactory {\n  navs: NavigatorNode[] = [];\n\n  constructor(\n    @Optional() @Inject(DEVICE_CONTROL_NAVIGATOR_NODE_CONFIG) private config: NavigatorNode\n  ) {}\n\n  async get() {\n    if (this.navs.length === 0) {\n      this.navs.push(\n        new NavigatorNode({\n          ...{\n            label: gettext('Device control'),\n            path: 'devicecontrol/single',\n            icon: 'c8y-icon c8y-icon-device-control',\n            parent: gettext('Overviews'),\n            priority: 1360\n          },\n          ...omitBy(this.config, isNil)\n        })\n      );\n    }\n    return this.navs;\n  }\n}\n","import { OperationStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { OperationStatusOption } from './status-option.model';\n\nexport const OPERATION_STATUS_LABELS = {\n  PENDING: gettext('Pending'),\n  EXECUTING: gettext('Executing'),\n  FAILED: gettext('Failed'),\n  SUCCESSFUL: gettext('Successful')\n};\n\nexport type OperationStatusOptionsMapShared = {\n  [key in keyof typeof OperationStatus]?: OperationStatusOption;\n};\n\nexport const OPERATION_STATUS_OPTIONS_MAP: OperationStatusOptionsMapShared = {\n  PENDING: {\n    label: OPERATION_STATUS_LABELS.PENDING,\n    status: OperationStatus.PENDING,\n    icon: 'clock-o',\n    styleClass: ''\n  } as unknown as OperationStatusOption,\n  EXECUTING: {\n    label: OPERATION_STATUS_LABELS.EXECUTING,\n    status: OperationStatus.EXECUTING,\n    icon: 'refresh',\n    styleClass: 'text-info'\n  } as unknown as OperationStatusOption,\n  SUCCESSFUL: {\n    label: OPERATION_STATUS_LABELS.SUCCESSFUL,\n    status: OperationStatus.SUCCESSFUL,\n    icon: 'check-circle',\n    styleClass: 'text-success'\n  } as unknown as OperationStatusOption,\n  FAILED: {\n    label: OPERATION_STATUS_LABELS.FAILED,\n    status: OperationStatus.FAILED,\n    icon: 'exclamation-circle',\n    styleClass: 'text-danger'\n  } as unknown as OperationStatusOption\n};\n\nexport const CLEAN_KEYS = ['creationTime', 'deviceExternalIDs', 'id', 'self'];\n\nexport const CLEAN_KEYS_UPDATE = ['deviceId', 'deviceName', 'bulkOperationId'];\n\nexport const RESERVED_KEYS = CLEAN_KEYS.concat(['deviceId', 'deviceName', 'bulkOperationId']);\n\nexport const STANDARD_KEYS = {\n  failureReason: gettext('Failure reason'),\n  description: gettext('Description'),\n  status: gettext('Status')\n};\n","import { Injectable } from '@angular/core';\nimport { IOperation, OperationService, OperationStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AlertService, ModalService, Status } from '@c8y/ngx-components';\nimport { assign, difference, has, includes, keys, pickBy, without } from 'lodash-es';\nimport { RESERVED_KEYS, STANDARD_KEYS } from './operations.model';\n\n@Injectable({ providedIn: 'root' })\nexport class OperationsService {\n  constructor(\n    private operationService: OperationService,\n    private modal: ModalService,\n    private alertService: AlertService\n  ) {}\n\n  getStandardKeys(operation: IOperation) {\n    return pickBy(STANDARD_KEYS, (_, key) => has(operation, key));\n  }\n\n  getNonStandardKeys(operation: IOperation, excluding: string[] = []) {\n    return without(\n      difference(this.getKeys(operation), keys(this.getStandardKeys(operation))),\n      ...excluding\n    );\n  }\n\n  async cancel(operation: Partial<IOperation>) {\n    try {\n      await this.modal.confirm(\n        gettext('Cancel operation'),\n        gettext('You are about to cancel the operation. Do you want to proceed?'),\n        Status.DANGER\n      );\n\n      const operationAfterUpdate = (\n        await this.operationService.update({\n          id: operation.id,\n          status: OperationStatus.FAILED,\n          failureReason: gettext('Operation cancelled by user.')\n        })\n      ).data;\n      assign(operation, operationAfterUpdate);\n      this.alertService.success(gettext('Operation cancelled.'));\n    } catch (er) {\n      if (er) {\n        this.alertService.addServerFailure(er);\n      }\n    }\n  }\n\n  private getKeys(managedObject) {\n    return Object.keys({ ...managedObject }).filter(key => !includes(RESERVED_KEYS, key));\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { OperationsService } from './operations.service';\n\n@NgModule({\n  providers: [OperationsService]\n})\nexport class OperationsSharedModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}