@ixfx/components 0.1.5 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,30 @@
1
1
  import { LitElement, type PropertyValues } from "lit";
2
2
  import { type Ref } from "lit/directives/ref.js";
3
3
  import { CanvasHelper } from "ixfx/visual.js";
4
- import type { Rect, RectPositioned } from "ixfx/geometry.js";
5
- import { Colour, type DrawingHelper } from "ixfx/visual.js";
4
+ import { type RectPositioned } from "ixfx/geometry.js";
5
+ import * as Numbers from 'ixfx/numbers.js';
6
+ import { type DrawingHelper } from "ixfx/visual.js";
7
+ export type SeriesColourGenerator = (seriesName: string) => string;
8
+ export declare class PlotAxis {
9
+ #private;
10
+ name: string;
11
+ bounds: PlotAxisBounds;
12
+ constructor(name: string);
13
+ humanFormatValue(value: number[]): string;
14
+ getRange(series: Iterable<PlotSeries>): Numbers.NumericRange;
15
+ getCurrentRange(): Readonly<{
16
+ min: number;
17
+ max: number;
18
+ }> | undefined;
19
+ getValueScaler(series: Iterable<PlotSeries>): (value: number) => number;
20
+ computeActualRange(seriesOnAxis: Iterable<PlotSeries>, column?: number): {
21
+ min: number;
22
+ max: number;
23
+ };
24
+ }
25
+ export type PlotSeriesDefault = {
26
+ limit: number;
27
+ };
6
28
  /**
7
29
  * Attributes
8
30
  * * streaming: true/false (default: true)
@@ -12,7 +34,7 @@ import { Colour, type DrawingHelper } from "ixfx/visual.js";
12
34
  *
13
35
  * * line-width: stroke width of drawing line (default:2)
14
36
  *
15
- * * render: 'dot' or 'line' (default: 'dot')
37
+ * * render: 'dot', 'line' or 'bar'(default: 'dot')
16
38
  * * hide-legend: If added, legend is not shown
17
39
  * * manual-draw: If added, automatic drawning is disabled
18
40
  *
@@ -21,21 +43,29 @@ import { Colour, type DrawingHelper } from "ixfx/visual.js";
21
43
  */
