{"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';\n\n@Component({\n  selector: 'c8y-app-logs-auto-refresh',\n  templateUrl: './app-logs-auto-refresh.component.html'\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  declarations: [AppLogsAutoRefreshComponent],\n  exports: [AppLogsAutoRefreshComponent],\n  imports: [CommonModule, ButtonsModule],\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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"}