import * as i0 from '@angular/core'; import { OnDestroy, TemplateRef, AfterViewInit, AfterContentInit, Renderer2, ElementRef, EventEmitter } from '@angular/core'; import { Subject, Subscription } from 'rxjs'; import { MinMax } from '@obliczeniowo/elementary/math'; import * as i4 from '@angular/common'; import { DecimalPipe } from '@angular/common'; import { Point2D, ColorType } from '@obliczeniowo/elementary/classes'; import { TextAlign, DrawingContextInterface, Rect, LinePattern, DrawingSvgInterface } from '@obliczeniowo/elementary/drawing'; import { OblFileService } from '@obliczeniowo/elementary/files'; import * as i5 from '@obliczeniowo/elementary/buttons'; import * as i6 from '@obliczeniowo/elementary/text-pipes'; import * as i7 from '@obliczeniowo/elementary/input'; import * as i8 from '@obliczeniowo/elementary/numeric-pipes'; /** * Create hover over element on obl-linear-diagram-2d element by ng-content * * example with own template * * * *
*
x = {{ x | number: '0.5-5' }}
*
y = {{ y | number: '0.5-5' }}
*
*
*
*/ declare class DiagramPointHoverComponent implements OnDestroy { x: number; y: number; private pOnMouseOver?; set onMouseOver(value: Subject | undefined); private pOnMouseOut?; set onMouseOut(value: Subject | undefined); over: '' | 'none'; top: number; left: number; xyTemplate: TemplateRef; ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare abstract class YAxisI { protected textAlign: TextAlign; /** pipe used for formatting x/y axis text */ decimalPipe: DecimalPipe; /** * Function that give you control over format of y axis values * this function can be overrided let programmer use whatever he want * @param y value on scale to draw * @param yK y * pow(10, yK) - power of 10 that provide number into n.xxxx format * @returns formatted string value of y scale */ yFormatter: (y: number, yK: number) => string; abstract draw(dc: DrawingContextInterface, startPoint: Point2D, startScale: Point2D, dY: number, minMax: MinMax, yScale: number, yK: number, diagramArea: Rect, yLabel: string, yOptions?: AxisOptions): number; } declare enum PointType { NONE = "none", CIRCLE = "circle", X = "x", STAR = "star" } interface BaseDrawingOptions { /** color in format #rrggbb */ color?: ColorType; stroke?: number; linePattern?: LinePattern | string; drawPoint?: PointType | string; } interface AxisOptions extends BaseDrawingOptions { arrow?: boolean; dp?: number; autoIncreaseDecrease?: boolean; precision?: number; display?: boolean; } interface YAxisOptions extends AxisOptions { textAlign?: TextAlign; } interface GridOptions extends BaseDrawingOptions { display?: boolean; } interface LinearDiagram2DOptions { displayCursor?: boolean; xAxis?: AxisOptions; yAxis?: YAxisOptions; greed?: GridOptions; set?: BaseDrawingOptions[]; xMinMax?: MinMax; yMinMax?: MinMax; } type DrawingPointFu = (point: Point2D, dc: DrawingContextInterface, stroke: number, color: ColorType, index: number, value: number) => void; declare class LinearDiagram2D { protected static drawingPoints: Map; protected options: LinearDiagram2DOptions; /** min max for x */ protected xMinMax: MinMax; /** min max for y */ protected yMinMax: MinMax; /** */ protected yAxis: YAxisI; /** */ protected xScale: number; /** */ protected yScale: number; protected xCursorLine: SVGPolylineElement; protected yCursorLine: SVGPolylineElement; protected xyCursor: SVGTextElement; selectionRange?: MinMax; /** diagram area rect (area where diagram data will be drawn) */ diagramArea: Rect; pPoints: Point2D[][]; /** diagram title text */ title: string; /** x label description */ xLabel: string; /** y label description */ yLabel: string; /** legend description table */ legend: string[]; /** pipe used for formatting x/y axis text */ decimalPipe: DecimalPipe; /** */ xK: number; /** */ yK: number; redraw: Subject; onPointMouseOver: Subject; onPointMouseOut: Subject; static registerDrawingPointFu(name: string, fu: DrawingPointFu): boolean; /** * Function that give you control over format of x axis values * this function can be overridden let programmer use whatever he want * @param x value on scale to draw * @param xK x * pow(10, xK) - power of 10 that provide number into n.xxxx format * @returns formatted string value of x scale */ xFormatter: (x: number, xK: number) => string; set yFormatter(fu: (y: number, yK: number) => string); /** * set points vector and recalculate xMinMax & yMinMax values for diagram */ set points(points: Point2D[][]); /** * @param area diagram area * @param points points vectors as table of Point2D * @param options options settings for diagram (most of them override default one) */ constructor(area: Rect, points: Point2D[][], options?: LinearDiagram2DOptions); protected normalizeMinMax(min: number, max: number): MinMax; protected filterByRange(): Point2D[][]; /** * Get min and max of x axis * @returns return min & max for x axis */ getXMinMax(): MinMax; /** * Find minimum & maximum for y axis * @returns MinMax interface of displayed values */ protected getYMinMax(): MinMax; /** * Convert point diagram pos to SVG pos * @param point point to transform * @param startPoint diagram start point * @param xScale x scale * @param yScale y scale * @returns Point2D instance */ protected diagramPosToSVG(point: Point2D, startPoint: Point2D): Point2D; protected svgPosToDiagram(point: Point2D, startPoint: Point2D, xScale: number, yScale: number): Point2D; protected getDAxis(range: number, autoIncreaseDecrease: boolean, dp: number): number; protected getDx(): number; protected getDy(): number; protected drawGreed(dc: DrawingContextInterface, startPoint: Point2D): void; /** * Calc scale elementary increase value with given precision * @param value (max - min) * @param precision integer number should be >= 0 * @returns scale elementary increase value */ protected recalcDScale(value: number, precision?: number): number; protected drawXAxis(dc: DrawingContextInterface, startPoint: Point2D): number; protected drawYAxis(dc: DrawingContextInterface, startPoint: Point2D): number; protected drawLegend(dc: DrawingContextInterface): void; protected drawVectors(dc: DrawingContextInterface, startPoint: Point2D): void; draw(dc: DrawingContextInterface): void; setOptions(options: LinearDiagram2DOptions | undefined): void; drawCursor(mousePos: Point2D, svg: SVGGElement): void; svgToDiagram(point: Point2D): Point2D; protected getDrawPointFu(pointType: PointType | string): DrawingPointFu; } declare class LinearDiagram2DComponent implements OnDestroy, AfterViewInit, AfterContentInit { protected renderer: Renderer2; protected dc: DrawingSvgInterface; protected diagram2d?: LinearDiagram2D; protected mousePos: Point2D; protected selectArea?: Rect; readonly width = 800; readonly height = 528; diagram: ElementRef; legend: i0.InputSignal; points: i0.InputSignal; xFormatter: i0.InputSignal<((x: number) => string) | undefined>; yFormatter: i0.InputSignal<((x: number) => string) | undefined>; private pOptions; get options(): LinearDiagram2DOptions; set options(value: LinearDiagram2DOptions); protected pLabels: { x: string; y: string; title: string; }; set labels(labels: { x: string; y: string; title: string; }); diagramPointHover: DiagramPointHoverComponent; protected subscriptions: Subscription[]; constructor(renderer: Renderer2); ngOnDestroy(): void; ngAfterContentInit(): void; ngAfterViewInit(): void; pdf(): void; draw(dc?: DrawingContextInterface): void; move(event: MouseEvent): void; keyup(event: MouseEvent): void; left(): void; right(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface ArrayFilterOption { value: number; min?: number; max?: number; step?: number; } type ArrayFiltersOptions = { [option: string]: ArrayFilterOption; }; interface ArrayFilterModel { filter: (data: Point2D[], options: { [option: string]: any; }) => Point2D[]; options: ArrayFiltersOptions; } interface ValueDesc { value: number; min?: number; max?: number; steep?: number; } type FiltersOptions = { [filter: string]: ArrayFiltersOptions; }; declare class DiagramDataFilterComponent { protected file: OblFileService; protected models: { [name: string]: ArrayFilterModel; }; protected _filters: FiltersOptions; protected selected?: string; protected lastData?: Point2D[]; set filters(filters: FiltersOptions); get filters(): FiltersOptions; translations: { [en: string]: string; }; allow?: string[]; filtersChanged: EventEmitter; constructor(file: OblFileService); filtering(data: Point2D[]): Point2D[]; protected remove(name: string): void; protected changed(): void; protected compare: (f: any, s: any) => number; protected download(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class LinearDiagramModule { static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } export { DiagramDataFilterComponent, DiagramPointHoverComponent, LinearDiagram2D, LinearDiagram2DComponent, LinearDiagramModule, PointType }; export type { ArrayFilterModel, ArrayFilterOption, ArrayFiltersOptions, AxisOptions, BaseDrawingOptions, DrawingPointFu, FiltersOptions, GridOptions, LinearDiagram2DOptions, ValueDesc, YAxisOptions };