@malloydata/render 0.0.71-dev230811214741 → 0.0.71
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/container.d.ts +2 -2
- package/dist/html/currency.js +2 -2
- package/dist/html/data_volume.js +2 -2
- package/dist/html/duration.js +2 -1
- package/dist/html/html_view.d.ts +2 -2
- package/dist/html/html_view.js +3 -3
- package/dist/html/number.js +3 -3
- package/dist/html/table.d.ts +2 -2
- package/dist/html/table.js +17 -11
- package/dist/html/utils.d.ts +2 -2
- package/dist/html/utils.js +3 -2
- package/dist/main_renderer_factory.d.ts +3 -3
- package/dist/main_renderer_factory.js +8 -7
- package/dist/renderer.d.ts +3 -3
- package/dist/renderer_factory.d.ts +3 -3
- package/dist/renderer_factory.js +6 -7
- package/package.json +2 -2
package/dist/html/container.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Explore,
|
|
1
|
+
import { Explore, TagParse } from '@malloydata/malloy';
|
|
2
2
|
import { StyleDefaults } from '../data_styles';
|
|
3
3
|
import { ChildRenderers, RenderTree } from '../renderer';
|
|
4
4
|
import { RendererOptions } from '../renderer_types';
|
|
@@ -6,5 +6,5 @@ export declare abstract class ContainerRenderer extends RenderTree {
|
|
|
6
6
|
childRenderers: ChildRenderers;
|
|
7
7
|
protected abstract childrenStyleDefaults: StyleDefaults;
|
|
8
8
|
get defaultStylesForChildren(): StyleDefaults;
|
|
9
|
-
static make<Type extends ContainerRenderer>(c: new (document: Document, options: RendererOptions, tags?:
|
|
9
|
+
static make<Type extends ContainerRenderer>(c: new (document: Document, options: RendererOptions, tags?: TagParse) => Type, document: Document, exploreField: Explore, options: RendererOptions, tags?: TagParse): Type;
|
|
10
10
|
}
|
package/dist/html/currency.js
CHANGED
|
@@ -58,9 +58,9 @@ exports.HTMLCurrencyRenderer = HTMLCurrencyRenderer;
|
|
|
58
58
|
class CurrencyRendererFactory extends renderer_factory_1.RendererFactory {
|
|
59
59
|
constructor() {
|
|
60
60
|
super();
|
|
61
|
-
this.addExtractor((options,
|
|
61
|
+
this.addExtractor((options, tag) => {
|
|
62
62
|
var _a;
|
|
63
|
-
options.currency = (_a =
|
|
63
|
+
options.currency = (_a = tag === null || tag === void 0 ? void 0 : tag.text()) !== null && _a !== void 0 ? _a : data_styles_1.Currency.Dollars;
|
|
64
64
|
}, this.rendererName);
|
|
65
65
|
}
|
|
66
66
|
create(document, _styleDefaults, _rendererOptions, _field, options) {
|
package/dist/html/data_volume.js
CHANGED
|
@@ -76,10 +76,10 @@ HTMLDataVolumeRenderer.tbMultiplier = _a.gbMultiplier * _a.kbMultiplier;
|
|
|
76
76
|
class DataVolumeRendererFactory extends renderer_factory_1.RendererFactory {
|
|
77
77
|
constructor() {
|
|
78
78
|
super();
|
|
79
|
-
this.addExtractor((options,
|
|
79
|
+
this.addExtractor((options, tag) => {
|
|
80
80
|
var _b;
|
|
81
81
|
options.data_volume_unit =
|
|
82
|
-
(_b =
|
|
82
|
+
(_b = tag === null || tag === void 0 ? void 0 : tag.text()) !== null && _b !== void 0 ? _b : data_styles_1.DataVolumeUnit.Bytes;
|
|
83
83
|
}, this.rendererName);
|
|
84
84
|
}
|
|
85
85
|
create(document, _styleDefaults, _rendererOptions, _field, options) {
|
package/dist/html/duration.js
CHANGED
|
@@ -92,7 +92,8 @@ class DurationRendererFactory extends renderer_factory_1.RendererFactory {
|
|
|
92
92
|
super();
|
|
93
93
|
this.addExtractor((options, value) => {
|
|
94
94
|
var _a;
|
|
95
|
-
options.duration_unit =
|
|
95
|
+
options.duration_unit =
|
|
96
|
+
(_a = value === null || value === void 0 ? void 0 : value.text()) !== null && _a !== void 0 ? _a : data_styles_1.DurationUnit.Seconds;
|
|
96
97
|
}, this.rendererName);
|
|
97
98
|
}
|
|
98
99
|
create(document, _styleDefaults, _rendererOptions, _field, options) {
|
package/dist/html/html_view.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataArray, Explore, Field, Result,
|
|
1
|
+
import { DataArray, Explore, Field, Result, TagParse } from '@malloydata/malloy';
|
|
2
2
|
import { StyleDefaults } from '../data_styles';
|
|
3
3
|
import { Renderer } from '../renderer';
|
|
4
4
|
import { RendererOptions } from '../renderer_types';
|
|
@@ -12,4 +12,4 @@ export declare class JSONView {
|
|
|
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, tags?:
|
|
15
|
+
export declare function makeRenderer(field: Explore | Field, document: Document, options: RendererOptions, styleDefaults: StyleDefaults, queryTimezone: string | undefined, tags?: TagParse): Renderer;
|
package/dist/html/html_view.js
CHANGED
|
@@ -39,7 +39,7 @@ class HTMLView {
|
|
|
39
39
|
const table = result.data;
|
|
40
40
|
const renderer = makeRenderer(table.field, this.document, options, {
|
|
41
41
|
size: 'large',
|
|
42
|
-
}, table.field.structDef.queryTimezone, result.
|
|
42
|
+
}, table.field.structDef.queryTimezone, result.tagParse());
|
|
43
43
|
try {
|
|
44
44
|
// TODO Implement row streaming capability for some renderers: some renderers should be usable
|
|
45
45
|
// as a builder with `begin(field: StructDef)`, `row(field: StructDef, row: QueryDataRow)`,
|
|
@@ -145,7 +145,7 @@ function isContainer(field) {
|
|
|
145
145
|
function makeRenderer(field, document, options, styleDefaults, queryTimezone, tags) {
|
|
146
146
|
const renderDef = getRendererOptions(field, options.dataStyles);
|
|
147
147
|
options.dataStyles[field.name] = renderDef;
|
|
148
|
-
const renderer = new main_renderer_factory_1.MainRendererFactory().create(renderDef, tags
|
|
148
|
+
const renderer = new main_renderer_factory_1.MainRendererFactory().create(renderDef, tags, document, styleDefaults, options, field, queryTimezone);
|
|
149
149
|
if (renderer) {
|
|
150
150
|
return renderer;
|
|
151
151
|
}
|
|
@@ -172,7 +172,7 @@ function makeContainerRenderer(cType, document, explore, options, tags) {
|
|
|
172
172
|
const c = container_1.ContainerRenderer.make(cType, document, explore, options, tags);
|
|
173
173
|
const result = {};
|
|
174
174
|
explore.intrinsicFields.forEach((field) => {
|
|
175
|
-
result[field.name] = makeRenderer(field, document, options, c.defaultStylesForChildren, explore.queryTimezone, field.
|
|
175
|
+
result[field.name] = makeRenderer(field, document, options, c.defaultStylesForChildren, explore.queryTimezone, field.tagParse());
|
|
176
176
|
});
|
|
177
177
|
c.childRenderers = result;
|
|
178
178
|
return c;
|
package/dist/html/number.js
CHANGED
|
@@ -52,9 +52,9 @@ exports.HTMLNumberRenderer = HTMLNumberRenderer;
|
|
|
52
52
|
class NumberRendererFactory extends renderer_factory_1.RendererFactory {
|
|
53
53
|
constructor() {
|
|
54
54
|
super();
|
|
55
|
-
this.addExtractor((options,
|
|
56
|
-
options.value_format =
|
|
57
|
-
}, this.rendererName, '
|
|
55
|
+
this.addExtractor((options, tagObj) => {
|
|
56
|
+
options.value_format = tagObj === null || tagObj === void 0 ? void 0 : tagObj.text();
|
|
57
|
+
}, this.rendererName, 'format');
|
|
58
58
|
}
|
|
59
59
|
activates(field) {
|
|
60
60
|
return (field.hasParentExplore() &&
|
package/dist/html/table.d.ts
CHANGED
|
@@ -5,11 +5,11 @@ import { Renderer } from '../renderer';
|
|
|
5
5
|
export declare class HTMLTableRenderer extends ContainerRenderer {
|
|
6
6
|
protected childrenStyleDefaults: StyleDefaults;
|
|
7
7
|
render(table: DataColumn): Promise<HTMLElement>;
|
|
8
|
-
calculatePivotDimensions(table: DataColumn): {
|
|
8
|
+
calculatePivotDimensions(table: DataColumn, userSpecifiedDimensions?: Array<string>): {
|
|
9
9
|
dimensions: SortableField[];
|
|
10
10
|
nonDimensions: SortableField[];
|
|
11
11
|
};
|
|
12
|
-
generatePivotedCells(table: DataColumn, shouldTranspose: boolean): Promise<Map<string, Map<string, HTMLTableCellElement>>>;
|
|
12
|
+
generatePivotedCells(table: DataColumn, shouldTranspose: boolean, userSpecifiedDimensions?: Array<string>): Promise<Map<string, Map<string, HTMLTableCellElement>>>;
|
|
13
13
|
generateNoValueCell(field: Field, shouldTranspose: boolean): HTMLTableCellElement;
|
|
14
14
|
createCellAndRender(childRenderer: Renderer, value: DataColumn, shouldTranspose: boolean): Promise<HTMLTableCellElement>;
|
|
15
15
|
createEmptyHeaderCell(): HTMLTableCellElement;
|
package/dist/html/table.js
CHANGED
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
exports.HTMLTableRenderer = void 0;
|
|
26
|
+
const malloy_1 = require("@malloydata/malloy");
|
|
26
27
|
const drill_1 = require("../drill");
|
|
27
28
|
const container_1 = require("./container");
|
|
28
29
|
const number_1 = require("./number");
|
|
@@ -44,9 +45,10 @@ class PivotedField {
|
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
47
|
class PivotedColumnField {
|
|
47
|
-
constructor(pivotedField, field) {
|
|
48
|
+
constructor(pivotedField, field, userDefinedPivotDimensions) {
|
|
48
49
|
this.pivotedField = pivotedField;
|
|
49
50
|
this.field = field;
|
|
51
|
+
this.userDefinedPivotDimensions = userDefinedPivotDimensions;
|
|
50
52
|
}
|
|
51
53
|
isPivotedColumnField() {
|
|
52
54
|
return this instanceof PivotedColumnField;
|
|
@@ -60,7 +62,7 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
|
|
|
60
62
|
};
|
|
61
63
|
}
|
|
62
64
|
async render(table) {
|
|
63
|
-
var _a;
|
|
65
|
+
var _a, _b, _c, _d, _e, _f;
|
|
64
66
|
if (table.isNull()) {
|
|
65
67
|
return this.document.createElement('span');
|
|
66
68
|
}
|
|
@@ -85,9 +87,14 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
|
|
|
85
87
|
const shouldPivot = childRenderer instanceof HTMLTableRenderer &&
|
|
86
88
|
(0, utils_1.tagIsPresent)(childRenderer.tags, 'pivot');
|
|
87
89
|
if (shouldPivot) {
|
|
88
|
-
const
|
|
90
|
+
const dimensionsTag = (_d = (_c = (_b = (_a = childRenderer.tags) === null || _a === void 0 ? void 0 : _a.tag) === null || _b === void 0 ? void 0 : _b.properties) === null || _c === void 0 ? void 0 : _c['pivot'].properties) === null || _d === void 0 ? void 0 : _d['dimensions'];
|
|
91
|
+
const userDefinedDimensions = dimensionsTag
|
|
92
|
+
? (_e = new malloy_1.Tag(dimensionsTag)
|
|
93
|
+
.array()) === null || _e === void 0 ? void 0 : _e.map(dimension => dimension.text()).filter(dimension => dimension !== undefined).map(dimension => dimension)
|
|
94
|
+
: undefined;
|
|
89
95
|
let dimensions = undefined;
|
|
90
96
|
let nonDimensions = [];
|
|
97
|
+
const pivotedFields = new Map();
|
|
91
98
|
for (const row of table) {
|
|
92
99
|
const dc = row.cell(field);
|
|
93
100
|
if (dc.isNull()) {
|
|
@@ -97,7 +104,7 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
|
|
|
97
104
|
throw new Error(`Can not pivot field ${field.name}.`);
|
|
98
105
|
}
|
|
99
106
|
if (!dimensions) {
|
|
100
|
-
const dimensionsResult = childRenderer.calculatePivotDimensions(dc);
|
|
107
|
+
const dimensionsResult = childRenderer.calculatePivotDimensions(dc, userDefinedDimensions);
|
|
101
108
|
dimensions = dimensionsResult.dimensions;
|
|
102
109
|
nonDimensions = dimensionsResult.nonDimensions;
|
|
103
110
|
}
|
|
@@ -141,7 +148,7 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
|
|
|
141
148
|
});
|
|
142
149
|
for (const pf of sortedPivotedFields) {
|
|
143
150
|
for (const nonDimension of nonDimensions) {
|
|
144
|
-
columnFields.push(new PivotedColumnField(pf, nonDimension.field));
|
|
151
|
+
columnFields.push(new PivotedColumnField(pf, nonDimension.field, userDefinedDimensions));
|
|
145
152
|
cells[rowIndex][columnIndex] = childRenderer.createHeaderCell(nonDimension.field, shouldTranspose);
|
|
146
153
|
columnIndex++;
|
|
147
154
|
}
|
|
@@ -223,12 +230,12 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
|
|
|
223
230
|
const childTableRecord = row.cell(field.pivotedField.parentField);
|
|
224
231
|
await (0, utils_1.yieldTask)();
|
|
225
232
|
if (field.pivotedField.key !== currentPivotedFieldKey) {
|
|
226
|
-
pivotedCells = await childRenderer.generatePivotedCells(childTableRecord, shouldTranspose);
|
|
233
|
+
pivotedCells = await childRenderer.generatePivotedCells(childTableRecord, shouldTranspose, field.userDefinedPivotDimensions);
|
|
227
234
|
currentPivotedFieldKey = field.pivotedField.key;
|
|
228
235
|
}
|
|
229
236
|
const pfKey = field.pivotedField.key;
|
|
230
237
|
if (pivotedCells.has(pfKey) &&
|
|
231
|
-
((
|
|
238
|
+
((_f = pivotedCells.get(pfKey)) === null || _f === void 0 ? void 0 : _f.has(field.field.name))) {
|
|
232
239
|
cells[rowIndex][columnIndex] = pivotedCells
|
|
233
240
|
.get(pfKey)
|
|
234
241
|
.get(field.field.name);
|
|
@@ -297,12 +304,11 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
|
|
|
297
304
|
`;
|
|
298
305
|
return tableElement;
|
|
299
306
|
}
|
|
300
|
-
calculatePivotDimensions(table) {
|
|
307
|
+
calculatePivotDimensions(table, userSpecifiedDimensions) {
|
|
301
308
|
if (!table.isArray() && !table.isRecord()) {
|
|
302
309
|
throw new Error(`Could not pivot ${table.field.name}`);
|
|
303
310
|
}
|
|
304
311
|
let dimensions = undefined;
|
|
305
|
-
const userSpecifiedDimensions = (0, utils_1.parseCommaSeparatedParameterTagValue)(this.tags, 'pivot_dimensions');
|
|
306
312
|
if (userSpecifiedDimensions) {
|
|
307
313
|
dimensions = table.field.allFieldsWithOrder.filter(f => userSpecifiedDimensions.indexOf(f.field.name) >= 0);
|
|
308
314
|
if (dimensions.length !== userSpecifiedDimensions.length) {
|
|
@@ -323,7 +329,7 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
|
|
|
323
329
|
}
|
|
324
330
|
return { dimensions, nonDimensions };
|
|
325
331
|
}
|
|
326
|
-
async generatePivotedCells(table, shouldTranspose) {
|
|
332
|
+
async generatePivotedCells(table, shouldTranspose, userSpecifiedDimensions) {
|
|
327
333
|
const result = new Map();
|
|
328
334
|
if (table.isNull()) {
|
|
329
335
|
return result;
|
|
@@ -331,7 +337,7 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
|
|
|
331
337
|
if (!table.isArray() && !table.isRecord()) {
|
|
332
338
|
throw new Error(`Could not pivot ${table.field.name}`);
|
|
333
339
|
}
|
|
334
|
-
const { dimensions, nonDimensions } = this.calculatePivotDimensions(table);
|
|
340
|
+
const { dimensions, nonDimensions } = this.calculatePivotDimensions(table, userSpecifiedDimensions);
|
|
335
341
|
for (const row of table) {
|
|
336
342
|
const pf = new PivotedField(table.field, dimensions.map(f => row.cell(f.field.name)), nonDimensions.length);
|
|
337
343
|
const renderedCells = new Map();
|
package/dist/html/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DateTimeframe, Field, Tags, TimestampTimeframe } from '@malloydata/malloy';
|
|
1
|
+
import { DateTimeframe, Field, TagParse, Tags, TimestampTimeframe } from '@malloydata/malloy';
|
|
2
2
|
import { RenderDef } from '../data_styles';
|
|
3
3
|
import { RendererOptions } from '../renderer_types';
|
|
4
4
|
export declare function getColorScale(type: 'temporal' | 'ordinal' | 'quantitative' | 'nominal' | undefined, isRectMark: boolean, hasOverlappingText?: boolean): {
|
|
@@ -11,6 +11,6 @@ export declare function createErrorElement(document: Document, error: string | E
|
|
|
11
11
|
export declare function createNullElement(document: Document): HTMLElement;
|
|
12
12
|
export declare function createDrillIcon(document: Document): HTMLElement;
|
|
13
13
|
export declare function formatTitle(options: RendererOptions, field: Field, renderDef?: RenderDef | undefined, timezone?: string): string;
|
|
14
|
-
export declare function tagIsPresent(tags:
|
|
14
|
+
export declare function tagIsPresent(tags: TagParse | undefined, tagToCheck: string): boolean;
|
|
15
15
|
export declare function parameterTagValue(tags: Tags | undefined, tagToGetValue: string): string | undefined;
|
|
16
16
|
export declare function parseCommaSeparatedParameterTagValue(tags: Tags | undefined, tagToGetValue: string): string[] | undefined;
|
package/dist/html/utils.js
CHANGED
|
@@ -228,8 +228,9 @@ function formatTitle(options, field, renderDef, timezone) {
|
|
|
228
228
|
}
|
|
229
229
|
exports.formatTitle = formatTitle;
|
|
230
230
|
function tagIsPresent(tags, tagToCheck) {
|
|
231
|
-
|
|
232
|
-
|
|
231
|
+
var _a, _b;
|
|
232
|
+
const tagProperty = (_b = (_a = tags === null || tags === void 0 ? void 0 : tags.tag) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b[tagToCheck];
|
|
233
|
+
return tagProperty !== undefined;
|
|
233
234
|
}
|
|
234
235
|
exports.tagIsPresent = tagIsPresent;
|
|
235
236
|
function parameterTagValue(tags, tagToGetValue) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Field, Explore,
|
|
1
|
+
import { Field, Explore, TagParse } from '@malloydata/malloy';
|
|
2
2
|
import { DataRenderOptions, RenderDef, StyleDefaults } from './data_styles';
|
|
3
3
|
import { Renderer } from './renderer';
|
|
4
4
|
import { RendererFactory } from './renderer_factory';
|
|
@@ -29,7 +29,7 @@ import { DataVolumeRendererFactory } from './html/data_volume';
|
|
|
29
29
|
import { DurationRendererFactory } from './html/duration';
|
|
30
30
|
export declare class MainRendererFactory {
|
|
31
31
|
static renderFactories: (JSONRendererFactory | TextRendererFactory | NumberRendererFactory | ShapeMapRendererFactory | PointMapRendererFactory | ImageRendererFactory | SegmentMapRendererFactory | VegaRendererFactory | LineChartRendererFactory | SparkLineRendererFactory | BarChartRendererFactory | BarSparkLineRendererFactory | AreaSparkLineRendererFactory | ColumnSparkLineRendererFactory | ScatterChartRendererFactory | DateRendererFactory | CurrencyRendererFactory | PercentRendererFactory | BytesRendererFactory | BooleanRendererFactory | LinkRendererFactory | UnsupportedRendererFactory | DataVolumeRendererFactory | DurationRendererFactory)[];
|
|
32
|
-
create(renderDef: RenderDef | undefined, tags:
|
|
32
|
+
create(renderDef: RenderDef | undefined, tags: TagParse | undefined, document: Document, styleDefaults: StyleDefaults, rendererOptions: RendererOptions, field: Field | Explore, timezone?: string | undefined): Renderer | undefined;
|
|
33
33
|
matchesRenderDef(renderDef: RenderDef | undefined, factory: RendererFactory<DataRenderOptions>): boolean | "" | undefined;
|
|
34
|
-
matchesTag(
|
|
34
|
+
matchesTag(tagParse: TagParse | undefined, factory: RendererFactory<DataRenderOptions>): boolean | "" | undefined;
|
|
35
35
|
}
|
|
@@ -27,12 +27,9 @@ const data_volume_1 = require("./html/data_volume");
|
|
|
27
27
|
const duration_1 = require("./html/duration");
|
|
28
28
|
class MainRendererFactory {
|
|
29
29
|
create(renderDef, tags, document, styleDefaults, rendererOptions, field, timezone) {
|
|
30
|
-
var _a;
|
|
31
|
-
const tagProperties = (_a = tags === null || tags === void 0 ? void 0 : tags.properties) !== null && _a !== void 0 ? _a : {};
|
|
32
30
|
let factory;
|
|
33
31
|
for (const f of MainRendererFactory.renderFactories) {
|
|
34
|
-
if (((this.matchesRenderDef(renderDef, f) ||
|
|
35
|
-
this.matchesTag(tagProperties, f)) &&
|
|
32
|
+
if (((this.matchesRenderDef(renderDef, f) || this.matchesTag(tags, f)) &&
|
|
36
33
|
f.isValidMatch(field)) ||
|
|
37
34
|
f.activates(field)) {
|
|
38
35
|
factory = f;
|
|
@@ -40,15 +37,19 @@ class MainRendererFactory {
|
|
|
40
37
|
break;
|
|
41
38
|
}
|
|
42
39
|
}
|
|
43
|
-
return factory === null || factory === void 0 ? void 0 : factory.create(document, styleDefaults, rendererOptions, field, renderDef || factory.parseTagParameters(
|
|
40
|
+
return factory === null || factory === void 0 ? void 0 : factory.create(document, styleDefaults, rendererOptions, field, renderDef || factory.parseTagParameters(tags) || {}, timezone);
|
|
44
41
|
}
|
|
45
42
|
matchesRenderDef(renderDef, factory) {
|
|
46
43
|
return (renderDef &&
|
|
47
44
|
factory.rendererName &&
|
|
48
45
|
renderDef.renderer === factory.rendererName);
|
|
49
46
|
}
|
|
50
|
-
matchesTag(
|
|
51
|
-
|
|
47
|
+
matchesTag(tagParse, factory) {
|
|
48
|
+
var _a;
|
|
49
|
+
const properties = (_a = tagParse === null || tagParse === void 0 ? void 0 : tagParse.tag) === null || _a === void 0 ? void 0 : _a.properties;
|
|
50
|
+
return (properties &&
|
|
51
|
+
factory.rendererName &&
|
|
52
|
+
properties[factory.rendererName] !== undefined);
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
exports.MainRendererFactory = MainRendererFactory;
|
package/dist/renderer.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataColumn,
|
|
1
|
+
import { DataColumn, TagParse } from '@malloydata/malloy';
|
|
2
2
|
import { RendererOptions } from './renderer_types';
|
|
3
3
|
export declare type ChildRenderers = {
|
|
4
4
|
[fieldName: string]: Renderer;
|
|
@@ -9,8 +9,8 @@ export interface Renderer {
|
|
|
9
9
|
export declare abstract class RenderTree implements Renderer {
|
|
10
10
|
protected readonly document: Document;
|
|
11
11
|
protected readonly options: RendererOptions;
|
|
12
|
-
protected readonly tags?:
|
|
13
|
-
constructor(document: Document, options: RendererOptions, tags?:
|
|
12
|
+
protected readonly tags?: TagParse | undefined;
|
|
13
|
+
constructor(document: Document, options: RendererOptions, tags?: TagParse | undefined);
|
|
14
14
|
protected abstract get childRenderers(): ChildRenderers;
|
|
15
15
|
abstract render(value: DataColumn): Promise<HTMLElement>;
|
|
16
16
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Explore, Field,
|
|
1
|
+
import { Explore, Field, Tag, TagParse } from '@malloydata/malloy';
|
|
2
2
|
import { Renderer } from './renderer';
|
|
3
3
|
import { DataRenderOptions, RenderDef, StyleDefaults } from './data_styles';
|
|
4
4
|
import { RendererOptions } from './renderer_types';
|
|
5
|
-
declare type TagPropertyExtractor<T extends DataRenderOptions> = (options: T,
|
|
5
|
+
declare type TagPropertyExtractor<T extends DataRenderOptions> = (options: T, tagObj: Tag | undefined) => void;
|
|
6
6
|
export declare abstract class RendererFactory<T extends DataRenderOptions> {
|
|
7
7
|
readonly tagOptionExtractors: Record<string, TagPropertyExtractor<T>>;
|
|
8
8
|
protected addExtractor(extractor: TagPropertyExtractor<T>, ...tags: string[]): void;
|
|
9
9
|
activates(_field: Field | Explore): boolean;
|
|
10
10
|
isValidMatch(_field: Field | Explore): boolean;
|
|
11
11
|
matches(renderDef: RenderDef): boolean;
|
|
12
|
-
parseTagParameters(
|
|
12
|
+
parseTagParameters(tagParse: TagParse | undefined): T;
|
|
13
13
|
abstract get rendererName(): string | undefined;
|
|
14
14
|
abstract create(document: Document, styleDefaults: StyleDefaults, rendererOptions: RendererOptions, field: Field | Explore, renderOptions: T, timezone?: string): Renderer;
|
|
15
15
|
}
|
package/dist/renderer_factory.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RendererFactory = void 0;
|
|
4
|
+
const malloy_1 = require("@malloydata/malloy");
|
|
4
5
|
class RendererFactory {
|
|
5
6
|
constructor() {
|
|
6
7
|
this.tagOptionExtractors = {};
|
|
@@ -20,15 +21,13 @@ class RendererFactory {
|
|
|
20
21
|
matches(renderDef) {
|
|
21
22
|
return renderDef.renderer === this.rendererName;
|
|
22
23
|
}
|
|
23
|
-
parseTagParameters(
|
|
24
|
+
parseTagParameters(tagParse) {
|
|
25
|
+
var _a;
|
|
24
26
|
const options = {};
|
|
25
27
|
for (const tag in this.tagOptionExtractors) {
|
|
26
|
-
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
tagValue = tagProperties[tag];
|
|
30
|
-
}
|
|
31
|
-
this.tagOptionExtractors[tag](options, tagValue);
|
|
28
|
+
const tagValue = (_a = tagParse === null || tagParse === void 0 ? void 0 : tagParse.tag.properties) === null || _a === void 0 ? void 0 : _a[tag];
|
|
29
|
+
if (tagValue) {
|
|
30
|
+
this.tagOptionExtractors[tag](options, tagValue ? new malloy_1.Tag(tagValue) : undefined);
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
33
|
return options;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@malloydata/render",
|
|
3
|
-
"version": "0.0.71
|
|
3
|
+
"version": "0.0.71",
|
|
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.71
|
|
21
|
+
"@malloydata/malloy": "^0.0.71",
|
|
22
22
|
"@types/luxon": "^2.4.0",
|
|
23
23
|
"lodash": "^4.17.20",
|
|
24
24
|
"luxon": "^2.4.0",
|