{"version":3,"file":"c8y-ngx-components-app-logs.mjs","sources":["../../app-logs/app-logs.service.ts","../../app-logs/app-logs-auto-refresh.component.ts","../../app-logs/app-logs-auto-refresh.component.html","../../app-logs/app-logs-auto-refresh.module.ts","../../app-logs/c8y-ngx-components-app-logs.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { LogsJSON } from './logs.model';\nimport { ApplicationService } from '@c8y/client';\nimport { Observable, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\ninterface AppLogsRequestParams {\n  dateFrom?;\n  dateTo?;\n  limit?;\n}\n\n@Injectable()\nexport class AppLogsService {\n  constructor(private application: ApplicationService) {}\n\n  getLogs$(\n    appId: string,\n    instanceName: string,\n    params: AppLogsRequestParams = {}\n  ): Observable<LogsJSON> {\n    const formattedDateFrom = params.dateFrom ? this.formatDate(params.dateFrom) : null;\n    const formattedDateTo = params.dateTo ? this.formatDate(params.dateTo) : null;\n    const modifiedParams = {\n      ...params,\n      ...(formattedDateFrom && { dateFrom: formattedDateFrom }),\n      ...(formattedDateTo && { dateTo: formattedDateTo })\n    };\n\n    return from(this.application.getInstanceLog(appId, instanceName, modifiedParams)).pipe(\n      map(res => res.data)\n    );\n  }\n\n  formatDate(dateToFormat: string): string {\n    return new Date(dateToFormat).toISOString();\n  }\n}\n","import { Component, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core';\nimport { LogsJSON } from './logs.model';\nimport { AppLogsService } from './app-logs.service';\nimport { Observable, fromEvent, Subject, of, interval, NEVER, Subscription } from 'rxjs';\nimport {\n  filter,\n  catchError,\n  tap,\n  debounce,\n  switchMap,\n  takeUntil,\n  finalize,\n  delay,\n  repeat,\n  merge,\n  scan\n} from 'rxjs/operators';\nimport { NgStyle, NgClass } from '@angular/common';\nimport { C8yTranslatePipe } from '@c8y/ngx-components';\n\n@Component({\n  selector: 'c8y-app-logs-auto-refresh',\n  templateUrl: './app-logs-auto-refresh.component.html',\n  imports: [NgStyle, NgClass, C8yTranslatePipe]\n})\nexport class AppLogsAutoRefreshComponent {\n  cancel$: Subject<boolean> = new Subject<boolean>();\n  isAutoRefreshDisabled = false;\n  logsToOutput: LogsJSON = this.getEmptyLogsJson();\n  isAutoRefreshOn = true;\n\n  @Input() selectedInstance: any;\n  @Input() mo: any;\n  @Input() set buttonsDisabled(areDisabled: boolean) {\n    this.isAutoRefreshDisabled = areDisabled;\n    if (areDisabled && this.isAutoRefreshOn) {\n      this.isAutoRefreshOn = false;\n      this.cancel$.next(false);\n    }\n  }\n  @Output() onNewLogs = new EventEmitter<LogsJSON>();\n  @Output() isRealtimeEnabled = new EventEmitter<boolean>();\n  @ViewChild('autoRefresh', { static: true }) button: ElementRef;\n\n  private subscription: Subscription;\n\n  constructor(private appLogsService: AppLogsService) {}\n\n  ngAfterViewInit() {\n    const clicks$ = fromEvent(this.button.nativeElement, 'click').pipe(\n      merge(this.cancel$),\n      debounce(() => interval(300)),\n      scan(this.toggleState, false),\n      tap(isAutoRefreshOn => this.setButtonState(isAutoRefreshOn)),\n      switchMap(isOn => (isOn ? this.watchForNewLogs() : NEVER))\n    );\n    this.subscription = clicks$.subscribe();\n  }\n\n  ngOnDestroy() {\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n  }\n  private toggleState = currentState => !currentState;\n\n  private setButtonState(isAutoRefreshOn: boolean) {\n    this.isAutoRefreshOn = isAutoRefreshOn;\n    this.isRealtimeEnabled.emit(isAutoRefreshOn);\n  }\n\n  private watchForNewLogs() {\n    return this.startPolling().pipe(\n      takeUntil(this.cancel$.pipe(filter(isAutoRefreshOn => isAutoRefreshOn === false))),\n      finalize(() => {\n        this.isAutoRefreshOn = false;\n      })\n    );\n  }\n\n  private startPolling() {\n    return of(1).pipe(\n      switchMap(() => this.getNewLogs().pipe(catchError(() => of(this.getEmptyLogsJson())))),\n      tap(logs => this.updateLogsToOutput(logs)),\n      delay(10000),\n      repeat()\n    );\n  }\n\n  private getNewLogs(): Observable<LogsJSON> {\n    return this.appLogsService.getLogs$(this.getAppId(), this.getInstanceName());\n  }\n\n  private getAppId(): string {\n    return this.mo.applicationId;\n  }\n  private getInstanceName(): string {\n    return this.selectedInstance.name;\n  }\n\n  private updateLogsToOutput(newLogs) {\n    const { dateFrom, dateTo } = newLogs;\n    if (dateFrom && dateTo) {\n      this.logsToOutput = { ...newLogs };\n      this.onNewLogs.emit(this.logsToOutput);\n    }\n  }\n\n  private getEmptyLogsJson(): LogsJSON {\n    return {\n      dateFrom: null,\n      dateTo: null,\n      logs: '',\n      truncated: false\n    };\n  }\n}\n","<button #autoRefresh\n  type=\"button\"\n  class=\"btn btn-link c8y-realtime\"\n  [ngStyle]=\"{'width': 'auto'}\"\n  title=\"{{'Toggle auto refresh' | translate}}\"\n  [disabled]=\"isAutoRefreshDisabled\"\n>\n  <span class=\"c8y-pulse\" [ngClass]=\"isAutoRefreshOn ? 'active' : 'inactive'\"></span>\n  {{'Auto refresh' | translate}}\n</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@c8y/ngx-components';\nimport { ButtonsModule } from 'ngx-bootstrap/buttons';\nimport { AppLogsAutoRefreshComponent } from './app-logs-auto-refresh.component';\nimport { AppLogsService } from './app-logs.service';\n\n@NgModule({\n  exports: [AppLogsAutoRefreshComponent],\n  imports: [CommonModule, ButtonsModule, AppLogsAutoRefreshComponent],\n  providers: [AppLogsService]\n})\nexport class AppLogsAutoRefreshModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AppLogsService"],"mappings":"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"}