22
44
  export declare class PlotElement extends LitElement {
23
45
  #private;
24
- streaming: boolean;
25
46
  hideLegend: boolean;
26
- maxLength: number;
27
- dataWidth: number;
28
- fixedMax: number;
29
- fixedMin: number;
30
- lineWidth: number;
31
- renderStyle: string;
32
- manualDraw: boolean;
47
+ renderStyle: PlotElementRenderStyle;
33
48
  padding: number;
49
+ readonly primaryAxis: PlotAxis;
50
+ readonly secondaryAxis: PlotAxis;
34
51
  paused: boolean;
52
+ plotAreaFormat: PlotObjectFormatting;
53
+ /**
54
+ * Settings used for automatically generating series colour
55
+ */
56
+ automaticSeriesColour: {
57
+ saturation: number;
58
+ lightness: number;
59
+ alpha: number;
60
+ };
61
+ seriesDefault: Partial<PlotSeriesDefault>;
35
62
  canvasEl: Ref<HTMLCanvasElement>;
36
- seriesRanges: Map<string, [min: number, max: number]>;
63
+ tooltipEl: Ref<HTMLDivElement>;
64
+ seriesColourGenerate: SeriesColourGenerator;
37
65
  get series(): PlotSeries[];
38
66
  get seriesCount(): number;
67
+ getSeriesFormatting(seriesName: string, createIfNeeded: boolean): SeriesFormatting | undefined;
68
+ setSeriesFormatting(seriesName: string, formatting: Partial<SeriesFormatting>): void;
39
69
  /**
40
70
  * Returns a `PlotElement` instance based on a query
41
71
  * ```js
@@ -68,23 +98,24 @@ export declare class PlotElement extends LitElement {
68
98
  * Keeps all series, but deletes their data
69
99
  */
70
100
  clearData(): void;
71
- render(): import("lit-html").TemplateResult<1>;
72
101
  connectedCallback(): void;
73
102
  protected firstUpdated(_changedProperties: PropertyValues): void;
74
103
  updateColours(): void;
75
- plot(value: number, seriesName?: string, skipDrawing?: boolean): PlotSeries;
76
- plotSeries(values: number[], seriesName?: string, skipDrawing?: boolean): PlotSeries;
104
+ setRawValues(values: number[], seriesName: string, automaticallyDraw: boolean): PlotSeries;
105
+ /**
106
+ * Treats each property of an object as the series name
107
+ * @param value
108
+ * @param automaticallyDraw
109
+ */
110
+ appendObjectBySeries(value: object, automaticallyDraw: boolean): void;
111
+ appendRawValues(values: number[] | number, seriesName: string, automaticallyDraw: boolean): void;
77
112
  /**
78
113
  * Draw a set of key-value pairs as a batch.
79
114
  * @param value
80
115
  */
81
- plotObject(value: object): void;
82
- colourGenerator(_series: string): Colour.Colourish;
83
116
  draw(): void;
84
117
  drawLegend(cl: RectPositioned, d: DrawingHelper): void;
85
- drawLineSeries(data: number[], cp: Rect, d: DrawingHelper, colour: string): void;
86
- drawDotSeries(data: number[], cp: Rect, d: DrawingHelper, colour: string): void;
87
- computePlot(c: CanvasHelper, plotHeight: number, axisYwidth: number, padding: number): {
118
+ calculatePlotDataArea(c: CanvasHelper, plotHeight: number, axisYwidth: number, padding: number): {
88
119
  x: number;
89
120
  y: number;
90
121
  width: number;
@@ -103,29 +134,66 @@ export declare class PlotElement extends LitElement {
103
134
  y: number;
104
135
  }[];
105
136
  };
137
+ getOrCreateSeries(name: string): PlotSeries;
106
138
  getSeries(name: string): PlotSeries | undefined;
139
+ render(): import("lit-html").TemplateResult<1>;
107
140
  static styles: import("lit").CSSResult;
108
141
  }
142
+ export type SolidColourDrawStyle = Readonly<{
143
+ type: `solid`;
144
+ colour: string;
145
+ }>;
146
+ export type NoneDrawStyle = Readonly<{
147
+ type: `none`;
148
+ }>;
149
+ export type FillDrawStyle = SolidColourDrawStyle | NoneDrawStyle;
150
+ export type OutlineDrawStyle = SolidColourDrawStyle | NoneDrawStyle;
151
+ export type SeriesFormatting = PlotObjectFormatting & Readonly<{
152
+ axis: `primary` | `secondary`;
153
+ bar: BarSeriesFormatting;
154
+ dot: DotSeriesFormatting;
155
+ line: LineSeriesFormatting;
156
+ }>;
157
+ export type PlotObjectFormatting = Readonly<{
158
+ fill: FillDrawStyle;
159
+ outline: OutlineDrawStyle;
160
+ }>;
161
+ export type BarSeriesFormatting = {
162
+ gapWidth: number;
163
+ };
164
+ export type DotSeriesFormatting = {
165
+ gapWidth: number;
166
+ radius: `automatic` | number;
167
+ };
168
+ export type LineSeriesFormatting = {
169
+ width: number;
170
+ cap: `round` | `butt` | `square`;
171
+ join: `bevel` | `miter` | `round`;
172
+ };
109
173
  export declare class PlotSeries {
110
- name: string;
111
- colour: Colour.Colourish;
174
+ #private;
175
+ readonly name: string;
112
176
  private plot;
113
- data: number[];
114
- minSeen: number;
115
- maxSeen: number;
116
- constructor(name: string, colour: Colour.Colourish, plot: PlotElement);
177
+ constructor(name: string, plot: PlotElement);
178
+ get length(): number;
179
+ getValuesForColumn(column: number): Generator<[value: number, index: number]>;
180
+ getValue(index: number): number[] | undefined;
181
+ pushValue(value: number[] | number, automaticallyDraw: boolean): void;
182
+ setValues(values: number[][], automaticallyDraw: boolean): void;
183
+ humanFormatValue(value: number[]): string;
184
+ setRawValues(values: number[], automaticallyDraw: boolean): void;
185
+ setCapacityLimit(v: number): void;
186
+ unsetCapacityLimit(): void;
187
+ setFormatting(formatting: Partial<SeriesFormatting>): void;
188
+ getFormatting(): SeriesFormatting;
189
+ get isDirty(): boolean;
190
+ set isDirty(value: boolean);
191
+ get onPrimaryAxis(): boolean;
192
+ set onPrimaryAxis(value: boolean);
117
193
  clear(): void;
118
- /**
119
- * Returns a copy of the data scaled by the current
120
- * range of the data
121
- * @returns
122
- */
123
- getScaled(): number[];
124
- getScaledBy(scaler: (v: number) => number): number[];
125
- push(value: number): void;
126
- setValues(values: number[]): void;
127
- resetScale(): void;
128
194
  }
195
+ export type PlotAxisBounds = `auto-persistent` | `auto` | Numbers.NumericRange;
196
+ export type PlotElementRenderStyle = `dot` | `line` | `bar`;
129
197
  declare global {
130
198
  interface HTMLElementTagNameMap {
131
199
  "ixfx-plot-element": PlotElement;
@@ -1 +1 @@
1
- {"version":3,"file":"plot.d.ts","sourceRoot":"","sources":["../../src/charts/plot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plot.d.ts","sourceRoot":"","sources":["../../src/charts/plot.ts"],"names":[],"mappings":"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"}