{"version":3,"file":"xxmachina-components-molecules-daily-cell.mjs","sources":["../../../../../packages/@xxmachina/components/src/lib/molecules/daily-cell/daily-cell.molecule.ts","../../../../../packages/@xxmachina/components/src/lib/molecules/daily-cell/xxmachina-components-molecules-daily-cell.ts"],"sourcesContent":["import { Component, Input, Pipe, PipeTransform } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Schedule, isConflict } from '@xxmachina/common/domain/models';\nimport dayjs from 'dayjs';\n\n@Pipe({standalone: true, name: 'percentage'})\nexport class PercentagePipe implements PipeTransform {\n  transform(date: dayjs.Dayjs, base: dayjs.Dayjs) {\n    if (date.date() > base.date()) return 100;\n    const day = 60 * 60 * 24;\n    return (date.hour() * 60 * 60 + date.minute() * 60 + date.second()) / day * 100;\n  }\n}\n\n@Pipe({standalone: true, name: 'filterByDate', pure: true})\nexport class FilterByDatePipe implements PipeTransform {\n  transform(schedules: Schedule[], date: dayjs.Dayjs = dayjs()) {\n    const dateSchedule = Schedule.from({\n      id: null as unknown as string,\n      startAt: date?.clone()?.startOf('day'),\n      endAt: date?.clone()?.endOf('day'),\n    });\n    const filtered = schedules.filter(schedule => {\n      return isConflict(schedule, dateSchedule)\n    });\n    return filtered;\n  }\n}\n\n@Pipe({standalone: true, name: 'tooltipText', pure: true})\nexport class ScheduleToolTipTextPipe implements PipeTransform {\n  transform(schedule: Schedule): string {\n    return `${schedule.startAt.format('HH:mm')} ~ ${schedule.endAt.format('HH:mm')} ${schedule.name} `;\n  }\n}\n\n@Component({\n  standalone: true,\n  selector: 'molecules-daily-cell',\n  imports: [\n    CommonModule,\n    MatTooltipModule,\n    PercentagePipe,\n    FilterByDatePipe,\n    ScheduleToolTipTextPipe,\n  ],\n  template: `\n  <div class=\"background\">\n    @for (schedule of schedules | filterByDate:date; track schedule) {\n      <div\n        class=\"schedule-band\"\n        [matTooltip]=\"schedule | tooltipText\"\n        matTooltipPosition=\"above\"\n        [style.background-color]=\"schedule?.color ?? '#F2E7FE'\"\n        [style.left.%]=\"schedule.startAt | percentage:date\"\n        [style.width.%]=\"(schedule.endAt | percentage:date) - (schedule.startAt | percentage:date)\"\n      ></div>\n    }\n  </div>\n  \n  <div class=\"date box\" [ngStyle]=\"{\n      'background-color': marked && markingColor,\n      'color': marked && 'white'\n  }\">\n    @if (displayDate) {\n      <span class=\"date\">{{ date | date: 'd' }}</span>\n    }\n  </div>\n  \n  <!-- <div class=\"schedules-container\">\n  <span *ngFor=\"let schedule of schedules | filterByDate:date;\">\n    {{ getScheduleText(schedule) }}\n  </span>\n  <span *ngIf=\"!schedules?.length\">{{ noSchedulesText }}</span>\n  </div> -->\n  `,\n  styleUrls: ['./daily-cell.molecule.scss']\n})\nexport class DailyCellMolecule {\n\n  @Input() date!: dayjs.Dayjs;\n  @Input() schedules!: Schedule[];\n  @Input() displayDate = true;\n  @Input() noSchedulesText = 'noSchedulesText'\n  @Input() toolTipText = 'toolTipText';\n  @Input() marked = 'transparent';\n  @Input() markingColor = 'red';\n\n  getScheduleText(schedule: Schedule) {\n    return `${getTimeText(schedule.startAt)} ~ ${getTimeText(schedule.endAt, schedule.startAt)}`;\n  }\n\n  getToolTipText(schedules: Schedule[]): string {\n    return schedules.map(s => this.getScheduleText(s)).join(' ');\n  }\n\n}\n\nfunction getTimeText(time: dayjs.Dayjs, base: dayjs.Dayjs = time) {\n  return (base.isBefore(time) && time.format('HH:mm') === '00:00')\n    ? '24:00'\n    : time.format('HH:mm');\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}