{"version":3,"file":"c8y-ngx-components-operations-bulk-single-operations-list.mjs","sources":["../../operations/bulk-single-operations-list/single-operation-item.component.ts","../../operations/bulk-single-operations-list/single-operation-item.component.html","../../operations/bulk-single-operations-list/single-operations-list.component.ts","../../operations/bulk-single-operations-list/single-operations-list.component.html","../../operations/bulk-single-operations-list/bulk-single-operations-list.module.ts","../../operations/bulk-single-operations-list/c8y-ngx-components-operations-bulk-single-operations-list.ts"],"sourcesContent":["import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { InventoryService, IOperation, OperationService } from '@c8y/client';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport {\n  ACTIONS_OPERATIONS,\n  BULK_OPERATION_EVENT,\n  COMPONENTS\n} from '@c8y/ngx-components/operations/product-experience';\nimport {\n  OPERATION_STATUS_LABELS,\n  OPERATION_STATUS_OPTIONS_MAP,\n  OperationStatusOptionsMapShared\n} from '@c8y/ngx-components/operations/shared';\nimport { omit } from 'lodash-es';\n\n/**\n * @deprecated Single operations list in bulk operations details has been replaced by data grid. This component will be removed in the future.\n */\n@Component({\n  selector: 'c8y-single-operation-item',\n  templateUrl: './single-operation-item.component.html',\n  standalone: false\n})\nexport class SingleOperationItemComponent {\n  BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n  ACTIONS = ACTIONS_OPERATIONS;\n  COMPONENTS = COMPONENTS;\n  device = {};\n  OPERATION_STATUS_LABELS = OPERATION_STATUS_LABELS;\n  OPERATION_STATUS_OPTIONS_MAP: OperationStatusOptionsMapShared = OPERATION_STATUS_OPTIONS_MAP;\n  @Input()\n  operation: IOperation;\n  @Input()\n  readOnly = false;\n  @ViewChild('failureReason', { static: true }) failureReasonRef: ElementRef;\n\n  constructor(\n    private alertService: AlertService,\n    private inventoryService: InventoryService,\n    private operationService: OperationService\n  ) {}\n\n  async ngOnInit() {\n    this.device = (await this.inventoryService.detail(this.operation.deviceId))?.data;\n  }\n\n  async retrySingleOperation(singleOperation) {\n    const operationToCreate = omit(singleOperation, [\n      'id',\n      'self',\n      'status',\n      'failureReason',\n      'creationTime',\n      'delivery'\n    ]);\n\n    try {\n      await this.operationService.create(operationToCreate);\n      this.alertService.success(gettext('Operation created.'));\n    } catch (er) {\n      this.alertService.addServerFailure(er);\n    }\n  }\n}\n","<c8y-li class=\"c8y-list__item--double-actions\">\n  <c8y-li-icon>\n    <i\n      [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].icon\"\n      [tooltip]=\"operation.status.toString() | translate\"\n      [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].styleClass\"\n    ></i>\n  </c8y-li-icon>\n  <div [ngClass]=\"{ 'content-flex-80': !readOnly, 'content-flex-50': readOnly }\">\n    <div class=\"col-4\">\n      <span class=\"m-r-4\">\n        <device-status [mo]=\"device\"></device-status>\n      </span>\n      <a\n        [routerLink]=\"['/device', operation.deviceId, 'device-info']\"\n        routerLinkActive=\"active\"\n      >\n        {{ operation.deviceName }}\n      </a>\n    </div>\n    <div class=\"col-3\">\n      <small class=\"icon-flex text-muted\">\n        <i\n          class=\"m-r-4\"\n          c8yIcon=\"calendar\"\n        ></i>\n        {{ operation.creationTime | c8yDate }}\n      </small>\n    </div>\n    <div class=\"col-5\">\n      <div class=\"d-flex a-i-center\">\n        <span\n          class=\"text-truncate\"\n          #failureReason\n        >\n          {{ operation.failureReason | translate }}\n        </span>\n        <button\n          class=\"btn-help btn-help--sm\"\n          [attr.aria-label]=\"'Help' | translate\"\n          popover=\"{{ operation.failureReason | translate }}\"\n          placement=\"left\"\n          triggers=\"focus\"\n          type=\"button\"\n          *ngIf=\"failureReason.offsetWidth < failureReason.scrollWidth\"\n        >\n          <i [c8yIcon]=\"'info-circle'\"></i>\n        </button>\n        <div\n          class=\"showOnHover p-l-8 p-r-8 fit-h-20 m-l-auto\"\n          *ngIf=\"\n            !readOnly &&\n            operation.status.toString() == OPERATION_STATUS_OPTIONS_MAP.FAILED.status.toString()\n          \"\n        >\n          <button\n            class=\"btn btn-default btn-xs\"\n            title=\"{{ 'Retry operation' | translate }}\"\n            type=\"button\"\n            (click)=\"retrySingleOperation(operation)\"\n            c8yProductExperience\n            [actionName]=\"BULK_OPERATION_EVENT\"\n            [actionData]=\"{ action: ACTIONS.RETRY, component: COMPONENTS.SINGLE_OPERATION_ITEM }\"\n          >\n            <i [c8yIcon]=\"'repeat m-r-4'\"></i>\n            {{ 'Retry operation' | translate }}\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>\n</c8y-li>\n","import { NgIf } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  inject,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n  IOperation,\n  IOperationBulk,\n  IResultList,\n  OperationService,\n  OperationStatus\n} from '@c8y/client';\nimport {\n  ActionControl,\n  AlertService,\n  C8yTranslatePipe,\n  Column,\n  DataGridComponent,\n  DataSourceModifier,\n  DisplayOptions,\n  EmptyStateComponent,\n  gettext,\n  IconDirective,\n  Pagination,\n  ServerSideDataCallback,\n  ServerSideDataResult\n} from '@c8y/ngx-components';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport {\n  CreationTimeGridColumn,\n  DeviceGridColumn,\n  FailureReasonGridColumn,\n  OperationStatusGridColumn\n} from '@c8y/ngx-components/operations/grid-columns';\nimport {\n  OPERATION_STATUS_LABELS,\n  OPERATION_STATUS_OPTIONS_MAP,\n  OperationStatusOption,\n  OperationStatusOptionsMapShared\n} from '@c8y/ngx-components/operations/shared';\nimport {\n  StatusFilterComponent,\n  StatusFilterModule\n} from '@c8y/ngx-components/operations/status-filter';\nimport { omit } from 'lodash-es';\nimport { merge, Subject, throttleTime } from 'rxjs';\n\n@Component({\n  standalone: true,\n  selector: 'c8y-single-operations-list',\n  templateUrl: './single-operations-list.component.html',\n  imports: [\n    StatusFilterModule,\n    NgIf,\n    C8yTranslatePipe,\n    IconDirective,\n    DataGridComponent,\n    EmptyStateComponent\n  ]\n})\nexport class SingleOperationsListComponent implements AfterViewInit, OnChanges {\n  @Input()\n  bulkOperation: Partial<IOperationBulk>;\n  @Input()\n  readOnly = false;\n  @Output() onRetryFailedOperations: EventEmitter<Partial<IOperationBulk>> = new EventEmitter();\n\n  @ViewChild(StatusFilterComponent, { static: false })\n  statusFilter: StatusFilterComponent;\n  @ViewChild(DataGridComponent, { static: false })\n  dataGrid: DataGridComponent;\n\n  OPERATION_STATUS = { ...OperationStatus, ALL: gettext('ALL') };\n  OPERATION_STATUS_LABELS = OPERATION_STATUS_LABELS;\n  OPERATION_STATUS_OPTIONS_MAP: OperationStatusOptionsMapShared = OPERATION_STATUS_OPTIONS_MAP;\n  singleOperations: IResultList<IOperation>;\n\n  displayOptions: Partial<DisplayOptions> = {\n    gridHeader: false\n  };\n  pagination: Pagination = {\n    pageSize: 25,\n    currentPage: 1\n  };\n\n  columns: Column[] = [\n    new OperationStatusGridColumn(),\n    new DeviceGridColumn(),\n    new CreationTimeGridColumn(),\n    new FailureReasonGridColumn()\n  ];\n\n  actions: ActionControl[] = [\n    {\n      type: 'retry',\n      icon: 'repeat',\n      label: gettext('Retry operation'),\n      text: gettext('Retry operation'),\n      callback: operation => {\n        this.retrySingleOperation(operation);\n      },\n      showIf: operation =>\n        !this.readOnly &&\n        operation.status.toString() === OPERATION_STATUS_OPTIONS_MAP.FAILED.status.toString()\n    }\n  ];\n\n  serverSideDataCallback: ServerSideDataCallback;\n\n  private operationService = inject(OperationService);\n  private alertService = inject(AlertService);\n  private filterStatus: OperationStatus;\n  private reload$ = new Subject<void>();\n  private reloadThrottled$ = new Subject<void>();\n\n  constructor(private bulkOperationsService: BulkOperationsService) {\n    this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n    merge(this.reload$, this.reloadThrottled$.pipe(throttleTime(30_000)))\n      .pipe(takeUntilDestroyed())\n      .subscribe(() => this.dataGrid?.reload(false));\n  }\n\n  async ngAfterViewInit() {\n    if (this.statusFilter) {\n      this.setStatusFilter(false);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.bulkOperation && !changes.bulkOperation.firstChange) {\n      this.reloadThrottled$.next();\n    }\n  }\n\n  reload(option?: OperationStatusOption[]) {\n    const [opt] = option ?? [];\n    this.filterStatus = opt?.status ?? this.filterStatus;\n    this.reload$.next();\n  }\n\n  async onDataSourceModifier(\n    dataSourceModifier: DataSourceModifier\n  ): Promise<ServerSideDataResult> {\n    const filter = this.filterStatus ?? this.getFilterTypeOfSingleOperations();\n    const { res, data, paging } = await this.bulkOperationsService.getSingleOperationsByStatus(\n      filter,\n      this.bulkOperation.id,\n      dataSourceModifier.pagination\n    );\n\n    const filteredSize = await this.bulkOperationsService.getSingleOperationsCountByStatus(\n      filter,\n      this.bulkOperation.id\n    );\n\n    const size = await this.bulkOperationsService.getSingleOperationsTotal(this.bulkOperation.id);\n\n    const serverSideDataResult: ServerSideDataResult = { res, data, paging, filteredSize, size };\n\n    return serverSideDataResult;\n  }\n\n  setStatusFilter(emit = true) {\n    if (this.statusFilter) {\n      const typeFilter = this.getFilterTypeOfSingleOperations();\n      this.statusFilter.preset(\n        typeFilter === this.OPERATION_STATUS.ALL\n          ? []\n          : [{ label: this.OPERATION_STATUS_LABELS[typeFilter] }],\n        emit\n      );\n    } else {\n      setTimeout(this.setStatusFilter.bind(this, emit));\n    }\n  }\n\n  getFilterTypeOfSingleOperations() {\n    const { progress } = this.bulkOperation;\n\n    if (progress.failed > 0) {\n      return this.OPERATION_STATUS.FAILED;\n    } else if (progress.failed === 0 && progress.successful === 0 && progress.pending === 0) {\n      return this.OPERATION_STATUS.EXECUTING;\n    } else if (progress.failed === 0 && progress.successful === 0 && progress.executing === 0) {\n      return this.OPERATION_STATUS.PENDING;\n    } else if (progress.failed === 0 && progress.pending === 0 && progress.executing === 0) {\n      return this.OPERATION_STATUS.SUCCESSFUL;\n    }\n\n    return this.OPERATION_STATUS.ALL;\n  }\n\n  retryBulkOperation() {\n    this.onRetryFailedOperations.emit(this.bulkOperation);\n  }\n\n  async retrySingleOperation(singleOperation) {\n    const operationToCreate = omit(singleOperation, [\n      'id',\n      'self',\n      'status',\n      'failureReason',\n      'creationTime',\n      'delivery'\n    ]);\n\n    try {\n      await this.operationService.create(operationToCreate);\n      this.alertService.success(gettext('Operation created.'));\n    } catch (er) {\n      this.alertService.addServerFailure(er);\n    }\n  }\n}\n","<ng-container\n  *ngIf=\"\n    bulkOperation.progress.failed ||\n    bulkOperation.progress.executing ||\n    bulkOperation.progress.pending ||\n    bulkOperation.progress.successful\n  \"\n>\n  <div\n    class=\"legend form-block p-t-16 m-b-0\"\n    translate\n  >\n    Operations\n  </div>\n  <div class=\"d-flex a-i-center\">\n    <div class=\"d-flex a-i-center p-b-8\">\n      <span\n        class=\"m-r-4 text-medium\"\n        translate\n      >\n        Filter by status\n      </span>\n      <c8y-status-filter\n        small\n        [options]=\"OPERATION_STATUS_OPTIONS_MAP\"\n        (onFilterChanged)=\"reload($event)\"\n      ></c8y-status-filter>\n    </div>\n    <div\n      class=\"m-l-auto p-b-8\"\n      *ngIf=\"!readOnly && bulkOperation.progress.failed > 0\"\n    >\n      <button\n        class=\"btn btn-navbar\"\n        title=\"{{ 'Retry failed operations' | translate }}\"\n        (click)=\"retryBulkOperation()\"\n      >\n        <i\n          class=\"m-r-4\"\n          c8yIcon=\"repeat\"\n        ></i>\n        <span translate>Retry failed operations</span>\n      </button>\n    </div>\n  </div>\n  <c8y-data-grid\n    [actionControls]=\"actions\"\n    [columns]=\"columns\"\n    [displayOptions]=\"displayOptions\"\n    [serverSideDataCallback]=\"serverSideDataCallback\"\n    [pagination]=\"pagination\"\n  >\n    <c8y-ui-empty-state\n      icon=\"search\"\n      [title]=\"'No single operations of the selected status to display.' | translate\"\n      [subtitle]=\"'Single operations will be displayed here' | translate\"\n      horizontal\n    ></c8y-ui-empty-state>\n  </c8y-data-grid>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { SingleOperationItemComponent } from './single-operation-item.component';\nimport { SingleOperationsListComponent } from './single-operations-list.component';\n\n/**\n * This module allows for displaying the list of single operations in a bulk operations details.\n *\n * @deprecated This module is deprecated and will be removed in a future version. I\n * nstead, use the `SingleOperationsListComponent` as a standalone component directly.\n */\n@NgModule({\n  imports: [CoreModule, PopoverModule, RouterModule, TooltipModule, SingleOperationsListComponent],\n  declarations: [SingleOperationItemComponent],\n  exports: [SingleOperationsListComponent, SingleOperationItemComponent]\n})\nexport class BulkSingleOperationsListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}