{"version":3,"file":"c8y-ngx-components-operations-bulk-operation-list-item.mjs","sources":["../../operations/bulk-operation-list-item/bulk-operation-list-item.model.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.model.ts","../../operations/bulk-operation-list-item/modal-body-host.directive.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.component.ts","../../operations/bulk-operation-list-item/bulk-operation-wrapper.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.service.ts","../../operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.ts","../../operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.component.ts","../../operations/bulk-operation-list-item/bulk-operation-list-item.component.html","../../operations/bulk-operation-list-item/bulk-operation-list-item.module.ts","../../operations/bulk-operation-list-item/c8y-ngx-components-operations-bulk-operation-list-item.ts"],"sourcesContent":["import { OperationBulkGeneralStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { OperationStatusOption } from '@c8y/ngx-components/operations/shared';\n\nexport type OperationStatusOptionsMap = {\n  [key in keyof typeof BULK_OPERATION_STATUS_LABELS]?: OperationStatusOption;\n};\n\nexport const BULK_OPERATION_STATUS_LABELS = {\n  SCHEDULED: gettext('Scheduled'),\n  EXECUTING: gettext('Executing'),\n  CANCELED: gettext('Canceled'),\n  FAILED: gettext('Completed with failures'),\n  SUCCESSFUL: gettext('Completed successfully'),\n  DELETED: gettext('Deleted')\n};\n\nexport const BULK_OPERATION_STATUS_OPTIONS: OperationStatusOptionsMap = {\n  SCHEDULED: {\n    label: BULK_OPERATION_STATUS_LABELS.SCHEDULED,\n    generalStatuses: [OperationBulkGeneralStatus.SCHEDULED],\n    icon: 'calendar',\n    styleClass: 'text-info'\n  },\n  EXECUTING: {\n    label: BULK_OPERATION_STATUS_LABELS.EXECUTING,\n    generalStatuses: [\n      OperationBulkGeneralStatus.EXECUTING,\n      OperationBulkGeneralStatus.EXECUTING_WITH_ERROR\n    ],\n    icon: 'refresh',\n    styleClass: 'text-primary'\n  },\n  DELETED: {\n    label: BULK_OPERATION_STATUS_LABELS.DELETED,\n    generalStatuses: [OperationBulkGeneralStatus.DELETED],\n    icon: 'delete-document',\n    styleClass: 'text-muted'\n  },\n  CANCELED: {\n    label: BULK_OPERATION_STATUS_LABELS.CANCELED,\n    generalStatuses: [OperationBulkGeneralStatus.CANCELED],\n    icon: 'ban',\n    styleClass: 'text-primary'\n  },\n  FAILED: {\n    label: BULK_OPERATION_STATUS_LABELS.FAILED,\n    generalStatuses: [OperationBulkGeneralStatus.FAILED],\n    icon: 'exclamation-circle',\n    styleClass: 'text-danger'\n  },\n  SUCCESSFUL: {\n    label: BULK_OPERATION_STATUS_LABELS.SUCCESSFUL,\n    generalStatuses: [OperationBulkGeneralStatus.SUCCESSFUL],\n    icon: 'check-circle',\n    styleClass: 'text-success'\n  }\n};\n","import { EventEmitter, InjectionToken, Type } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\n\nexport const BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT =\n  new InjectionToken<BulkOperationDetailsModalBodyConfiguration>(\n    'BulkOperationWrapperModalBodyComponent'\n  );\n\nexport interface BulkOperationDetailsModalBodyConfiguration {\n  component: Type<BulkOperationDetailsModalBody>;\n  config?: object;\n}\n\nexport interface BulkOperationDetailsModalBody {\n  bulkOperation: Partial<IOperationBulk>;\n  showFailedOperation: EventEmitter<any>;\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({ selector: '[modalBodyHost]' })\nexport class ModalBodyHostDirective {\n  constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Component, Inject, Input, OnDestroy, OnInit, Optional, ViewChild } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { assign } from 'lodash-es';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n  BulkOperationDetailsModalBody,\n  BulkOperationDetailsModalBodyConfiguration,\n  BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT\n} from './bulk-operation-wrapper.model';\nimport { ModalBodyHostDirective } from './modal-body-host.directive';\nimport { C8yTranslatePipe } from '@c8y/ngx-components';\n@Component({\n  selector: 'c8y-bulk-operations-wrapper',\n  templateUrl: './bulk-operation-wrapper.component.html',\n  imports: [ModalBodyHostDirective, C8yTranslatePipe]\n})\nexport class BulkOperationWrapperComponent implements OnInit, OnDestroy {\n  @Input() bulkOperation: Partial<IOperationBulk>;\n\n  @ViewChild(ModalBodyHostDirective, { static: true })\n  modalBodyHost: ModalBodyHostDirective;\n\n  private destroyed$: Subject<void> = new Subject();\n\n  constructor(\n    public bulkOperationsService: BulkOperationsService,\n    public modalRef: BsModalRef,\n    private modalService: BsModalService,\n    @Optional()\n    @Inject(BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT)\n    private modalBodyConfig: BulkOperationDetailsModalBodyConfiguration\n  ) {}\n\n  ngOnInit(): void {\n    if (this.modalBodyConfig) {\n      const componentRef =\n        this.modalBodyHost.viewContainerRef.createComponent<BulkOperationDetailsModalBody>(\n          this.modalBodyConfig.component\n        );\n      assign(componentRef.instance, this.modalBodyConfig.config);\n      componentRef.instance.bulkOperation = this.bulkOperation;\n      componentRef.instance.showFailedOperation\n        .pipe(takeUntil(this.destroyed$))\n        .subscribe(event => this.openDetails(event));\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed$.next();\n    this.destroyed$.complete();\n  }\n\n  // openDetails function needs to be defined in the both places (component and the service) to avoid circular dependency.\n  async openDetails(bulkOperationId: string | number) {\n    const bulkOperation: IOperationBulk = (\n      await this.bulkOperationsService.getBulkOperationById(bulkOperationId)\n    ).data;\n    const initialState = { bulkOperation };\n    this.modalService.show(BulkOperationWrapperComponent, {\n      initialState,\n      class: 'modal-lg',\n      ariaDescribedby: 'modal-body',\n      ariaLabelledBy: 'modal-title'\n    });\n  }\n}\n","<div class=\"viewport-modal\">\n  <div class=\"modal-header\">\n    <h3 id=\"modal-title\">{{ 'Bulk operation details' | translate }}</h3>\n  </div>\n\n  <div class=\"modal-inner-scroll\" id=\"modal-body\">\n    <ng-container modalBodyHost></ng-container>\n  </div>\n\n  <div class=\"modal-footer\">\n    <button\n      title=\"{{ 'Close' | translate }}\"\n      type=\"button\"\n      class=\"btn btn-default\"\n      (click)=\"modalRef.hide()\"\n    >\n      {{ 'Close' | translate }}\n    </button>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { BulkOperationModalDetailsService } from '@c8y/ngx-components/operations/bulk-operation-modal-details';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\n\n@Injectable({ providedIn: 'root' })\nexport class BulkOperationListItemService implements BulkOperationModalDetailsService {\n  constructor(\n    private bulkOperationsService: BulkOperationsService,\n    private modalService: BsModalService\n  ) {}\n\n  async openDetails(bulkOperationId: string | number) {\n    const bulkOperation: IOperationBulk = (\n      await this.bulkOperationsService.getBulkOperationById(bulkOperationId)\n    ).data;\n    const initialState = { bulkOperation };\n    this.modalService.show(BulkOperationWrapperComponent, {\n      initialState,\n      class: 'modal-lg',\n      ariaDescribedby: 'modal-body',\n      ariaLabelledBy: 'modal-title'\n    });\n  }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { IOperationBulk } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  AlertService,\n  GainsightService,\n  IconDirective,\n  ProductExperienceDirective,\n  C8yTranslateDirective,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n  OperationSchedule,\n  OperationSchedulerComponent\n} from '@c8y/ngx-components/operations/bulk-operation-scheduler';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BULK_OPERATION_EVENT } from '@c8y/ngx-components/operations/product-experience';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { OperationSummaryComponent } from '@c8y/ngx-components/operations/operation-summary';\nimport { FormsModule } from '@angular/forms';\n@Component({\n  selector: 'c8y-bulk-operations-reschedule-modal',\n  templateUrl: 'bulk-operations-reschedule-modal.component.html',\n  imports: [\n    IconDirective,\n    OperationSummaryComponent,\n    OperationSchedulerComponent,\n    FormsModule,\n    ProductExperienceDirective,\n    C8yTranslateDirective,\n    C8yTranslatePipe\n  ]\n})\nexport class BulkOperationsRescheduleModalComponent implements OnInit {\n  BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n  closeSubject: Subject<IOperationBulk> = new Subject();\n  dateAndDelay: OperationSchedule;\n  bulkOperation: Partial<IOperationBulk>;\n  isRetryOperation: boolean;\n  modalTitle: string;\n\n  private readonly CARRIAGE_RETURN_CODE = 'Escape';\n\n  constructor(\n    public bsModalRef: BsModalRef,\n    private bulkOperationsService: BulkOperationsService,\n    private alert: AlertService,\n    private gainsightService: GainsightService\n  ) {}\n\n  @HostListener('window:keyup', ['$event'])\n  onKeyUp(event: KeyboardEvent) {\n    if (event.code === this.CARRIAGE_RETURN_CODE) {\n      this.gainsightService.triggerEvent('modalDialog', {\n        title: this.modalTitle,\n        result: 'Cancel'\n      });\n    }\n  }\n\n  ngOnInit() {\n    this.modalTitle = this.getTitle();\n  }\n\n  onDateAndDelaySelect($event) {\n    this.dateAndDelay = $event;\n  }\n\n  getTitle() {\n    return this.isRetryOperation ? gettext('Retry operation') : gettext('Edit schedule');\n  }\n\n  onCancel() {\n    this.bsModalRef.hide();\n  }\n\n  async onSave() {\n    let newBulkOperation;\n    this.bulkOperation.startDate = this.dateAndDelay.scheduledDate.toISOString();\n    this.bulkOperation.creationRamp = this.dateAndDelay.delayInSeconds;\n\n    if (this.isRetryOperation) {\n      try {\n        newBulkOperation = await this.bulkOperationsService.createBulkOperation(this.bulkOperation);\n        this.alert.success(gettext('Successfully rescheduled for a retry.'));\n      } catch (er) {\n        this.alert.addServerFailure(er);\n      }\n    } else {\n      try {\n        newBulkOperation = await this.bulkOperationsService.updateBulkOperation(this.bulkOperation);\n        this.alert.success(gettext('Successfully rescheduled.'));\n      } catch (er) {\n        this.alert.addServerFailure(er);\n      }\n    }\n\n    // send back to component from which modal was called\n    this.closeSubject.next(newBulkOperation.data);\n    this.bsModalRef.hide();\n  }\n}\n","<div class=\"viewport-modal\">\n  <div class=\"modal-header dialog-header\">\n    <i c8yIcon=\"c8y-energy\"></i>\n    <h4 id=\"modal-title\">{{ modalTitle | translate }}</h4>\n  </div>\n  <div class=\"modal-inner-scroll\" id=\"modal-body\">\n    <div class=\"modal-body\">\n      <div class=\"text-center\">\n        <c8y-operation-summary\n          [description]=\"bulkOperation.operationPrototype.description\"\n        ></c8y-operation-summary>\n      </div>\n      <div class=\"p-t-16 center-block\" style=\"max-width: 300px\">\n        <c8y-operation-scheduler\n          [(ngModel)]=\"dateAndDelay\"\n          #scheduler=\"ngModel\"\n        ></c8y-operation-scheduler>\n      </div>\n    </div>\n  </div>\n  <div class=\"modal-footer\">\n    <button\n      (click)=\"onCancel()\"\n      type=\"button\"\n      class=\"btn btn-default\"\n      title=\"{{ 'Cancel' | translate }}\"\n      c8yProductExperience\n      [actionName]=\"BULK_OPERATION_EVENT\"\n      [actionData]=\"{ title: modalTitle, result: 'Cancel' }\"\n    >\n      <span translate>Cancel</span>\n    </button>\n    <button\n      id=\"save-btn\"\n      (click)=\"onSave()\"\n      type=\"button\"\n      class=\"btn btn-primary\"\n      title=\"{{ 'Save' | translate }}\"\n      [disabled]=\"scheduler?.control?.errors\"\n      c8yProductExperience\n      [actionName]=\"BULK_OPERATION_EVENT\"\n      [actionData]=\"{ title: modalTitle, result: 'Save' }\"\n    >\n      <span translate>Save</span>\n    </button>\n  </div>\n</div>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport { IOperationBulk, OperationBulkGeneralStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  AlertService,\n  ListItemComponent,\n  ModalService,\n  Status,\n  ListItemIconComponent,\n  IconDirective,\n  C8yTranslateDirective,\n  ListItemActionComponent,\n  ProductExperienceDirective,\n  ListItemCollapseComponent,\n  C8yTranslatePipe,\n  DatePipe,\n  NumberPipe\n} from '@c8y/ngx-components';\nimport { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { BULK_OPERATION_EVENT } from '@c8y/ngx-components/operations/product-experience';\nimport { assign, cloneDeep, find, values } from 'lodash-es';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport {\n  BULK_OPERATION_STATUS_OPTIONS,\n  OperationStatusOptionsMap\n} from './bulk-operation-list-item.model';\nimport { BulkOperationListItemService } from './bulk-operation-list-item.service';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\nimport { OperationDetailsTabsComponent } from '@c8y/ngx-components/operations/operations-list-item-details';\n\n@Component({\n  selector: 'c8y-bulk-operation-list-item',\n  templateUrl: './bulk-operation-list-item.component.html',\n  imports: [\n    ListItemComponent,\n    NgClass,\n    ListItemIconComponent,\n    IconDirective,\n    TooltipDirective,\n    NgIf,\n    C8yTranslateDirective,\n    PopoverDirective,\n    ListItemActionComponent,\n    ProductExperienceDirective,\n    ListItemCollapseComponent,\n    OperationDetailsTabsComponent,\n    C8yTranslatePipe,\n    DatePipe,\n    NumberPipe\n  ]\n})\nexport class BulkOperationListItemComponent implements OnInit, OnChanges {\n  BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n  @Input()\n  bulkOperation: Partial<IOperationBulk>;\n  @Input()\n  detailsCollapsed = true;\n  @Input()\n  readOnly = false;\n  @Output() showFailedOperation = new EventEmitter();\n  @Output() reload: EventEmitter<any> = new EventEmitter();\n  @ViewChild('listItem', { static: true }) listItem: ListItemComponent;\n  iconClass: string;\n  finishDate: number;\n  refreshLoading = false;\n  bulkOperationGeneralStatus = OperationBulkGeneralStatus;\n  BULK_OPERATION_STATUS_OPTIONS: OperationStatusOptionsMap = BULK_OPERATION_STATUS_OPTIONS;\n  bsModalRef: BsModalRef;\n  finishDatePopoverText: string = gettext(\n    'Approximate date, estimated based on the bulk operation settings.'\n  );\n  progressBarClass = 'progress';\n  progressBarColor: string;\n  progressBarStatus = 0;\n\n  constructor(\n    public bulkOperationListItemService: BulkOperationListItemService,\n    private bulkOperationsService: BulkOperationsService,\n    private modal: ModalService,\n    private alert: AlertService,\n    private bsModalService: BsModalService\n  ) {}\n\n  ngOnInit() {\n    this.finishDate = this.calculateFinishDateMs();\n    this.setProgressBar();\n  }\n\n  getOperationStatusOptions() {\n    const statusOptions = values(BULK_OPERATION_STATUS_OPTIONS);\n    return find(statusOptions, options =>\n      options.generalStatuses.includes(this.bulkOperation.generalStatus)\n    );\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.bulkOperation && !changes.bulkOperation.firstChange) {\n      this.setProgressBar();\n    }\n  }\n  calculateFinishDateMs(): number {\n    const startDateMs: number = new Date(this.bulkOperation.startDate).getTime();\n    const creationRampMs: number = this.bulkOperation.creationRamp * 1000;\n\n    return startDateMs + creationRampMs * this.bulkOperation.progress.all;\n  }\n\n  progressBarProgressFn() {\n    return (\n      ((this.bulkOperation.progress.successful + this.bulkOperation.progress.failed) /\n        this.bulkOperation.progress.all) *\n      100\n    );\n  }\n\n  setProgressBar() {\n    const staticContentOfClass = 'progress-bar progress-striped active progress-bar';\n\n    const progressBarState = {\n      EXECUTING: {\n        progressBarClass: 'progress progress-striped active',\n        progressBarColor: `${staticContentOfClass}-primary`,\n        progressBarStatus: this.progressBarProgressFn()\n      },\n      EXECUTING_WITH_ERROR: {\n        progressBarClass: 'progress progress-striped active',\n        progressBarColor: `${staticContentOfClass}-danger`,\n        progressBarStatus: this.progressBarProgressFn()\n      },\n      FAILED: {\n        progressBarClass: 'progress',\n        progressBarColor: `${staticContentOfClass}-danger`,\n        progressBarStatus: 100\n      },\n      SUCCESSFUL: {\n        progressBarClass: 'progress',\n        progressBarColor: `${staticContentOfClass}-success`,\n        progressBarStatus: 100\n      }\n    };\n\n    assign(this, progressBarState[this.bulkOperation.generalStatus]);\n  }\n\n  editSchedule() {\n    const rescheduledOperation = cloneDeep(this.bulkOperation);\n    const initialState = {\n      bulkOperation: rescheduledOperation\n    };\n    const modalOptions = {\n      initialState,\n      class: 'modal-sm',\n      ariaDescribedby: 'modal-body',\n      ariaLabelledBy: 'modal-title',\n      backdrop: 'static'\n    } as ModalOptions;\n    this.bsModalRef = this.bsModalService.show(\n      BulkOperationsRescheduleModalComponent,\n      modalOptions\n    );\n  }\n\n  async cancelBulkOperation() {\n    try {\n      await this.modal.confirm(\n        gettext('Cancel bulk operation'),\n        gettext('You are about to cancel the bulk operation. Do you want to proceed?'),\n        Status.DANGER,\n        {},\n        {},\n        { eventName: BULK_OPERATION_EVENT }\n      );\n      await this.bulkOperationsService.deleteBulkOperation(this.bulkOperation.id);\n      this.reload.emit();\n      this.alert.success(gettext('Operation canceled.'));\n    } catch (er) {\n      this.alert.addServerFailure(er);\n    }\n  }\n\n  retryFailedOperation() {\n    const clonedBulk = cloneDeep(this.bulkOperation);\n\n    // change the id to failedparentId similar to the logic in deviceBulkControl.service.js\n    delete clonedBulk.groupId;\n    clonedBulk.failedParentId = this.bulkOperation.id;\n\n    // show reschdedule modal:\n    const initialState = {\n      bulkOperation: clonedBulk,\n      isRetryOperation: true\n    };\n    const modalOptions = { initialState, class: 'modal-sm', backdrop: 'static' } as ModalOptions;\n    this.bsModalRef = this.bsModalService.show(\n      BulkOperationsRescheduleModalComponent,\n      modalOptions\n    );\n    this.bsModalRef.content.closeSubject.subscribe(() => {\n      this.reload.emit();\n    });\n  }\n\n  async setToSuccessful() {\n    try {\n      await this.modal.confirm(\n        gettext('Set manually bulk operation to SUCCESSFUL'),\n        gettext(\n          'You are about to change the bulk operation status to SUCCESSFUL. Do you want to proceed?'\n        ),\n        Status.DANGER,\n        {},\n        {},\n        { eventName: BULK_OPERATION_EVENT }\n      );\n\n      await this.bulkOperationsService.updateBulkOperation({\n        id: this.bulkOperation.id,\n        generalStatus: OperationBulkGeneralStatus.SUCCESSFUL\n      });\n      this.reload.emit();\n      this.alert.success(gettext('Operation status changed to SUCCESSFUL.'));\n    } catch (er) {\n      this.alert.addServerFailure(er);\n    }\n  }\n\n  openFailedOperation(failedParentId) {\n    this.showFailedOperation.emit(failedParentId);\n  }\n\n  isStatusScheduled() {\n    return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.SCHEDULED;\n  }\n\n  isStatusExecutingOrExecutingWithError() {\n    return (\n      this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING ||\n      this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.EXECUTING_WITH_ERROR\n    );\n  }\n\n  allOperationsCreated() {\n    return (\n      this.bulkOperation.progress.all ===\n      this.bulkOperation.progress.executing +\n        this.bulkOperation.progress.failed +\n        this.bulkOperation.progress.pending +\n        this.bulkOperation.progress.successful\n    );\n  }\n\n  isStatusCanceled() {\n    return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.CANCELED;\n  }\n\n  isStatusFailed() {\n    return this.bulkOperation.generalStatus === this.bulkOperationGeneralStatus.FAILED;\n  }\n}\n","<c8y-li\n  class=\"c8y-list__item--double-actions\"\n  [ngClass]=\"{ 'c8y-list__item--no-expand': !detailsCollapsed }\"\n  [collapsed]=\"detailsCollapsed\"\n  #listItem\n  id=\"{{ bulkOperation.id }}\"\n>\n  <c8y-li-icon>\n    <i\n      [c8yIcon]=\"getOperationStatusOptions().icon\"\n      [ngClass]=\"getOperationStatusOptions().styleClass\"\n      [tooltip]=\"getOperationStatusOptions().label | translate\"\n    ></i>\n  </c8y-li-icon>\n  <div [ngClass]=\"{ 'content-flex-58': !readOnly, 'content-flex-50': readOnly }\">\n    <div class=\"col-5\">\n      <button\n        class=\"btn-clean\"\n        type=\"button\"\n        title=\"{{ bulkOperation.id }} - {{\n          bulkOperation.operationPrototype.description | translate\n        }}\"\n        (click)=\"listItem.toggleCollapsed()\"\n      >\n        <span class=\"text-truncate\">\n          <strong class=\"text-muted m-r-4\">{{ bulkOperation.id }}</strong>\n          {{ bulkOperation.operationPrototype.description | translate }}\n        </span>\n      </button>\n    </div>\n    <div class=\"flex-grow\">\n      <div class=\"m-t-8 visible-xs\"></div>\n      <hr *ngIf=\"isStatusCanceled(); else statusNotCanceled\" class=\"m-t-16 m-b-0 visible-xs\" />\n      <ng-template #statusNotCanceled>\n        <div\n          [class]=\"progressBarClass\"\n          title=\"{{ progressBarStatus | c8yNumber: 'floor':'1.0-0' }}%\"\n        >\n          <div\n            [class]=\"progressBarColor\"\n            role=\"progressbar\"\n            [attr.aria-label]=\"'Progress' | translate\"\n            aria-valuenow=\"0\"\n            aria-valuemin=\"0\"\n            aria-valuemax=\"100\"\n            [style.width.%]=\"progressBarStatus\"\n          >\n            <span *ngIf=\"progressBarStatus !== 0\">\n              {{ progressBarStatus | c8yNumber: 'floor':'1.0-0' }}%\n            </span>\n          </div>\n        </div>\n      </ng-template>\n    </div>\n    <div class=\"col-4\">\n      <div class=\"p-t-8 visible-xs\"></div>\n      <small *ngIf=\"bulkOperation.progress.successful > 0\" class=\"m-r-8 icon-flex\">\n        <i c8yIcon=\"check-circle\" class=\"text-success m-r-4\"></i>\n        <span\n          ngNonBindable\n          translate\n          [translateParams]=\"{ bulkOperationsCountSuccessful: bulkOperation.progress.successful }\"\n        >\n          {{ bulkOperationsCountSuccessful }} successful\n        </span>\n      </small>\n      <small *ngIf=\"bulkOperation.progress.failed > 0\" class=\"m-r-8 icon-flex\">\n        <i c8yIcon=\"warning\" class=\"text-danger m-r-4\"></i>\n        <span\n          ngNonBindable\n          translate\n          [translateParams]=\"{ bulkOperationsCountFailed: bulkOperation.progress.failed }\"\n        >\n          {{ bulkOperationsCountFailed }} failed\n        </span>\n      </small>\n      <small *ngIf=\"bulkOperation.progress.executing > 0\" class=\"m-r-8 icon-flex\">\n        <i c8yIcon=\"refresh\" class=\"text-primary m-r-4\"></i>\n        <span\n          ngNonBindable\n          translate\n          [translateParams]=\"{ bulkOperationsCountExecuting: bulkOperation.progress.executing }\"\n        >\n          {{ bulkOperationsCountExecuting }} executing\n        </span>\n      </small>\n      <small *ngIf=\"bulkOperation.progress.pending > 0\" class=\"m-r-8 icon-flex\">\n        <i c8yIcon=\"clock-o\" class=\"text-primary m-r-4\"></i>\n        <span\n          ngNonBindable\n          translate\n          [translateParams]=\"{ bulkOperationsCountPending: bulkOperation.progress.pending }\"\n        >\n          {{ bulkOperationsCountPending }} pending\n        </span>\n      </small>\n    </div>\n  </div>\n  <div class=\"c8y-list__item__footer\">\n    <div class=\"m-r-16\">\n      <span class=\"text-label-small m-r-4\" translate>Start</span>\n      <small class=\"icon-flex\">\n        <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n        <span>\n          {{ bulkOperation.startDate | c8yDate }}\n        </span>\n      </small>\n    </div>\n    <div class=\"m-r-16\" *ngIf=\"bulkOperationGeneralStatus.CANCELED !== bulkOperation.generalStatus\">\n      <span class=\"text-label-small m-r-4\" translate>Finish</span>\n\n      <small class=\"icon-flex\">\n        <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n        <span>{{ finishDate | c8yDate }}</span>\n      </small>\n      <button\n        class=\"btn-help btn-help--sm\"\n        type=\"button\"\n        [attr.aria-label]=\"'Help' | translate\"\n        popover=\"{{ finishDatePopoverText | translate }}\"\n        placement=\"right\"\n        triggers=\"focus\"\n        container=\"body\"\n        *ngIf=\"isStatusScheduled() || isStatusExecutingOrExecutingWithError()\"\n      ></button>\n    </div>\n  </div>\n  <ng-container *ngIf=\"!readOnly\">\n    <c8y-li-action\n      *ngIf=\"isStatusScheduled()\"\n      label=\"{{ 'Edit schedule' | translate }}\"\n      (click)=\"editSchedule()\"\n      icon=\"pencil\"\n      c8yProductExperience\n      [actionName]=\"BULK_OPERATION_EVENT\"\n    ></c8y-li-action>\n    <c8y-li-action\n      *ngIf=\"\n        isStatusScheduled() || (isStatusExecutingOrExecutingWithError() && !allOperationsCreated())\n      \"\n      label=\"{{ 'Cancel bulk operation' | translate }}\"\n      (click)=\"cancelBulkOperation()\"\n      icon=\"remove\"\n      c8yProductExperience\n      [actionName]=\"BULK_OPERATION_EVENT\"\n    ></c8y-li-action>\n    <c8y-li-action\n      *ngIf=\"isStatusFailed()\"\n      label=\"{{ 'Retry failed operations' | translate }}\"\n      (click)=\"retryFailedOperation()\"\n      icon=\"repeat\"\n      c8yProductExperience\n      [actionName]=\"BULK_OPERATION_EVENT\"\n    ></c8y-li-action>\n    <c8y-li-action\n      *ngIf=\"isStatusFailed()\"\n      label=\"{{ 'Set operation to SUCCESSFUL' | translate }}\"\n      (click)=\"setToSuccessful()\"\n      icon=\"check-circle\"\n      c8yProductExperience\n      [actionName]=\"BULK_OPERATION_EVENT\"\n    ></c8y-li-action>\n  </ng-container>\n  <c8y-li-collapse class=\"m-b-16\">\n    <c8y-operation-details-tabs\n      *ngIf=\"!listItem.collapsed\"\n      [operation]=\"bulkOperation\"\n      [readOnly]=\"readOnly\"\n      (onRetryFailedOperations)=\"retryFailedOperation()\"\n      (showFailedOperation)=\"openFailedOperation($event)\"\n      [bulkOperationModalDetailsService]=\"bulkOperationListItemService\"\n    ></c8y-operation-details-tabs>\n  </c8y-li-collapse>\n</c8y-li>\n","import { NgModule } from '@angular/core';\nimport { BulkOperationListItemComponent } from './bulk-operation-list-item.component';\nimport { BulkOperationListItemService } from './bulk-operation-list-item.service';\nimport { BulkOperationWrapperComponent } from './bulk-operation-wrapper.component';\nimport { BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT } from './bulk-operation-wrapper.model';\nimport { ModalBodyHostDirective } from './modal-body-host.directive';\nimport { BulkOperationsRescheduleModalComponent } from './modals/bulk-operations-reschedule-modal.component';\n\n/**\n * This module allows for displaying the list item of a bulk operation with its details.\n */\n@NgModule({\n  imports: [\n    BulkOperationListItemComponent,\n    BulkOperationsRescheduleModalComponent,\n    BulkOperationWrapperComponent,\n    ModalBodyHostDirective\n  ],\n  providers: [\n    BulkOperationListItemService,\n    {\n      provide: BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT,\n      useValue: {\n        component: BulkOperationListItemComponent,\n        config: { detailsCollapsed: false, readOnly: true }\n      }\n    }\n  ],\n  exports: [\n    BulkOperationListItemComponent,\n    BulkOperationsRescheduleModalComponent,\n    BulkOperationWrapperComponent\n  ]\n})\nexport class BulkOperationListItemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i1.BulkOperationListItemService","i4"],"mappings":"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"}