@malloydata/render 0.0.24-dev230224011252 → 0.0.24-dev230224184907
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.
- package/dist/data_styles.d.ts +1 -1
- package/dist/html/cartesian_chart.js +5 -5
- package/dist/html/chart.d.ts +3 -2
- package/dist/html/chart.js +3 -2
- package/dist/html/container.d.ts +3 -11
- package/dist/html/container.js +1 -4
- package/dist/html/dashboard.js +3 -3
- package/dist/html/html_view.d.ts +6 -15
- package/dist/html/html_view.js +56 -28
- package/dist/html/point_map.js +3 -3
- package/dist/html/segment_map.js +1 -1
- package/dist/html/shape_map.js +1 -1
- package/dist/html/table.js +1 -1
- package/dist/html/utils.d.ts +3 -0
- package/dist/html/utils.js +11 -1
- package/dist/html/vega_spec.d.ts +2 -1
- package/dist/html/vega_spec.js +2 -2
- package/dist/renderer.d.ts +9 -8
- package/package.json +3 -2
package/dist/data_styles.d.ts
CHANGED
|
@@ -142,7 +142,7 @@ export interface CartesianChartRenderOptions extends ChartRenderOptions {
|
|
|
142
142
|
spark_line?: boolean;
|
|
143
143
|
};
|
|
144
144
|
}
|
|
145
|
-
export interface BarChartRenderOptions {
|
|
145
|
+
export interface BarChartRenderOptions extends DataRenderOptions {
|
|
146
146
|
size?: ChartSize;
|
|
147
147
|
}
|
|
148
148
|
export interface ScatterChartRenderOptions extends CartesianChartRenderOptions {
|
|
@@ -44,7 +44,7 @@ class HTMLCartesianChartRenderer extends chart_1.HTMLChartRenderer {
|
|
|
44
44
|
? {
|
|
45
45
|
"field": colorField.name,
|
|
46
46
|
"type": colorType,
|
|
47
|
-
"axis": { "title": colorField.name },
|
|
47
|
+
"axis": { "title": (0, utils_1.formatTitle)(this.options, colorField.name) },
|
|
48
48
|
"scale": (0, utils_1.getColorScale)(colorType, mark === "bar")
|
|
49
49
|
}
|
|
50
50
|
: { "value": "#4285F4" };
|
|
@@ -52,14 +52,14 @@ class HTMLCartesianChartRenderer extends chart_1.HTMLChartRenderer {
|
|
|
52
52
|
? {
|
|
53
53
|
"field": sizeField.name,
|
|
54
54
|
"type": sizeType,
|
|
55
|
-
"axis": { "title": sizeField.name }
|
|
55
|
+
"axis": { "title": (0, utils_1.formatTitle)(this.options, sizeField.name) }
|
|
56
56
|
}
|
|
57
57
|
: undefined;
|
|
58
58
|
const shapeDef = shapeField
|
|
59
59
|
? {
|
|
60
60
|
"field": shapeField.name,
|
|
61
61
|
"type": shapeType,
|
|
62
|
-
"axis": { "title": shapeField.name }
|
|
62
|
+
"axis": { "title": (0, utils_1.formatTitle)(this.options, shapeField.name) }
|
|
63
63
|
}
|
|
64
64
|
: undefined;
|
|
65
65
|
const xSort = xType === "nominal" ? null : undefined;
|
|
@@ -68,13 +68,13 @@ class HTMLCartesianChartRenderer extends chart_1.HTMLChartRenderer {
|
|
|
68
68
|
"field": xField.name,
|
|
69
69
|
"type": xType,
|
|
70
70
|
"sort": xSort,
|
|
71
|
-
"axis": { "title": xField.name }
|
|
71
|
+
"axis": { "title": (0, utils_1.formatTitle)(this.options, xField.name) }
|
|
72
72
|
};
|
|
73
73
|
const yDef = {
|
|
74
74
|
"field": yField.name,
|
|
75
75
|
"type": yType,
|
|
76
76
|
"sort": ySort,
|
|
77
|
-
"axis": { "title": yField.name }
|
|
77
|
+
"axis": { "title": (0, utils_1.formatTitle)(this.options, yField.name) }
|
|
78
78
|
};
|
|
79
79
|
return {
|
|
80
80
|
...vega_spec_1.DEFAULT_SPEC,
|
package/dist/html/chart.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as lite from "vega-lite";
|
|
2
2
|
import { DataArray, DataColumn, Field } from "@malloydata/malloy";
|
|
3
|
-
import { Renderer } from "../renderer";
|
|
3
|
+
import { Renderer, RendererOptions } from "../renderer";
|
|
4
4
|
import { ChartRenderOptions, StyleDefaults } from "../data_styles";
|
|
5
5
|
declare type MappedRow = {
|
|
6
6
|
[p: string]: string | number | Date | undefined | null;
|
|
@@ -8,6 +8,7 @@ declare type MappedRow = {
|
|
|
8
8
|
export declare abstract class HTMLChartRenderer implements Renderer {
|
|
9
9
|
protected readonly document: Document;
|
|
10
10
|
protected styleDefaults: StyleDefaults;
|
|
11
|
+
protected options: RendererOptions;
|
|
11
12
|
size: string;
|
|
12
13
|
abstract getDataType(field: Field): "temporal" | "ordinal" | "quantitative" | "nominal";
|
|
13
14
|
abstract getDataValue(value: DataColumn): Date | string | number | null | undefined;
|
|
@@ -16,7 +17,7 @@ export declare abstract class HTMLChartRenderer implements Renderer {
|
|
|
16
17
|
height: number;
|
|
17
18
|
width: number;
|
|
18
19
|
};
|
|
19
|
-
constructor(document: Document, styleDefaults: StyleDefaults, options?: ChartRenderOptions);
|
|
20
|
+
constructor(document: Document, styleDefaults: StyleDefaults, options: RendererOptions, chartOptions?: ChartRenderOptions);
|
|
20
21
|
abstract getVegaLiteSpec(data: DataArray): lite.TopLevelSpec;
|
|
21
22
|
render(table: DataColumn): Promise<HTMLElement>;
|
|
22
23
|
}
|
package/dist/html/chart.js
CHANGED
|
@@ -49,10 +49,11 @@ exports.HTMLChartRenderer = void 0;
|
|
|
49
49
|
const lite = __importStar(require("vega-lite"));
|
|
50
50
|
const vega = __importStar(require("vega"));
|
|
51
51
|
class HTMLChartRenderer {
|
|
52
|
-
constructor(document, styleDefaults, options = {}) {
|
|
52
|
+
constructor(document, styleDefaults, options, chartOptions = {}) {
|
|
53
53
|
this.document = document;
|
|
54
54
|
this.styleDefaults = styleDefaults;
|
|
55
|
-
this.
|
|
55
|
+
this.options = options;
|
|
56
|
+
this.size = chartOptions.size || this.styleDefaults.size || "medium";
|
|
56
57
|
}
|
|
57
58
|
mapData(data) {
|
|
58
59
|
const mappedRows = [];
|
package/dist/html/container.d.ts
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
import { Explore } from "@malloydata/malloy";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { ChildRenderers, RenderTree } from "../renderer";
|
|
2
|
+
import { StyleDefaults } from "../data_styles";
|
|
3
|
+
import { ChildRenderers, RendererOptions, RenderTree } from "../renderer";
|
|
5
4
|
export declare abstract class ContainerRenderer extends RenderTree {
|
|
6
5
|
childRenderers: ChildRenderers;
|
|
7
6
|
protected abstract childrenStyleDefaults: StyleDefaults;
|
|
8
7
|
get defaultStylesForChildren(): StyleDefaults;
|
|
9
|
-
static make<Type extends ContainerRenderer>(c: new (document: Document, options:
|
|
10
|
-
isDrillingEnabled?: boolean;
|
|
11
|
-
onDrill?: DrillFunction;
|
|
12
|
-
}) => Type, document: Document, exploreField: Explore, options: {
|
|
13
|
-
dataStyles: DataStyles;
|
|
14
|
-
isDrillingEnabled?: boolean;
|
|
15
|
-
onDrill?: DrillFunction;
|
|
16
|
-
}): Type;
|
|
8
|
+
static make<Type extends ContainerRenderer>(c: new (document: Document, options: RendererOptions) => Type, document: Document, exploreField: Explore, options: RendererOptions): Type;
|
|
17
9
|
}
|
package/dist/html/container.js
CHANGED
|
@@ -36,10 +36,7 @@ class ContainerRenderer extends renderer_1.RenderTree {
|
|
|
36
36
|
// we need to be fully constructed before we construct
|
|
37
37
|
// our children.
|
|
38
38
|
static make(c, document, exploreField, options) {
|
|
39
|
-
const n = new c(document,
|
|
40
|
-
"isDrillingEnabled": options.isDrillingEnabled,
|
|
41
|
-
"onDrill": options.onDrill
|
|
42
|
-
});
|
|
39
|
+
const n = new c(document, options);
|
|
43
40
|
return n;
|
|
44
41
|
}
|
|
45
42
|
}
|
package/dist/html/dashboard.js
CHANGED
|
@@ -56,7 +56,7 @@ class HTMLDashboardRenderer extends container_1.ContainerRenderer {
|
|
|
56
56
|
renderedDimension.style.cssText = DIMENSION_BOX;
|
|
57
57
|
const dimensionTitle = this.document.createElement("div");
|
|
58
58
|
dimensionTitle.style.cssText = DIMENSION_TITLE;
|
|
59
|
-
dimensionTitle.appendChild(this.document.createTextNode(field.name));
|
|
59
|
+
dimensionTitle.appendChild(this.document.createTextNode((0, utils_1.formatTitle)(this.options, field.name, this.options.dataStyles[field.name])));
|
|
60
60
|
const dimensionInner = this.document.createElement("div");
|
|
61
61
|
dimensionInner.style.cssText = VERTICAL_CENTER;
|
|
62
62
|
dimensionInner.appendChild(rendered);
|
|
@@ -87,7 +87,7 @@ class HTMLDashboardRenderer extends container_1.ContainerRenderer {
|
|
|
87
87
|
measureBox.style.cssText = MEASURE_BOX;
|
|
88
88
|
const measureTitle = this.document.createElement("div");
|
|
89
89
|
measureTitle.style.cssText = TITLE;
|
|
90
|
-
measureTitle.appendChild(this.document.createTextNode(field.name));
|
|
90
|
+
measureTitle.appendChild(this.document.createTextNode((0, utils_1.formatTitle)(this.options, field.name, this.options.dataStyles[field.name])));
|
|
91
91
|
const measureInner = this.document.createElement("div");
|
|
92
92
|
measureInner.style.cssText = VERTICAL_CENTER;
|
|
93
93
|
const innerInner = this.document.createElement("div");
|
|
@@ -103,7 +103,7 @@ class HTMLDashboardRenderer extends container_1.ContainerRenderer {
|
|
|
103
103
|
measureBox.style.cssText = MEASURE_BOX;
|
|
104
104
|
const measureTitle = this.document.createElement("div");
|
|
105
105
|
measureTitle.style.cssText = TITLE;
|
|
106
|
-
measureTitle.appendChild(this.document.createTextNode(field.name));
|
|
106
|
+
measureTitle.appendChild(this.document.createTextNode((0, utils_1.formatTitle)(this.options, field.name, this.options.dataStyles[field.name])));
|
|
107
107
|
const measureInner = this.document.createElement("div");
|
|
108
108
|
measureInner.style.cssText = VERTICAL_CENTER;
|
|
109
109
|
const innerInner = this.document.createElement("div");
|
package/dist/html/html_view.d.ts
CHANGED
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
import { DataArray, Explore, Field } from "@malloydata/malloy";
|
|
2
|
-
import {
|
|
3
|
-
import { Renderer } from "../renderer";
|
|
4
|
-
import { DrillFunction } from "../drill";
|
|
2
|
+
import { StyleDefaults } from "../data_styles";
|
|
3
|
+
import { RendererOptions, Renderer } from "../renderer";
|
|
5
4
|
export declare class HTMLView {
|
|
6
|
-
private
|
|
5
|
+
private document;
|
|
7
6
|
constructor(document: Document);
|
|
8
|
-
render(table: DataArray, options:
|
|
9
|
-
dataStyles: DataStyles;
|
|
10
|
-
isDrillingEnabled?: boolean;
|
|
11
|
-
onDrill?: DrillFunction;
|
|
12
|
-
}): Promise<HTMLElement>;
|
|
7
|
+
render(table: DataArray, options: RendererOptions): Promise<HTMLElement>;
|
|
13
8
|
}
|
|
14
9
|
export declare class JSONView {
|
|
15
|
-
private
|
|
10
|
+
private document;
|
|
16
11
|
constructor(document: Document);
|
|
17
12
|
render(table: DataArray): Promise<HTMLElement>;
|
|
18
13
|
}
|
|
19
|
-
export declare function makeRenderer(field: Explore | Field, document: Document, options:
|
|
20
|
-
dataStyles: DataStyles;
|
|
21
|
-
isDrillingEnabled?: boolean;
|
|
22
|
-
onDrill?: DrillFunction;
|
|
23
|
-
}, styleDefaults: StyleDefaults): Renderer;
|
|
14
|
+
export declare function makeRenderer(field: Explore | Field, document: Document, options: RendererOptions, styleDefaults: StyleDefaults): Renderer;
|
package/dist/html/html_view.js
CHANGED
|
@@ -96,7 +96,23 @@ class JSONView {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
exports.JSONView = JSONView;
|
|
99
|
+
const suffixMap = {
|
|
100
|
+
"_shape_map": "shape_map",
|
|
101
|
+
"_point_map": "point_map",
|
|
102
|
+
"_bar_chart": "bar_chart",
|
|
103
|
+
"_image": "image",
|
|
104
|
+
"_json": "json",
|
|
105
|
+
"_segment_map": "segment_map",
|
|
106
|
+
"_dashboard": "dashboard",
|
|
107
|
+
"_line_chart": "line_chart",
|
|
108
|
+
"_scatter_chart": "scatter_chart",
|
|
109
|
+
"_url": "link",
|
|
110
|
+
"_list": "list",
|
|
111
|
+
"_list_detail": "list_detail"
|
|
112
|
+
};
|
|
99
113
|
function getRendererOptions(field, dataStyles) {
|
|
114
|
+
var _a, _b, _c;
|
|
115
|
+
var _d;
|
|
100
116
|
let renderer = dataStyles[field.name];
|
|
101
117
|
if (!renderer) {
|
|
102
118
|
for (const sourceClass of field.sourceClasses) {
|
|
@@ -105,6 +121,26 @@ function getRendererOptions(field, dataStyles) {
|
|
|
105
121
|
}
|
|
106
122
|
}
|
|
107
123
|
}
|
|
124
|
+
for (const suffix in suffixMap) {
|
|
125
|
+
const { name } = field;
|
|
126
|
+
if (name.endsWith(suffix)) {
|
|
127
|
+
const label = name.slice(0, name.length - suffix.length);
|
|
128
|
+
if (renderer) {
|
|
129
|
+
(_a = renderer.renderer) !== null && _a !== void 0 ? _a : (renderer.renderer = suffixMap[suffix]);
|
|
130
|
+
(_b = renderer.data) !== null && _b !== void 0 ? _b : (renderer.data = {});
|
|
131
|
+
(_c = (_d = renderer.data).label) !== null && _c !== void 0 ? _c : (_d.label = label);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
renderer = {
|
|
135
|
+
"renderer": suffixMap[suffix],
|
|
136
|
+
"data": {
|
|
137
|
+
label
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
108
144
|
return renderer;
|
|
109
145
|
}
|
|
110
146
|
function isContainer(field) {
|
|
@@ -117,51 +153,44 @@ function isContainer(field) {
|
|
|
117
153
|
}
|
|
118
154
|
function makeRenderer(field, document, options, styleDefaults) {
|
|
119
155
|
const renderDef = getRendererOptions(field, options.dataStyles) || {};
|
|
120
|
-
|
|
121
|
-
|
|
156
|
+
options.dataStyles[field.name] = renderDef;
|
|
157
|
+
if (renderDef.renderer === "shape_map") {
|
|
158
|
+
return new shape_map_1.HTMLShapeMapRenderer(document, styleDefaults, options, renderDef);
|
|
122
159
|
}
|
|
123
|
-
else if (renderDef.renderer === "point_map"
|
|
124
|
-
|
|
125
|
-
return new point_map_1.HTMLPointMapRenderer(document, styleDefaults);
|
|
160
|
+
else if (renderDef.renderer === "point_map") {
|
|
161
|
+
return new point_map_1.HTMLPointMapRenderer(document, styleDefaults, options, renderDef);
|
|
126
162
|
}
|
|
127
|
-
else if (renderDef.renderer === "image"
|
|
163
|
+
else if (renderDef.renderer === "image") {
|
|
128
164
|
return new image_1.HTMLImageRenderer(document);
|
|
129
165
|
}
|
|
130
|
-
else if (renderDef.renderer === "segment_map"
|
|
131
|
-
|
|
132
|
-
return new segment_map_1.HTMLSegmentMapRenderer(document, styleDefaults, renderDef);
|
|
166
|
+
else if (renderDef.renderer === "segment_map") {
|
|
167
|
+
return new segment_map_1.HTMLSegmentMapRenderer(document, styleDefaults, options, renderDef);
|
|
133
168
|
}
|
|
134
|
-
else if (renderDef.renderer === "dashboard"
|
|
135
|
-
field.name.endsWith("_dashboard")) {
|
|
169
|
+
else if (renderDef.renderer === "dashboard") {
|
|
136
170
|
return makeContainerRenderer(dashboard_1.HTMLDashboardRenderer, document, isContainer(field), options);
|
|
137
171
|
}
|
|
138
|
-
else if (renderDef.renderer === "json"
|
|
172
|
+
else if (renderDef.renderer === "json") {
|
|
139
173
|
return new json_1.HTMLJSONRenderer(document);
|
|
140
174
|
}
|
|
141
|
-
else if (renderDef.renderer === "line_chart"
|
|
142
|
-
|
|
143
|
-
return new line_chart_1.HTMLLineChartRenderer(document, styleDefaults, renderDef);
|
|
175
|
+
else if (renderDef.renderer === "line_chart") {
|
|
176
|
+
return new line_chart_1.HTMLLineChartRenderer(document, styleDefaults, options, renderDef);
|
|
144
177
|
}
|
|
145
|
-
else if (renderDef.renderer === "scatter_chart"
|
|
146
|
-
|
|
147
|
-
return new scatter_chart_1.HTMLScatterChartRenderer(document, styleDefaults);
|
|
178
|
+
else if (renderDef.renderer === "scatter_chart") {
|
|
179
|
+
return new scatter_chart_1.HTMLScatterChartRenderer(document, styleDefaults, options, renderDef);
|
|
148
180
|
}
|
|
149
181
|
else if (renderDef.renderer === "bar_chart") {
|
|
150
|
-
return new bar_chart_1.HTMLBarChartRenderer(document, styleDefaults, renderDef);
|
|
151
|
-
}
|
|
152
|
-
else if (field.name.endsWith("_bar_chart")) {
|
|
153
|
-
return new bar_chart_1.HTMLBarChartRenderer(document, styleDefaults, {});
|
|
182
|
+
return new bar_chart_1.HTMLBarChartRenderer(document, styleDefaults, options, renderDef);
|
|
154
183
|
}
|
|
155
184
|
else if (renderDef.renderer === "vega") {
|
|
156
185
|
const spec = renderDef.spec;
|
|
157
186
|
if (spec) {
|
|
158
|
-
return new vega_spec_1.HTMLVegaSpecRenderer(document, styleDefaults, spec);
|
|
187
|
+
return new vega_spec_1.HTMLVegaSpecRenderer(document, styleDefaults, options, spec);
|
|
159
188
|
}
|
|
160
189
|
else if (renderDef.spec_name) {
|
|
161
190
|
const vegaRenderer = options.dataStyles[renderDef.spec_name];
|
|
162
191
|
if (vegaRenderer !== undefined && vegaRenderer.renderer === "vega") {
|
|
163
192
|
if (vegaRenderer.spec) {
|
|
164
|
-
return new vega_spec_1.HTMLVegaSpecRenderer(document, styleDefaults, vegaRenderer.spec);
|
|
193
|
+
return new vega_spec_1.HTMLVegaSpecRenderer(document, styleDefaults, options, vegaRenderer.spec);
|
|
165
194
|
}
|
|
166
195
|
else {
|
|
167
196
|
throw new Error(`No spec defined on ${renderDef.spec_name}`);
|
|
@@ -204,14 +233,13 @@ function makeRenderer(field, document, options, styleDefaults) {
|
|
|
204
233
|
field.type === malloy_1.AtomicFieldType.Boolean)) {
|
|
205
234
|
return new boolean_1.HTMLBooleanRenderer(document);
|
|
206
235
|
}
|
|
207
|
-
else if (renderDef.renderer === "link"
|
|
236
|
+
else if (renderDef.renderer === "link") {
|
|
208
237
|
return new link_1.HTMLLinkRenderer(document);
|
|
209
238
|
}
|
|
210
|
-
else if (renderDef.renderer === "list"
|
|
239
|
+
else if (renderDef.renderer === "list") {
|
|
211
240
|
return makeContainerRenderer(list_1.HTMLListRenderer, document, isContainer(field), options);
|
|
212
241
|
}
|
|
213
|
-
else if (renderDef.renderer === "list_detail"
|
|
214
|
-
field.name.endsWith("_list_detail")) {
|
|
242
|
+
else if (renderDef.renderer === "list_detail") {
|
|
215
243
|
return makeContainerRenderer(list_detail_1.HTMLListDetailRenderer, document, isContainer(field), options);
|
|
216
244
|
}
|
|
217
245
|
else if (renderDef.renderer === "table" ||
|
package/dist/html/point_map.js
CHANGED
|
@@ -68,7 +68,7 @@ class HTMLPointMapRenderer extends chart_1.HTMLChartRenderer {
|
|
|
68
68
|
? {
|
|
69
69
|
"field": colorField.name,
|
|
70
70
|
"type": colorType,
|
|
71
|
-
"axis": { "title": colorField.name },
|
|
71
|
+
"axis": { "title": (0, utils_1.formatTitle)(this.options, colorField.name) },
|
|
72
72
|
"scale": (0, utils_1.getColorScale)(colorType, false)
|
|
73
73
|
}
|
|
74
74
|
: undefined;
|
|
@@ -76,14 +76,14 @@ class HTMLPointMapRenderer extends chart_1.HTMLChartRenderer {
|
|
|
76
76
|
? {
|
|
77
77
|
"field": sizeField.name,
|
|
78
78
|
"type": sizeType,
|
|
79
|
-
"axis": { "title": sizeField.name }
|
|
79
|
+
"axis": { "title": (0, utils_1.formatTitle)(this.options, sizeField.name) }
|
|
80
80
|
}
|
|
81
81
|
: { "value": 5 };
|
|
82
82
|
const shapeDef = shapeField
|
|
83
83
|
? {
|
|
84
84
|
"field": shapeField.name,
|
|
85
85
|
"type": shapeType,
|
|
86
|
-
"axis": { "title": shapeField.name }
|
|
86
|
+
"axis": { "title": (0, utils_1.formatTitle)(this.options, shapeField.name) }
|
|
87
87
|
}
|
|
88
88
|
: { "value": "circle" };
|
|
89
89
|
return {
|
package/dist/html/segment_map.js
CHANGED
|
@@ -63,7 +63,7 @@ class HTMLSegmentMapRenderer extends chart_1.HTMLChartRenderer {
|
|
|
63
63
|
? {
|
|
64
64
|
"field": colorField.name,
|
|
65
65
|
"type": colorType,
|
|
66
|
-
"axis": { "title": colorField.name },
|
|
66
|
+
"axis": { "title": (0, utils_1.formatTitle)(this.options, colorField.name) },
|
|
67
67
|
"scale": (0, utils_1.getColorScale)(colorType, false)
|
|
68
68
|
}
|
|
69
69
|
: undefined;
|
package/dist/html/shape_map.js
CHANGED
|
@@ -94,7 +94,7 @@ class HTMLShapeMapRenderer extends chart_1.HTMLChartRenderer {
|
|
|
94
94
|
? {
|
|
95
95
|
"field": colorField.name,
|
|
96
96
|
"type": colorType,
|
|
97
|
-
"axis": { "title": colorField.name },
|
|
97
|
+
"axis": { "title": (0, utils_1.formatTitle)(this.options, colorField.name) },
|
|
98
98
|
"scale": (0, utils_1.getColorScale)(colorType, false)
|
|
99
99
|
}
|
|
100
100
|
: undefined;
|
package/dist/html/table.js
CHANGED
|
@@ -40,7 +40,7 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
|
|
|
40
40
|
}
|
|
41
41
|
const header = this.document.createElement("tr");
|
|
42
42
|
table.field.intrinsicFields.forEach((field) => {
|
|
43
|
-
const name = field.name;
|
|
43
|
+
const name = (0, utils_1.formatTitle)(this.options, field.name, this.options.dataStyles[field.name]);
|
|
44
44
|
const childRenderer = this.childRenderers[name];
|
|
45
45
|
const isNumeric = childRenderer instanceof number_1.HTMLNumberRenderer;
|
|
46
46
|
const headerCell = this.document.createElement("th");
|
package/dist/html/utils.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { DateTimeframe, TimestampTimeframe } from "@malloydata/malloy";
|
|
2
|
+
import { RenderDef } from "../data_styles";
|
|
3
|
+
import type { RendererOptions } from "../renderer";
|
|
2
4
|
export declare function getColorScale(type: "temporal" | "ordinal" | "quantitative" | "nominal" | undefined, isRectMark: boolean, hasOverlappingText?: boolean): {
|
|
3
5
|
range: string[];
|
|
4
6
|
} | undefined;
|
|
@@ -7,3 +9,4 @@ export declare function yieldTask(): Promise<void>;
|
|
|
7
9
|
export declare function createErrorElement(document: Document, error: string | Error): HTMLElement;
|
|
8
10
|
export declare function createNullElement(document: Document): HTMLElement;
|
|
9
11
|
export declare function createDrillIcon(document: Document): HTMLElement;
|
|
12
|
+
export declare function formatTitle(options: RendererOptions, name: string, renderDef?: RenderDef | undefined): string;
|
package/dist/html/utils.js
CHANGED
|
@@ -21,9 +21,13 @@
|
|
|
21
21
|
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
22
22
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
23
23
|
*/
|
|
24
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
25
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
26
|
+
};
|
|
24
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.createDrillIcon = exports.createNullElement = exports.createErrorElement = exports.yieldTask = exports.timeToString = exports.getColorScale = void 0;
|
|
28
|
+
exports.formatTitle = exports.createDrillIcon = exports.createNullElement = exports.createErrorElement = exports.yieldTask = exports.timeToString = exports.getColorScale = void 0;
|
|
26
29
|
const malloy_1 = require("@malloydata/malloy");
|
|
30
|
+
const startCase_1 = __importDefault(require("lodash/startCase"));
|
|
27
31
|
function getColorScale(type, isRectMark, hasOverlappingText = false) {
|
|
28
32
|
if (type === undefined) {
|
|
29
33
|
return undefined;
|
|
@@ -191,4 +195,10 @@ function createDrillIcon(document) {
|
|
|
191
195
|
return drill;
|
|
192
196
|
}
|
|
193
197
|
exports.createDrillIcon = createDrillIcon;
|
|
198
|
+
function formatTitle(options, name, renderDef) {
|
|
199
|
+
var _a;
|
|
200
|
+
const label = ((_a = renderDef === null || renderDef === void 0 ? void 0 : renderDef.data) === null || _a === void 0 ? void 0 : _a.label) || name;
|
|
201
|
+
return options.titleCase ? (0, startCase_1.default)(label) : label;
|
|
202
|
+
}
|
|
203
|
+
exports.formatTitle = formatTitle;
|
|
194
204
|
//# sourceMappingURL=utils.js.map
|
package/dist/html/vega_spec.d.ts
CHANGED
|
@@ -2,13 +2,14 @@ import * as lite from "vega-lite";
|
|
|
2
2
|
import { DataColumn, Explore, Field } from "@malloydata/malloy";
|
|
3
3
|
import { HTMLChartRenderer } from "./chart";
|
|
4
4
|
import { StyleDefaults } from "../data_styles";
|
|
5
|
+
import { RendererOptions } from "../renderer";
|
|
5
6
|
declare type DataContainer = Array<unknown> | Record<string, unknown>;
|
|
6
7
|
export declare const DEFAULT_SPEC: Partial<lite.TopLevelSpec>;
|
|
7
8
|
export declare const vegaSpecs: Record<string, lite.TopLevelSpec>;
|
|
8
9
|
export declare function isDataContainer(a: unknown): a is DataContainer;
|
|
9
10
|
export declare class HTMLVegaSpecRenderer extends HTMLChartRenderer {
|
|
10
11
|
spec: lite.TopLevelSpec;
|
|
11
|
-
constructor(document: Document, styleDefaults: StyleDefaults, spec: lite.TopLevelSpec);
|
|
12
|
+
constructor(document: Document, styleDefaults: StyleDefaults, options: RendererOptions, spec: lite.TopLevelSpec);
|
|
12
13
|
getDataValue(data: DataColumn): Date | string | number | null;
|
|
13
14
|
getDataType(field: Field): "ordinal" | "quantitative" | "nominal";
|
|
14
15
|
translateField(explore: Explore, fieldString: string): string;
|
package/dist/html/vega_spec.js
CHANGED
|
@@ -422,8 +422,8 @@ function isDataContainer(a) {
|
|
|
422
422
|
}
|
|
423
423
|
exports.isDataContainer = isDataContainer;
|
|
424
424
|
class HTMLVegaSpecRenderer extends chart_1.HTMLChartRenderer {
|
|
425
|
-
constructor(document, styleDefaults, spec) {
|
|
426
|
-
super(document, styleDefaults);
|
|
425
|
+
constructor(document, styleDefaults, options, spec) {
|
|
426
|
+
super(document, styleDefaults, options);
|
|
427
427
|
this.spec = spec;
|
|
428
428
|
}
|
|
429
429
|
getDataValue(data) {
|
package/dist/renderer.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DataColumn } from "@malloydata/malloy";
|
|
2
|
+
import { DataStyles } from "./data_styles";
|
|
2
3
|
import { DrillFunction } from "./drill";
|
|
3
4
|
export declare type ChildRenderers = {
|
|
4
5
|
[fieldName: string]: Renderer;
|
|
@@ -6,16 +7,16 @@ export declare type ChildRenderers = {
|
|
|
6
7
|
export interface Renderer {
|
|
7
8
|
render(value: DataColumn): Promise<HTMLElement>;
|
|
8
9
|
}
|
|
10
|
+
export interface RendererOptions {
|
|
11
|
+
dataStyles: DataStyles;
|
|
12
|
+
isDrillingEnabled?: boolean;
|
|
13
|
+
onDrill?: DrillFunction;
|
|
14
|
+
titleCase?: boolean;
|
|
15
|
+
}
|
|
9
16
|
export declare abstract class RenderTree implements Renderer {
|
|
10
17
|
protected readonly document: Document;
|
|
11
|
-
protected readonly options:
|
|
12
|
-
|
|
13
|
-
onDrill?: DrillFunction;
|
|
14
|
-
};
|
|
15
|
-
constructor(document: Document, options: {
|
|
16
|
-
isDrillingEnabled?: boolean;
|
|
17
|
-
onDrill?: DrillFunction;
|
|
18
|
-
});
|
|
18
|
+
protected readonly options: RendererOptions;
|
|
19
|
+
constructor(document: Document, options: RendererOptions);
|
|
19
20
|
protected abstract get childRenderers(): ChildRenderers;
|
|
20
21
|
abstract render(value: DataColumn): Promise<HTMLElement>;
|
|
21
22
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@malloydata/render",
|
|
3
|
-
"version": "0.0.24-
|
|
3
|
+
"version": "0.0.24-dev230224184907",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"prepublishOnly": "npm run build"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@malloydata/malloy": "^0.0.24-
|
|
21
|
+
"@malloydata/malloy": "^0.0.24-dev230224184907",
|
|
22
|
+
"lodash": "^4.17.20",
|
|
22
23
|
"us-atlas": "^3.0.0",
|
|
23
24
|
"vega": "^5.21.0",
|
|
24
25
|
"vega-lite": "^5.2.0"
|