{"version":3,"file":"obliczeniowo-elementary-dayparts-statistics.mjs","sources":["../../../../projects/components/dayparts-statistics/class/dayparts-statistics.class.ts","../../../../projects/components/dayparts-statistics/components/dayparts-statistics/dayparts-statistics.component.ts","../../../../projects/components/dayparts-statistics/components/dayparts-statistics/dayparts-statistics.component.html","../../../../projects/components/dayparts-statistics/dayparts-statistics.module.ts","../../../../projects/components/dayparts-statistics/obliczeniowo-elementary-dayparts-statistics.ts"],"sourcesContent":["import { DatePipe } from '@angular/common';\r\n\r\nimport { Point2D } from '@obliczeniowo/elementary/classes';\r\nimport { DrawingContextInterface, TextAlign } from '@obliczeniowo/elementary/drawing';\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { DaypartsStatistic, HourData } from '../types/dayparts.types';\r\n\r\nexport class DaypartsStatistics {\r\n  protected max = 0;\r\n\r\n  protected fontSize = 12;\r\n  protected ray = 12;\r\n  protected textOffset = 100;\r\n\r\n  constructor(\r\n    protected dc: DrawingContextInterface,\r\n    protected statistics: DaypartsStatistic,\r\n    protected datePipe: DatePipe,\r\n    protected events: {\r\n      clicked: (value: HourData) => void,\r\n      mouseover?: (value: HourData) => void\r\n    }\r\n  ) {\r\n    this.setMax();\r\n  }\r\n\r\n  getWidth() {\r\n    return this.textOffset + 2 * this.ray * 24;\r\n  }\r\n\r\n  getHeight() {\r\n    return this.ray * 2 * 7 + this.fontSize * 2;\r\n  }\r\n\r\n  updateMax(max: number) {\r\n    this.max = max;\r\n  }\r\n\r\n  setStatistics(statistics: DaypartsStatistic) {\r\n    this.statistics = statistics;\r\n    this.setMax();\r\n    this.draw();\r\n  }\r\n\r\n  draw(dc: DrawingContextInterface = this.dc) {\r\n    const { statistics, ray, fontSize, textOffset } = this;\r\n    const offset = new Point2D(textOffset, ray);\r\n    dc.clear();\r\n    keys(statistics).forEach((day: any) => {\r\n      keys(statistics[day]).forEach(\r\n        (hour: any) => {\r\n          const hourData = statistics[day][hour];\r\n          const start = new Point2D(2 * ray * hour, 2 * ray * day);\r\n          dc\r\n            .group(\r\n              {\r\n                svgOnly: {\r\n                  events: {\r\n                    click: () => this.events.clicked(hourData),\r\n                    mouseover: () => this.events.mouseover && this.events.mouseover(hourData)\r\n                  }\r\n                }\r\n              }\r\n            )\r\n            .drawRect(start.x + textOffset - ray, start.y, 2 * ray, 2 * ray, 0, 'none', '#ffffff', {\r\n              svgOnly: {\r\n                attributes: { opacity: 0.1 },\r\n              }\r\n            })\r\n            .drawCircle(\r\n              start.add(offset),\r\n              ray * hourData.value / this.max,\r\n              0,\r\n              '#000000',\r\n              '#00aad4',\r\n              {\r\n                svgOnly: {\r\n                  classes: ['obl-dayparts-statistics', 'scale-up'],\r\n\r\n                },\r\n                style: {\r\n                  'transform-origin': `${start.x + offset.x}px ${start.y + offset.y}px`\r\n                }\r\n              }\r\n            )\r\n            .endGroup();\r\n        }\r\n      )\r\n    })\r\n\r\n    const date = new Date();\r\n    date.setTime(100);\r\n    dc.setFontSize(fontSize);\r\n    dc.setTextAlign(TextAlign.LEFT)\r\n    for (let day = 0; day < 7; day++) {\r\n      date.setTime((day + 4) * 24 * 3600 * 1000);\r\n      dc.drawText(this.datePipe.transform(date, 'EEEE') || '', new Point2D(10, ray + fontSize * 0.3 + day * 2 * ray), 'var(--default-text-color)', 0)\r\n    }\r\n\r\n    const hoursOffset = new Point2D(offset.x, 7 * 2 * ray + 1.5 * fontSize);\r\n    dc.setTextAlign(TextAlign.CENTER)\r\n    for (let hour = 0; hour < 24; hour++) {\r\n      dc.drawText(hour < 10 ? '0' + hour : hour.toString(), hoursOffset.add(new Point2D(hour * 2 * ray, 0)), 'var(--default-text-color)', 0)\r\n    }\r\n  }\r\n\r\n  protected setMax() {\r\n    const { statistics } = this;\r\n    this.max = 0;\r\n    keys(statistics).forEach((key: any) => {\r\n      const value = statistics[key];\r\n      keys(value).forEach((key: any) => {\r\n        const count = value[key].value;\r\n        if (this.max < count) {\r\n          this.max = count;\r\n        }\r\n      })\r\n    })\r\n  }\r\n}","import { Component, ElementRef, Input, Output, ViewChild, EventEmitter, Renderer2, input, effect } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\n\r\nimport { DrawingContextInterface, DrawingSvgInterface } from '@obliczeniowo/elementary/drawing';\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { DaypartsStatistics } from '../../class/dayparts-statistics.class';\r\nimport { DaypartsData, DaypartsStatistic, HourData } from '../../types/dayparts.types';\r\n\r\n@Component({\r\n    selector: 'obl-dayparts-statistics',\r\n    templateUrl: './dayparts-statistics.component.html',\r\n    styleUrl: './dayparts-statistics.component.scss',\r\n    standalone: false\r\n})\r\nexport class DaypartsStatisticsComponent {\r\n  /**\r\n   * Do not use this one together with statistics\r\n   */\r\n  data = input<DaypartsData[]>([]);\r\n\r\n  /**\r\n   * Under DaypartsData you can put any kind of key: value fields and now here you can specify field\r\n   * name to make it representable on diagram\r\n   */\r\n  valueKey = input<string>();\r\n\r\n  /**\r\n   * Do not use this one together with data\r\n   */\r\n  @Input() set statistics(statistics: DaypartsStatistic) {\r\n    this._statistics = statistics;\r\n    this._daypartsStatistics?.setStatistics(statistics);\r\n  }\r\n\r\n  translations = input<{ [en: string]: string }>({\r\n    value: 'Value'\r\n  });\r\n\r\n  @Output() clicked = new EventEmitter<any>();\r\n\r\n  @ViewChild('svg') svg!: ElementRef<SVGSVGElement>;\r\n\r\n  protected dc!: DrawingContextInterface;\r\n\r\n  protected _statistics: DaypartsStatistic = {};\r\n\r\n  protected max = 0;\r\n\r\n  protected _daypartsStatistics?: DaypartsStatistics;\r\n\r\n  protected current?: HourData;\r\n\r\n  constructor(protected datePipe: DatePipe, protected renderer: Renderer2) {\r\n    effect(() => {\r\n      if (this.data().length) {\r\n        this.transform();\r\n      }\r\n    })\r\n\r\n    effect(() => {\r\n      this.setMax();\r\n      this.draw();\r\n    })\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.dc = new DrawingSvgInterface(this.svg.nativeElement, this.renderer);\r\n    setTimeout(() => this.draw());\r\n  }\r\n\r\n  protected draw() {\r\n    if (this.dc) {\r\n      if (!this._daypartsStatistics) {\r\n        this._daypartsStatistics = new DaypartsStatistics(\r\n          this.dc,\r\n          this._statistics,\r\n          this.datePipe,\r\n          {\r\n            clicked: (value: HourData) => this.clicked.emit(value),\r\n            mouseover: (value: HourData) => {\r\n              this.current = value;\r\n            }\r\n          }\r\n        );\r\n      }\r\n      this._daypartsStatistics?.setStatistics(this._statistics);\r\n    }\r\n  }\r\n\r\n  protected transform() {\r\n    this._statistics = {};\r\n    const { _statistics: statistics } = this;\r\n    this.data().forEach(item => {\r\n      const hours = item.date.getHours();\r\n      const day = item.date.getDay();\r\n      const data = statistics[day];\r\n      const hoursObj = () => ({\r\n        data: [item],\r\n        value: 1\r\n      })\r\n      if (data) {\r\n        const hour = data[hours];\r\n        if (hour) {\r\n          hour.value++;\r\n          hour.data.push(item);\r\n        } else {\r\n          data[hours] = hoursObj();\r\n        }\r\n      } else {\r\n        statistics[day] = {\r\n          [hours]: hoursObj()\r\n        }\r\n      }\r\n    })\r\n\r\n    this.setMax();\r\n\r\n    this.draw();\r\n  }\r\n\r\n  protected setMax() {\r\n    const { _statistics: statistics } = this;\r\n    let max = 0;\r\n    const valueKey = this.valueKey();\r\n    if (valueKey) {\r\n      keys(statistics).forEach((key: any) => {\r\n        const value = statistics[key];\r\n        keys(value).forEach((key: any) => {\r\n          const data = value[key].data;\r\n          const v = (valueKey && data?.[0][valueKey] &&\r\n            (data.reduce((p, c) => p += c[valueKey], 0) / data.length)) ?? (data?.length || 0);\r\n          value[key].value = v;\r\n          max = max < v ? v : max;\r\n        })\r\n      })\r\n      if (max === 0) {\r\n        max = 1;\r\n      }\r\n      this.max = max;\r\n\r\n      this._daypartsStatistics?.updateMax(max);\r\n    }\r\n  }\r\n}\r\n","<svg\r\n  [attr.width]=\"_daypartsStatistics?.getWidth() || 0\"\r\n  [attr.height]=\"_daypartsStatistics?.getHeight() || 0\"\r\n  #svg\r\n></svg>\r\n<div class=\"current\">\r\n  @if (current) {\r\n    {{ translations().value }}: {{ current.value }}\r\n  }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { DaypartsStatisticsComponent } from './components/dayparts-statistics/dayparts-statistics.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    DaypartsStatisticsComponent\r\n  ],\r\n  providers: [\r\n    DatePipe\r\n  ],\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  exports: [\r\n    DaypartsStatisticsComponent\r\n  ]\r\n})\r\nexport class DaypartsStatisticsModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}