@obliczeniowo/elementary
Version:
Library made in Angular version 19
1 lines • 20.3 kB
Source Map (JSON)
{"version":3,"file":"obliczeniowo-elementary-time.mjs","sources":["../../../../projects/components/time/components/clock-time/clock-time.component.ts","../../../../projects/components/time/components/clock-time/clock-time.component.html","../../../../projects/components/time/pipes/time.pipe.ts","../../../../projects/components/time/time.module.ts","../../../../projects/components/time/obliczeniowo-elementary-time.ts"],"sourcesContent":["import { ElementaryMath } from '@obliczeniowo/elementary/math';\r\nimport { AfterViewInit, Component, ElementRef, Input, ViewChild, HostBinding, EventEmitter, Output, Renderer2, input, effect } from '@angular/core';\r\nimport { Dates, Point2D } from '@obliczeniowo/elementary/classes';\r\nimport { DrawingSvgInterface } from '@obliczeniowo/elementary/drawing';\r\n\r\nexport interface DisplayClockTime {\r\n seconds?: boolean;\r\n time?: boolean;\r\n interactive?: boolean;\r\n}\r\n\r\n/**\r\n * Basic usage of component is to display time as HH:mm:ss format combined with a little dynamic svg\r\n * element that display clock pointing time given in input time as Date object or [h, m, s]\r\n *\r\n * You can set 'interactive' mode by 'display' input set { interactive: true, ... }\r\n * In this mode you can change time by clicking on modifying area fields, this will emit\r\n * new date every time you click on this areas\r\n *\r\n * To have easy way of manipulate time size of clock-time must be at least 150px\r\n *\r\n * In interactive mode you can add own controls buttons:\r\n *\r\n * @example\r\n *\r\n * <obl-clock-time [display]=\"{ time: true; interactive: true }\" [column]=\"true\" #clock>\r\n * <button (click)=\"setDate(clock)\">OK</button>\r\n * <obl-clock-time>\r\n */\r\n@Component({\r\n selector: 'obl-clock-time',\r\n templateUrl: './clock-time.component.html',\r\n styleUrls: ['./clock-time.component.scss'],\r\n standalone: false\r\n})\r\nexport class ClockTimeComponent implements AfterViewInit {\r\n /** size of clock */\r\n size = input<number>(30);\r\n\r\n /** switch on/off displaying time text */\r\n display = input<DisplayClockTime>({\r\n seconds: true,\r\n time: true\r\n });\r\n\r\n /** font size */\r\n fontSize = input<number>();\r\n\r\n /** if display time is set to tru this one will control if clock and time text is displayed in one row or in column */\r\n @Input()\r\n @HostBinding('class.column') column = false;\r\n\r\n /**\r\n * set time by Date object or table of [hours, minutes, seconds]\r\n */\r\n date = input(new Date(), {\r\n transform: (value: Date | [number, number, number]) => {\r\n let date;\r\n if (value instanceof Date) {\r\n date = value;\r\n } else {\r\n date = new Date();\r\n date.setHours(value[0]);\r\n date.setMinutes(value[1]);\r\n date.setSeconds(value[2]);\r\n }\r\n const h = date.getHours();\r\n const m = date.getMinutes();\r\n const s = date.getSeconds();\r\n this.hAngle = ((h % 12) + m / 60 + s / 3600) * Math.PI / 6;\r\n this.mAngle = (m + s / 60) * Math.PI / 30;\r\n this.sAngle = s * Math.PI / 30;\r\n this.pmAm = date.getHours() / 12 > 1;\r\n return date;\r\n }\r\n }\r\n );\r\n\r\n /** Emit when date is changed */\r\n @Output() changed = new EventEmitter<Date>();\r\n\r\n @ViewChild('svg') protected svg!: ElementRef<SVGSVGElement>;\r\n\r\n @HostBinding('class.no-time') protected get noTime() {\r\n return !this.display().time;\r\n }\r\n\r\n protected interactiveTime?: Date;\r\n\r\n protected dc!: DrawingSvgInterface;\r\n protected hRay = 2;\r\n protected mRay = 3;\r\n protected sRay = 3.5;\r\n\r\n protected hAngle = 0;\r\n protected mAngle = 0;\r\n protected sAngle = 0;\r\n\r\n protected pmAm: boolean = false;\r\n\r\n protected mouse = new Point2D();\r\n\r\n constructor(protected renderer: Renderer2) {\r\n effect(() => {\r\n this.draw();\r\n })\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.svg) {\r\n this.dc = new DrawingSvgInterface(this.svg.nativeElement, this.renderer);\r\n this.draw();\r\n }\r\n }\r\n\r\n protected switchPmAm() {\r\n this.pmAm = !this.pmAm;\r\n this.date().setHours(this.date().getHours() + (this.pmAm ? -12 : 12));\r\n if (this.interactiveTime) {\r\n this.interactiveTime = new Date(this.date());\r\n }\r\n }\r\n\r\n protected clicked(event: MouseEvent) {\r\n if (!this.display().interactive) {\r\n return;\r\n }\r\n\r\n if (this.interactiveTime) {\r\n this.date().setSeconds(this.interactiveTime.getSeconds());\r\n this.date().setMinutes(this.interactiveTime.getMinutes());\r\n this.date().setHours(this.interactiveTime.getHours());\r\n this.changed.emit(new Date(this.date()));\r\n }\r\n }\r\n\r\n protected mouseMove(event: MouseEvent) {\r\n if (!this.display().interactive) {\r\n return;\r\n }\r\n\r\n const scale = (this.getBrowserName() === 'firefox' ? 10 : 11) / this.size();\r\n const box = this.dc.svgContainer.getBoundingClientRect();\r\n\r\n this.mouse = new Point2D((event.x - box.left) * scale, (event.y - box.top) * scale).subtract(new Point2D(5, 5));\r\n\r\n const { hRay, mRay, mouse } = this;\r\n const len = mouse.sickLength();\r\n const angle = mouse.angle();\r\n const date = new Date(this.date());\r\n\r\n if (len < hRay * hRay) {\r\n date.setHours(Math.round(ElementaryMath.fmod(angle + Math.PI * 2.5, 2 * Math.PI) / (2 * Math.PI) * 11 + (this.pmAm ? 12 : 0)) % (12 + (this.pmAm ? 12 : 0)));\r\n } else if (len < mRay * mRay) {\r\n date.setMinutes(Math.round((angle + Math.PI) / (2 * Math.PI) * 60 + 45) % 60);\r\n }\r\n\r\n this.interactiveTime = date;\r\n this.draw();\r\n }\r\n\r\n protected draw(dc: DrawingSvgInterface = this.dc): void {\r\n if (dc) {\r\n const center = new Point2D(5, 5);\r\n dc.clear();\r\n dc.drawCircle(center, 4.5, 0.7, 'var(--default-text-color)');\r\n\r\n if (this.display().interactive) {\r\n dc.drawCircle(center, this.mRay, 0, undefined, undefined, {\r\n svgOnly: {\r\n classes: ['minutes-area']\r\n }\r\n });\r\n dc.drawCircle(center, this.hRay, 0, undefined, undefined, {\r\n svgOnly: {\r\n classes: ['hours-area']\r\n }\r\n });\r\n }\r\n\r\n dc.drawPolyline([\r\n center.add(new Point2D(this.hRay * Math.sin(this.hAngle), -this.hRay * Math.cos(this.hAngle))),\r\n center,\r\n center.add(new Point2D(this.mRay * Math.sin(this.mAngle), -this.mRay * Math.cos(this.mAngle)))],\r\n 0.5,\r\n 'var(--default-text-color)'\r\n );\r\n\r\n if (this.display().interactive) {\r\n if (this.interactiveTime && !Dates.equalToTimeLevel(this.interactiveTime, this.date())) {\r\n const h = this.interactiveTime.getHours();\r\n const m = this.interactiveTime.getMinutes();\r\n const hAngle = ((h % 12) + m / 60) * Math.PI / 6;\r\n const mAngle = m * Math.PI / 30;\r\n\r\n dc.drawPolyline([\r\n center.add(new Point2D(this.hRay * Math.sin(hAngle), -this.hRay * Math.cos(hAngle))),\r\n center,\r\n center.add(new Point2D(this.mRay * Math.sin(mAngle), -this.mRay * Math.cos(mAngle)))],\r\n 0.5,\r\n 'var(--obl-clock-time-set-pointer, gray)'\r\n );\r\n }\r\n }\r\n\r\n if (this.size() > 99) {\r\n /** draw seconds pointer */\r\n if (this.display().seconds) {\r\n dc.drawLine(center, center.add(new Point2D(this.sRay * Math.sin(this.sAngle), -this.sRay * Math.cos(this.sAngle))), 0.25,\r\n 'var(--default-text-color)');\r\n }\r\n\r\n /** draw scale */\r\n for (let i = 0; i < 12; i++) {\r\n const angle = i * Math.PI / 6;\r\n dc.drawLine(\r\n center.add(new Point2D(this.sRay * Math.sin(angle), -this.sRay * Math.cos(angle))),\r\n center.add(new Point2D(1.1 * this.sRay * Math.sin(angle), -(this.sRay * 1.1) * Math.cos(angle))), 0.1, 'var(--default-text-color)');\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected getBrowserName() {\r\n const agent = window.navigator.userAgent.toLowerCase()\r\n switch (true) {\r\n case agent.includes('edge'):\r\n return 'edge';\r\n case agent.includes('opr') && !!(window as any).opr:\r\n return 'opera';\r\n case agent.includes('chrome') && !!(window as any).chrome:\r\n return 'chrome';\r\n case agent.includes('trident'):\r\n return 'ie';\r\n case agent.includes('firefox'):\r\n return 'firefox';\r\n case agent.includes('safari'):\r\n return 'safari';\r\n default:\r\n return 'other';\r\n }\r\n}\r\n}\r\n","<svg\r\n [attr.width]=\"size()\"\r\n [attr.height]=\"size()\"\r\n viewBox=\"0 0 10 10\"\r\n (mousemove)=\"mouseMove($event)\"\r\n (click)=\"clicked($event)\"\r\n #svg\r\n></svg>\r\n\r\n@if (display().time) {\r\n <span\r\n [style.font-size.px]=\"fontSize() || size() * 0.6\"\r\n [style.line-height.px]=\"fontSize() || size() * 0.6\"\r\n >\r\n {{ (interactiveTime ?? date()) | date : (display().seconds ? 'HH:mm:ss' : 'HH:mm') }}\r\n <ng-content></ng-content>\r\n </span>\r\n}\r\n\r\n@if (display().interactive) {\r\n <div class=\"actions\">\r\n <button oblButton (click)=\"switchPmAm()\"> {{ pmAm && 'PM' || 'AM' }} </button>\r\n </div>\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'time',\r\n standalone: true\r\n})\r\nexport class TimePipe implements PipeTransform {\r\n transform(time: number, ...args: unknown[]): string {\r\n time = Math.ceil(time);\r\n\r\n const hours = Math.floor(time / 3600);\r\n const minutes = Math.floor(time / 60) % 60\r\n const seconds = time % 60;\r\n\r\n return (hours ? hours + ':' : '') + `0${minutes}`.slice(-2) + ':' + `0${seconds}`.slice(-2);\r\n }\r\n}\r\n","import { ButtonsModule } from '@obliczeniowo/elementary/buttons';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ClockTimeComponent } from './components/clock-time/clock-time.component';\r\nimport { TimePipe } from './pipes/time.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n ClockTimeComponent,\r\n ],\r\n providers: [\r\n TimePipe\r\n ],\r\n imports: [\r\n CommonModule,\r\n ButtonsModule\r\n ],\r\n exports: [\r\n ClockTimeComponent,\r\n ]\r\n})\r\nexport class TimeModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}