{"version":3,"file":"c8y-ngx-components-interval-picker.mjs","sources":["../../interval-picker/interval-picker.model.ts","../../interval-picker/interval-picker.component.ts","../../interval-picker/interval-picker.component.html","../../interval-picker/c8y-ngx-components-interval-picker.ts"],"sourcesContent":["import { gettext } from '@c8y/ngx-components/gettext';\n\nconst todayDate = new Date();\nexport enum TimeSpanInMs {\n  'MINUTE' = 1000 * 60,\n  'HOUR' = 1000 * 60 * 60,\n  'DAY' = 1000 * 60 * 60 * 24,\n  'WEEK' = 1000 * 60 * 60 * 24 * 7,\n  'MONTH' = todayDate.valueOf() - new Date(todayDate.setMonth(todayDate.getMonth() - 1)).valueOf()\n}\nexport type Interval = {\n  id: 'minutes' | 'hours' | 'days' | 'weeks' | 'months' | 'custom';\n  title: string;\n  timespanInMs?: number;\n};\n\nexport type AlarmFilterInterval =\n  | Interval\n  | {\n      id: 'none';\n      title: string;\n      timespanInMs?: number;\n    };\n\nexport const INTERVALS: Interval[] = [\n  {\n    id: 'minutes',\n    title: gettext('Last minute'),\n    timespanInMs: TimeSpanInMs.MINUTE\n  },\n  {\n    id: 'hours',\n    title: gettext('Last hour'),\n    timespanInMs: TimeSpanInMs.HOUR\n  },\n  {\n    id: 'days',\n    title: gettext('Last day'),\n    timespanInMs: TimeSpanInMs.DAY\n  },\n  {\n    id: 'weeks',\n    title: gettext('Last week'),\n    timespanInMs: TimeSpanInMs.WEEK\n  },\n  {\n    id: 'months',\n    title: gettext('Last month'),\n    timespanInMs: TimeSpanInMs.MONTH\n  },\n  { id: 'custom', title: gettext('Custom') }\n];\n\nexport const INTERVAL_TITLES: Record<Interval['id'], string> = {\n  minutes: gettext('Last minute'),\n  hours: gettext('Last hour'),\n  days: gettext('Last day'),\n  weeks: gettext('Last week'),\n  months: gettext('Last month'),\n  custom: gettext('Custom')\n};\n\ntype IntervalKey = Interval['id'];\ntype IntervalMap = { [K in IntervalKey]: K };\n\nexport const INTERVAL_VALUES = Object.keys(INTERVAL_TITLES).reduce(\n  (acc, key) => ({\n    ...acc,\n    [key]: key\n  }),\n  {} as IntervalMap\n);\n","import { Component, forwardRef, Input } from '@angular/core';\nimport {\n  ControlValueAccessor,\n  NG_VALUE_ACCESSOR,\n  FormsModule,\n  ReactiveFormsModule\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { AlarmFilterInterval, Interval, INTERVALS } from './interval-picker.model';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n  selector: 'c8y-interval-picker',\n  templateUrl: './interval-picker.component.html',\n  standalone: true,\n  imports: [CommonModule, FormsModule, A11yModule, ReactiveFormsModule, BsDropdownModule],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => IntervalPickerComponent),\n      multi: true\n    }\n  ]\n})\nexport class IntervalPickerComponent implements ControlValueAccessor {\n  @Input() INTERVALS: Interval[] | AlarmFilterInterval[] = INTERVALS;\n\n  value: Interval['id'];\n  touched = false;\n  disabled = false;\n\n  translatedIntervals: { id: string; title: string }[] = [];\n\n  constructor(private translate: TranslateService) {}\n\n  ngOnInit() {\n    this.translatedIntervals = this.INTERVALS.map(interval => ({\n      ...interval,\n      title: this.translate.instant(interval.title)\n    }));\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onChange = _ => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onTouched = () => {};\n\n  writeValue(value: Interval['id']) {\n    this.value = value;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(onTouched: any) {\n    this.onTouched = onTouched;\n  }\n\n  markAsTouched() {\n    if (!this.touched) {\n      this.onTouched();\n      this.touched = true;\n    }\n  }\n\n  setDisabledState(disabled: boolean) {\n    this.disabled = disabled;\n  }\n}\n","<li\n  *ngFor=\"let interval of translatedIntervals\"\n  [ngClass]=\"{\n    active: interval.id === value\n  }\"\n>\n  <button\n    type=\"button\"\n    (click)=\"onChange(interval.id)\"\n  >\n    <span\n      [ngClass]=\"{\n        'text-primary': interval.id === value\n      }\"\n    >\n      <span\n        c8yIcon=\"check\"\n        [ngStyle]=\"{ visibility: interval.id === value ? 'visible' : 'hidden' }\"\n      ></span>\n      {{ interval.title }}\n    </span>\n  </button>\n</li>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}