UNPKG

@obliczeniowo/elementary

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