{"version":3,"file":"obliczeniowo-elementary-statistic-diagram.mjs","sources":["../../../../projects/components/statistic-diagram/components/statistic-diagram/statistic-diagram.component.ts","../../../../projects/components/statistic-diagram/components/statistic-diagram/statistic-diagram.component.html","../../../../projects/components/statistic-diagram/statistic-diagram.module.ts","../../../../projects/components/statistic-diagram/obliczeniowo-elementary-statistic-diagram.ts"],"sourcesContent":["import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { IPoint2DData, Point2D, Point2DData } from '@obliczeniowo/elementary/classes';\r\n\r\n@Component({\r\n    selector: 'obl-statistic-diagram',\r\n    templateUrl: './statistic-diagram.component.html',\r\n    styleUrls: ['./statistic-diagram.component.scss'],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            multi: true,\r\n            useExisting: StatisticDiagramComponent\r\n        },\r\n    ],\r\n    standalone: false\r\n})\r\nexport class StatisticDiagramComponent implements ControlValueAccessor {\r\n  protected hovered?: { converted: Point2D, original: Point2DData<string> };\r\n  protected touched: boolean = false;\r\n\r\n  /** header text to display */\r\n  @Input() header: string = '';\r\n  /** mixed point coordinates and data as string to display on hover with y value by default */\r\n  @Input() points: Point2DData<string>[] = [];\r\n  /** width */\r\n  @Input() width: number = 250;\r\n  /** height */\r\n  @Input() height: number = 50;\r\n  /**\r\n   * disable the whole things\r\n   */\r\n  @Input() disabled = false;\r\n  /**\r\n   * reference to detected in ng-content template with #hoveredRef used to replace default way of displaying statistic on\r\n   * mouse over\r\n   *\r\n   * @example\r\n   *\r\n   * <obl-statistic-diagram [points]=\"points\">\r\n   *   <ng-template let-hovered #hoveredRef>\r\n   *     {{ hovered.original.extData }} Value:\r\n   *     {{ hovered.original.y }}\r\n   *   </ng-template>\r\n   * </obl-statistic-diagram>\r\n   */\r\n  @ContentChild('hoveredRef') hoveredRef?: TemplateRef<any>;\r\n\r\n  onChange = (value: Point2DData<string>[]) => { };\r\n\r\n  onTouched = () => { };\r\n\r\n  registerOnValidatorChange(fn: () => void): void { this.onChange = fn; }\r\n\r\n  writeValue(set: IPoint2DData<string>[]): void {\r\n    console.log(set);\r\n    this.points = set.map(pt => new Point2DData(pt.x, pt.y, pt.extData));\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n\r\n  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n\r\n  markAsTouched(): void {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    if (!this.touched) {\r\n      this.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n\r\n  setHovered(point: { converted: Point2D, original: Point2DData<string> }) {\r\n    this.hovered = point;\r\n  }\r\n}\r\n","<h3>\r\n  @if (!hovered) {\r\n    {{ header }}\r\n  } @else {\r\n    <ng-container\r\n      *ngTemplateOutlet=\"\r\n        hoveredRef || defaultHoveredRef;\r\n        context: { $implicit: hovered }\r\n      \"\r\n    >\r\n    </ng-container>\r\n  }\r\n</h3>\r\n\r\n<obl-simple-diagram2-d\r\n  [points]=\"points\"\r\n  [padding]=\"5\"\r\n  [style.width.px]=\"width\"\r\n  [style.height.px]=\"height\"\r\n  [width]=\"width\"\r\n  [height]=\"height\"\r\n  [interactive]=\"true\"\r\n  (hover)=\"setHovered($event)\"\r\n  #diagram\r\n>\r\n  @if (hovered) {\r\n    <svg:circle\r\n      [attr.cx]=\"hovered.converted.x\"\r\n      [attr.cy]=\"hovered.converted.y\"\r\n      r=\"5\"\r\n    ></svg:circle>\r\n  }\r\n</obl-simple-diagram2-d>\r\n\r\n<ng-template let-hovered #defaultHoveredRef>\r\n  {{ hovered.original.extData + ': ' + hovered.original.y }}\r\n</ng-template>","import { SimpleDiagram2DModule } from '@obliczeniowo/elementary/simple-diagram2-d';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StatisticDiagramComponent } from './components/statistic-diagram/statistic-diagram.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    StatisticDiagramComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    SimpleDiagram2DModule\r\n  ],\r\n  exports: [\r\n    StatisticDiagramComponent\r\n  ]\r\n})\r\nexport class StatisticDiagramModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;MAiBa,yBAAyB,CAAA;AAC1B,IAAA,OAAO;IACP,OAAO,GAAY,KAAK;;IAGzB,MAAM,GAAW,EAAE;;IAEnB,MAAM,GAA0B,EAAE;;IAElC,KAAK,GAAW,GAAG;;IAEnB,MAAM,GAAW,EAAE;AAC5B;;AAEG;IACM,QAAQ,GAAG,KAAK;AACzB;;;;;;;;;;;;AAYG;AACyB,IAAA,UAAU;AAEtC,IAAA,QAAQ,GAAG,CAAC,KAA4B,KAAI,GAAI;AAEhD,IAAA,SAAS,GAAG,MAAK,GAAI;IAErB,yBAAyB,CAAC,EAAc,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAErE,IAAA,UAAU,CAAC,GAA2B,EAAA;AACpC,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;;AAGtE,IAAA,gBAAgB,CAAC,QAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAG1B,IAAA,iBAAiB,CAAC,SAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;AAG5B,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;IAG1B,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAIvB,IAAA,UAAU,CAAC,KAA4D,EAAA;AACrE,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;uGAjEX,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EATvB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB,aAAA;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdL,o2BAoCc,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDnBD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAbrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGtB,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAA2B;AACzC,yBAAA;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,o2BAAA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA;8BAOV,MAAM,EAAA,CAAA;sBAAd;gBAEQ,MAAM,EAAA,CAAA;sBAAd;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,MAAM,EAAA,CAAA;sBAAd;gBAIQ,QAAQ,EAAA,CAAA;sBAAhB;gBAc2B,UAAU,EAAA,CAAA;sBAArC,YAAY;uBAAC,YAAY;;;ME7Bf,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,YAAA,EAAA,CAV/B,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAGzB,YAAY;AACZ,YAAA,qBAAqB,aAGrB,yBAAyB,CAAA,EAAA,CAAA;AAGhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAP/B,YAAY;YACZ,qBAAqB,CAAA,EAAA,CAAA;;2FAMZ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD;AACF,iBAAA;;;AChBD;;AAEG;;;;"}