UNPKG

@obliczeniowo/elementary

Version:
1 lines 20.6 kB
{"version":3,"file":"obliczeniowo-elementary-flat-pie-diagram.mjs","sources":["../../../../projects/components/flat-pie-diagram/classes/flat-pie-diagram.ts","../../../../projects/components/flat-pie-diagram/components/flat-pie-diagram/flat-pie-diagram.component.ts","../../../../projects/components/flat-pie-diagram/components/flat-pie-diagram/flat-pie-diagram.component.html","../../../../projects/components/flat-pie-diagram/flat-pie-diagram.module.ts","../../../../projects/components/flat-pie-diagram/obliczeniowo-elementary-flat-pie-diagram.ts"],"sourcesContent":["import { ColorHSV, Point2D } from '@obliczeniowo/elementary/classes';\r\nimport { DrawingContextInterface, TextAlign, Rect } from '@obliczeniowo/elementary/drawing';\r\nimport { ElementaryMath } from '@obliczeniowo/elementary/math';\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { PieColorsFu, PieColors, ValueKeyFormat } from '../types/types';\r\n\r\nexport class FlatPieDiagram {\r\n dc!: DrawingContextInterface;\r\n\r\n areaRect!: Rect;\r\n\r\n keyValues: { [key: string]: number; } = {};\r\n\r\n dr = 0;\r\n ray = 100;\r\n\r\n valueKeyFormat: ValueKeyFormat =\r\n (index: number, value: number, sum: number, key: string) => `${value} (${(value / sum * 100).toFixed(2)}%)`\r\n\r\n colors: PieColorsFu = (index: number, value: number, max: { min: number, max: number }, count: number) => ({\r\n fill: ColorHSV.createColorHSV(\r\n ((360 / count) * 2 * index) / 2,\r\n 0.5,\r\n 255\r\n ).convertToRGB().getHexColorBase,\r\n stroke: ColorHSV.createColorHSV(\r\n ((360 / count) * 2 * index) / 2,\r\n 0.35,\r\n 255\r\n ).convertToRGB().getHexColorBase,\r\n line: ColorHSV.createColorHSV(\r\n ((360 / count) * 2 * index) / 2,\r\n 0.35,\r\n 150\r\n ).convertToRGB().getHexColorBase,\r\n text: ColorHSV.createColorHSV(\r\n ((360 / count) * 2 * index) / 2,\r\n 0.65,\r\n 200\r\n ).convertToRGB().getHexColorBase\r\n })\r\n\r\n constructor(dc: DrawingContextInterface, area: Rect) {\r\n this.dc = dc;\r\n this.areaRect = area;\r\n }\r\n\r\n sum(): number {\r\n let sum = 0;\r\n\r\n keys(this.keyValues).forEach((key) => sum += this.keyValues[key]);\r\n\r\n return sum;\r\n }\r\n\r\n minMax(): { min: number, max: number } {\r\n const minMax = { min: 0, max: 0 };\r\n return keys(this.keyValues).reduce(\r\n (prev, curr) => (\r\n prev = prev\r\n ? {\r\n min: Math.min(prev.min, this.keyValues[curr]), max: Math.max(prev.max, this.keyValues[curr])\r\n }\r\n : {\r\n min: this.keyValues[curr],\r\n max: this.keyValues[curr]\r\n },\r\n prev\r\n ),\r\n minMax\r\n );\r\n }\r\n\r\n draw(dc: DrawingContextInterface = this.dc): void {\r\n dc.clear();\r\n\r\n const sum = this.sum();\r\n let start = 0;\r\n let da = 0;\r\n const center = new Point2D(this.areaRect.width / 2, this.areaRect.height / 2);\r\n this.ray = Math.min(this.areaRect.width, this.areaRect.height) / 3;\r\n\r\n const minMax = this.minMax();\r\n\r\n const length = keys(this.keyValues).length;\r\n\r\n if (sum) {\r\n const options: {\r\n start: number,\r\n da: number,\r\n right: boolean,\r\n bottom: boolean,\r\n index: number,\r\n colors: PieColors\r\n }[] = [];\r\n let leftTopIndex = 0;\r\n let rightTopIndex = 0;\r\n let leftBottomIndex = 0;\r\n let rightBottomIndex = 0;\r\n\r\n const dk = ElementaryMath.degreesToRadians(10);\r\n\r\n keys(this.keyValues).forEach((key, oIndex) => {\r\n da = this.keyValues[key] / sum * Math.PI * 2;\r\n const right = start + da / 2 < Math.PI / 2 || start + da / 2 > 3 * Math.PI / 2;\r\n const bottom = start + da / 2 < Math.PI;\r\n\r\n let index = 0;\r\n if (da < dk) {\r\n if (!right && !bottom) {\r\n leftTopIndex += 1;\r\n index = leftTopIndex;\r\n } else if (right && !bottom) {\r\n rightTopIndex += 1;\r\n index = rightTopIndex;\r\n } else if (!right && bottom) {\r\n leftBottomIndex += 1;\r\n index = leftBottomIndex;\r\n } else if (right && bottom) {\r\n rightBottomIndex += 1;\r\n index = rightBottomIndex;\r\n }\r\n }\r\n options.push(\r\n {\r\n start,\r\n da,\r\n right,\r\n bottom,\r\n index,\r\n colors: this.colors(oIndex, this.keyValues[key], minMax, length)\r\n }\r\n );\r\n start += da;\r\n });\r\n\r\n start = 0;\r\n\r\n keys(this.keyValues).forEach((key, index) => {\r\n da = this.keyValues[key] / sum * Math.PI * 2;\r\n const rotatedPoint = center.add(new Point2D(this.dr, 0).rotate(start + da / 2));\r\n dc.drawPie(\r\n rotatedPoint,\r\n this.ray,\r\n this.ray,\r\n start,\r\n start + da > Math.PI * 2 ? Math.PI * 2 : start + da,\r\n 1,\r\n options[index].colors.stroke,\r\n options[index].colors.fill\r\n );\r\n start += da;\r\n });\r\n\r\n start = 0;\r\n\r\n keys(this.keyValues).forEach((key, index) => {\r\n da = this.keyValues[key] / sum * Math.PI * 2;\r\n const text = this.valueKeyFormat(index, this.keyValues[key], sum, key);\r\n const startPoint = center.add(new Point2D(this.dr + this.ray * 0.9).rotate(start + da / 2));\r\n\r\n dc.setFontSize(8);\r\n\r\n if (da < dk) {\r\n let dy = 0;\r\n const angle = options[index];\r\n if (!angle.right && !angle.bottom) {\r\n dy = leftTopIndex * 12;\r\n } else if (angle.right && !angle.bottom) {\r\n dy = (angle.index * 2 - 1) * 12;\r\n } else if (!angle.right && angle.bottom) {\r\n dy = (angle.index * 2 - 1) * 12;\r\n } else if (angle.right && angle.bottom) {\r\n dy = rightBottomIndex * 12;\r\n }\r\n dy = this.ray - dy;\r\n const end = center.add(\r\n new Point2D(\r\n options[index].right ? (this.ray * 1.2) : -this.ray * 1.2,\r\n options[index].bottom ? options[index].index * 12 + dy : -options[index].index * 12 - dy\r\n )\r\n );\r\n dc.drawLine(\r\n startPoint,\r\n end,\r\n 1,\r\n options[index].colors.line\r\n )\r\n .setTextAlign(angle.right && TextAlign.LEFT || TextAlign.RIGHT)\r\n .drawText(\r\n text,\r\n end.add(new Point2D(angle.right && 2 || -2, 2)),\r\n options[index].colors.text,\r\n 0\r\n );\r\n } else {\r\n const textAngle = -180 / Math.PI * (start + da / 2);\r\n dc.setTextAlign(options[index].right ? TextAlign.RIGHT : TextAlign.LEFT)\r\n .drawText(\r\n text,\r\n startPoint,\r\n options[index].colors.text,\r\n textAngle < -90 && textAngle > -270 ? textAngle + 180 : textAngle\r\n );\r\n }\r\n start += da;\r\n });\r\n }\r\n }\r\n}\r\n","import { AfterViewInit, Component, ElementRef, Input, Renderer2, ViewChild } from '@angular/core';\r\n\r\nimport { DrawingPdfInterface } from '@obliczeniowo/elementary/drawing-pdf';\r\nimport { DrawingSvgInterface, Rect } from '@obliczeniowo/elementary/drawing';\r\nimport { Point2D } from '@obliczeniowo/elementary/classes';\r\n\r\nimport { PieColorsFu } from './../../types/types';\r\nimport { FlatPieDiagram } from '../../classes/flat-pie-diagram';\r\nimport { ValueKeyFormat } from '../../types/types';\r\n\r\n@Component({\r\n selector: 'obl-flat-pie-diagram',\r\n templateUrl: './flat-pie-diagram.component.html',\r\n styleUrls: ['./flat-pie-diagram.component.scss'],\r\n standalone: false\r\n})\r\nexport class FlatPieDiagramComponent implements AfterViewInit {\r\n drawing!: FlatPieDiagram;\r\n\r\n readonly width = 800;\r\n readonly height = 528;\r\n\r\n private pData: { [key: string]: number } = {};\r\n\r\n public get data(): { [key: string]: number } {\r\n return this.pData;\r\n }\r\n\r\n @Input()\r\n public set data(value: { [key: string]: number }) {\r\n this.pData = value;\r\n\r\n if (this.drawing) {\r\n this.drawing.keyValues = this.pData;\r\n this.drawing.draw();\r\n }\r\n }\r\n\r\n @ViewChild('diagram') svg!: ElementRef<SVGSVGElement>;\r\n\r\n protected _colors: PieColorsFu | undefined;\r\n\r\n protected _valueKeyFormat: ValueKeyFormat =\r\n (index: number, value: number, sum: number, key: string) => `${value} (${(value / sum * 100).toFixed(2)}%)`\r\n\r\n @Input()\r\n set valueKeyFormat(valueKeyFormat: ValueKeyFormat | undefined) {\r\n if (valueKeyFormat) {\r\n this._valueKeyFormat = valueKeyFormat;\r\n if (this.drawing) {\r\n this.drawing.valueKeyFormat = valueKeyFormat;\r\n this.drawing.draw();\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n set colors(colors: PieColorsFu | undefined) {\r\n if (colors) {\r\n this._colors = colors;\r\n if (this.drawing) {\r\n this.drawing.colors = colors;\r\n this.drawing.draw();\r\n }\r\n }\r\n }\r\n\r\n constructor(protected renderer: Renderer2) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.drawing = new FlatPieDiagram(\r\n new DrawingSvgInterface(this.svg.nativeElement, this.renderer),\r\n new Rect(\r\n new Point2D(0, 0),\r\n new Point2D(this.width, this.height)\r\n )\r\n );\r\n\r\n this.drawing.keyValues = this.pData;\r\n if (this._valueKeyFormat) {\r\n this.drawing.valueKeyFormat = this._valueKeyFormat;\r\n }\r\n if (this._colors) {\r\n this.drawing.colors = this._colors;\r\n }\r\n this.drawing.draw();\r\n }\r\n\r\n pdf(): void {\r\n const dc = new DrawingPdfInterface(this.drawing.areaRect);\r\n this.drawing.draw(dc);\r\n dc.save('flat-pie-diagram');\r\n }\r\n}\r\n","<div class=\"svgContainer\">\r\n <svg #diagram [attr.viewBox]=\"'0 0 ' + width + ' ' + height\"></svg>\r\n\r\n <button class=\"pdf-button\" oblButton icon=\"file\" (click)=\"pdf()\">\r\n </button>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FlatPieDiagramComponent } from './components/flat-pie-diagram/flat-pie-diagram.component';\r\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\r\n\r\n@NgModule({\r\n declarations: [\r\n FlatPieDiagramComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ButtonsModule\r\n ],\r\n exports: [\r\n FlatPieDiagramComponent\r\n ]\r\n})\r\nexport class FlatPieDiagramModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}