@malloydata/render 0.0.44-dev230623185845 → 0.0.44
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/html/html_view.d.ts +3 -3
- package/dist/html/html_view.js +49 -41
- package/package.json +2 -2
package/dist/html/html_view.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { DataArray, Explore, Field } from '@malloydata/malloy';
|
|
1
|
+
import { DataArray, Explore, Field, Result, Tags } from '@malloydata/malloy';
|
|
2
2
|
import { StyleDefaults } from '../data_styles';
|
|
3
3
|
import { Renderer } from '../renderer';
|
|
4
4
|
import { RendererOptions } from '../renderer_types';
|
|
5
5
|
export declare class HTMLView {
|
|
6
6
|
private document;
|
|
7
7
|
constructor(document: Document);
|
|
8
|
-
render(
|
|
8
|
+
render(result: Result, options: RendererOptions): Promise<HTMLElement>;
|
|
9
9
|
}
|
|
10
10
|
export declare class JSONView {
|
|
11
11
|
private document;
|
|
12
12
|
constructor(document: Document);
|
|
13
13
|
render(table: DataArray): Promise<HTMLElement>;
|
|
14
14
|
}
|
|
15
|
-
export declare function makeRenderer(field: Explore | Field, document: Document, options: RendererOptions, styleDefaults: StyleDefaults, queryTimezone: string | undefined): Renderer;
|
|
15
|
+
export declare function makeRenderer(field: Explore | Field, document: Document, options: RendererOptions, styleDefaults: StyleDefaults, queryTimezone: string | undefined, tags?: Tags): Renderer;
|
package/dist/html/html_view.js
CHANGED
|
@@ -56,10 +56,11 @@ class HTMLView {
|
|
|
56
56
|
constructor(document) {
|
|
57
57
|
this.document = document;
|
|
58
58
|
}
|
|
59
|
-
async render(
|
|
59
|
+
async render(result, options) {
|
|
60
|
+
const table = result.data;
|
|
60
61
|
const renderer = makeRenderer(table.field, this.document, options, {
|
|
61
62
|
size: 'large',
|
|
62
|
-
}, table.field.structDef.queryTimezone);
|
|
63
|
+
}, table.field.structDef.queryTimezone, result.getTags());
|
|
63
64
|
try {
|
|
64
65
|
// TODO Implement row streaming capability for some renderers: some renderers should be usable
|
|
65
66
|
// as a builder with `begin(field: StructDef)`, `row(field: StructDef, row: QueryDataRow)`,
|
|
@@ -101,26 +102,26 @@ class JSONView {
|
|
|
101
102
|
}
|
|
102
103
|
exports.JSONView = JSONView;
|
|
103
104
|
const suffixMap = {
|
|
104
|
-
'
|
|
105
|
-
'
|
|
106
|
-
'
|
|
107
|
-
'
|
|
108
|
-
'
|
|
109
|
-
'
|
|
110
|
-
'
|
|
111
|
-
'
|
|
112
|
-
'
|
|
113
|
-
'
|
|
114
|
-
'
|
|
115
|
-
'
|
|
116
|
-
'
|
|
117
|
-
'
|
|
118
|
-
'
|
|
119
|
-
'
|
|
105
|
+
'shape_map': 'shape_map',
|
|
106
|
+
'point_map': 'point_map',
|
|
107
|
+
'bar_chart': 'bar_chart',
|
|
108
|
+
'image': 'image',
|
|
109
|
+
'json': 'json',
|
|
110
|
+
'segment_map': 'segment_map',
|
|
111
|
+
'dashboard': 'dashboard',
|
|
112
|
+
'line_chart': 'line_chart',
|
|
113
|
+
'scatter_chart': 'scatter_chart',
|
|
114
|
+
'url': 'link',
|
|
115
|
+
'list': 'list',
|
|
116
|
+
'list_detail': 'list_detail',
|
|
117
|
+
'sparkline': 'sparkline',
|
|
118
|
+
'sparkline_area': 'sparkline',
|
|
119
|
+
'sparkline_column': 'sparkline',
|
|
120
|
+
'sparkline_bar': 'sparkline',
|
|
120
121
|
};
|
|
121
|
-
function getRendererOptions(field, dataStyles) {
|
|
122
|
-
var _a
|
|
123
|
-
|
|
122
|
+
function getRendererOptions(field, dataStyles, tags) {
|
|
123
|
+
var _a;
|
|
124
|
+
const tagProperties = (_a = tags === null || tags === void 0 ? void 0 : tags.getMalloyTags().properties) !== null && _a !== void 0 ? _a : {};
|
|
124
125
|
let renderer = dataStyles[field.name];
|
|
125
126
|
if (!renderer) {
|
|
126
127
|
for (const sourceClass of field.sourceClasses) {
|
|
@@ -129,26 +130,33 @@ function getRendererOptions(field, dataStyles) {
|
|
|
129
130
|
}
|
|
130
131
|
}
|
|
131
132
|
}
|
|
133
|
+
const { name } = field;
|
|
132
134
|
for (const suffix in suffixMap) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
(_c = (_d = renderer.data).label) !== null && _c !== void 0 ? _c : (_d.label = label);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
renderer = {
|
|
143
|
-
renderer: suffixMap[suffix],
|
|
144
|
-
data: {
|
|
145
|
-
label,
|
|
146
|
-
},
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
break;
|
|
135
|
+
if (tagProperties[suffix] === true) {
|
|
136
|
+
return updateOrCreateRenderer(suffix, name, renderer);
|
|
137
|
+
}
|
|
138
|
+
if (name.endsWith(`_${suffix}`)) {
|
|
139
|
+
const label = name.slice(0, name.length - suffix.length - 1);
|
|
140
|
+
return updateOrCreateRenderer(suffix, label, renderer);
|
|
150
141
|
}
|
|
151
142
|
}
|
|
143
|
+
}
|
|
144
|
+
function updateOrCreateRenderer(rendererKey, label, renderer) {
|
|
145
|
+
var _a, _b, _c;
|
|
146
|
+
var _d;
|
|
147
|
+
if (renderer) {
|
|
148
|
+
(_a = renderer.renderer) !== null && _a !== void 0 ? _a : (renderer.renderer = suffixMap[rendererKey]);
|
|
149
|
+
(_b = renderer.data) !== null && _b !== void 0 ? _b : (renderer.data = {});
|
|
150
|
+
(_c = (_d = renderer.data).label) !== null && _c !== void 0 ? _c : (_d.label = label);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
renderer = {
|
|
154
|
+
renderer: suffixMap[rendererKey],
|
|
155
|
+
data: {
|
|
156
|
+
label,
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
152
160
|
return renderer;
|
|
153
161
|
}
|
|
154
162
|
function isContainer(field) {
|
|
@@ -159,8 +167,8 @@ function isContainer(field) {
|
|
|
159
167
|
throw new Error(`${field.name} does not contain fields and cannot be rendered this way`);
|
|
160
168
|
}
|
|
161
169
|
}
|
|
162
|
-
function makeRenderer(field, document, options, styleDefaults, queryTimezone) {
|
|
163
|
-
const renderDef = getRendererOptions(field, options.dataStyles) || {};
|
|
170
|
+
function makeRenderer(field, document, options, styleDefaults, queryTimezone, tags) {
|
|
171
|
+
const renderDef = getRendererOptions(field, options.dataStyles, tags) || {};
|
|
164
172
|
options.dataStyles[field.name] = renderDef;
|
|
165
173
|
if (renderDef.renderer === 'shape_map') {
|
|
166
174
|
return new shape_map_1.HTMLShapeMapRenderer(document, styleDefaults, options, renderDef);
|
|
@@ -280,7 +288,7 @@ function makeContainerRenderer(cType, document, explore, options) {
|
|
|
280
288
|
const c = container_1.ContainerRenderer.make(cType, document, explore, options);
|
|
281
289
|
const result = {};
|
|
282
290
|
explore.intrinsicFields.forEach((field) => {
|
|
283
|
-
result[field.name] = makeRenderer(field, document, options, c.defaultStylesForChildren, explore.queryTimezone);
|
|
291
|
+
result[field.name] = makeRenderer(field, document, options, c.defaultStylesForChildren, explore.queryTimezone, field.getTags());
|
|
284
292
|
});
|
|
285
293
|
c.childRenderers = result;
|
|
286
294
|
return c;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@malloydata/render",
|
|
3
|
-
"version": "0.0.44
|
|
3
|
+
"version": "0.0.44",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"prepublishOnly": "npm run build"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@malloydata/malloy": "^0.0.44
|
|
21
|
+
"@malloydata/malloy": "^0.0.44",
|
|
22
22
|
"@types/luxon": "^2.4.0",
|
|
23
23
|
"lodash": "^4.17.20",
|
|
24
24
|
"luxon": "^2.4.0",
|