{"version":3,"file":"obliczeniowo-elementary-post-diagram.mjs","sources":["../../../../projects/components/post-diagram/diagram/diagramClass/svg-group.ts","../../../../projects/components/post-diagram/diagram/diagramClass/SvgRect.ts","../../../../projects/components/post-diagram/diagram/diagramClass/SvgPolygon.ts","../../../../projects/components/post-diagram/diagram/diagramClass/Style.ts","../../../../projects/components/post-diagram/diagram/diagramClass/SvgPost.ts","../../../../projects/components/post-diagram/diagram/diagramClass/SvgText.ts","../../../../projects/components/post-diagram/diagram/diagramClass/TransformationClass.ts","../../../../projects/components/post-diagram/diagram/diagramClass/PostDiagramValue.ts","../../../../projects/components/post-diagram/diagram/diagramClass/SvgPolyline.ts","../../../../projects/components/post-diagram/diagram/diagramClass/PostDiagram.ts","../../../../projects/components/post-diagram/diagram/post-diagram.component.ts","../../../../projects/components/post-diagram/diagram/post-diagram.component.html","../../../../projects/components/post-diagram/post-diagram.module.ts","../../../../projects/components/post-diagram/obliczeniowo-elementary-post-diagram.ts"],"sourcesContent":["import { ns } from '@obliczeniowo/elementary/svg';\r\nimport { Style } from './Style';\r\n\r\nexport class SvgGroup {\r\n  id = '';\r\n  svgGroupContainer: SVGGElement;\r\n\r\n  constructor(id?: string, style?: Style | string) {\r\n    this.id = id || '';\r\n    this.svgGroupContainer = document.createElementNS(ns, 'g');\r\n    if (style) {\r\n      this.svgGroupContainer.setAttribute('style', style.toString());\r\n    }\r\n  }\r\n\r\n  append(child: any): void {\r\n    this.svgGroupContainer.appendChild(child);\r\n  }\r\n\r\n  clear(): void {\r\n    while (this.svgGroupContainer.firstChild) {\r\n      this.svgGroupContainer.removeChild(this.svgGroupContainer.firstChild);\r\n    }\r\n  }\r\n}\r\n","import { SvgGroup } from './svg-group';\r\nimport { Style } from './Style';\r\nimport { ns } from '@obliczeniowo/elementary/svg';\r\n\r\nexport class SvgRect {\r\n  svg: SVGRectElement;\r\n\r\n  constructor(\r\n    x: number,\r\n    y: number,\r\n    width: number,\r\n    height: number,\r\n    id: string,\r\n    svgContainer: SVGElement | SvgGroup,\r\n    style?: Style | string\r\n  ) {\r\n    this.svg = document.createElementNS(ns, 'rect');\r\n    this.svg.setAttribute('id', id);\r\n    if (style) {\r\n      this.svg.setAttribute('style', style.toString());\r\n    }\r\n    this.svg.setAttribute('x', x.toString());\r\n    this.svg.setAttribute('y', y.toString());\r\n    this.svg.setAttribute('width', width.toString());\r\n    this.svg.setAttribute('height', height.toString());\r\n\r\n    svgContainer.append(this.svg);\r\n  }\r\n\r\n  setX(x: string | number): void {\r\n    this.svg.setAttribute('x', x.toString());\r\n  }\r\n\r\n  setY(y: string | number): void {\r\n    this.svg.setAttribute('y', y.toString());\r\n  }\r\n\r\n  setWidth(width: string | number): void {\r\n    this.svg.setAttribute('width', width.toString());\r\n  }\r\n\r\n  setHeight(height: string | number): void {\r\n    this.svg.setAttribute('height', height.toString());\r\n  }\r\n}\r\n","import { SvgGroup } from './svg-group';\r\nimport { Style } from './Style';\r\nimport { ns } from '@obliczeniowo/elementary/svg';\r\nimport { Point2D } from '@obliczeniowo/elementary/classes';\r\n\r\nexport class SvgPolygon {\r\n  svg: SVGPolygonElement;\r\n\r\n  points: Point2D[] = [];\r\n\r\n  constructor(id: string, style: Style, svgContainer: SVGElement | SvgGroup) {\r\n    this.svg = document.createElementNS(ns, 'polygon');\r\n\r\n    this.svg.setAttribute('id', id);\r\n    this.svg.setAttribute('style', style.toString());\r\n    this.svg.setAttribute('points', '');\r\n\r\n    svgContainer.append(this.svg);\r\n  }\r\n\r\n  addPoint(x: number, y: number): void {\r\n    this.points.push(new Point2D(x, y));\r\n\r\n    let strPoints = '';\r\n\r\n    this.points.forEach((point: Point2D) => {\r\n      strPoints += point.toString();\r\n    });\r\n\r\n    this.svg.setAttribute('points', strPoints);\r\n  }\r\n\r\n  clearPoints(): void {\r\n    this.points = [];\r\n\r\n    this.svg.setAttribute('points', '');\r\n  }\r\n}\r\n","import { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nexport class Style {\r\n  styles: any;\r\n\r\n  toString(): string {\r\n    let styleTxt = '';\r\n\r\n    keys(this.styles).forEach((key) => {\r\n      styleTxt += key + ':' + this.styles[key].toString() + ';';\r\n    });\r\n\r\n    return styleTxt;\r\n  }\r\n\r\n  constructor(styleObject: any) {\r\n    this.styles = styleObject;\r\n  }\r\n}\r\n","import { SvgGroup } from './svg-group';\r\nimport { SvgRect } from './SvgRect';\r\nimport { SvgPolygon } from './SvgPolygon';\r\nimport { Style } from './Style';\r\nimport { ColorRGB } from '@obliczeniowo/elementary/classes';\r\n\r\nexport class SvgPost {\r\n  x: number;\r\n  y: number;\r\n  width: number;\r\n  height: number;\r\n  private faceColor: ColorRGB;\r\n  private rightColor: ColorRGB;\r\n  private topColor: ColorRGB;\r\n  private strokeColor: ColorRGB;\r\n\r\n  private readonly face: SvgRect;\r\n  private readonly right: SvgPolygon;\r\n\r\n  top: SvgPolygon;\r\n\r\n  constructor(\r\n    x: number,\r\n    y: number,\r\n    width: number,\r\n    height: number,\r\n    id: string,\r\n    color: ColorRGB,\r\n    postGroup: SvgGroup\r\n  ) {\r\n    this.x = x;\r\n    this.y = y;\r\n    this.width = width;\r\n    this.height = height;\r\n\r\n    this.faceColor = color;\r\n    this.rightColor = new ColorRGB(\r\n      color.red - 40,\r\n      color.green - 40,\r\n      color.blue - 40\r\n    );\r\n    this.topColor = new ColorRGB(\r\n      color.red + 40,\r\n      color.green + 40,\r\n      color.blue + 40\r\n    );\r\n    this.strokeColor = new ColorRGB(\r\n      color.red - 100,\r\n      color.green - 100,\r\n      color.blue - 100\r\n    );\r\n\r\n    this.face = new SvgRect(\r\n      x,\r\n      y - height,\r\n      width,\r\n      height,\r\n      id + '_face',\r\n      postGroup,\r\n      new Style({\r\n        fill: this.faceColor,\r\n        stroke: this.strokeColor,\r\n        'stroke-linejoin': 'round',\r\n      }),\r\n    );\r\n\r\n    this.right = new SvgPolygon(\r\n      id + '_right',\r\n      new Style({\r\n        fill: this.rightColor,\r\n        stroke: this.strokeColor,\r\n        'stroke-linejoin': 'round',\r\n      }),\r\n      postGroup\r\n    );\r\n\r\n    this.top = new SvgPolygon(\r\n      id + '_top',\r\n      new Style({\r\n        fill: this.topColor,\r\n        stroke: this.strokeColor,\r\n        'stroke-linejoin': 'round',\r\n      }),\r\n      postGroup\r\n    );\r\n\r\n    this.refresh();\r\n  }\r\n\r\n  refresh(): void {\r\n    this.face.setWidth(this.width);\r\n    this.face.setHeight(this.height);\r\n\r\n    this.face.setX(this.x);\r\n    this.face.setY(this.y - this.height);\r\n\r\n    this.right.clearPoints();\r\n\r\n    this.right.addPoint(this.x + this.width, this.y - this.height);\r\n    this.right.addPoint(\r\n      this.x + 1.5 * this.width,\r\n      this.y - 0.5 * this.width - this.height\r\n    );\r\n    this.right.addPoint(this.x + 1.5 * this.width, this.y - 0.5 * this.width);\r\n    this.right.addPoint(this.x + this.width, this.y);\r\n\r\n    this.top.clearPoints();\r\n\r\n    this.top.addPoint(this.x, this.y - this.height);\r\n    this.top.addPoint(this.x + this.width, this.y - this.height);\r\n    this.top.addPoint(\r\n      this.x + 1.5 * this.width,\r\n      this.y - 0.5 * this.width - this.height\r\n    );\r\n    this.top.addPoint(\r\n      this.x + 0.5 * this.width,\r\n      this.y - 0.5 * this.width - this.height\r\n    );\r\n  }\r\n\r\n  setWidth(width: number, refresh = false): void {\r\n    this.width = width;\r\n    if (refresh) {\r\n      this.refresh();\r\n    }\r\n  }\r\n\r\n  setHeight(height: number, refresh = false): void {\r\n    this.height = height;\r\n    if (refresh) {\r\n      this.refresh();\r\n    }\r\n  }\r\n\r\n  setColor(color: ColorRGB): void {\r\n    this.faceColor = color;\r\n    this.rightColor = new ColorRGB(\r\n      color.red - 40,\r\n      color.green - 40,\r\n      color.blue - 40\r\n    );\r\n    this.topColor = new ColorRGB(\r\n      color.red + 40,\r\n      color.green + 40,\r\n      color.blue + 40\r\n    );\r\n    this.strokeColor = new ColorRGB(\r\n      color.red - 100,\r\n      color.green - 100,\r\n      color.blue - 100\r\n    );\r\n\r\n    this.face.svg.style.fill = this.faceColor.toString();\r\n    this.face.svg.style.stroke = this.strokeColor.toString();\r\n    this.right.svg.style.fill = this.rightColor.toString();\r\n    this.right.svg.style.stroke = this.strokeColor.toString();\r\n    this.top.svg.style.fill = this.topColor.toString();\r\n    this.top.svg.style.stroke = this.strokeColor.toString();\r\n  }\r\n}\r\n","import { SvgGroup } from './svg-group';\r\nimport { Rotate } from './TransformationClass';\r\nimport { Style } from './Style';\r\nimport { ns } from '@obliczeniowo/elementary/svg';\r\n\r\nexport class SvgText {\r\n  svg: SVGTextElement;\r\n\r\n  rotate: Rotate;\r\n\r\n  setText(text: string): void {\r\n    this.svg.innerHTML = text;\r\n  }\r\n\r\n  constructor(\r\n    x: number,\r\n    y: number,\r\n    text: string,\r\n    style: Style,\r\n    id: string,\r\n    rotate: Rotate,\r\n    svgContainer: SVGElement | SvgGroup\r\n  ) {\r\n    this.svg = document.createElementNS(ns, 'text');\r\n\r\n    this.rotate = rotate;\r\n    this.svg.setAttribute('transform', rotate.toString());\r\n\r\n    this.svg.setAttribute('x', x.toString());\r\n    this.svg.setAttribute('y', y.toString());\r\n    this.svg.setAttribute('style', style.toString());\r\n    this.svg.setAttribute('id', id);\r\n\r\n    svgContainer.append(this.svg);\r\n    this.setText(text);\r\n  }\r\n\r\n  show(display: boolean): void {\r\n    if (display) {\r\n      this.svg.style.display = 'inherit';\r\n    } else {\r\n      this.svg.style.display = 'none';\r\n    }\r\n  }\r\n\r\n  private set _transform(transform: string | null) {\r\n    this.svg.setAttribute('transform', transform as string);\r\n  }\r\n\r\n  public get transform(): string | null {\r\n    return this.svg.getAttribute('transform');\r\n  }\r\n\r\n  setX(x: number): void {\r\n    if (this.rotate?.rotatePoint) {\r\n      this.rotate.rotatePoint.x = x;\r\n      this._transform = this.rotate.toString();\r\n    }\r\n    this.svg.setAttribute('x', x.toString());\r\n  }\r\n\r\n  setY(y: number): void {\r\n    if (this.rotate?.rotatePoint) {\r\n      this.rotate.rotatePoint.y = y;\r\n      this._transform = this.rotate.toString();\r\n    }\r\n    this.svg.setAttribute('y', y.toString());\r\n  }\r\n}\r\n","import { Point2D } from '@obliczeniowo/elementary/classes';\r\n\r\nexport abstract class Transform {\r\n  abstract toString(): string;\r\n}\r\n\r\nexport class Rotate extends Transform {\r\n  rotatePoint: Point2D | null = null;\r\n\r\n  angle: number;\r\n\r\n  constructor(angle: number, rotatePoint: Point2D | null = null) {\r\n    super();\r\n\r\n    this.rotatePoint = rotatePoint;\r\n    this.angle = angle;\r\n  }\r\n\r\n  toString(): string {\r\n    return (\r\n      'rotate(' +\r\n      this.angle.toString() +\r\n      (this.rotatePoint ? ',' + this.rotatePoint.toString() : '') +\r\n      ')'\r\n    );\r\n  }\r\n}\r\n","import { ColorRGB, Point2D } from '@obliczeniowo/elementary/classes';\r\n\r\nimport { SvgPost } from './SvgPost';\r\nimport { SvgText } from './SvgText';\r\nimport { Style } from './Style';\r\nimport { Rotate } from './TransformationClass';\r\nimport { SvgGroup } from './svg-group';\r\n\r\nexport class PostDiagramValue {\r\n  key: string;\r\n\r\n  private readonly postsGroup: SvgGroup;\r\n  private readonly valuesGroup: SvgGroup;\r\n  private readonly keysGroup: SvgGroup;\r\n\r\n  diagramValue: number;\r\n\r\n  private readonly svgPost: SvgPost;\r\n  valueText: SvgText;\r\n  keyText: SvgText;\r\n\r\n  private readonly legendContainer;\r\n\r\n  private readonly legendKey: HTMLElement;\r\n\r\n  set setColor(color: any) {\r\n    this.svgPost.setColor(color);\r\n    (this.legendKey.querySelector('div') as HTMLElement).style.backgroundColor =\r\n      color.toString();\r\n  }\r\n\r\n  constructor(\r\n    key: string,\r\n    diagramValue: number,\r\n    postsGroup: SvgGroup,\r\n    valuesGroup: SvgGroup,\r\n    keysGroup: SvgGroup,\r\n    legendContainer: HTMLElement\r\n  ) {\r\n    this.key = key;\r\n    this.diagramValue = Math.abs(diagramValue);\r\n\r\n    this.postsGroup = postsGroup;\r\n    this.valuesGroup = valuesGroup;\r\n    this.keysGroup = keysGroup;\r\n\r\n    this.legendContainer = legendContainer;\r\n\r\n    this.svgPost = new SvgPost(\r\n      0,\r\n      0,\r\n      10,\r\n      this.diagramValue,\r\n      this.key.replace(/ /g, ''),\r\n      new ColorRGB(250, 0, 0),\r\n      this.postsGroup\r\n    );\r\n\r\n    this.valueText = new SvgText(\r\n      0,\r\n      10,\r\n      this.diagramValue.toString(),\r\n      new Style(\r\n        {\r\n          fill: 'var(--default-text-color)',\r\n          'text-anchor': 'middle'\r\n        }\r\n      ),\r\n      'Value_' + this.key.replace(/ /g, ''),\r\n      new Rotate(0),\r\n      this.valuesGroup\r\n    );\r\n\r\n    this.keyText = new SvgText(\r\n      100,\r\n      100,\r\n      key,\r\n      new Style({\r\n        fill: 'var(--default-text-color)',\r\n        'text-anchor': 'end',\r\n      }),\r\n      'Key_' + this.key.replace(/ /g, ''),\r\n      new Rotate(-90, new Point2D(100, 100)),\r\n      this.keysGroup\r\n    );\r\n\r\n    const legendKey: HTMLElement = document.createElement('DIV');\r\n\r\n    legendKey.setAttribute('class', 'legend_key_' + this.key.replace(/ /g, ''));\r\n    legendKey.style.backgroundColor = new ColorRGB(0, 0, 0).toString();\r\n\r\n    legendKey.style.width = '20px';\r\n    legendKey.style.height = '20px';\r\n    legendKey.style.display = 'inline-flex';\r\n\r\n    const legendText: HTMLElement = document.createElement('DIV');\r\n\r\n    legendText.innerHTML = key + ' = ' + this.getValue();\r\n    legendText.style.display = 'inline-flex';\r\n    legendText.style.marginLeft = '10px';\r\n\r\n    this.legendKey = document.createElement('DIV');\r\n\r\n    this.legendKey.appendChild(legendKey);\r\n    this.legendKey.appendChild(legendText);\r\n\r\n    this.legendKey.style.verticalAlign = 'middle';\r\n\r\n    this.legendContainer.appendChild(this.legendKey);\r\n  }\r\n\r\n  setPost(x: number, y: number, width: number, k: number): void {\r\n    this.svgPost.x = x;\r\n    this.svgPost.y = y;\r\n    this.svgPost.setWidth(width);\r\n    this.svgPost.setHeight(this.diagramValue * k);\r\n    this.svgPost.refresh();\r\n  }\r\n\r\n  getValue(): number {\r\n    return this.diagramValue;\r\n  }\r\n\r\n  setValue(value: number, k: number): void {\r\n    this.diagramValue = value;\r\n    this.valueText.setText(this.diagramValue.toString());\r\n    this.svgPost.setHeight(value * k);\r\n    this.svgPost.refresh();\r\n  }\r\n\r\n  toString(): string {\r\n    return this.key + ';' + this.diagramValue.toString();\r\n  }\r\n}\r\n","import { SvgGroup } from './svg-group';\r\nimport { Style } from './Style';\r\nimport { ns } from '@obliczeniowo/elementary/svg';\r\nimport { Point2D } from '@obliczeniowo/elementary/classes';\r\n\r\nexport class SvgPolyline {\r\n  svg: SVGPolylineElement;\r\n\r\n  points: Point2D[] = [];\r\n\r\n  constructor(\r\n    id: string,\r\n    style: Style,\r\n    svgContainer: SVGElement | SvgGroup,\r\n    type = 'beforeend'\r\n  ) {\r\n    this.svg = document.createElementNS(ns, 'polyline');\r\n\r\n    this.svg.setAttribute('id', id);\r\n    this.svg.setAttribute('style', style.toString());\r\n    this.svg.setAttribute('points', '');\r\n\r\n    svgContainer.append(this.svg);\r\n  }\r\n\r\n  addPoint(x: number, y: number): void {\r\n    this.points.push(new Point2D(x, y));\r\n\r\n    let strPoints = '';\r\n\r\n    this.points.forEach((point: Point2D) => {\r\n      strPoints += point.toString();\r\n    });\r\n\r\n    this.svg.setAttribute('points', strPoints);\r\n  }\r\n\r\n  clearPoints(): void {\r\n    this.points = [];\r\n\r\n    this.svg.setAttribute('points', '');\r\n  }\r\n}\r\n","import { ElementaryMath } from '@obliczeniowo/elementary/math';\r\nimport { Point2D, ColorRGB, ColorHSV } from '@obliczeniowo/elementary/classes';\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { SvgGroup } from './svg-group';\r\nimport { PostDiagramValue } from './PostDiagramValue';\r\nimport { Rotate } from './TransformationClass';\r\nimport { Style } from './Style';\r\nimport { SvgText } from './SvgText';\r\nimport { SvgPolyline } from './SvgPolyline';\r\nimport { SvgPolygon } from './SvgPolygon';\r\n\r\nexport interface ScaleValue {\r\n  line: SvgPolyline;\r\n  value: SvgText;\r\n}\r\n\r\nexport class SvgPostDiagram {\r\n  values: PostDiagramValue[] = [];\r\n  svgContainer: SVGSVGElement;\r\n\r\n  legendContainer: HTMLElement;\r\n\r\n  private readonly postsGroup: SvgGroup = new SvgGroup();\r\n  private readonly valuesGroup: SvgGroup = new SvgGroup();\r\n  private readonly keysGroup: SvgGroup = new SvgGroup();\r\n  private readonly greedGroup: SvgGroup = new SvgGroup();\r\n\r\n  // tslint:disable-next-line: variable-name\r\n  private _displayPostKeys = true;\r\n\r\n  // tslint:disable-next-line: variable-name\r\n  private _diagramHeight: number;\r\n\r\n  dy = 30;\r\n\r\n  diagramWidth: number;\r\n\r\n  diagramPos: Point2D;\r\n\r\n  base!: SvgPolygon;\r\n\r\n  leftScalePlain!: SvgPolygon;\r\n  backScalePlain!: SvgPolygon;\r\n\r\n  scaleLines: ScaleValue[] = [];\r\n  scaleBase!: SvgText;\r\n\r\n  private displayText = true;\r\n\r\n  private valuesColor: ColorRGB | null = null;\r\n  private readonly scaleColor: ColorRGB | string | null = 'var(--post-diagram-scale-line-color)';\r\n\r\n  id;\r\n\r\n  // tslint:disable-next-line: variable-name\r\n  private _colorFunction = (\r\n    index: number,\r\n    dataLength: number,\r\n    value: number,\r\n    max: number\r\n  ): ColorRGB => {\r\n    return ColorHSV.createColorHSV(\r\n      ((360 / dataLength) * 2 * index) / 2,\r\n      0.5,\r\n      255\r\n    ).convertToRGB();\r\n  }\r\n\r\n  set colorFunction(\r\n    colorFunction: (\r\n      index: number,\r\n      dataLength: number,\r\n      value: number,\r\n      max: number\r\n    ) => ColorRGB\r\n  ) {\r\n    if (colorFunction) {\r\n      this._colorFunction = colorFunction;\r\n\r\n      const dataLength = this.values.length;\r\n      const max = this.getMax();\r\n\r\n      this.values.forEach((value: PostDiagramValue, index: number) => {\r\n        value.setColor = this._colorFunction(\r\n          index,\r\n          dataLength,\r\n          value.getValue(),\r\n          max\r\n        );\r\n      });\r\n    }\r\n  }\r\n\r\n  constructor(\r\n    id: string,\r\n    data: any,\r\n    svgContainer: SVGSVGElement,\r\n    legendContainer: HTMLElement\r\n  ) {\r\n    this.id = id;\r\n\r\n    this.values = [];\r\n\r\n    this.svgContainer = svgContainer;\r\n\r\n    this.legendContainer = legendContainer;\r\n\r\n    this.legendContainer.style.maxHeight =\r\n      svgContainer.getAttribute('height') + 'px';\r\n\r\n    this._diagramHeight =\r\n      +(this.svgContainer.getAttribute('height') as string) - 80;\r\n\r\n    this.diagramWidth =\r\n      +(this.svgContainer.getAttribute('width') as string) - 100;\r\n\r\n    this.diagramPos = new Point2D(90, this.diagramHeight + this.dy);\r\n\r\n    this.setDiagramValues(data);\r\n  }\r\n\r\n  get diagramHeight(): number {\r\n    return (\r\n      this._diagramHeight -\r\n      (this.values.length ? this.postWidth * 0.5 : 0) -\r\n      this.dy\r\n    );\r\n  }\r\n\r\n  displayPostKeys(display: boolean): void {\r\n    this._displayPostKeys = display;\r\n    this.values.forEach((postValue: PostDiagramValue) => {\r\n      postValue.keyText.show(display);\r\n    });\r\n\r\n    this._diagramHeight =\r\n      +(this.svgContainer.getAttribute('height') as string) -\r\n      (display ? 80 : 30);\r\n    this.diagramPos.y = this.diagramHeight + this.dy;\r\n\r\n    this.greedGroup.clear();\r\n\r\n    this.refresh();\r\n  }\r\n\r\n  getMax(): number {\r\n    let max = 0;\r\n    this.values.forEach((value) => {\r\n      if (max < value.getValue()) {\r\n        max = value.getValue();\r\n      }\r\n    });\r\n    return max !== 0 ? max : 1;\r\n  }\r\n\r\n  setValueColor(valuesColor: ColorRGB): void {\r\n    this.valuesColor = valuesColor;\r\n    this.values.forEach((value) => {\r\n      value.setColor(valuesColor);\r\n    });\r\n  }\r\n\r\n  private clearHtml(html: HTMLElement): void {\r\n    while (html.firstChild) {\r\n      html.removeChild(html.firstChild);\r\n    }\r\n  }\r\n\r\n  setDiagramValues(data: { [key: string]: number }): void {\r\n    this.clearHtml(this.svgContainer as unknown as HTMLElement);\r\n    this.clearHtml(this.legendContainer);\r\n\r\n    this.postsGroup.clear();\r\n    this.valuesGroup.clear();\r\n    this.keysGroup.clear();\r\n    this.greedGroup.clear();\r\n\r\n    this.values = [];\r\n\r\n    this.base = new SvgPolygon(\r\n      this.id + 'base',\r\n      new Style({\r\n        fill: new ColorRGB(150, 150, 150),\r\n        stroke: new ColorRGB(50, 50, 50),\r\n      }),\r\n      this.svgContainer\r\n    );\r\n\r\n    this.leftScalePlain = new SvgPolygon(\r\n      this.id + 'leftScalePlain',\r\n      new Style({\r\n        fill: 'none',\r\n        stroke: this.scaleColor,\r\n      }),\r\n      this.svgContainer\r\n    );\r\n\r\n    this.backScalePlain = new SvgPolygon(\r\n      this.id + 'backScalePlain',\r\n      new Style({\r\n        fill: 'none',\r\n        stroke: this.scaleColor,\r\n      }),\r\n      this.svgContainer\r\n    );\r\n\r\n    this.svgContainer.appendChild(this.greedGroup.svgGroupContainer);\r\n    this.svgContainer.appendChild(this.postsGroup.svgGroupContainer);\r\n    this.svgContainer.appendChild(this.valuesGroup.svgGroupContainer);\r\n    this.svgContainer.appendChild(this.keysGroup.svgGroupContainer);\r\n\r\n    let post: PostDiagramValue;\r\n\r\n    const valuesKeys: string[] = keys(data);\r\n\r\n    const dataLength: number = valuesKeys.length;\r\n\r\n    let max = 0;\r\n\r\n    valuesKeys.forEach((element) => {\r\n      const value: number = data[element];\r\n      max = value > max ? value : max;\r\n    });\r\n\r\n    valuesKeys.forEach((key: string, index: number) => {\r\n      if (ElementaryMath.isNumeric(data[key])) {\r\n        post = new PostDiagramValue(\r\n          key,\r\n          data[key],\r\n          this.postsGroup,\r\n          this.valuesGroup,\r\n          this.keysGroup,\r\n          this.legendContainer\r\n        );\r\n\r\n        post.setColor =\r\n          this.valuesColor === null\r\n            ? this._colorFunction(index, dataLength, data[key], max)\r\n            : this.scaleColor;\r\n\r\n        post.keyText.show(this._displayPostKeys);\r\n\r\n        this.values.push(post);\r\n      } else {\r\n        console.error('non numeric value ' + data[key]);\r\n      }\r\n    });\r\n\r\n    this.refresh();\r\n  }\r\n\r\n  get postWidth(): number {\r\n    return this.diagramWidth / (2 * this.values.length);\r\n  }\r\n\r\n  private _refreshBase(): void {\r\n    this.base.clearPoints();\r\n\r\n    this.base.addPoint(this.diagramPos.x, this.diagramPos.y);\r\n\r\n    this.base.addPoint(\r\n      this.diagramPos.x + this.postWidth * 0.5,\r\n      this.diagramPos.y - this.postWidth * 0.5\r\n    );\r\n\r\n    this.base.addPoint(\r\n      this.diagramPos.x + this.diagramWidth,\r\n      this.diagramPos.y - this.postWidth * 0.5\r\n    );\r\n\r\n    this.base.addPoint(\r\n      this.diagramPos.x + this.diagramWidth - this.postWidth * 0.5,\r\n      this.diagramPos.y\r\n    );\r\n  }\r\n\r\n  private _refreshLeftScalePlain(): void {\r\n    this.leftScalePlain.clearPoints();\r\n\r\n    this.leftScalePlain.addPoint(this.diagramPos.x, this.diagramPos.y);\r\n\r\n    this.leftScalePlain.addPoint(\r\n      this.diagramPos.x + this.postWidth * 0.5,\r\n      this.diagramPos.y - this.postWidth * 0.5\r\n    );\r\n\r\n    this.leftScalePlain.addPoint(\r\n      this.diagramPos.x + this.postWidth * 0.5,\r\n      this.diagramPos.y - this.postWidth * 0.5 - this.diagramHeight\r\n    );\r\n\r\n    this.leftScalePlain.addPoint(\r\n      this.diagramPos.x,\r\n      this.diagramPos.y - this.diagramHeight\r\n    );\r\n  }\r\n\r\n  private _refreshBackScalePlain(): void {\r\n    this.backScalePlain.clearPoints();\r\n\r\n    this.backScalePlain.addPoint(\r\n      this.diagramPos.x + this.postWidth * 0.5,\r\n      this.diagramPos.y - this.postWidth * 0.5\r\n    );\r\n\r\n    this.backScalePlain.addPoint(\r\n      this.diagramPos.x + this.postWidth * 0.5,\r\n      this.diagramPos.y - this.postWidth * 0.5 - this.diagramHeight\r\n    );\r\n\r\n    this.backScalePlain.addPoint(\r\n      this.diagramPos.x + this.diagramWidth,\r\n      this.diagramPos.y - this.postWidth * 0.5 - this.diagramHeight\r\n    );\r\n\r\n    this.backScalePlain.addPoint(\r\n      this.diagramPos.x + this.diagramWidth,\r\n      this.diagramPos.y - this.postWidth * 0.5\r\n    );\r\n  }\r\n\r\n  private _refreshScale(k: number): void {\r\n    const max: number = this.getMax();\r\n\r\n    let baseUnit: number = Math.pow(10, Math.ceil(Math.log10(max))) / 10;\r\n\r\n    const basePow = 1 - Math.ceil(Math.log10(max));\r\n    const baseLog = Math.pow(10, basePow);\r\n\r\n    if (Math.floor(max / baseUnit) === 5) {\r\n      baseUnit = baseUnit / 2;\r\n    } else if (Math.floor(max / baseUnit) === 4) {\r\n      baseUnit = baseUnit / 2.5;\r\n    } else if (Math.floor(max / baseUnit) === 3) {\r\n      baseUnit = baseUnit / 4;\r\n    } else if (Math.floor(max / baseUnit) === 2) {\r\n      baseUnit = baseUnit / 5;\r\n    } else if (Math.floor(max / baseUnit) < 2) {\r\n      baseUnit = Math.pow(10, Math.ceil(Math.log10(max))) / 50;\r\n    }\r\n\r\n    this.scaleLines = [];\r\n\r\n    this.scaleBase = new SvgText(\r\n      this.diagramPos.x - 10,\r\n      this.diagramPos.y + 30,\r\n      basePow !== 0 ? '&times;e' + -basePow : '',\r\n      new Style({\r\n        fill: 'var(--default-text-color)',\r\n        'text-anchor': 'end',\r\n      }),\r\n      this.id + 'basePow',\r\n      new Rotate(0),\r\n      this.greedGroup\r\n    );\r\n\r\n    for (let index = 0; index <= max; index += baseUnit) {\r\n      const scaleLine = new SvgPolyline(\r\n        this.id + 'scaleLine' + index,\r\n        new Style({\r\n          fill: 'none',\r\n          stroke: this.scaleColor,\r\n        }),\r\n        this.greedGroup,\r\n        'afterbegin'\r\n      );\r\n\r\n      scaleLine.addPoint(this.diagramPos.x, this.diagramPos.y - index * k);\r\n\r\n      scaleLine.addPoint(\r\n        this.diagramPos.x + this.postWidth * 0.5,\r\n        this.diagramPos.y - this.postWidth * 0.5 - index * k\r\n      );\r\n\r\n      scaleLine.addPoint(\r\n        this.diagramPos.x + this.diagramWidth,\r\n        this.diagramPos.y - this.postWidth * 0.5 - index * k\r\n      );\r\n\r\n      const value: SvgText = new SvgText(\r\n        this.diagramPos.x - 10,\r\n        this.diagramPos.y - index * k,\r\n        (index * baseLog).toFixed(2).toString(),\r\n        new Style({\r\n          fill: 'var(--default-text-color)',\r\n          'text-anchor': 'end',\r\n        }),\r\n        this.id + 'scaleValue' + index,\r\n        new Rotate(0),\r\n        this.greedGroup\r\n      );\r\n\r\n      this.scaleLines.push({ line: scaleLine, value });\r\n    }\r\n  }\r\n\r\n  refresh(): void {\r\n    const k = this.diagramHeight / this.getMax();\r\n\r\n    this._refreshScale(k);\r\n\r\n    this._refreshBase();\r\n\r\n    this._refreshLeftScalePlain();\r\n\r\n    this._refreshBackScalePlain();\r\n\r\n    this.values.forEach((value, i) => {\r\n      value.setPost(\r\n        this.diagramPos.x + i * this.postWidth * 2 + this.postWidth / 4,\r\n        this.diagramPos.y,\r\n        this.postWidth,\r\n        k\r\n      );\r\n      if (this.displayText === true) {\r\n        value.valueText.svg.style.display = 'initial';\r\n      } else {\r\n        value.valueText.svg.style.display = 'none';\r\n      }\r\n\r\n      value.valueText.setX(\r\n        this.diagramPos.x + i * this.postWidth * 2 + 0.75 * this.postWidth\r\n      );\r\n      value.valueText.setY(\r\n        this.diagramPos.y - value.getValue() * k - this.postWidth * 0.5 - 5\r\n      );\r\n\r\n      value.keyText.setX(\r\n        this.diagramPos.x + i * this.postWidth * 2 + 0.75 * this.postWidth\r\n      );\r\n      value.keyText.setY(this.diagramPos.y + 10);\r\n    });\r\n  }\r\n\r\n  toString(): string {\r\n    let data = '';\r\n    this.values.forEach((value) => {\r\n      data += value.toString() + ';';\r\n    });\r\n    return data.slice(0, -1);\r\n  }\r\n\r\n  setDisplayValue(value: boolean): void {\r\n    this.displayText = value;\r\n\r\n    this.values.forEach((diagramValue: PostDiagramValue) => {\r\n      if (this.displayText === true) {\r\n        diagramValue.valueText.svg.style.display = 'initial';\r\n      } else {\r\n        diagramValue.valueText.svg.style.display = 'none';\r\n      }\r\n    });\r\n  }\r\n\r\n  setValue(value: number, index: number): void {\r\n    if (index < this.values.length) {\r\n      let max = this.getMax();\r\n      max = max < value ? value : max;\r\n      const k = value / max;\r\n      this.values[index].setValue(value, k);\r\n    }\r\n  }\r\n}\r\n","import { ColorHSV, ColorRGB } from '@obliczeniowo/elementary/classes';\r\nimport {\r\n  Component,\r\n  Input,\r\n  AfterViewInit,\r\n  ViewChild,\r\n  ElementRef,\r\n} from '@angular/core';\r\n\r\nimport { SvgPostDiagram } from './diagramClass/PostDiagram';\r\n\r\n@Component({\r\n    selector: 'obl-post-diagram',\r\n    templateUrl: './post-diagram.component.html',\r\n    styleUrls: ['./post-diagram.component.scss'],\r\n    standalone: false\r\n})\r\nexport class PostDiagramComponent implements AfterViewInit {\r\n  @Input() yLabel = '';\r\n\r\n  @Input() xLabel = '';\r\n\r\n  @Input() diagramTitle = '';\r\n\r\n  // tslint:disable-next-line: variable-name\r\n  private _diagramData: { [key: string]: number } = {};\r\n\r\n  @ViewChild('svgContainer') svgContainer!: ElementRef;\r\n  @ViewChild('diagramLegend') diagramLegend!: ElementRef;\r\n\r\n  @Input()\r\n  set diagramData(diagramData: { [key: string]: number }) {\r\n    this._diagramData = diagramData;\r\n    if (this.svgDiagram) {\r\n      this.svgDiagram.setDiagramValues(this._diagramData);\r\n    }\r\n  }\r\n\r\n  svgDiagram!: SvgPostDiagram;\r\n\r\n  // tslint:disable-next-line: variable-name\r\n  private _colorFunctionRef = (\r\n    index: number,\r\n    dataLength: number,\r\n    value: number,\r\n    max: number\r\n  ): ColorRGB => {\r\n    return ColorHSV.createColorHSV(\r\n      ((360 / dataLength) * 2 * index) / 2,\r\n      0.5,\r\n      255\r\n    ).convertToRGB();\r\n  }\r\n\r\n  @Input()\r\n  set colorFunction(\r\n    colorFunctionRef: (\r\n      index: number,\r\n      dataLength: number,\r\n      value: number,\r\n      max: number\r\n    ) => ColorRGB\r\n  ) {\r\n    this._colorFunctionRef = colorFunctionRef;\r\n    if (this.svgDiagram) {\r\n      this.svgDiagram.colorFunction = this._colorFunctionRef;\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    setTimeout(() => {\r\n      this.svgDiagram = new SvgPostDiagram(\r\n        'myDiagram',\r\n        this._diagramData,\r\n        this.svgContainer.nativeElement,\r\n        this.diagramLegend.nativeElement\r\n      );\r\n\r\n      this.svgDiagram.colorFunction = this._colorFunctionRef;\r\n    }, 0);\r\n  }\r\n}\r\n","<div>\r\n  <div class=\"diagram\">\r\n    @if (yLabel !== '') {\r\n      <div class=\"yLabel\">\r\n        <div\r\n          class=\"rotate\"\r\n          [style.minWidth.px]=\"svgDiagram ? svgDiagram.diagramHeight : 0\"\r\n        >\r\n          {{ yLabel }}\r\n        </div>\r\n      </div>\r\n    }\r\n\r\n    <div>\r\n      @if (svgDiagram && diagramTitle !== '') {\r\n        <h1>\r\n          {{ diagramTitle }}\r\n        </h1>\r\n      }\r\n      <svg #svgContainer width=\"800\" height=\"400\"></svg>\r\n      <div class=\"xLabel-container\">\r\n        @if (svgDiagram && xLabel !== '') {\r\n          <div\r\n            [style.width.px]=\"svgDiagram.diagramWidth\"\r\n            class=\"xLabel\"\r\n          >\r\n            {{ xLabel }}\r\n          </div>\r\n        }\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n<div #diagramLegend class=\"legend\"></div>\r\n","import { PostDiagramComponent } from './diagram/post-diagram.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n  declarations: [PostDiagramComponent],\r\n  imports: [CommonModule],\r\n  providers: [],\r\n  exports: [PostDiagramComponent],\r\n})\r\nexport class PostDiagramModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}