{"version":3,"file":"obliczeniowo-elementary-pie-progress.mjs","sources":["../../../../projects/components/pie-progress/components/pie-progress/pie-progress.component.ts","../../../../projects/components/pie-progress/components/pie-progress/pie-progress.component.html","../../../../projects/components/pie-progress/pie-progress.module.ts","../../../../projects/components/pie-progress/obliczeniowo-elementary-pie-progress.ts"],"sourcesContent":["/**\n *  eslint-disable @typescript-eslint/brace-style\n */\nimport { ProgressStatus } from './../../types/types';\nimport { DrawingSvgInterface } from '@obliczeniowo/elementary/drawing';\nimport {\n  Component,\n  Input,\n  ElementRef,\n  AfterViewInit,\n  HostBinding,\n  AfterViewChecked,\n  input,\n  model,\n  effect,\n  Renderer2,\n} from '@angular/core';\nimport { ColorHSV, ColorRGB, Point2D } from '@obliczeniowo/elementary/classes';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n    selector: 'obl-pie-progress',\n    templateUrl: './pie-progress.component.html',\n    styleUrls: ['./pie-progress.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            multi: true,\n            useExisting: PieProgressComponent,\n        },\n    ],\n    standalone: false\n})\nexport class PieProgressComponent\n  implements AfterViewInit, AfterViewChecked, ControlValueAccessor\n{\n  /**\n   * Progress status\n   */\n  status = input<ProgressStatus>('progress');\n\n  /**\n   * If interactive then let you set value by click by left mouse button inside of\n   * pie chart\n   */\n  interactive = input<boolean>(false);\n\n  /**\n   * Size of pie svg part\n   */\n  size = input<number>(30);\n\n  colorFn = input<(value: number) => ColorRGB>((value: number) => {\n    return ColorHSV.createColorHSVfromRGB(new ColorRGB(0, 100, 255))\n      .addHue((150 * this.value()) / 100)\n      .convertToRGB();\n  });\n\n  /**\n   * Control displaying description\n   */\n  @Input()\n  @HostBinding('class.description')\n  display = true;\n\n  click(event: any) {\n    if (this.interactive()) {\n      const domRect = this.svg.getBoundingClientRect();\n      const x = event.clientX - domRect.x - this.size() / 2;\n      const y = event.clientY - domRect.y - this.size() / 2;\n      let angle = (Math.atan2(y, x) * 180) / Math.PI;\n\n      if (angle < 0) {\n        angle += 360;\n      }\n\n      this.writeValue(Math.round((angle / 360) * 100));\n      this.onChange(this.value());\n    }\n  }\n\n  value = model<number>(0);\n\n  fontSize = input<number | undefined>();\n\n  @Input()\n  @HostBinding('class.column')\n  column = false;\n\n  svg!: SVGSVGElement;\n\n  dc!: DrawingSvgInterface;\n\n  color: ColorRGB = ColorHSV.createColorHSVfromRGB(\n    new ColorRGB(0, 100, 255)\n  ).convertToRGB();\n\n  write = input<(value: number) => string>(\n    (value: number) => `${value.toFixed()}%`\n  );\n\n  constructor(protected element: ElementRef<HTMLElement>, protected renderer: Renderer2) {\n    effect(() => {\n      this.color = this.colorFn()(this.value());\n      this.draw();\n    });\n  }\n\n  onChange = (value: number) => {};\n\n  onTouched = () => {};\n\n  registerOnValidatorChange(fn: () => void): void {\n    this.onChange = fn;\n  }\n\n  writeValue(set?: number): void {\n    this.value.set(set || 0);\n  }\n\n  registerOnChange(onChange: any): void {\n    this.onChange = onChange;\n  }\n\n  registerOnTouched(onTouched: any): void {\n    this.onTouched = onTouched;\n  }\n\n  ngAfterViewInit(): void {\n    this.draw();\n  }\n\n  ngAfterViewChecked(): void {\n    if (!this.svg) {\n      this.draw();\n    }\n  }\n\n  markAsTouched(): void {\n    this.onTouched();\n  }\n\n  protected draw(): void {\n    if (!this.svg) {\n      this.svg = this.element.nativeElement.querySelector('svg') as any;\n      this.dc = new DrawingSvgInterface(this.svg, this.renderer);\n    }\n    if (this.dc) {\n      const center = new Point2D(5, 5);\n      this.dc.clear();\n      this.dc.drawCircle(center, 4.5, 0.7, this.color.toString());\n\n      this.dc.drawPie(\n        center,\n        3.2,\n        3.2,\n        0,\n        (Math.PI * 2 * this.value()) / 100,\n        0,\n        undefined,\n        this.color.toString()\n      );\n    }\n  }\n}\n","<svg\n  [attr.width]=\"size()\"\n  [attr.height]=\"size()\"\n  [style.display]=\"\n    status() === 'progress' || status() === 'waiting' ? 'inherit' : 'none'\n  \"\n  viewBox=\"0 0 10 10\"\n  (click)=\"click($event)\"\n></svg>\n@if (status() === 'failure' || status() === 'done') {\n  <div\n    [style.width.px]=\"size() - (1.84 * 2 * size()) / 20\"\n    [style.height.px]=\"size() - (1.84 * 2 * size()) / 20\"\n    [style.borderWidth.px]=\"(1.84 * size()) / 20\"\n    [class.error]=\"status() === 'failure'\"\n    [class.done]=\"status() === 'done'\"\n  >\n    <obl-icon\n      [name]=\"status() === 'failure' ? 'cancel' : 'ok'\"\n      [width]=\"status() === 'failure' ? size() * 0.45 : size() * 0.5\"\n    ></obl-icon>\n  </div>\n}\n@if (display) {\n  <span\n    [style.color]=\"color.toString()\"\n    [style.font-size.px]=\"fontSize() || size() / 2\"\n    >{{ write()(value()) }}</span\n  >\n}\n","import { IconsModule } from '@obliczeniowo/elementary/icons';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PieProgressComponent } from './components/pie-progress/pie-progress.component';\n\n@NgModule({\n  declarations: [\n    PieProgressComponent\n  ],\n  imports: [\n    CommonModule,\n    IconsModule\n  ],\n  exports: [\n    PieProgressComponent\n  ]\n})\nexport class PieProgressModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}