{"version":3,"file":"c8y-ngx-components-device-shell.mjs","sources":["../../device-shell/command-templates/command-templates.directive.ts","../../device-shell/command-templates/command-templates.component.ts","../../device-shell/command-templates/command-templates.module.ts","../../device-shell/device-shell.guard.ts","../../device-shell/shared/device-shell.model.ts","../../device-shell/shared/device-shell.service.ts","../../device-shell/shared/device-shell-shared.module.ts","../../device-shell/shell/shell.component.ts","../../device-shell/shell/shell.component.html","../../device-shell/shell/shell.module.ts","../../device-shell/device-shell.module.ts","../../device-shell/c8y-ngx-components-device-shell.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, Injector, Output } from '@angular/core';\nimport { UpgradeComponent } from '@angular/upgrade/static';\n\n@Directive({ selector: 'c8y-command-templates-directive' })\nexport class CommandTemplates extends UpgradeComponent {\n  @Output()\n  close: EventEmitter<void>;\n\n  @Output()\n  dismiss: EventEmitter<void>;\n\n  constructor(elementRef: ElementRef, injector: Injector) {\n    super('c8yCommandTemplates', elementRef, injector);\n  }\n}\n","import { Component, EventEmitter, Injector } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { CommandTemplates } from './command-templates.directive';\n\n/* https://stackoverflow.com/a/65290658 */\nexport function rootScopeCommandTemplateFactory($injector: Injector) {\n  return $injector.get('$rootScope').$new();\n}\n\n@Component({\n  selector: 'c8y-command-templates',\n  template: `<c8y-command-templates-directive\n    (close)=\"modalRef.hide(); onTemplateSelected.next($event)\"\n    (dismiss)=\"modalRef.hide()\"\n  ></c8y-command-templates-directive>`,\n  providers: [\n    {\n      deps: ['$injector'],\n      provide: '$scope',\n      useFactory: rootScopeCommandTemplateFactory\n    }\n  ],\n  imports: [CommandTemplates]\n})\nexport class CommandTemplatesComponent {\n  onTemplateSelected: EventEmitter<object> = new EventEmitter();\n\n  constructor(public modalRef: BsModalRef) {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommandTemplatesComponent } from './command-templates.component';\nimport { CommandTemplates } from './command-templates.directive';\n\n@NgModule({\n  imports: [CommandTemplates, CommandTemplatesComponent],\n  exports: [CommandTemplatesComponent]\n})\nexport class CommandTemplatesModule {}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\n@Injectable()\nexport class DeviceShellGuard {\n  private readonly operation = 'c8y_Command';\n\n  canActivate(route: ActivatedRouteSnapshot) {\n    const device = route.data.contextData || route.parent.data.contextData;\n    const supportedOperations = (device && device.c8y_SupportedOperations) || [];\n    return supportedOperations.indexOf(this.operation) >= 0;\n  }\n}\n","export enum CommandDeliveryType {\n  DEFAULT = 'Default',\n  SMS = 'SMS'\n}\n\nexport interface DeliveryType {\n  name: string;\n  default?: boolean;\n}\n\nexport interface Command {\n  id: string;\n  name: string;\n  text: string;\n  deliveryTypes: string[];\n  command: string;\n  category: string;\n}\n\nexport interface DeviceShellTemplate {\n  name: string;\n  text: string;\n  category?: string;\n  syntax?: string;\n  deviceType?: string;\n}\n","import { Injectable } from '@angular/core';\nimport {\n  IManagedObject,\n  InventoryService,\n  IOperation,\n  IResult,\n  OperationService\n} from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { OptionsService } from '@c8y/ngx-components';\nimport {\n  Command,\n  CommandDeliveryType,\n  DeliveryType,\n  DeviceShellTemplate\n} from './device-shell.model';\n\n@Injectable()\nexport class DeviceShellService {\n  private readonly MO_TYPE = 'c8y_DeviceShellTemplate';\n  constructor(\n    private optionsService: OptionsService,\n    private operationService: OperationService,\n    private inventoryService: InventoryService\n  ) {}\n\n  getDeliveryTypes(): DeliveryType[] {\n    return [\n      {\n        name: gettext(CommandDeliveryType.DEFAULT),\n        default: true\n      },\n      {\n        name: gettext(CommandDeliveryType.SMS)\n      }\n    ];\n  }\n\n  async canSendCommandsViaSMS(): Promise<boolean> {\n    return !!(await this.optionsService.getSystemOption('messaging', 'provider', false));\n  }\n\n  createCommandOperation(\n    deviceId: string,\n    command: Command,\n    deliveryType: CommandDeliveryType\n  ): Promise<IResult<IOperation>> {\n    const operation: IOperation = {\n      deviceId,\n      description: gettext('Execute shell command') + (command.name ? `: ${command.name}` : ''),\n      deliveryType: deliveryType === CommandDeliveryType.SMS ? CommandDeliveryType.SMS : undefined,\n      c8y_Command: {\n        text: command.text\n      }\n    };\n    return this.operationService.create(operation);\n  }\n\n  async getCommandTemplatesForDeviceType(deviceTypes: string[]): Promise<DeviceShellTemplate[]> {\n    const staticTemplates = await this.getStaticCommandTemplates(deviceTypes);\n    const dynamicTemplates = await this.getDynamicCommandTemplates(deviceTypes);\n    return [...staticTemplates, ...dynamicTemplates];\n  }\n\n  private async getStaticCommandTemplates(deviceTypes: string[]): Promise<DeviceShellTemplate[]> {\n    const templates: DeviceShellTemplate[] = [];\n\n    deviceTypes.forEach(deviceType => {\n      const inMemory = this.getCommandTemplatesForDeviceTypeInMemory(deviceType);\n      if (inMemory) {\n        templates.push(...this.extractCommandTemplatesFromData(deviceType, inMemory));\n      }\n    });\n\n    return templates;\n  }\n\n  private getCommandTemplatesForDeviceTypeInMemory(deviceType: string): any[] | undefined {\n    const raw = localStorage.getItem('devicecommands');\n    if (!raw) {\n      return undefined;\n    }\n\n    try {\n      const store = JSON.parse(raw);\n      return store?.[deviceType];\n    } catch {\n      return undefined;\n    }\n  }\n\n  private async getDynamicCommandTemplates(deviceTypes: string[]): Promise<any[]> {\n    const query = {\n      __filter: {\n        type: this.MO_TYPE,\n        deviceType: { __in: deviceTypes }\n      },\n      __orderby: [{ creationTime: -1 }]\n    };\n\n    const resultList = await this.inventoryService.listQuery(query, { pageSize: 1000 });\n    const results: IManagedObject[] = resultList.data;\n\n    return results.map(r => ({\n      ...r,\n      deviceType: Array.isArray(r.deviceType) ? r.deviceType[0] : r.deviceType\n    }));\n  }\n\n  private extractCommandTemplatesFromData(deviceType: string, data: any): DeviceShellTemplate[] {\n    let templates: DeviceShellTemplate[];\n\n    if (Array.isArray(data)) {\n      templates = data.flatMap(d => this.getExtendedTemplates(d.templates, d.syntax, deviceType));\n    } else {\n      templates = this.getExtendedTemplates(data.templates, data.syntax, deviceType);\n    }\n\n    return templates;\n  }\n\n  private getExtendedTemplates(\n    templates: any[],\n    syntax?: string,\n    deviceType?: string\n  ): DeviceShellTemplate[] {\n    return (templates || []).map(t => ({ ...t, syntax, deviceType }));\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { DeviceShellService } from './device-shell.service';\n\n@NgModule({\n  providers: [DeviceShellService]\n})\nexport class DeviceShellSharedModule {}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IManagedObject, IOperation, IResultList, OperationService } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  AlertService,\n  ManagedObjectRealtimeService,\n  OperationRealtimeService,\n  ActionBarItemComponent,\n  RealtimeButtonComponent,\n  DeviceStatusComponent,\n  C8yTranslateDirective,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { includes, isEmpty } from 'lodash-es';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable, of, pipe, Subject } from 'rxjs';\nimport { filter, map, startWith, takeUntil } from 'rxjs/operators';\nimport { CommandTemplatesComponent } from '../command-templates';\nimport { Command, CommandDeliveryType, DeliveryType, DeviceShellService } from '../shared';\nimport { FormsModule } from '@angular/forms';\nimport { NgFor, NgIf, AsyncPipe } from '@angular/common';\nimport { OperationsTimelineComponent } from '@c8y/ngx-components/operations/operations-timeline';\n\n@Component({\n  selector: 'c8y-device-shell',\n  templateUrl: 'shell.component.html',\n  providers: [OperationRealtimeService, ManagedObjectRealtimeService],\n  imports: [\n    ActionBarItemComponent,\n    RealtimeButtonComponent,\n    DeviceStatusComponent,\n    FormsModule,\n    NgFor,\n    NgIf,\n    OperationsTimelineComponent,\n    C8yTranslateDirective,\n    AsyncPipe,\n    C8yTranslatePipe\n  ]\n})\nexport class DeviceShellComponent implements OnInit, OnDestroy {\n  device: IManagedObject = this.route.snapshot.parent.data.contextData;\n  device$: Observable<IManagedObject> = of({} as any);\n  deliveryTypes: Array<DeliveryType & { isSupportedByCommand?: boolean }> = (\n    this.service.getDeliveryTypes() || []\n  ).map(deliveryType => ({ ...deliveryType, isSupportedByCommand: true }));\n  command: Command = {} as Command;\n  smsEnabled = false;\n  sendingCommand$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  operations: IResultList<IOperation>;\n  filterPipe = pipe(\n    map((operations: IOperation[]) =>\n      (operations || []).filter((operation: IOperation) => !!operation.c8y_Command)\n    )\n  );\n\n  executeViaLabel = gettext('Execute via ({{deliveryType}})');\n\n  private destroyed$: Subject<void> = new Subject();\n\n  constructor(\n    public service: DeviceShellService,\n    public operationRealtime: OperationRealtimeService,\n    private moRealtime: ManagedObjectRealtimeService,\n    private operationService: OperationService,\n    private route: ActivatedRoute,\n    private modalService: BsModalService,\n    private alertService: AlertService\n  ) {}\n\n  async ngOnInit(): Promise<void> {\n    this.smsEnabled = await this.service.canSendCommandsViaSMS();\n\n    this.device$ = this.moRealtime.onUpdate$(this.device.id).pipe(startWith(this.device));\n\n    this.operations = await this.operationService.list({\n      deviceId: this.device.id,\n      fragmentType: 'c8y_Command',\n      dateFrom: new Date(0).toISOString(),\n      dateTo: new Date().toISOString(),\n      pageSize: 50,\n      withTotalPages: true,\n      revert: true\n    });\n\n    this.operationRealtime\n      .onCreate$(this.device.id)\n      .pipe(takeUntil(this.destroyed$))\n      .subscribe(() => this.alertService.success(gettext('Command sent.')));\n\n    this.operationRealtime\n      .onUpdate$(this.device.id)\n      .pipe(\n        filter(op => op.failureReason !== 'Operation cancelled by user.'), // avoid duplicate alerts\n        takeUntil(this.destroyed$)\n      )\n      .subscribe(() => this.alertService.success(gettext('Command status updated.')));\n  }\n\n  getPredefinedCommand() {\n    const modal: BsModalRef<CommandTemplatesComponent> = this.modalService.show(\n      CommandTemplatesComponent,\n      {\n        ariaDescribedby: 'modal-body',\n        ariaLabelledBy: 'modal-title'\n      }\n    );\n    modal.content.onTemplateSelected.pipe(takeUntil(this.destroyed$)).subscribe(result => {\n      this.command = { ...(result as any).commandTemplate } as Command;\n      this.deliveryTypes = this.deliveryTypes.map(deliveryType => ({\n        ...deliveryType,\n        isSupportedByCommand:\n          isEmpty(this.command.deliveryTypes) ||\n          includes(this.command.deliveryTypes, deliveryType.name)\n      }));\n    });\n  }\n\n  resetSupportedDeliveryTypes(): void {\n    this.deliveryTypes = (this.service.getDeliveryTypes() || []).map(deliveryType => ({\n      ...deliveryType,\n      isSupportedByCommand: true\n    }));\n  }\n\n  async execute(commandDeliveryType): Promise<void> {\n    const useSMS = commandDeliveryType === CommandDeliveryType.SMS;\n    if (useSMS && !this.smsEnabled) {\n      this.alertService.warning(gettext('SMS transport is not configured.'));\n      return;\n    }\n    this.sendingCommand$.next(true);\n\n    await this.service.createCommandOperation(this.device.id, this.command, commandDeliveryType);\n\n    this.command.text = '';\n    this.command.name = '';\n    this.resetSupportedDeliveryTypes();\n    this.sendingCommand$.next(false);\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed$.next();\n    this.destroyed$.complete();\n  }\n}\n","<c8y-action-bar-item [placement]=\"'right'\">\n  <c8y-realtime-btn [service]=\"operationRealtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--6-6--md\">\n  <div class=\"inner-scroll d-flex d-col bg-level-0\">\n    <div class=\"card-header large-padding separator sticky-top\">\n      <div class=\"card-title\">\n        {{ 'Command' | translate }}\n      </div>\n    </div>\n\n    <div class=\"card-block d-flex d-col flex-grow large-padding\">\n      <div class=\"d-flex p-b-16\">\n        <button\n          class=\"btn btn-default btn-sm\"\n          type=\"button\"\n          (click)=\"getPredefinedCommand()\"\n          [title]=\"'Display a list of predefined commands' | translate\"\n          data-cy=\"shell--predefined-commands\"\n        >\n          {{ 'Predefined commands' | translate }}\n        </button>\n\n        <div class=\"m-l-auto\">\n          <device-status [mo]=\"device$ | async\"></device-status>\n        </div>\n      </div>\n      <textarea\n        [attr.aria-label]=\"'Commands' | translate\"\n        class=\"form-control inner-scroll flex-grow bg-level-2 text-monospace\"\n        [(ngModel)]=\"command.text\"\n        data-cy=\"shell-component--commands\"\n        (ngModelChange)=\"$event || resetSupportedDeliveryTypes()\"\n        placeholder=\"{{ 'Add commands or use predefined commands above.' | translate }}\"\n      ></textarea>\n    </div>\n\n    <div class=\"card-footer large-padding separator\">\n      <ng-container *ngFor=\"let deliveryType of deliveryTypes\">\n        <button\n          class=\"btn btn-primary\"\n          type=\"button\"\n          *ngIf=\"deliveryType.isSupportedByCommand\"\n          [disabled]=\"!command?.text || (sendingCommand$ | async)\"\n          (click)=\"execute(deliveryType.name)\"\n        >\n          <span\n            [title]=\"\n              deliveryType.default\n                ? ('Execute' | translate)\n                : (executeViaLabel | translate: { deliveryType: deliveryType.name })\n            \"\n          >\n            {{\n              deliveryType.default\n                ? ('Execute' | translate)\n                : (executeViaLabel | translate: { deliveryType: deliveryType.name })\n            }}\n          </span>\n        </button>\n      </ng-container>\n    </div>\n  </div>\n  <div class=\"inner-scroll bg-level-1\">\n    <div class=\"card-header large-padding separator sticky-top\">\n      <div class=\"card-title\">\n        {{ 'Operations' | translate }}\n      </div>\n    </div>\n    <div class=\"card-block large-padding\">\n      <c8y-operations-timeline\n        [operations]=\"operations\"\n        [sourceId]=\"device.id\"\n        [filterPipe]=\"filterPipe\"\n        [bodyTemplate]=\"timelineItemBody\"\n        [footerTemplates]=\"[timelineItemFooter]\"\n        [propertiesToHide]=\"['c8y_Command']\"\n      ></c8y-operations-timeline>\n      <ng-template #timelineItemBody let-operation>\n        <small>{{ operation.c8y_Command?.text || operation.description }}</small>\n      </ng-template>\n      <ng-template #timelineItemFooter let-operation>\n        <div *ngIf=\"operation.c8y_Command?.text\">\n          <div class=\"legend form-block\" translate>Command</div>\n          <!-- Keep this in a single line since `pre-text` will preserve all whitespaces in the `pre` tag.-->\n          <pre class=\"p-8 text-pre\"><code>{{operation.c8y_Command.text}}</code></pre>\n        </div>\n        <div *ngIf=\"operation.c8y_Command?.result\">\n          <div class=\"legend form-block\" translate>Response</div>\n          <!-- Keep this in a single line since `pre-text` will preserve all whitespaces in the `pre` tag.-->\n          <pre class=\"p-8 text-pre\"><code>{{operation.c8y_Command.result}}</code></pre>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { OperationsTimelineModule } from '@c8y/ngx-components/operations/operations-timeline';\nimport { CommandTemplatesModule } from '../command-templates';\nimport { DeviceShellSharedModule } from '../shared';\nimport { DeviceShellComponent } from './shell.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    CoreModule,\n    OperationsTimelineModule,\n    CommandTemplatesModule,\n    DeviceShellSharedModule,\n    DeviceShellComponent\n  ],\n  exports: [DeviceShellComponent]\n})\nexport class ShellModule {}\n","import { NgModule } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { hookRoute, Route, ViewContext } from '@c8y/ngx-components';\nimport { DeviceShellGuard } from './device-shell.guard';\nimport { DeviceShellComponent, ShellModule } from './shell';\n\nconst DEVICE_SHELL_ROUTE: Route = {\n  path: 'shell',\n  context: ViewContext.Device,\n  component: DeviceShellComponent,\n  label: gettext('Shell'),\n  icon: 'terminal',\n  canActivate: [DeviceShellGuard]\n};\n\n@NgModule({\n  imports: [ShellModule],\n  providers: [DeviceShellGuard, hookRoute(DEVICE_SHELL_ROUTE)]\n})\nexport class DeviceShellModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i1.DeviceShellService","i3","i5"],"mappings":"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"}