{"version":3,"file":"acknow-srl-ack6-lib-calendar.mjs","sources":["../../../projects/ack6-lib/calendar/components/new-calendar/new-calendar.component.ts","../../../projects/ack6-lib/calendar/components/new-calendar/new-calendar.component.html","../../../projects/ack6-lib/calendar/injection/injection.token.ts","../../../projects/ack6-lib/calendar/services/calendar.service.ts","../../../projects/ack6-lib/calendar/components/edit-event/edit-event.component.ts","../../../projects/ack6-lib/calendar/components/edit-event/edit-event.component.html","../../../projects/ack6-lib/calendar/components/worktime/worktime.component.ts","../../../projects/ack6-lib/calendar/components/worktime/worktime.component.html","../../../projects/ack6-lib/calendar/components/holidays-select/holidays-select.component.ts","../../../projects/ack6-lib/calendar/components/holidays-select/holidays-select.component.html","../../../projects/ack6-lib/calendar/components/edit-calendars/edit-calendars.component.ts","../../../projects/ack6-lib/calendar/components/edit-calendars/edit-calendars.component.html","../../../projects/ack6-lib/calendar/components/workshift-interval/workshift-interval.component.ts","../../../projects/ack6-lib/calendar/components/workshift-interval/workshift-interval.component.html","../../../projects/ack6-lib/calendar/components/detail-business-time/detail-business-time.component.ts","../../../projects/ack6-lib/calendar/components/detail-business-time/detail-business-time.component.html","../../../projects/ack6-lib/calendar/components/test-business-time/test-business-time.component.ts","../../../projects/ack6-lib/calendar/components/test-business-time/test-business-time.component.html","../../../projects/ack6-lib/calendar/components/select-calendars/select-calendars.component.ts","../../../projects/ack6-lib/calendar/components/select-calendars/select-calendars.component.html","../../../projects/ack6-lib/calendar/edit-calendar.module.ts","../../../projects/ack6-lib/calendar/acknow-srl-ack6-lib-calendar.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\n\n@Component({\n  selector: 'ack-new-calendar',\n  templateUrl: './new-calendar.component.html',\n  styleUrls: ['./new-calendar.component.scss']\n})\nexport class NewCalendarComponent implements OnInit {\n\n  public form: FormGroup;\n\n  constructor(\n    private fb: FormBuilder,\n    private dialogRef: DynamicDialogRef\n  ) {\n  }\n\n  save = () => {\n    this.dialogRef.close(this.form.value);\n  }\n\n  close = () => {\n    this.dialogRef.close();\n  }\n\n  ngOnInit(): void {\n\n    this.form = this.fb.group({\n      id: [null, [Validators.required]],\n      description: [null, [Validators.required]]\n    });\n\n  }\n\n}\n","<form class=\"content\" novalidate autocomplete=\"off\" autocapitalize=\"off\" spellcheck=\"false\" [formGroup]=\"form\" (submit)=\"save()\">\n\n  <div class=\"fluid dialog-content\">\n\n    <div class=\"field grid mb-3\">\n      <label for=\"id\" class=\"col-12 md:col-4 md:justify-content-end asterisk-if-mandatory\">ID calendario:</label>\n      <div class=\"col-12 md:col-7\">\n        <input type=\"text\" id=\"id\" size=\"20\" minlength=\"1\" maxlength=\"64\" class=\"w-full\" pInputText formControlName=\"id\" required />\n      </div>\n    </div>\n\n    <div class=\"field grid mb-0\">\n      <label for=\"description\" class=\"col-12 md:col-4 md:justify-content-end asterisk-if-mandatory\">Descrizione:</label>\n      <div class=\"col-12 md:col-7\">\n        <input type=\"text\" id=\"description\" size=\"20\" minlength=\"1\" maxlength=\"64\" class=\"w-full\" pInputText formControlName=\"description\" required />\n      </div>\n    </div>\n\n  </div>\n\n  <p-divider></p-divider>\n\n  <div class=\"flex px-2 pb-2 justify-content-end align-item-center\">\n    <button pButton pRipple type=\"submit\" label=\"Conferma\" class=\"p-button-success ml-2\" [disabled]=\"form.invalid\"></button>\n    <button pButton pRipple type=\"button\" label=\"Annulla\" class=\"p-button-text ml-2\" (click)=\"close()\"></button>\n  </div>\n\n</form>\n","import { InjectionToken } from '@angular/core';\n\nexport const API_PREFIX = new InjectionToken<string>('api_prefix');\n\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { API_PREFIX } from '../injection/injection.token';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CalendarService {\n\n  constructor(\n    private http: HttpClient,\n    @Inject(API_PREFIX) private api_prefix: string\n  ) {\n    if(!api_prefix){\n      console.warn('ATTENTION: no api_prefix found, please set on module.forRoot');\n    }\n  }\n\n  get = (projectId: number): Observable<any> => {\n    const headers = new HttpHeaders({ 'project-id': projectId.toString() });\n    return this.http.get<any>(`${this.api_prefix}/calendars`, { headers });\n  }\n\n  update = (projectId: number, calendarsData: any): Observable<any> => {\n    const headers = new HttpHeaders({ 'project-id': projectId.toString() });\n    return this.http.put<any>(`${this.api_prefix}/calendars`, calendarsData, { headers });\n  }\n\n  /*updateHolydays = (projectId: number, calendarIds: string[], holidays: any[]): Observable<any> => {\n    const headers = new HttpHeaders({ 'project-id': projectId.toString() });\n    return this.http.put<any>(`${this.api_prefix}/calendars/holidays`, {calendarIds, holidays}, { headers });\n  }*/\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\n\n@Component({\n  selector: 'ack-edit-event',\n  templateUrl: './edit-event.component.html',\n  styleUrls: ['./edit-event.component.scss']\n})\nexport class EditEventComponent implements OnInit {\n\n  public form: FormGroup;\n\n  constructor(\n    public dialogRef: DynamicDialogRef,\n    public dialogConfig: DynamicDialogConfig,\n    private fb: FormBuilder\n  ) {\n  }\n\n  close(data?: any): void {\n    this.dialogRef.close(data);\n  }\n\n  save = () => {\n    this.dialogRef.close(this.form.value);\n  }\n\n  delete = () => {\n    this.dialogRef.close('delete');\n  }\n\n  ngOnInit(): void {\n\n    this.form = this.fb.group({\n      start: [new Date(this.dialogConfig.data.start), [Validators.required]],\n      end: [new Date(this.dialogConfig.data.end), [Validators.required]],\n      efficiency: [this.dialogConfig.data.efficiency || 1.00, [Validators.required, Validators.min(0.01)]]\n    });\n\n  }\n\n}\n","<form class=\"content\" novalidate autocomplete=\"off\" autocapitalize=\"off\" spellcheck=\"false\" [formGroup]=\"form\" (submit)=\"save()\">\n\n  <div class=\"fluid dialog-content\">\n\n    <div class=\"field grid mb-2\">\n      <label for=\"start\" class=\"col-12 md:col-4 md:justify-content-end asterisk-if-mandatory\">Inizio:</label>\n      <div class=\"col-12 md:col-7\">\n        <p-calendar formControlName=\"start\" appendTo=\"body\" [showTime]=\"true\" hourFormat=\"24\" [stepMinute]=\"5\" [timeOnly]=\"true\" [required]=\"true\"></p-calendar>\n      </div>\n    </div>\n\n    <div class=\"field grid mb-2\">\n      <label for=\"end\" class=\"col-12 md:col-4 md:justify-content-end asterisk-if-mandatory\">Fine:</label>\n      <div class=\"col-12 md:col-7\">\n        <p-calendar formControlName=\"end\" appendTo=\"body\" [showTime]=\"true\" hourFormat=\"24\" [stepMinute]=\"5\" [timeOnly]=\"true\" [required]=\"true\"></p-calendar>\n      </div>\n    </div>\n\n    <div class=\"field grid mb-0\">\n      <label for=\"efficiency\" class=\"col-12 md:col-4 md:justify-content-end asterisk-if-mandatory\">Efficienza:</label>\n      <div class=\"col-12 md:col-7\">\n        <p-inputNumber inputId=\"efficiency\" class=\"w-full\" mode=\"decimal\" [min]=\"0.01\" [step]=\"0.01\" [minFractionDigits]=\"2\" [maxFractionDigits]=\"2\" [showButtons]=\"true\" formControlName=\"efficiency\" [required]=\"true\"></p-inputNumber>\n      </div>\n    </div>\n\n  </div>\n\n  <p-divider></p-divider>\n\n  <div class=\"flex px-2 pb-2 justify-content-between align-item-center\">\n    <button pButton pRipple type=\"button\" label=\"Elimina\" class=\"p-button-danger mr-2\" (click)=\"delete()\"></button>\n    <div>\n      <button pButton pRipple type=\"submit\" label=\"Conferma\" class=\"p-button-success ml-2\" [disabled]=\"form.invalid\"></button>\n      <button pButton pRipple type=\"button\" label=\"Annulla\" class=\"p-button-text ml-2\" (click)=\"close()\"></button>\n    </div>\n  </div>\n\n</form>\n\n","import { CustomWeek, Worktime } from '@acknow-srl/business-time';\nimport { Component, forwardRef, OnInit, AfterViewInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CalendarOptions, DateSelectArg, EventClickArg, EventDropArg, EventInput, FullCalendarComponent } from '@fullcalendar/angular';\nimport itLocale from '@fullcalendar/core/locales/it';\nimport { EventResizeDoneArg } from '@fullcalendar/interaction';\nimport { debounce, each, groupBy, orderBy } from 'lodash';\nimport moment from 'moment';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { merge } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { v4 } from 'uuid';\nimport { EditEventComponent } from '../edit-event/edit-event.component';\n\n@Component({\n  selector: 'ack-worktime',\n  templateUrl: './worktime.component.html',\n  styleUrls: ['./worktime.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => WorktimeComponent),\n      multi: true\n    }\n  ]\n})\nexport class WorktimeComponent implements OnInit, AfterViewInit, ControlValueAccessor {\n\n  public field: any;\n\n  public calendarOptions: CalendarOptions;\n\n  public uuid = v4();\n\n  @ViewChild('calendar') calendar: FullCalendarComponent;\n\n  constructor(\n    private fb: FormBuilder,\n    private dialogSvc: DialogService\n  ) {\n\n    moment.locale('it');\n\n    this.calendarOptions = {\n      dayHeaderFormat: { weekday: 'long' },\n      height: '100%',\n      initialView: 'timeGridWeek',\n      allDaySlot: false,\n      locales: [itLocale],\n      locale: \"it\",\n      selectable: true,\n      eventOverlap: false,\n      selectOverlap: false,\n      headerToolbar: false,\n      editable: true,\n      snapDuration: '00:05:00',\n      firstDay: 0,\n      events: [],\n      displayEventEnd: true,\n      selectConstraint: { startTime: '00:00', endTime: '24:00' },\n      eventResize: (event: EventResizeDoneArg) => this.update(event),\n      eventDrop: (event: EventDropArg) => this.update(event),\n      select: (event: DateSelectArg) => this.create(event),\n      eventClick: (event: EventClickArg) => this.edit(event),\n    };\n  }\n\n  propagateChange = (_: any) => { };\n\n  set value(val: Worktime | CustomWeek) {\n\n    this.field = val;\n\n    if (this.calendar && this.calendar.getApi()) {\n      this.loadCalendar();\n    }\n\n  }\n\n  writeValue = (worktime: Worktime | CustomWeek) => {\n\n    this.value = worktime;\n\n  }\n\n  registerOnChange = (fn: any) => (this.propagateChange = fn);\n\n  registerOnTouched = (fn: any) => { };\n\n  setDisabledState = (isDisabled: boolean) => { };\n\n  create = (event: DateSelectArg): void => {\n\n    const evt: EventInput = {\n      id: v4(),\n      title: 'Efficienza: 1.00',\n      start: moment(event.start).format('YYYY-MM-DDTHH:mm:ss'),\n      end: moment(event.end).format('YYYY-MM-DDTHH:mm:ss'),\n      extendedProps: {\n        efficiency: 1\n      },\n      constraint: { startTime: '00:00', endTime: '24:00' }\n    };\n\n    this.calendar.getApi().addEvent(evt);\n\n    this.updateOut();\n\n  }\n\n  update = (event: EventResizeDoneArg | EventDropArg): void => {\n    event.event.setProp('title', `Efficienza: ${event.event.extendedProps.efficiency.toFixed(2)}`);\n    this.updateOut();\n  }\n\n  edit = async (event: EventClickArg): Promise<void> => {\n\n    const ref = this.dialogSvc.open(EditEventComponent, {\n      data: {\n        start: event.event.start,\n        end: event.event.end,\n        efficiency: event.event.extendedProps.efficiency\n      },\n      showHeader: true,\n      header: `Modifica: ${moment(event.event.start).format('dddd HH:mm')} - ${moment(event.event.end).format('HH:mm')}`,\n      width: '400px',\n      dismissableMask: true,\n      styleClass: 'flex-dialog-content'\n    });\n\n    const result = await merge(ref.onClose, ref.onDestroy).pipe(first()).toPromise();\n    if (result) {\n      if (result === 'delete') {\n        const evt = this.calendar.getApi().getEventById(event.event.id);\n        if (evt) evt.remove();\n      }\n      else {\n        event.event.setStart(result.start);\n        event.event.setEnd(result.end);\n        event.event.setProp('title', `Efficienza: ${result.efficiency.toFixed(2)}`);\n        event.event.setExtendedProp('efficiency', result.efficiency);\n      }\n    }\n\n    this.updateOut();\n\n  }\n\n  ngOnInit(): void {\n\n  }\n\n  ngAfterViewInit(): void {\n    this.loadCalendar();\n  }\n\n  loadCalendar = debounce(() => {\n    this.calendar.getApi().removeAllEvents();\n    each(this.field.days, (day: string[], i: number) => {\n      each(day, (d: string, x: number) => {\n        const efficiency: number = (this.field.efficiency[i] && this.field.efficiency[i][x]) ? parseFloat(this.field.efficiency[i][x]) : 1;\n        const hours = d.split('-');\n        const date = moment().startOf('week').day(i).format('YYYY-MM-DD');\n        const event: EventInput = {\n          id: v4(),\n          title: `Efficienza: ${efficiency.toFixed(2)}`,\n          start: `${date}T${hours[0]}:00`,\n          end: `${date}T${hours[1]}:00`,\n          extendedProps: {\n            efficiency\n          },\n          constraint: { startTime: '00:00', endTime: '24:00' }\n        };\n        this.calendar.getApi().addEvent(event);\n      });\n    });\n  });\n\n  updateOut = () => {\n\n    const worktime: Worktime = {\n      days: [[], [], [], [], [], [], []],\n      efficiency: [[], [], [], [], [], [], []],\n    }\n\n    const efficiency: Worktime[\"efficiency\"] = [[], [], [], [], [], [], []];\n    Object.entries(groupBy(this.calendar.getApi().getEvents().map(event => ({\n      shift: `${moment(event.start).format('HH:mm')}-${moment(event.end).format('kk:mm')}`,\n      day: moment(event.start).day(),\n      efficiency: event.extendedProps.efficiency\n    })), 'day')).forEach(entry => {\n      const _event = orderBy(entry[1], 'shift');\n      worktime.days[parseInt(entry[0])] = _event.map(e => e.shift);\n      efficiency[parseInt(entry[0])] = _event.map(e => e.efficiency);\n    });\n    worktime.efficiency = efficiency;\n\n    this.propagateChange(worktime);\n\n  }\n\n}\n","<div class=\"calendar-wrapper\">\n\n  <full-calendar id=\"{{uuid}}\" class=\"calendar\" #calendar [options]=\"calendarOptions\"></full-calendar>\n\n</div>\n\n","import { Component, forwardRef, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport moment from 'moment';\n\n@Component({\n  selector: 'ack-holidays-select',\n  templateUrl: './holidays-select.component.html',\n  styleUrls: ['./holidays-select.component.scss'],\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => HolidaysSelectComponent),\n    multi: true\n  }],\n})\nexport class HolidaysSelectComponent implements OnInit, ControlValueAccessor {\n\n  holidays: Date[];\n  propagateChange = (_: any) => { };\n\n  constructor() {}\n\n  ngOnInit(): void {}\n\n  remove = (data: Date) => {\n    this.holidays.splice(this.holidays.indexOf(data), 1);\n    this.outputChange(this.holidays);\n  }\n  onChange = (event: any) => {\n    this.outputChange(this.holidays);\n  }\n\n  outputChange = (holidays: Date[]) =>\n    this.propagateChange(holidays.sort((a, b) => moment(a).isBefore(moment(b)) ? -1 : 1).map(data => moment(data).format('MM-DD')))\n\n\n  writeValue(values: string[]): void {\n    this.holidays = [];\n    if (values && values.length) {\n      values.reduce((acc, cur) => {\n        if (cur.split('-').length > 1) {\n          // prendo in considerazione anche gli anni bisestili...\n          acc.push(moment(`2020-${cur}`).toDate());\n        }\n        return acc;\n      }, this.holidays);\n      this.holidays.sort((a, b) => moment(a).isBefore(moment(b)) ? -1 : 1);\n    }\n  }\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n\n  }\n\n\n}\n","\n<p-chip *ngFor=\"let holiday of holidays\" label=\"{{holiday | date : 'dd MMMM'}}\" styleClass=\"p-mr-1 p-mb-1\" label=\"Giorni festivi\" [removable]=\"true\" (onRemove)=\"remove(holiday)\"></p-chip>\n\n<p-overlayPanel #op [showCloseIcon]=\"true\" [appendTo]=\"'body'\">\n  <ng-template pTemplate>\n    <p-calendar [inline]=\"true\" [(ngModel)]=\"holidays\" (onSelect)=\"onChange($event)\" (onClearClick)=\"onChange\" (onTodayClick)=\"onChange($event)\" selectionMode=\"multiple\" [showButtonBar]=\"true\"></p-calendar>\n  </ng-template>\n</p-overlayPanel>\n\n<button type=\"button\" label=\"Festività\" title=\"Aggiungi giorno festivo\" pButton icon=\"pi pi-plus\" class=\"p-button-rounded p-button-outlined p-button-sm\" (click)=\"op.toggle($event)\"></button>\n","import { AfterViewInit, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { DialogService, DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { take, takeWhile } from 'rxjs/operators';\nimport { cloneDeep, each, find, findIndex, isEmpty } from 'lodash';\nimport moment from 'moment';\nimport { CalendarService } from '../../services/calendar.service';\nimport { NewCalendarComponent } from '../new-calendar/new-calendar.component';\nimport { merge } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { MessageService } from 'primeng/api';\nimport { Calendar, CustomWeek } from '@acknow-srl/business-time';\nimport { NumberFilterModel } from 'ag-grid-community';\nimport { SelectCalendarsComponent } from '../select-calendars/select-calendars.component';\n\n@Component({\n  selector: 'ack-edit-calendars',\n  templateUrl: './edit-calendars.component.html',\n  styleUrls: ['./edit-calendars.component.scss']\n})\nexport class EditCalendarsComponent implements OnInit, AfterViewInit, OnDestroy {\n\n  private _projectId: number;\n\n  @Input()\n  set projectId(value: any) {\n    this._projectId = value;\n    this.loadCalendar();\n  }\n\n  get projectId() {\n    return this._projectId;\n  }\n\n  private _project: any;\n\n  @Input()\n  set project(value: any) {\n    this._project = value;\n    this.projectId = value.id;\n  }\n\n  get project() {\n    return this._project;\n  }\n\n  private isDestroying: boolean;\n\n  public calendars: Calendar[];\n\n  public calendar: Calendar;\n\n  public calendarOn = true;\n\n  public index: number;\n\n  public form: FormGroup;\n\n  constructor(\n    private calendarsSvc: CalendarService,\n    private dialogSvc: DialogService,\n    public dialogRef: DynamicDialogRef,\n    public dialogConfig: DynamicDialogConfig,\n    private fb: FormBuilder,\n    private messageSvc: MessageService\n  ) {\n\n    this.calendars = [];\n\n    this.index = 0;\n\n  }\n\n  get customWeeksArray(): FormArray {\n    return this.form.get('customWeeks') as FormArray;\n  }\n\n  setCurrentCalendar = (calendarIdx: number = -1): void => {\n    this.index = 0;\n    if (calendarIdx === null) return;\n    this.calendar = this.calendars[calendarIdx];\n    this.form.patchValue({\n      id: this.calendar.id,\n      description: this.calendar.description,\n      worktime: this.calendar.worktime,\n      holidays: this.calendar.worktime.holidays\n    }, { emitEvent: false });\n    this.customWeeksArray.clear({ emitEvent: false });\n    if (!isEmpty(this.calendar.worktime.customWeeks)) {\n      each(this.calendar.worktime.customWeeks, (week: CustomWeek, id: string) => {\n        this.customWeeksArray.push(this.addCustomWeek(id, week), { emitEvent: false });\n      });\n    }\n  }\n\n  calendarExists = (id: string): boolean => {\n    return (find(this.calendars, (calendar: Calendar) => calendar.id === id)) ? true : false;\n  }\n\n  addCustomWeek(id: string | undefined | null, customWeek: CustomWeek): FormGroup {\n    return this.fb.group({\n      id: [id, [Validators.compose([Validators.required, Validators.pattern(/[a-z][a-z0-9_-]+/i)])]],\n      range: [[moment(customWeek.from).toDate(), moment(customWeek.to).toDate()], [Validators.required]],\n      customWeek: [{ efficiency: customWeek.efficiency, days: customWeek.days }]\n    });\n  }\n\n  add = async (): Promise<void> => {\n\n    this.messageSvc.clear('msg');\n\n    const ref = this.dialogSvc.open(NewCalendarComponent, {\n      showHeader: true,\n      header: 'Nuovo calendario',\n      width: '400px',\n      dismissableMask: true,\n      styleClass: 'flex-dialog-content'\n    });\n    const result = await merge(ref.onClose, ref.onDestroy).pipe(first()).toPromise();\n\n    if (result && result.id) {\n      if (this.calendarExists(result.id)) this.messageSvc.add({ severity: 'warn', key: 'msg', sticky: true, summary: 'Calendario già esistente', detail: `Un calendario con ID \"${result.id}\" esiste già.` });\n      else {\n        this.calendars.push({\n          id: result.id,\n          description: result.description,\n          worktime: {\n            efficiency: [[], [], [], [], [], [], []],\n            days: [[], [], [], [], [], [], []],\n            holidays: [],\n            customWeeks: {}\n          }\n        });\n        this.setCurrentCalendar(this.calendars.length - 1);\n      }\n    }\n\n  }\n\n  remove = (): void => {\n    const calendarIdx = findIndex(this.calendars, (calendar: Calendar) => this.calendar && this.calendar.id === calendar.id);\n    if (calendarIdx > -1) {\n      this.calendars.splice(calendarIdx, 1);\n      this.customWeeksArray.clear();\n      this.form.reset();\n      this.setCurrentCalendar((this.calendars && this.calendars.length) ? 0 : -1);\n    }\n  }\n\n  addCustom = (): void => {\n    this.customWeeksArray.push(this.addCustomWeek(null, { from: moment().toDate(), to: moment().add(1, 'day').toDate(), efficiency: [[], [], [], [], [], [], []], days: [[], [], [], [], [], [], []] }));\n  }\n\n  removeCustom = (pos: number): void => {\n    this.customWeeksArray.removeAt(pos);\n  }\n\n  cloneCalendar = async (calendar: Calendar): Promise<void> => {\n\n    this.messageSvc.clear('msg');\n\n    const ref = this.dialogSvc.open(NewCalendarComponent, {\n      showHeader: true,\n      header: `Duplica calendario: ${calendar.description || calendar.id}`,\n      width: '400px',\n      dismissableMask: true,\n      styleClass: 'flex-dialog-content'\n    });\n    const result = await merge(ref.onClose, ref.onDestroy).pipe(first()).toPromise();\n\n    if (result.id) {\n      if (this.calendarExists(result.id)) this.messageSvc.add({ severity: 'warn', key: 'msg', sticky: true, summary: 'Calendario già esistente', detail: `Un calendario con ID \"${result.id}\" esiste già.` });\n      else {\n        const calendar = cloneDeep(this.calendar);\n        calendar.id = result.id;\n        calendar.description = result.description;\n        this.calendars.push(calendar);\n        this.setCurrentCalendar(this.calendars.length - 1);\n      }\n    }\n\n  }\n\n  /*copyHolidays = async (calendar: Calendar): Promise<void> => {\n\n    const ref = this.dialogSvc.open(SelectCalendarsComponent, {\n      data: {\n        projectId: this.projectId,\n        calendars: this.calendars,\n        calendarId: calendar.id\n      },\n      showHeader: true,\n      header: `Copia festività da \"${calendar.description || calendar.id}\" nei calendari selezionati`,\n      width: '400px',\n      dismissableMask: true,\n      styleClass: 'flex-dialog-content'\n    });\n    const result = await merge(ref.onClose, ref.onDestroy).pipe(first()).toPromise();\n\n    if (result && result.length) {\n\n      const holidays = this.form.get('holidays')?.value || []; // Giorni festivi del calendario corrente.\n\n      console.log(this.projectId);\n      console.log(holidays);\n      console.log(result);\n\n      await this.calendarsSvc.updateHolydays(this.projectId, result, holidays).toPromise();\n\n    }\n\n  }*/\n\n  ngOnInit(): void {\n    this.form = this.fb.group({\n      id: null,\n      description: null,\n      worktime: null,\n      holidays: [[]],\n      customWeeks: this.fb.array([])\n    });\n  }\n\n  ngAfterViewInit(): void {\n\n    // this.loadCalendar();\n\n  }\n\n  loadCalendar = () => setTimeout(() => {\n\n    this.calendarsSvc.get(this.projectId).pipe(\n      take(1)\n    ).subscribe((calendars: any) => {\n      this.calendars = calendars.calendars;\n      this.setCurrentCalendar((this.calendars && this.calendars.length) ? 0 : -1);\n\n      // di buone intenzioni...\n      this.form.valueChanges.pipe(\n        // e di cattive...\n        takeWhile(() => !this.isDestroying)\n      ).subscribe(calendar => {\n        this.calendar.worktime = calendar.worktime;\n        this.calendar.worktime.customWeeks = (calendar.customWeeks as any[]).reduce((acc, { id, customWeek, range }) => ({\n          ...acc, [id]: {\n            ...customWeek,\n            from: moment(range[0]).format('YYYY-MM-DD'),\n            to: moment(range[1]).format('YYYY-MM-DD')\n          }\n        }), {});\n        this.calendar.worktime.holidays = calendar.holidays;\n      });\n    });\n\n  });\n\n  ngOnDestroy(): void {\n    this.isDestroying = true;\n  }\n\n  saveCalendars = async () => {\n    await this.calendarsSvc.update(this.projectId, { calendars: this.calendars }).toPromise();\n    this.form.markAsPristine();\n    this.form.markAsUntouched();\n  }\n\n\n}\n","<form class=\"content\" novalidate autocomplete=\"off\" autocapitalize=\"off\" spellcheck=\"false\" [formGroup]=\"form\">\n\n    <div class=\"fluid ack-nogutter ack-flex\">\n\n    <div class=\"wrapper\">\n\n      <aside class=\"calendars-list\">\n\n        <div class=\"field grid mb-3\">\n          <div class=\"col-12 md:col-12\">\n            <button type=\"button\" pButton class=\"p-button-success w-full text-uppercase\" label=\"Nuovo calendario\"\n              (click)=\"add()\"></button>\n          </div>\n        </div>\n\n        <ul>\n          <li *ngFor=\"let c of calendars; let i = index\">\n            <button type=\"button\" pButton class=\"w-full\" [ngClass]=\"(calendar && c.id===calendar.id)? 'p-button-primary' : 'p-button-text'\"\n              [label]=\"c.id + ((c.description)? ' - ' + c.description : '')\" (click)=\"setCurrentCalendar(i)\"></button></li>\n        </ul>\n      </aside>\n\n      <div class=\"calendars-main\">\n\n        <p-accordion *ngIf=\"calendars && calendars.length\" [(activeIndex)]=\"index\">\n          <p-accordionTab [header]=\"calendar.id + ((calendar.description)? ' - ' + calendar.description : '')\" [selected]=\"true\">\n\n            <div class=\"calendar-container mb-2\">\n              <ack-worktime *ngIf=\"!index\" formControlName=\"worktime\"></ack-worktime>\n            </div>\n\n            <div>\n              <ack-holidays-select formControlName=\"holidays\"></ack-holidays-select>\n            </div>\n\n          </p-accordionTab>\n\n          <ng-container formArrayName=\"customWeeks\">\n\n            <p-accordionTab\n              [header]=\"(c.get('id')?.value)? c.get('id')?.value + ' (variazione ' + (i + 1) + ')' : '(Variazione senza nome ' + (i + 1) + ')'\"\n              *ngFor=\"let c of customWeeksArray.controls; let i = index\">\n\n              <div [formGroupName]=\"i\">\n\n                <div class=\"field grid align-items-center\">\n\n                  <label for=\"id-{{i}}\" class=\"col-12 md:col-1 md:justify-content-end asterisk-if-mandatory\">ID:</label>\n                  <div class=\"col-12 md:col-4\">\n                    <input type=\"text\" id=\"id-{{i}}\" size=\"20\" pInputText class=\"w-full\" formControlName=\"id\" />\n                  </div>\n\n                  <label for=\"range-{{i}}\" class=\"col-12 md:col-1 md:justify-content-end asterisk-if-mandatory\">Da -\n                    a:</label>\n                  <div class=\"col-12 md:col-4\">\n                    <p-calendar class=\"w-full\" inputId=\"range-{{i}}\" selectionMode=\"range\" [showTime]=\"false\"\n                      [showIcon]=\"true\" dateFormat=\"dd/mm/yy\" appendTo=\"body\" [numberOfMonths]=\"2\"\n                      formControlName=\"range\"></p-calendar>\n                  </div>\n\n                  <div class=\"col-12 md:col-2 text-right\">\n                    <button type=\"button\" pButton class=\"p-button-danger mr-1\" icon=\"pi pi-trash\"\n                      title=\"Elimina variazione\" (click)=\"removeCustom(i)\"></button>\n                  </div>\n\n                </div>\n\n                <div class=\"calendar-container\">\n                  <ack-worktime *ngIf=\"index===i + 1\" formControlName=\"customWeek\"></ack-worktime>\n                </div>\n\n              </div>\n\n            </p-accordionTab>\n\n          </ng-container>\n\n\n        </p-accordion>\n\n      </div>\n\n      <aside class=\"calendar-controls\">\n        <ul>\n          <li><button type=\"submit\" pButton class=\"p-button-text\" icon=\"pi pi-save\" title=\"Salva{{(form.dirty)? ' (modifiche non salvate)' : ''}}\"\n              [disabled]=\"form.invalid || !calendar\" (click)=\"saveCalendars()\"></button><span class=\"unsaved\" *ngIf=\"form.dirty\"></span></li>\n          <li><button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-plus\" title=\"Aggiungi variazione\"\n              [disabled]=\"!calendar\" (click)=\"addCustom()\"></button></li>\n          <li class=\"separate\"><button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-copy\"\n              title=\"Duplica calendario\" [disabled]=\"!calendar\" (click)=\"cloneCalendar(calendar)\"></button></li>\n          <!--<li class=\"separate\"><button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-calendar-plus\"\n            title=\"Copia festività\" [disabled]=\"!calendar || calendars.length<2\" (click)=\"copyHolidays(calendar)\"></button></li>-->\n          <li class=\"separate\"><button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-trash\"\n              title=\"Elimina calendario\" [disabled]=\"calendars && calendars.length<2\" (click)=\"remove()\"></button></li>\n        </ul>\n      </aside>\n\n    </div>\n\n  </div>\n\n</form>\n\n<p-toast key=\"msg\" position=\"bottom-center\"></p-toast>\n","import { DayShiftLog } from '@acknow-srl/business-time';\nimport { Component, OnInit, Input } from '@angular/core';\nimport { cloneDeep } from 'lodash';\n\n@Component({\n  selector: 'ack6-workshift-interval',\n  templateUrl: './workshift-interval.component.html',\n  styleUrls: ['./workshift-interval.component.scss']\n})\nexport class WorkshiftIntervalComponent implements OnInit {\n\n  @Input() public shift: DayShiftLog | null;\n\n  public from: Date | null;\n\n  public to: Date | null;\n\n  public startWork: Date | null;\n\n  public endWork: Date | null;\n\n  public offset: number;\n\n  public fill: number;\n\n  constructor() {\n\n    this.from = null;\n\n    this.to = null;\n\n    this.startWork = null;\n\n    this.endWork = null;\n\n    this.offset = 0;\n\n    this.fill = 0;\n\n  }\n\n  ngOnInit(): void {\n\n    if (this.shift ) {\n\n      const data = cloneDeep(this.shift);\n\n      let shiftLength = 0;\n\n      if (data.from && data.to) {\n\n        this.from = data.from.toDate();\n\n        this.to = data.to.toDate();\n\n        shiftLength = data.to.diff(data.from, 'minutes'); // Lunghezza in minuti del turno.\n\n      }\n\n      if (shiftLength && data.startWork && data.endWork) {\n\n        this.startWork = data.startWork.toDate();\n\n        this.endWork = data.endWork.toDate();\n\n        const workLength = data.endWork.diff(data.startWork, 'minutes'); // Lunghezza in minuti del tempo lavorato.\n\n        this.fill = Math.floor(workLength * 100 / shiftLength); // Lunghezza in percentuale del tempo lavorato.\n\n        const workDiff = data.startWork.diff(data.from, 'minutes'); // Differenza in minuti tra inizio del turno e inizio del lavoro.\n\n        this.offset = Math.floor(workDiff * 100 / shiftLength); // Lunghezza in percentuale del tempo tra inizio del turno e inizio del lavoro.\n\n      }\n\n    }\n\n  }\n\n}\n","<div class=\"workshift\">\n  <p>{{from | date : 'HH:mm'}}</p>\n  <p>{{to | date : 'HH:mm'}}</p>\n</div>\n<div class=\"workshift-bar-wrapper\">\n  <div class=\"bar-wrapper\">\n    <div [ngStyle]=\"{'width.%': fill, 'margin-left.%': offset}\" title=\"{{startWork | date : 'HH:mm'}} - {{endWork | date : 'HH:mm'}}\"></div>\n  </div>\n</div>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { TreeNode } from 'primeng/api';\n\n@Component({\n  selector: 'ack6-detail-business-time',\n  templateUrl: './detail-business-time.component.html',\n  styleUrls: ['./detail-business-time.component.scss']\n})\nexport class DetailBusinessTimeComponent implements OnInit {\n\n  _tot: { d: number, de: number, e: number }\n  get tot(): { d: number, de: number, e: number } {\n    return this._tot\n  }\n  set tot(value: { d: number, de: number, e: number }) {\n    this._tot = { ...value, e: value.d ? value.de / value.d : 0 };\n  }\n\n  _logs: TreeNode[];\n  get logs(): TreeNode[] {\n    return this._logs;\n  }\n  @Input('logs') set logs(value: TreeNode[]) {\n    this._logs = value;\n    if (value) this.tot = value.reduce<any>((acc, curr) => ({ d: acc.d + curr.data?.duration, de: acc.de + curr.data?.duration_x_efficiency }), { d: 0, de: 0 });\n  }\n\n  constructor() { }\n\n  ngOnInit(): void {\n\n  }\n\n}\n","<p-treeTable [value]=\"logs\" [scrollable]=\"true\" scrollHeight=\"360px\">\n  <ng-template pTemplate=\"header\">\n    <tr>\n      <th>Data</th>\n      <th>Shift</th>\n      <th class=\"text-right\">Effective duration</th>\n      <th class=\"text-right\">Efficiency</th>\n      <th class=\"text-right\">Theoretical duration</th>\n    </tr>\n    <tr>\n      <th colspan=\"2\"></th>\n      <th class=\"text-right\">{{tot?.d | number : '1.0-0'}}</th>\n      <th class=\"text-right\">{{tot?.e | number: '1.2-2'}}</th>\n      <th class=\"text-right\">{{tot?.de | number : '1.0-0'}}</th>\n    </tr>\n  </ng-template>\n  <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\">\n    <tr>\n      <td>\n        <p-treeTableToggler [rowNode]=\"rowNode\"></p-treeTableToggler>\n        {{rowData.day | date : 'dd/MM/yyyy'}}\n      </td>\n      <td>\n        <ack6-workshift-interval *ngIf=\"rowData.from && rowData.to\" [shift]=\"rowData\"></ack6-workshift-interval>\n      </td>\n      <td class=\"text-right\">{{rowData.duration | number : '1.0-0'}}</td>\n      <td class=\"text-right\">{{rowData.efficiency | number : '1.0-2'}}</td>\n      <td class=\"text-right\">{{rowData.duration_x_efficiency | number : '1.0-0'}}</td>\n    </tr>\n  </ng-template>\n  <ng-template pTemplate=\"footer\">\n    <tr>\n      <td colspan=\"2\"></td>\n      <td class=\"text-right\">{{tot?.d | number : '1.0-0'}}</td>\n      <td class=\"text-right\">{{tot?.e | number: '1.2-2'}}</td>\n      <td class=\"text-right\">{{tot?.de | number : '1.0-0'}}</td>\n    </tr>\n  </ng-template>\n</p-treeTable>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { FormGroup, FormBuilder } from '@angular/forms';\nimport { map, tap } from 'rxjs/operators';\nimport { assign, cloneDeep } from 'lodash';\nimport moment from 'moment';\nimport { BusinessTime, Calendar, useLogger } from '@acknow-srl/business-time';\nimport { Observable, merge } from 'rxjs';\n\n@Component({\n  selector: 'ack6-test-business-time',\n  templateUrl: './test-business-time.component.html',\n  styleUrls: ['./test-business-time.component.scss']\n})\nexport class TestBusinessTimeComponent implements OnInit, OnChanges {\n\n  @Input() public data: any;\n\n  @Input() public calendars: Calendar[];\n\n  public form: FormGroup;\n\n  public logs$: Observable<any>;\n\n  constructor(\n    private fb: FormBuilder,\n  ) {\n    this.data = this.data || {};\n  }\n\n  validate = (data: any): any => {\n    const defaults: any = {\n      from: null,\n      to: null,\n      duration: null,\n      calendar: null,\n      lock_from: false,\n      lock_to: false,\n      lock_duration: false\n    };\n\n    if (data.from && moment(data.from, 'YYYY-MM-DD HH:mm:ss').isValid()) data.from = moment(data.from).toDate();\n    if (data.to && moment(data.to, 'YYYY-MM-DD HH:mm:ss').isValid()) data.to = moment(data.to).toDate();\n    if (data.duration) data.duration = parseInt(data.duration);\n    if (data.calendar) data.calendar = String(data.calendar);\n\n    return assign(defaults, data);\n\n  }\n\n  toggleControl(controlName: string): void {\n    if (!(controlName.startsWith('lock_') && controlName.length > 5)) {\n      return;\n    }\n    const lockControls = Object.entries(this.form.controls).filter(control => control[0].startsWith('lock_') && control[0].length > 5);\n\n    lockControls.filter(control => control[0] === controlName).forEach(control => {\n      control[1].disable({ emitEvent: false });\n      this.form.get(control[0].split('_')[1])?.disable({ emitEvent: false });\n    });\n\n    lockControls.filter(control => control[0] !== controlName).forEach(control => {\n      control[1].enable({ emitEvent: false });\n      this.form.get(control[0].split('_')[1])?.enable({ emitEvent: false });\n      control[1].patchValue(false, { emitEvent: false });\n    });\n  }\n\n  fireControlCheck(data: any): void {\n    if (data.from && data.duration !== null) {\n      this.form.get('lock_to')?.patchValue(true);\n    }\n    if (!data.from && data.to && data.duration !== null) {\n      this.form.get('lock_from')?.patchValue(true);\n    }\n    if (data.from && data.to && data.duration === null) {\n      this.form.get('lock_duration')?.patchValue(true);\n    }\n  }\n\n  ngOnInit(): void {\n\n    this.form = this.fb.group({\n      from: null,\n      to: null,\n      duration: null,\n      calendar: null,\n      lock_from: false,\n      lock_to: false,\n      lock_duration: false\n    });\n\n    this.logs$ = merge(\n      ...Object.entries(this.form.controls).map(entry => entry[1].valueChanges.pipe(map(value => ({ name: entry[0], value }))))\n    ).pipe(\n      tap(control => this.toggleControl(control.name)),\n      map(() => this.form.getRawValue()),\n      map(formValue => {\n        const worktime = this.calendars && this.calendars.length > 0 ? this.calendars.find(calendar => calendar.id === formValue.calendar)?.worktime : undefined;\n        let [logs, logger] = useLogger();\n        if (worktime) {\n          const bt = new BusinessTime(worktime);\n\n          let from = formValue.from;\n          let to = formValue.to;\n          let duration = formValue.duration;\n\n          if (formValue.lock_from) {\n            from = bt.addMinutes(to, -1 * duration);\n            this.form.get('from')?.setValue(from.toDate(), { emitEvent: false });\n          } else if (formValue.lock_to) {\n            to = bt.addMinutes(from, duration);\n            this.form.get('to')?.setValue(to.toDate(), { emitEvent: false });\n          } else if (formValue.lock_duration) {\n            duration = bt.workingTime(from, to, true);\n            this.form.get('duration')?.setValue(duration, { emitEvent: false });\n          }\n\n          bt.workingTime(from, to, true, logger);\n        }\n        return logs.map(log => ({ ...log, expanded: true }));\n      })\n    );\n\n    setTimeout(() => {\n      const data = this.validate(this.data);\n      this.form.patchValue(data);\n      this.fireControlCheck(data);\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.form) {\n      this.fireControlCheck(this.form.getRawValue());\n    }\n  }\n\n}\n","<div class=\"d-flex flex-column flex-nowrap align-items-stretch gap-0\">\n\n  <form method=\"post\" novalidate autocomplete=\"off\" autocapitalize=\"off\" spellcheck=\"false\" [formGroup]=\"form\">\n\n    <div class=\"grid justify-content-start align-items-center\">\n\n      <label for=\"calendar\" class=\"text-right col-12 md:col-1 md:justify-content-end\">Calendario</label>\n      <div class=\"col-12 md:col-11\">\n        <p-dropdown [options]=\"calendars\" [style]=\"{width: '100%'}\" optionValue=\"id\" optionLabel=\"id\" formControlName=\"calendar\"></p-dropdown>\n      </div>\n\n    </div>\n\n    <div class=\"grid justify-content-start align-items-center\">\n\n      <label for=\"from\" class=\"text-right col-12 md:col-1 md:justify-content-end\">Data inizio</label>\n      <div>\n        <p-calendar inputId=\"from\" dateFormat=\"dd/mm/yy\" appendTo=\"body\" [showIcon]=\"true\" [showTime]=\"true\" formControlName=\"from\"></p-calendar>\n      </div>\n      <div class=\"col-12 md:col-1\">\n        <p-toggleButton onIcon=\"pi pi-lock\" offIcon=\"pi pi-lock-open\" formControlName=\"lock_from\"></p-toggleButton>\n      </div>\n\n      <label for=\"to\" class=\"text-right col-12 md:col-1 md:justify-content-end\">Data fine</label>\n      <div>\n        <p-calendar inputId=\"to\" dateFormat=\"dd/mm/yy\" appendTo=\"body\" [showIcon]=\"true\" [showTime]=\"true\" formControlName=\"to\"></p-calendar>\n      </div>\n      <div class=\"col-12 md:col-1\">\n        <p-toggleButton onIcon=\"pi pi-lock\" offIcon=\"pi pi-lock-open\"  formControlName=\"lock_to\"></p-toggleButton>\n      </div>\n\n      <label for=\"duration\" class=\"text-right col-12 md:col-1 md:justify-content-end\">Durata (min.)</label>\n      <div>\n        <p-inputNumber inputId=\"duration\" mode=\"decimal\" [size]=\"10\" [min]=\"0\" [step]=\"1\" [showButtons]=\"true\" [minFractionDigits]=\"0\" [maxFractionDigits]=\"0\" formControlName=\"duration\"></p-inputNumber>\n      </div>\n      <div class=\"col-12 md:col-1\">\n        <p-toggleButton onIcon=\"pi pi-lock\" offIcon=\"pi pi-lock-open\"  formControlName=\"lock_duration\"></p-toggleButton>\n      </div>\n\n    </div>\n\n  </form>\n\n  <ack6-detail-business-time [logs]=\"logs$ | async\" class=\"flex-1\"></ack6-detail-business-time>\n\n</div>\n","import { Calendar } from '@acknow-srl/business-time';\nimport { Component, OnInit } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\n\n@Component({\n  selector: 'ack6-select-calendars',\n  templateUrl: './select-calendars.component.html',\n  styleUrls: ['./select-calendars.component.scss']\n})\nexport class SelectCalendarsComponent implements OnInit {\n\n  public calendars: Calendar[];\n\n  public selectedCalendars: string[];\n\n  constructor(\n    private dialogRef: DynamicDialogRef,\n    public dialogConfig: DynamicDialogConfig\n  ) {\n    this.selectedCalendars = [];\n  }\n\n  save = () => {\n    this.dialogRef.close(this.selectedCalendars);\n  }\n\n  close = () => {\n    this.dialogRef.close();\n  }\n\n  /*toggleCalendar = (calendarId: string) => {\n    const idx = this.selectedCalendars.indexOf(calendarId);\n    const value = (idx>-1)? this.selectedCalendars.splice(idx, 1) : this.selectedCalendars.push(calendarId);\n  }*/\n\n  ngOnInit(): void {\n\n    this.calendars = this.dialogConfig.data.calendars.filter((calendar: any) => calendar.id!==this.dialogConfig.data.calendarId);\n\n  }\n\n}\n","<div class=\"content\">\n\n  <div class=\"fluid dialog-content\">\n\n    <!--<div class=\"calendars-list\">\n\n      <div *ngFor=\"let calendar of calendars\">\n        <p-checkbox [value]=\"calendar.id\" [label]=\"calendar.description || calendar.id\" formControlName=\"selectedCalendars\" (onChange)=\"toggleCalendar(calendar.id)\"></p-checkbox>\n      </div>-->\n\n      <p-listbox [options]=\"calendars\" [(ngModel)]=\"selectedCalendars\" styleClass=\"calendars-list\" optionValue=\"id\" optionLabel=\"description\" [multiple]=\"true\" [checkbox]=\"true\" [showToggleAll]=\"true\"></p-listbox>\n\n\n    <!--</div>-->\n\n  </div>\n\n  <p-divider></p-divider>\n\n  <div class=\"flex px-2 pb-2 justify-content-end align-item-center\">\n    <button pButton pRipple type=\"button\" label=\"Conferma\" class=\"p-button-success ml-2\" [disabled]=\"!selectedCalendars.length\" (click)=\"save()\"></button>\n    <button pButton pRipple type=\"button\" label=\"Annulla\" class=\"p-button-text ml-2\" (click)=\"close()\"></button>\n  </div>\n\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n// primeng\nimport { BadgeModule } from 'primeng/badge';\nimport { ButtonModule } from 'primeng/button';\nimport { ListboxModule } from 'primeng/listbox';\nimport { DynamicDialogModule, DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { DividerModule } from 'primeng/divider';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { TabMenuModule } from 'primeng/tabmenu';\nimport { ToastModule } from 'primeng/toast';\nimport { MessageService } from 'primeng/api';\nimport { AccordionModule } from 'primeng/accordion';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { ChipModule } from 'primeng/chip';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { CalendarModule } from 'primeng/calendar';\nimport { TreeTableModule } from 'primeng/treetable';\nimport { ToggleButtonModule } from 'primeng/togglebutton';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { FullCalendarModule } from '@fullcalendar/angular';\n\nimport timeGridPlugin from '@fullcalendar/timegrid';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport interactionPlugin from '@fullcalendar/interaction';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EditCalendarsComponent } from './components/edit-calendars/edit-calendars.component';\nimport { WorktimeComponent } from './components/worktime/worktime.component';\nimport { HolidaysSelectComponent } from './components/holidays-select/holidays-select.component';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { NewCalendarComponent } from './components/new-calendar/new-calendar.component';\nimport { EditEventComponent } from './components/edit-event/edit-event.component';\nimport { API_PREFIX } from './injection/injection.token';\nimport { TestBusinessTimeComponent } from './components/test-business-time/test-business-time.component';\nimport { DetailBusinessTimeComponent } from './components/detail-business-time/detail-business-time.component';\nimport { WorkshiftIntervalComponent } from './components/workshift-interval/workshift-interval.component';\nimport { SelectCalendarsComponent } from './components/select-calendars/select-calendars.component';\n\nFullCalendarModule.registerPlugins([\n  timeGridPlugin,\n  dayGridPlugin,\n  interactionPlugin\n]);\n\n\n@NgModule({\n  declarations: [\n    EditCalendarsComponent,\n    WorktimeComponent,\n    HolidaysSelectComponent,\n    NewCalendarComponent,\n    EditEventComponent,\n    TestBusinessTimeComponent,\n    DetailBusinessTimeComponent,\n    WorkshiftIntervalComponent,\n    SelectCalendarsComponent\n  ],\n  imports: [\n    CommonModule,\n    BadgeModule,\n    ButtonModule,\n    ListboxModule,\n    DynamicDialogModule,\n    DividerModule,\n    OverlayPanelModule,\n    TabMenuModule,\n    ToastModule,\n    ToggleButtonModule,\n    DropdownModule,\n    FullCalendarModule,\n    FormsModule,\n    ReactiveFormsModule,\n    AccordionModule,\n    ChipModule,\n    ToolbarModule,\n    CalendarModule,\n    InputTextModule,\n    InputNumberModule,\n    TreeTableModule\n  ],\n  exports: [\n    EditCalendarsComponent,\n    TestBusinessTimeComponent,\n    WorkshiftIntervalComponent,\n    DetailBusinessTimeComponent\n  ],\n  providers: [\n    MessageService,\n    DynamicDialogRef,\n    DynamicDialogConfig\n  ]\n})\nexport class EditCalendarModule {\n  static forRoot(api_prefix: string): ModuleWithProviders<EditCalendarModule> {\n    return {\n      ngModule: EditCalendarModule,\n      providers: [{ provide: API_PREFIX, useValue: api_prefix }]\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5","i6","i7","i1.CalendarService","i6.WorktimeComponent","i7.HolidaysSelectComponent","i8","i10","i11","i12","i2.WorkshiftIntervalComponent","i6.DetailBusinessTimeComponent"],"mappings":"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"}