@obliczeniowo/elementary
Version:
Library made in Angular version 19
1 lines • 17.6 kB
Source Map (JSON)
{"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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"}