{"version":3,"file":"c8y-ngx-components-widgets-implementations-events.mjs","sources":["../../widgets/implementations/events/event-list-widget-config/event-list-widget-config.component.ts","../../widgets/implementations/events/event-list-widget-config/event-list-widget-config.component.html","../../widgets/implementations/events/event-list-widget-view/event-list-widget.component.ts","../../widgets/implementations/events/event-list-widget-view/event-list-widget.component.html","../../widgets/implementations/events/c8y-ngx-components-widgets-implementations-events.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  effect,\n  inject,\n  input,\n  OnInit,\n  signal,\n  TemplateRef,\n  viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport {\n  ControlContainer,\n  FormBuilder,\n  FormsModule,\n  NgForm,\n  ReactiveFormsModule\n} from '@angular/forms';\nimport { IEvent, IResultList } from '@c8y/client';\nimport {\n  AlertService,\n  C8yTranslatePipe,\n  FormGroupComponent,\n  IconDirective\n} from '@c8y/ngx-components';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { EventsListComponent, EventsViewService } from '@c8y/ngx-components/events';\nimport {\n  LocalControlsComponent,\n  PRESET_NAME,\n  PresetName\n} from '@c8y/ngx-components/global-context';\nimport { from } from 'rxjs';\nimport { debounceTime, shareReplay, switchMap } from 'rxjs/operators';\nimport { EventListWidgetConfig } from '../event-list-widget.model';\n\n@Component({\n  selector: 'c8y-event-list-widget-config',\n  templateUrl: './event-list-widget-config.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n  imports: [\n    C8yTranslatePipe,\n    EventsListComponent,\n    FormGroupComponent,\n    FormsModule,\n    IconDirective,\n    LocalControlsComponent,\n    ReactiveFormsModule\n  ]\n})\nexport class EventListWidgetConfigComponent implements OnInit {\n  config = input<EventListWidgetConfig>();\n  eventListPreview = viewChild<TemplateRef<unknown>>('eventListPreview');\n\n  private alertService = inject(AlertService);\n  private destroyRef = inject(DestroyRef);\n  private eventsViewService = inject(EventsViewService);\n  private form = inject(NgForm);\n  private formBuilder = inject(FormBuilder);\n  private widgetConfigService = inject(WidgetConfigService);\n\n  events = signal<IResultList<IEvent> | undefined>(undefined);\n  isLoading = signal(false);\n  controls: PresetName = PRESET_NAME.ALARM_LIST;\n\n  readonly navigationOptions = {\n    allowNavigationToEventsView: false,\n    alwaysNavigateToAllEvents: false,\n    queryParamsHandling: 'merge' as const\n  };\n\n  formGroup = this.formBuilder.group({\n    type: [''],\n    showEventsForChildren: [true]\n  });\n  typeValue = toSignal(this.formGroup.controls.type.valueChanges, {\n    initialValue: this.formGroup.controls.type.value\n  });\n\n  private config$ = this.widgetConfigService.currentConfig$.pipe(\n    takeUntilDestroyed(this.destroyRef),\n    shareReplay(1)\n  );\n  configState = toSignal(this.config$);\n\n  constructor() {\n    effect(() => {\n      const template = this.eventListPreview();\n      this.widgetConfigService.setPreview(template ?? null);\n    });\n  }\n\n  ngOnInit(): void {\n    const cfg = this.config();\n    this.formGroup.patchValue({\n      type: cfg?.type ?? '',\n      showEventsForChildren: cfg?.showEventsForChildren ?? true\n    });\n    this.form.form.addControl('config', this.formGroup);\n\n    this.formGroup.valueChanges\n      .pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef))\n      .subscribe(value => {\n        Object.assign(cfg, value);\n        this.fetchEvents({ ...cfg, ...value } as EventListWidgetConfig);\n      });\n\n    this.widgetConfigService.addOnBeforeSave(config => {\n      Object.assign(config, this.formGroup.value);\n      return true;\n    });\n\n    this.config$\n      .pipe(\n        takeUntilDestroyed(this.destroyRef),\n        switchMap(config =>\n          from(this.fetchEvents({ ...config, ...this.formGroup.value } as EventListWidgetConfig))\n        )\n      )\n      .subscribe();\n  }\n\n  clearType(): void {\n    this.formGroup.controls.type.setValue('');\n  }\n\n  private async fetchEvents(config: EventListWidgetConfig): Promise<void> {\n    try {\n      this.isLoading.set(true);\n      const filter = this.eventsViewService.buildEventsFilter({\n        source: config.device?.id ?? null,\n        withSourceChildren: config.showEventsForChildren ?? true,\n        type: config.type ?? null,\n        dateTimeContext: config.dateTimeContext\n      });\n      const result = await this.eventsViewService.retrieveEvents({ ...filter, pageSize: 10 });\n      this.events.set(result);\n    } catch (error: unknown) {\n      this.alertService.addServerFailure(error);\n    } finally {\n      this.isLoading.set(false);\n    }\n  }\n}\n","<div [formGroup]=\"formGroup\">\n  <fieldset class=\"c8y-fieldset\">\n    <legend translate>Type</legend>\n    <c8y-form-group>\n      <div style=\"position: relative\">\n        <input\n          class=\"form-control\"\n          [style.padding-right]=\"typeValue() ? '32px' : null\"\n          formControlName=\"type\"\n          [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y_LocationUpdate' }\"\n        />\n        @if (typeValue()) {\n          <button\n            class=\"btn btn-clean\"\n            style=\"position: absolute; right: 8px; top: 50%; transform: translateY(-50%)\"\n            [title]=\"'Clear' | translate\"\n            type=\"button\"\n            (click)=\"clearType()\"\n          >\n            <i c8yIcon=\"times\"></i>\n          </button>\n        }\n      </div>\n    </c8y-form-group>\n  </fieldset>\n  <fieldset\n    class=\"c8y-fieldset\"\n    data-cy=\"c8y-event-list-widget-config--child-devices-section\"\n  >\n    <legend>{{ 'Child devices' | translate }}</legend>\n    <c8y-form-group class=\"m-b-8\">\n      <label\n        class=\"c8y-switch\"\n        [title]=\"'Show events from child devices' | translate\"\n        data-cy=\"c8y-event-list-widget-config--child-devices-label\"\n      >\n        <input\n          type=\"checkbox\"\n          formControlName=\"showEventsForChildren\"\n          data-cy=\"c8y-event-list-widget-config--showEventsForChildren-checkbox\"\n        />\n        <span></span>\n        <span>{{ 'Show events' | translate }}</span>\n        <span class=\"sr-only\">{{ 'Show events' | translate }}</span>\n      </label>\n    </c8y-form-group>\n  </fieldset>\n</div>\n\n<ng-template #eventListPreview>\n  @let previewDisplayMode = configState()?.displayMode;\n  @if (previewDisplayMode && previewDisplayMode !== 'dashboard') {\n    <c8y-local-controls\n      [controls]=\"controls\"\n      [displayMode]=\"previewDisplayMode\"\n      [config]=\"{\n        dateTimeContext: configState()?.dateTimeContext,\n        aggregation: configState()?.aggregation,\n        isAutoRefreshEnabled: configState()?.isAutoRefreshEnabled,\n        refreshInterval: configState()?.refreshInterval,\n        refreshOption: configState()?.refreshOption\n      }\"\n      [disabled]=\"true\"\n    ></c8y-local-controls>\n  }\n  <c8y-events-list\n    [events]=\"events()\"\n    [isLoading]=\"isLoading()\"\n    [navigationOptions]=\"navigationOptions\"\n  ></c8y-events-list>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  OnInit,\n  computed,\n  inject,\n  input,\n  signal\n} from '@angular/core';\nimport { IEvent, IResultList } from '@c8y/client';\nimport {\n  AlertService,\n  DashboardChildComponent,\n  DismissAlertStrategy,\n  DynamicComponentAlert,\n  DynamicComponentAlertAggregator\n} from '@c8y/ngx-components';\nimport { EventsListComponent, EventsViewService } from '@c8y/ngx-components/events';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  DisplayMode,\n  GLOBAL_CONTEXT_DISPLAY_MODE,\n  GlobalContextConnectorComponent,\n  GlobalContextState,\n  LocalControlsComponent,\n  PRESET_NAME,\n  PresetName,\n  REFRESH_OPTION\n} from '@c8y/ngx-components/global-context';\nimport { EventListWidgetConfig } from '../event-list-widget.model';\n\n@Component({\n  selector: 'c8y-event-list-widget',\n  templateUrl: './event-list-widget.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [EventsListComponent, LocalControlsComponent, GlobalContextConnectorComponent]\n})\nexport class EventListWidgetComponent implements OnInit {\n  config = input<EventListWidgetConfig>();\n\n  private alertService = inject(AlertService);\n  protected dashboardChild = inject(DashboardChildComponent);\n  private eventsViewService = inject(EventsViewService);\n\n  private isListScrolled = signal(false);\n\n  displayMode = signal<DisplayMode>(GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD);\n  contextConfig = signal<GlobalContextState>({});\n  isLinkedToGlobal = signal<boolean | undefined>(undefined);\n  events = signal<IResultList<IEvent> | undefined>(undefined);\n  isLoading = signal(true);\n  alerts: DynamicComponentAlertAggregator;\n  widgetControls = signal<PresetName>(PRESET_NAME.ALARM_LIST);\n  private sourceId = '';\n\n  readonly GLOBAL_CONTEXT_DISPLAY_MODE = GLOBAL_CONTEXT_DISPLAY_MODE;\n  readonly REFRESH_OPTION = REFRESH_OPTION;\n\n  navigationOptions = computed(() => ({\n    alwaysNavigateToAllEvents: !this.config()?.device,\n    allowNavigationToEventsView: true,\n    queryParamsHandling: '' as const\n  }));\n\n  private TIMEOUT_ERROR_TEXT = gettext(\n    'The request is taking longer than usual. We apologize for the inconvenience.'\n  );\n  private SERVER_ERROR_TEXT = gettext('Server error occurred.');\n\n  async ngOnInit(): Promise<void> {\n    this.alerts.setAlertGroupDismissStrategy(\n      'warning',\n      DismissAlertStrategy.TEMPORARY_OR_PERMANENT\n    );\n\n    const cfg = this.config();\n    this.migrateLegacyConfig(cfg);\n    this.sourceId =\n      cfg?.device?.id ??\n      this.dashboardChild['data']?.device?.id ??\n      this.dashboardChild['data']?.context?.id ??\n      '';\n\n    const displayMode = cfg?.displayMode || GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD;\n    this.displayMode.set(displayMode as DisplayMode);\n\n    const initialContextConfig: GlobalContextState = {\n      dateTimeContext: cfg?.dateTimeContext,\n      aggregation: cfg?.aggregation,\n      isAutoRefreshEnabled: cfg?.isAutoRefreshEnabled,\n      refreshInterval: cfg?.refreshInterval,\n      refreshOption: cfg?.refreshOption\n    };\n    this.contextConfig.set(initialContextConfig);\n\n    if (displayMode !== GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n      await this.fetchEvents();\n    }\n  }\n\n  onContextChange(event: { context: GlobalContextState; diff: GlobalContextState }): void {\n    const { diff, context } = event;\n    if (\n      diff.isAutoRefreshEnabled === false &&\n      Object.keys(diff).length === 1 &&\n      context.refreshOption === REFRESH_OPTION.LIVE\n    ) {\n      return;\n    }\n\n    this.contextConfig.set(context);\n    void this.fetchEvents();\n  }\n\n  onRefresh(): void {\n    void this.fetchEvents();\n  }\n\n  onScrollingStateChange(isScrolling: boolean): void {\n    this.isListScrolled.set(isScrolling);\n    const current = this.contextConfig();\n\n    if (current.refreshOption === REFRESH_OPTION.HISTORY) {\n      return;\n    }\n    this.contextConfig.set({ ...current, isAutoRefreshEnabled: !isScrolling });\n    this.isLinkedToGlobal.set(!isScrolling);\n  }\n\n  onPreviewStateChange(isOpen: boolean): void {\n    const current = this.contextConfig();\n\n    if (current.refreshOption === REFRESH_OPTION.HISTORY) {\n      return;\n    }\n    if (isOpen || !this.isListScrolled()) {\n      this.contextConfig.set({ ...current, isAutoRefreshEnabled: !isOpen });\n      this.isLinkedToGlobal.set(!isOpen);\n    }\n  }\n\n  private migrateLegacyConfig(cfg: EventListWidgetConfig | undefined): void {\n    if (!cfg || cfg.type) {\n      return;\n    }\n    const legacyType = (cfg as Record<string, unknown>)['options'];\n    if (legacyType && typeof legacyType === 'object' && 'type' in legacyType) {\n      cfg.type = (legacyType as { type: string }).type;\n    }\n  }\n\n  private async fetchEvents(): Promise<void> {\n    try {\n      this.isLoading.set(true);\n      const effectiveConfig = {\n        ...this.config(),\n        ...this.contextConfig()\n      };\n\n      const filter = this.eventsViewService.buildEventsFilter({\n        source: this.sourceId || null,\n        withSourceChildren: this.config()?.showEventsForChildren ?? true,\n        type: effectiveConfig.type ?? null,\n        dateTimeContext: effectiveConfig.dateTimeContext\n      });\n      const result = await this.eventsViewService.retrieveEvents({ ...filter, pageSize: 10 });\n      this.events.set(result);\n    } catch (error: unknown) {\n      const err = error as { name?: string; message?: string };\n      this.alerts.addAlerts(\n        new DynamicComponentAlert({\n          type: 'warning',\n          text:\n            err.name === 'TimeoutError'\n              ? this.TIMEOUT_ERROR_TEXT\n              : (err.message ?? this.SERVER_ERROR_TEXT)\n        })\n      );\n      this.alertService.addServerFailure(error);\n    } finally {\n      this.isLoading.set(false);\n    }\n  }\n}\n","@if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n  <c8y-global-context-connector\n    [controls]=\"widgetControls()\"\n    [config]=\"contextConfig()\"\n    [isLoading]=\"isLoading()\"\n    [dashboardChild]=\"dashboardChild\"\n    [linked]=\"isLinkedToGlobal()\"\n    (configChange)=\"onContextChange($event)\"\n    (refresh)=\"onRefresh()\"\n  ></c8y-global-context-connector>\n} @else {\n  <c8y-local-controls\n    [controls]=\"widgetControls()\"\n    [displayMode]=\"displayMode()\"\n    [config]=\"contextConfig()\"\n    [isLoading]=\"isLoading()\"\n    (configChange)=\"onContextChange($event)\"\n    (refresh)=\"onRefresh()\"\n  ></c8y-local-controls>\n}\n\n<c8y-events-list\n  [events]=\"events()\"\n  [isLoading]=\"isLoading()\"\n  [showPreview]=\"true\"\n  [navigationOptions]=\"navigationOptions()\"\n  (onScrollingStateChange)=\"onScrollingStateChange($event)\"\n  (onPreviewStateChange)=\"onPreviewStateChange($event)\"\n></c8y-events-list>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}