{"version":3,"file":"c8y-ngx-components-operations-bulk-operations-list.mjs","sources":["../../operations/bulk-operations-list/modals/bulk-operations-modal.component.ts","../../operations/bulk-operations-list/modals/bulk-operations-modal.component.html","../../operations/bulk-operations-list/modals/bulk-operation-modals.service.ts","../../operations/bulk-operations-list/bulk-operations-list.component.ts","../../operations/bulk-operations-list/bulk-operations-list.component.html","../../operations/bulk-operations-list/bulk-operations-list.module.ts","../../operations/bulk-operations-list/c8y-ngx-components-operations-bulk-operations-list.ts"],"sourcesContent":["import { Component, ViewContainerRef, ViewChild, OnInit, Inject, forwardRef } from '@angular/core';\nimport { GainsightService } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport {\n  BulkOperationsService,\n  OperationType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport {\n  ACTIONS_OPERATIONS_BULK,\n  BULK_OPERATION_DIALOG_STEPS,\n  BULK_OPERATION_EVENT\n} from '@c8y/ngx-components/operations/product-experience';\nimport { BulkOperationModalsService } from '..';\nimport { Router } from '@angular/router';\n\n@Component({\n  selector: 'c8y-bulk-operations-modal',\n  templateUrl: 'bulk-operations-modal.component.html'\n})\nexport class BulkOperationsModalComponent implements OnInit {\n  BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n  bulkActions = ACTIONS_OPERATIONS_BULK;\n  pxSteps = BULK_OPERATION_DIALOG_STEPS;\n\n  @ViewChild('container', { static: false, read: ViewContainerRef }) container;\n  showComponent = false;\n  bulkList: OperationType[] = [];\n\n  constructor(\n    private bsModalRef: BsModalRef,\n    private router: Router,\n    private gainsightService: GainsightService,\n    private bulkOperationsService: BulkOperationsService,\n    @Inject(forwardRef(() => BulkOperationModalsService))\n    private bulkOperationModalsService: BulkOperationModalsService\n  ) {}\n\n  ngOnInit() {\n    this.bulkList = this.bulkOperationsService.getBulkTypes();\n  }\n\n  cancel() {\n    this.bsModalRef.hide();\n  }\n\n  createComponent(item: OperationType) {\n    if (item && item.component) {\n      this.showComponent = true;\n      this.container.createComponent(item.component);\n      this.gainsightService.triggerEvent(this.BULK_OPERATION_EVENT, {\n        action: this.bulkActions.SELECT_BULK_OPERTION_TYPE,\n        bulkOperationType: item.type\n      });\n    }\n  }\n\n  handleClick(item: OperationType) {\n    if (item.path) {\n      this.bulkOperationModalsService.hideNewBulkOperationModal();\n      this.router.navigateByUrl(item.path);\n      this.gainsightService.triggerEvent(this.BULK_OPERATION_EVENT, {\n        action: this.bulkActions.SELECT_BULK_OPERTION_TYPE,\n        bulkOperationType: item.type\n      });\n    } else if (item.component) {\n      this.createComponent(item);\n    }\n  }\n}\n","<div class=\"viewport-modal\">\n  <div class=\"modal-header dialog-header\">\n    <i c8yIcon=\"c8y-energy\"></i>\n    <h4\n      id=\"modal-title\"\n      translate\n    >\n      Add bulk operation\n    </h4>\n  </div>\n  <div\n    class=\"modal-inner-scroll\"\n    id=\"modal-body\"\n  >\n    <div\n      class=\"modal-body p-t-8 p-b-8 sticky-top separator-bottom text-center\"\n      [hidden]=\"showComponent\"\n    >\n      <p\n        class=\"text-medium\"\n        translate\n      >\n        Select one of the available options\n      </p>\n      <p c8y-guide-docs>\n        <small\n          translate\n          ngNonBindable\n        >\n          Check the\n          <a\n            c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#to-add-a-bulk-operation-using-the-wizard\"\n          >\n            user documentation\n          </a>\n          for more details.\n        </small>\n      </p>\n    </div>\n\n    <div class=\"list-group list-group-links\">\n      <button\n        class=\"list-group-item flex-row\"\n        type=\"button\"\n        *ngFor=\"let item of bulkList\"\n        (click)=\"handleClick(item)\"\n      >\n        <div\n          class=\"list-item-icon\"\n          *ngIf=\"item.c8yIcon; else icon\"\n        >\n          <i [c8yIcon]=\"item.c8yIcon\"></i>\n        </div>\n        <ng-template #icon>\n          <div class=\"list-item-icon\">\n            <i c8yIcon=\"cogs\"></i>\n          </div>\n        </ng-template>\n        <div\n          class=\"list-item-body text-truncate\"\n          title=\"{{ item.name | translate }}\"\n        >\n          {{ item.name | translate }}\n        </div>\n      </button>\n    </div>\n    <template #container></template>\n  </div>\n  <div\n    class=\"modal-footer\"\n    [hidden]=\"showComponent\"\n  >\n    <button\n      class=\"btn btn-default\"\n      title=\"{{ 'Cancel' | translate }}\"\n      type=\"button\"\n      (click)=\"cancel()\"\n      c8yProductExperience\n      [actionName]=\"BULK_OPERATION_EVENT\"\n      [actionData]=\"{\n        action: bulkActions.CANCEL_ADD_BULK_OPERATION_DIALOG,\n        step: pxSteps.SELECT_OPERATION_TYPE\n      }\"\n    >\n      <span translate>Cancel</span>\n    </button>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { BulkOperationsModalComponent } from './bulk-operations-modal.component';\n\n@Injectable()\nexport class BulkOperationModalsService {\n  private bsModalRef: BsModalRef;\n\n  constructor(private bsModalService: BsModalService) {}\n\n  showNewBulkOperationModal() {\n    this.bsModalRef = this.bsModalService.show(BulkOperationsModalComponent, {\n      backdrop: 'static',\n      class: 'modal-sm',\n      ariaDescribedby: 'modal-body',\n      ariaLabelledBy: 'modal-title'\n    });\n  }\n\n  hideNewBulkOperationModal() {\n    if (this.bsModalRef) {\n      this.bsModalRef.hide();\n    }\n  }\n}\n","import { Component, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { IOperationBulk, IResultList } from '@c8y/client';\nimport {\n  DatePickerComponent,\n  ForOfFilterPipe,\n  OperationBulkRealtimeService\n} from '@c8y/ngx-components';\nimport {\n  BulkOperationListItemComponent,\n  BULK_OPERATION_STATUS_OPTIONS,\n  OperationStatusOptionsMap\n} from '@c8y/ngx-components/operations/bulk-operation-list-item';\nimport {\n  BulkOperationsService,\n  OperationType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport {\n  ACTIONS_OPERATIONS_BULK,\n  BULK_OPERATION_EVENT\n} from '@c8y/ngx-components/operations/product-experience';\nimport { OperationStatusOption } from '@c8y/ngx-components/operations/shared';\nimport { StatusFilterComponent } from '@c8y/ngx-components/operations/status-filter';\nimport { flatten } from 'lodash-es';\nimport { BehaviorSubject, combineLatest, Observable, pipe } from 'rxjs';\nimport { map, shareReplay, switchMap, tap, withLatestFrom } from 'rxjs/operators';\nimport { BulkOperationModalsService } from './modals/bulk-operation-modals.service';\n@Component({\n  selector: 'c8y-bulk-operations',\n  templateUrl: './bulk-operations-list.component.html',\n  providers: [OperationBulkRealtimeService]\n})\nexport class BulkOperationsListComponent implements OnInit {\n  bulkTypes: OperationType[] = [];\n  selectedTypeFilters = this.getTypeFilters();\n  bulkOperationStatusOptions: OperationStatusOptionsMap = BULK_OPERATION_STATUS_OPTIONS;\n  BULK_OPERATION_EVENT = BULK_OPERATION_EVENT;\n  bulkActions = ACTIONS_OPERATIONS_BULK;\n\n  filterPipe: ForOfFilterPipe<IOperationBulk>;\n  refreshLoading = false;\n  statusFilter$: BehaviorSubject<OperationStatusOption[]> = new BehaviorSubject(null);\n  typeFilter$: BehaviorSubject<OperationType[]> = new BehaviorSubject(null);\n  timeFilter$: BehaviorSubject<any> = new BehaviorSubject(null);\n  reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n  @ViewChildren(BulkOperationListItemComponent)\n  listItems: QueryList<BulkOperationListItemComponent>;\n  @ViewChild('statusFilter', { static: true }) statusFilter: StatusFilterComponent;\n  @ViewChild(DatePickerComponent, { static: true }) datePicker: DatePickerComponent;\n\n  bulkOperations$: Observable<IResultList<IOperationBulk>> = combineLatest(\n    this.statusFilter$,\n    this.timeFilter$,\n    this.typeFilter$,\n    this.reload$\n  ).pipe(\n    tap(() => {\n      this.refreshLoading = true;\n    }),\n    switchMap(([statusFilters, timeFilters]) => this.filter(statusFilters, timeFilters)),\n    withLatestFrom(this.typeFilter$),\n    map(([result, typeFilter]: [IResultList<IOperationBulk>, OperationType[]]) => {\n      this.filterPipe = pipe(map(data => this.filterByType(data, typeFilter)));\n      return { ...result, data: this.filterByType(result.data, typeFilter) };\n    }),\n    tap(() => {\n      this.refreshLoading = false;\n    }),\n    shareReplay(1)\n  );\n\n  private allFilterFragments: string[];\n\n  constructor(\n    public realtime: OperationBulkRealtimeService,\n    private bulkOperationsService: BulkOperationsService,\n    private bulkOperationModalsService: BulkOperationModalsService\n  ) {\n    this.allFilterFragments = this.flattenFilterFragments(this.getTypeFilters());\n  }\n\n  ngOnInit() {\n    this.bulkTypes = this.bulkOperationsService.getBulkTypes();\n  }\n\n  filterByType(bulkOperations: IOperationBulk[], typeFilter) {\n    const flattenedFragments: string[] = this.flattenFilterFragments(typeFilter);\n    if (\n      // return data unfiltered if no filters selected...\n      !flattenedFragments.length ||\n      // ...or when all filters are selected\n      this.allFilterFragments.every(fragment => flattenedFragments.includes(fragment))\n    ) {\n      return bulkOperations;\n    }\n\n    const filteredData = bulkOperations.filter(item => {\n      return Object.keys(item.operationPrototype).some(key => flattenedFragments.includes(key));\n    });\n\n    return filteredData;\n  }\n\n  resetFilter() {\n    this.statusFilter$.next(null);\n    this.timeFilter$.next(null);\n    this.typeFilter$.next(null);\n\n    this.datePicker.clearFilter();\n    this.selectedTypeFilters = this.getTypeFilters();\n    this.statusFilter.reset();\n  }\n\n  isFilterApplied() {\n    return (\n      !!this.statusFilter$.getValue()?.length ||\n      !!this.typeFilter$.getValue()?.length ||\n      !!this.timeFilter$.getValue()\n    );\n  }\n\n  filter(statusFilters, timeFilter) {\n    const status =\n      statusFilters && statusFilters.length > 0\n        ? {\n            generalStatus: flatten(statusFilters.map(statusFilter => statusFilter.generalStatuses))\n          }\n        : {};\n\n    const time = timeFilter\n      ? {\n          ...(timeFilter.dateFrom && {\n            dateFrom: timeFilter.dateFrom.toISOString()\n          }),\n          ...(timeFilter.dateTo && {\n            dateTo: timeFilter.dateTo.toISOString()\n          })\n        }\n      : {};\n    return this.getBulkOperations({ ...status, ...time });\n  }\n\n  getBulkOperations(filter?) {\n    return this.bulkOperationsService.getBulkOperations(filter);\n  }\n\n  getTypeFilters() {\n    return this.bulkOperationsService.getBulkTypes();\n  }\n\n  addBulkOperation() {\n    this.bulkOperationModalsService.showNewBulkOperationModal();\n  }\n\n  openFailedOperation(failedParentId) {\n    this.listItems.forEach(item => {\n      if (item.bulkOperation.id === failedParentId) {\n        item.listItem.collapsed = false;\n        item.listItem.element.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      }\n    });\n  }\n\n  compareOperations(operationA: IOperationBulk, operationB: IOperationBulk): number {\n    return new Date(operationA.startDate).getTime() - new Date(operationB.startDate).getTime();\n  }\n\n  private flattenFilterFragments(filters: OperationType[]): string[] {\n    return (filters || []).reduce((flattened, current) => flattened.concat(current.fragments), []);\n  }\n}\n","<c8y-title>{{ 'Bulk operations' | translate }}</c8y-title>\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-overviews'\"\n    [label]=\"'Overviews' | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-device-control'\"\n    [label]=\"'Device control' | translate\"\n    [path]=\"'devicecontrol/single'\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-energy'\"\n    [label]=\"'Bulk operations' | translate\"\n  ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n  *ngIf=\"bulkTypes?.length\"\n  itemClass=\"navbar-form\"\n  [placement]=\"'left'\"\n>\n  <label\n    class=\"hidden-sm hidden-xs\"\n    translate\n  >\n    Type\n  </label>\n  <c8y-select-legacy\n    style=\"width: 180px\"\n    [items]=\"bulkTypes\"\n    [selected]=\"selectedTypeFilters\"\n    [disableApplyOnNoSelection]=\"true\"\n    (onChange)=\"selectedTypeFilters = $event; typeFilter$.next(selectedTypeFilters)\"\n  ></c8y-select-legacy>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n  [placement]=\"'left'\"\n  itemClass=\"navbar-form\"\n>\n  <c8y-status-filter\n    #statusFilter\n    [options]=\"bulkOperationStatusOptions\"\n    (onFilterChanged)=\"statusFilter$.next($event)\"\n  ></c8y-status-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n  [placement]=\"'left'\"\n  itemClass=\"navbar-form\"\n>\n  <c8y-date-picker (onDateSelected)=\"timeFilter$.next($event)\"></c8y-date-picker>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n  <c8y-realtime-btn [service]=\"realtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button\n    class=\"btn btn-link d-flex a-i-center\"\n    title=\"{{ 'Add bulk operation' | translate }}\"\n    *ngIf=\"bulkTypes?.length\"\n    (click)=\"addBulkOperation()\"\n    c8yProductExperience\n    [actionName]=\"BULK_OPERATION_EVENT\"\n    [actionData]=\"{ action: bulkActions.OPEN_ADD_BULK_OPERATION_DIALOG }\"\n  >\n    <i\n      class=\"m-r-4\"\n      c8yIcon=\"plus-circle\"\n    ></i>\n    <span class=\"text-truncate\">\n      {{ 'Add bulk operation' | translate }}\n    </span>\n  </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button\n    class=\"btn btn-link d-flex a-i-center\"\n    title=\"{{ 'Reload' | translate }}\"\n    (click)=\"reload$.next()\"\n  >\n    <i\n      class=\"m-r-4\"\n      c8yIcon=\"refresh\"\n      [ngClass]=\"{ 'icon-spin': refreshLoading }\"\n    ></i>\n    <span class=\"text-truncate\">\n      {{ 'Reload' | translate }}\n    </span>\n  </button>\n</c8y-action-bar-item>\n\n<c8y-help\n  src=\"/docs/device-management-application/monitoring-and-controlling-devices/#to-view-bulk-operations\"\n></c8y-help>\n\n<!-- Empty state -->\n<c8y-ui-empty-state\n  icon=\"c8y-energy\"\n  [title]=\"'No items to display' | translate\"\n  [subtitle]=\"'Bulk operations will be displayed here' | translate\"\n  *ngIf=\"(bulkOperations$ | async)?.data.length === 0 && !isFilterApplied()\"\n>\n  <button\n    class=\"btn btn-primary\"\n    title=\"{{ 'Add bulk operation' | translate }}\"\n    type=\"button\"\n    *ngIf=\"bulkTypes?.length\"\n    (click)=\"addBulkOperation()\"\n    translate\n  >\n    Add bulk operation\n  </button>\n</c8y-ui-empty-state>\n\n<!-- No results empty state -->\n<c8y-ui-empty-state\n  icon=\"search\"\n  [title]=\"'No results to display.' | translate\"\n  [subtitle]=\"'Adjust or reset the filter.' | translate\"\n  *ngIf=\"(bulkOperations$ | async)?.data.length === 0 && isFilterApplied()\"\n>\n  <button\n    class=\"btn btn-primary\"\n    title=\"{{ 'Reset filter' | translate }}\"\n    type=\"button\"\n    (click)=\"resetFilter()\"\n    translate\n  >\n    Reset filter\n  </button>\n</c8y-ui-empty-state>\n\n<!-- Detailed list of operations + load more button -->\n<c8y-list-group class=\"m-b-24\">\n  <div\n    class=\"page-sticky-header hidden-xs c8y-list__item--double-actions c8y-list__item\"\n    *ngIf=\"(bulkOperations$ | async)?.data.length\"\n  >\n    <div class=\"c8y-list__item__block\">\n      <div class=\"c8y-list__item__icon\">\n        <i\n          class=\"invisible\"\n          c8yIcon=\"refresh\"\n        ></i>\n      </div>\n      <div class=\"c8y-list__item__body\">\n        <div class=\"content-flex-57\">\n          <div class=\"col-5\">\n            {{ 'Operation' | translate }}\n          </div>\n          <div class=\"flex-grow\">\n            {{ 'Progress' | translate }}\n          </div>\n          <div class=\"col-4\">\n            {{ 'Status' | translate }}\n          </div>\n        </div>\n      </div>\n      <div class=\"c8y-list__item__actions\"></div>\n    </div>\n  </div>\n  <div\n    class=\"d-contents\"\n    *c8yFor=\"\n      let bulkOperation of bulkOperations$ | async;\n      let i = index;\n      realtime: realtime;\n      pipe: filterPipe;\n      comparator: compareOperations.bind(this);\n      loadMore: 'auto'\n    \"\n  >\n    <c8y-bulk-operation-list-item\n      class=\"d-contents\"\n      [bulkOperation]=\"bulkOperation\"\n      (reload)=\"reload$.next()\"\n      (showFailedOperation)=\"openFailedOperation($event)\"\n    ></c8y-bulk-operation-list-item>\n  </div>\n</c8y-list-group>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\nimport { CoreModule, Route } from '@c8y/ngx-components';\nimport { StatusFilterModule } from '@c8y/ngx-components/operations/status-filter';\nimport { BulkOperationSchedulerModule } from '@c8y/ngx-components/operations/bulk-operation-scheduler';\nimport { BulkOperationListItemModule } from '@c8y/ngx-components/operations/bulk-operation-list-item';\n\nimport { BulkOperationsListComponent } from './bulk-operations-list.component';\nimport { BulkOperationModalsService } from './modals/bulk-operation-modals.service';\nimport { BulkOperationsModalComponent } from './modals/bulk-operations-modal.component';\n\nexport const bulkOperationListRoutes: Route[] = [\n  {\n    path: 'devicecontrol/bulk',\n    component: BulkOperationsListComponent\n  }\n];\n\n/**\n * This module allows for displaying the list of bulk operations and their details.\n */\n@NgModule({\n  imports: [\n    CoreModule,\n    PopoverModule,\n    TooltipModule,\n    StatusFilterModule,\n    BulkOperationSchedulerModule,\n    BulkOperationListItemModule,\n    RouterModule.forChild(bulkOperationListRoutes)\n  ],\n  providers: [BulkOperationModalsService],\n  declarations: [BulkOperationsListComponent, BulkOperationsModalComponent],\n  exports: [BulkOperationsListComponent, BulkOperationsModalComponent]\n})\nexport class BulkOperationsListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i5","i1","i2","i3.BulkOperationModalsService","i4"],"mappings":"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"}