@hpcc-js/other 2.17.1 → 2.17.3

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.
Files changed (46) hide show
  1. package/LICENSE +43 -43
  2. package/README.md +41 -41
  3. package/dist/index.es6.js +5 -5
  4. package/dist/index.es6.js.map +1 -1
  5. package/dist/index.js +5 -5
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.min.js +1 -1
  8. package/dist/index.min.js.map +1 -1
  9. package/package.json +5 -5
  10. package/src/Audio.ts +83 -83
  11. package/src/AutoCompleteText.css +21 -21
  12. package/src/AutoCompleteText.ts +124 -124
  13. package/src/CalendarHeatMap.css +26 -26
  14. package/src/CalendarHeatMap.ts +243 -243
  15. package/src/Comms.ts +1085 -1085
  16. package/src/ESP.ts +451 -451
  17. package/src/HPCCBadge.ts +220 -220
  18. package/src/HeatMap.ts +135 -135
  19. package/src/Html.css +5 -5
  20. package/src/Html.ts +44 -44
  21. package/src/IconList.css +3 -3
  22. package/src/IconList.ts +86 -86
  23. package/src/Legend.css +85 -85
  24. package/src/Legend.ts +220 -220
  25. package/src/MorphText.css +11 -11
  26. package/src/MorphText.ts +102 -102
  27. package/src/NestedTable.ts +51 -51
  28. package/src/Opportunity.css +80 -80
  29. package/src/Opportunity.ts +488 -488
  30. package/src/Paginator.css +120 -120
  31. package/src/Paginator.ts +164 -164
  32. package/src/Persist.ts +151 -151
  33. package/src/PropertyEditor.css +130 -130
  34. package/src/PropertyEditor.ts +750 -750
  35. package/src/RadioCheckbox.css +6 -6
  36. package/src/RadioCheckbox.ts +123 -123
  37. package/src/Select.css +7 -7
  38. package/src/Select.ts +120 -120
  39. package/src/Table.css +92 -92
  40. package/src/Table.ts +1050 -1050
  41. package/src/ThemeEditor.css +195 -195
  42. package/src/ThemeEditor.ts +744 -744
  43. package/src/__package__.ts +3 -3
  44. package/src/index.ts +23 -23
  45. package/types/__package__.d.ts +2 -2
  46. package/types-3.4/__package__.d.ts +2 -2
@@ -1,243 +1,243 @@
1
- import { HTMLWidget, Palette, Utility } from "@hpcc-js/common";
2
- import { extent as d3Extent, range as d3Range } from "d3-array";
3
- import { map as d3Map } from "d3-collection";
4
- import { format as d3Format } from "d3-format";
5
- import { select as d3Select } from "d3-selection";
6
- import { timeDays as d3TimeDays, timeMonths as d3TimeMonths, timeWeek as d3TimeWeek, timeYear as d3TimeYear } from "d3-time";
7
- import { timeParse as d3TimeParse } from "d3-time-format";
8
-
9
- import "../src/CalendarHeatMap.css";
10
-
11
- export class CalendarHeatMap extends HTMLWidget {
12
- _prevDateColumn;
13
- _prevAggrType;
14
- _prevAggrColumn;
15
- _prevAggrDeltaColumn;
16
- _view;
17
- _parentNode;
18
-
19
- constructor() {
20
- super();
21
-
22
- Utility.SimpleSelectionMixin.call(this);
23
- }
24
-
25
- calendarData() {
26
- if (this.fields().length === 0 || this.data().length === 0) {
27
- return [];
28
- }
29
- const dateParser = d3TimeParse(this.datePattern());
30
- const valueFormatter = this.aggrDeltaColumn() ? d3Format(".1%") : d3Format("s");
31
- if (this._prevDateColumn !== this.dateColumn() ||
32
- this._prevAggrType !== this.aggrType() ||
33
- this._prevAggrColumn !== this.aggrColumn() ||
34
- this._prevAggrDeltaColumn !== this.aggrDeltaColumn()) {
35
- this._prevDateColumn = this.dateColumn();
36
- this._prevAggrType = this.aggrType();
37
- this._prevAggrColumn = this.aggrColumn();
38
- this._prevAggrDeltaColumn = this.aggrDeltaColumn();
39
- this._view = this._db.aggregateView([this.dateColumn()], this.aggrType(), this.aggrColumn(), this.aggrDeltaColumn());
40
- }
41
- return this._view.entries().map(function (row) {
42
- row.dateKey = dateParser(row.key);
43
- row.formattedValues = valueFormatter(row.value.aggregate);
44
- row.origRows = row.value;
45
- return row;
46
- });
47
- }
48
-
49
- calcDelta(row) {
50
- return (row.Close - row.Open) / row.Open;
51
- }
52
-
53
- enter(domNode, element) {
54
- super.enter(domNode, element);
55
- d3Select(domNode.parentNode)
56
- .style("overflow-y", "scroll")
57
- .style("overflow-x", "hidden")
58
- .style("height", "100%")
59
- .style("width", "100%")
60
- ;
61
- this._selection.widgetElement(element);
62
- }
63
-
64
- update(domNode, element) {
65
- super.update(domNode, element);
66
- this._palette = this._palette.switch(this.paletteID());
67
-
68
- const width = this.width();
69
- const cellSize = (width / 12) / 5;
70
- const height = cellSize * 8;
71
-
72
- const data = this.calendarData();
73
- const mappedData = d3Map(data, function (d: any) { return d.dateKey; });
74
- const dateExtent = d3Extent(data, function (d: any) {
75
- return d.dateKey.getFullYear();
76
- });
77
- const context = this;
78
- const svg = element.selectAll("svg").data(d3Range(+dateExtent[0], +dateExtent[1] + 1));
79
- const svgUpdate = svg.enter().append("svg")
80
- .each(function (d) {
81
- const svgElement = d3Select(this);
82
- const g = svgElement.append("g");
83
- g.append("text")
84
- .style("text-anchor", "middle")
85
- ;
86
- g.append("g")
87
- .attr("class", "days")
88
- ;
89
-
90
- const _d3TimeMonths = d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1));
91
- const _months = g.append("g").attr("class", "months");
92
- _d3TimeMonths.forEach(function (_m) {
93
- _months.append("path")
94
- .attr("class", "month")
95
- .attr("d", calcMonthPath(_m))
96
- .style("stroke", context.monthStrokeColor())
97
- .style("stroke-width", context.monthStrokeWidth())
98
- ;
99
- });
100
- })
101
- .merge(svg)
102
- .attr("width", width)
103
- .attr("height", height)
104
- ;
105
- svgUpdate.select("g")
106
- .attr("transform", "translate(" + ((width - cellSize * 53) / 2) + "," + (height - cellSize * 7 - 1) + ")")
107
- ;
108
- svgUpdate.select("text")
109
- .attr("transform", "translate(-6," + cellSize * 3.5 + ")rotate(-90)")
110
- .text(d => d)
111
- ;
112
- svg.exit().remove();
113
-
114
- let dataExtent: [any, any] = d3Extent<number>(data, function (d: any) {
115
- return d.value.aggregate;
116
- });
117
- if (this.aggrDeltaColumn()) {
118
- const max = Math.max(Math.abs(+dataExtent[0]), Math.abs(+dataExtent[1]));
119
- dataExtent = [-max, max];
120
- }
121
- const dayRect = svgUpdate.select(".days").selectAll(".day").data(function (d) { return d3TimeDays(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });
122
- const dayRectUpdate = dayRect.enter().append("rect")
123
- .attr("class", "day")
124
- .call(this._selection.enter.bind(this._selection))
125
- .on("click", function (d) {
126
- const data2 = mappedData.get(d);
127
- if (data2 && data2.value && data2.value && data2.value.length) {
128
- context.click(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));
129
- }
130
- })
131
- .on("dblclick", function (d) {
132
- const data2 = mappedData.get(d);
133
- if (data2 && data2.value && data2.value && data2.value.length) {
134
- context.dblclick(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));
135
- }
136
- }).each(function (d) {
137
- const dayRectElement = d3Select(this);
138
- dayRectElement.append("title");
139
- })
140
- .merge(dayRect)
141
- .attr("x", function (d) { return d3TimeWeek.count(d3TimeYear(d), d) * cellSize; })
142
- .attr("y", function (d) { return d.getDay() * cellSize; })
143
- .attr("width", cellSize)
144
- .attr("height", cellSize)
145
- .style("stroke", this.dayStrokeColor())
146
- .style("stroke-width", this.dayStrokeWidth())
147
- .style("fill", null)
148
- ;
149
- dayRectUpdate.select("title")
150
- .text(d => d)
151
- ;
152
- dayRectUpdate.filter(function (d) { return mappedData.has(d); })
153
- .style("fill", function (d) {
154
- const row = mappedData.get(d);
155
- if (!row || !row.value || !row.value.aggregate) {
156
- return null;
157
- }
158
- return context._palette(row.value.aggregate, dataExtent[0], dataExtent[1]);
159
- })
160
- .select("title")
161
- .text(function (d) {
162
- const data2 = mappedData.get(d);
163
- return data2.key + ": " + data2.formattedValues;
164
- })
165
- ;
166
- dayRect.exit().remove();
167
-
168
- const monthPath = svg.select(".months").selectAll(".month").data(function (d) { return d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });
169
- monthPath.enter().append("path")
170
- .attr("class", "month")
171
- .merge(monthPath)
172
- .attr("d", calcMonthPath)
173
- .style("stroke", this.monthStrokeColor())
174
- .style("stroke-width", this.monthStrokeWidth())
175
- ;
176
- monthPath.exit().remove();
177
-
178
- function calcMonthPath(t0) {
179
- const t1 = new Date(t0.getFullYear(), t0.getMonth() + 1, 0);
180
- const d0 = t0.getDay();
181
- const w0 = d3TimeWeek.count(d3TimeYear(t0), t0);
182
- const d1 = t1.getDay();
183
- const w1 = d3TimeWeek.count(d3TimeYear(t1), t1);
184
- return "M" + (w0 + 1) * cellSize + "," + d0 * cellSize +
185
- "H" + w0 * cellSize + "V" + 7 * cellSize +
186
- "H" + w1 * cellSize + "V" + (d1 + 1) * cellSize +
187
- "H" + (w1 + 1) * cellSize + "V" + 0 +
188
- "H" + (w0 + 1) * cellSize + "Z";
189
- }
190
- }
191
-
192
- exit(domNode, element) {
193
- super.exit(domNode, element);
194
- }
195
-
196
- // Events ---
197
- click(row, column, selected) {
198
- }
199
-
200
- dblclick(row, column, selected) {
201
- }
202
-
203
- _palette;
204
- paletteID: { (): string; (_: string): CalendarHeatMap };
205
- paletteID_exists: () => boolean;
206
- dateColumn: { (): string; (_: string): CalendarHeatMap };
207
- dateColumn_exists: () => boolean;
208
- datePattern: { (): string; (_: string): CalendarHeatMap };
209
- datePattern_exists: () => boolean;
210
- aggrType: { (): string; (_: string): CalendarHeatMap };
211
- aggrType_exists: () => boolean;
212
- aggrColumn: { (): string; (_: string): CalendarHeatMap };
213
- aggrColumn_exists: () => boolean;
214
- aggrDeltaColumn: { (): string; (_: string): CalendarHeatMap };
215
- aggrDeltaColumn_exists: () => boolean;
216
-
217
- // SimpleSelectionMixin
218
- _selection;
219
- }
220
- CalendarHeatMap.prototype._class += " other_CalendarHeatMap";
221
- CalendarHeatMap.prototype.mixin(Utility.SimpleSelectionMixin);
222
- CalendarHeatMap.prototype._palette = Palette.rainbow("default");
223
-
224
- export interface CalendarHeatMap {
225
- dayStrokeColor(): string;
226
- dayStrokeColor(_: string): this;
227
- monthStrokeColor(): string;
228
- monthStrokeColor(_: string): this;
229
- dayStrokeWidth(): number;
230
- dayStrokeWidth(_: number): this;
231
- monthStrokeWidth(): number;
232
- monthStrokeWidth(_: number): this;
233
- }
234
- CalendarHeatMap.prototype.publish("paletteID", "YlOrRd", "set", "Color palette for this widget", CalendarHeatMap.prototype._palette.switch(), { tags: ["Basic", "Shared"] });
235
- CalendarHeatMap.prototype.publish("dayStrokeColor", "#ccc", "html-color", "Color of day border");
236
- CalendarHeatMap.prototype.publish("monthStrokeColor", "#000", "html-color", "Color of month border");
237
- CalendarHeatMap.prototype.publish("dayStrokeWidth", 1, "number", "Pixel width of day border");
238
- CalendarHeatMap.prototype.publish("monthStrokeWidth", 2, "number", "Pixel width of month border");
239
- CalendarHeatMap.prototype.publish("dateColumn", null, "set", "Date Column", function () { return this.columns(); }, { optional: true });
240
- CalendarHeatMap.prototype.publish("datePattern", "%Y-%m-%d", "string", "Date Pattern");
241
- CalendarHeatMap.prototype.publish("aggrType", null, "set", "Aggregation Type", [null, "mean", "median", "sum", "min", "max"], { optional: true });
242
- CalendarHeatMap.prototype.publish("aggrColumn", null, "set", "Aggregation Field", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });
243
- CalendarHeatMap.prototype.publish("aggrDeltaColumn", null, "set", "Aggregation Field", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });
1
+ import { HTMLWidget, Palette, Utility } from "@hpcc-js/common";
2
+ import { extent as d3Extent, range as d3Range } from "d3-array";
3
+ import { map as d3Map } from "d3-collection";
4
+ import { format as d3Format } from "d3-format";
5
+ import { select as d3Select } from "d3-selection";
6
+ import { timeDays as d3TimeDays, timeMonths as d3TimeMonths, timeWeek as d3TimeWeek, timeYear as d3TimeYear } from "d3-time";
7
+ import { timeParse as d3TimeParse } from "d3-time-format";
8
+
9
+ import "../src/CalendarHeatMap.css";
10
+
11
+ export class CalendarHeatMap extends HTMLWidget {
12
+ _prevDateColumn;
13
+ _prevAggrType;
14
+ _prevAggrColumn;
15
+ _prevAggrDeltaColumn;
16
+ _view;
17
+ _parentNode;
18
+
19
+ constructor() {
20
+ super();
21
+
22
+ Utility.SimpleSelectionMixin.call(this);
23
+ }
24
+
25
+ calendarData() {
26
+ if (this.fields().length === 0 || this.data().length === 0) {
27
+ return [];
28
+ }
29
+ const dateParser = d3TimeParse(this.datePattern());
30
+ const valueFormatter = this.aggrDeltaColumn() ? d3Format(".1%") : d3Format("s");
31
+ if (this._prevDateColumn !== this.dateColumn() ||
32
+ this._prevAggrType !== this.aggrType() ||
33
+ this._prevAggrColumn !== this.aggrColumn() ||
34
+ this._prevAggrDeltaColumn !== this.aggrDeltaColumn()) {
35
+ this._prevDateColumn = this.dateColumn();
36
+ this._prevAggrType = this.aggrType();
37
+ this._prevAggrColumn = this.aggrColumn();
38
+ this._prevAggrDeltaColumn = this.aggrDeltaColumn();
39
+ this._view = this._db.aggregateView([this.dateColumn()], this.aggrType(), this.aggrColumn(), this.aggrDeltaColumn());
40
+ }
41
+ return this._view.entries().map(function (row) {
42
+ row.dateKey = dateParser(row.key);
43
+ row.formattedValues = valueFormatter(row.value.aggregate);
44
+ row.origRows = row.value;
45
+ return row;
46
+ });
47
+ }
48
+
49
+ calcDelta(row) {
50
+ return (row.Close - row.Open) / row.Open;
51
+ }
52
+
53
+ enter(domNode, element) {
54
+ super.enter(domNode, element);
55
+ d3Select(domNode.parentNode)
56
+ .style("overflow-y", "scroll")
57
+ .style("overflow-x", "hidden")
58
+ .style("height", "100%")
59
+ .style("width", "100%")
60
+ ;
61
+ this._selection.widgetElement(element);
62
+ }
63
+
64
+ update(domNode, element) {
65
+ super.update(domNode, element);
66
+ this._palette = this._palette.switch(this.paletteID());
67
+
68
+ const width = this.width();
69
+ const cellSize = (width / 12) / 5;
70
+ const height = cellSize * 8;
71
+
72
+ const data = this.calendarData();
73
+ const mappedData = d3Map(data, function (d: any) { return d.dateKey; });
74
+ const dateExtent = d3Extent(data, function (d: any) {
75
+ return d.dateKey.getFullYear();
76
+ });
77
+ const context = this;
78
+ const svg = element.selectAll("svg").data(d3Range(+dateExtent[0], +dateExtent[1] + 1));
79
+ const svgUpdate = svg.enter().append("svg")
80
+ .each(function (d) {
81
+ const svgElement = d3Select(this);
82
+ const g = svgElement.append("g");
83
+ g.append("text")
84
+ .style("text-anchor", "middle")
85
+ ;
86
+ g.append("g")
87
+ .attr("class", "days")
88
+ ;
89
+
90
+ const _d3TimeMonths = d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1));
91
+ const _months = g.append("g").attr("class", "months");
92
+ _d3TimeMonths.forEach(function (_m) {
93
+ _months.append("path")
94
+ .attr("class", "month")
95
+ .attr("d", calcMonthPath(_m))
96
+ .style("stroke", context.monthStrokeColor())
97
+ .style("stroke-width", context.monthStrokeWidth())
98
+ ;
99
+ });
100
+ })
101
+ .merge(svg)
102
+ .attr("width", width)
103
+ .attr("height", height)
104
+ ;
105
+ svgUpdate.select("g")
106
+ .attr("transform", "translate(" + ((width - cellSize * 53) / 2) + "," + (height - cellSize * 7 - 1) + ")")
107
+ ;
108
+ svgUpdate.select("text")
109
+ .attr("transform", "translate(-6," + cellSize * 3.5 + ")rotate(-90)")
110
+ .text(d => d)
111
+ ;
112
+ svg.exit().remove();
113
+
114
+ let dataExtent: [any, any] = d3Extent<number>(data, function (d: any) {
115
+ return d.value.aggregate;
116
+ });
117
+ if (this.aggrDeltaColumn()) {
118
+ const max = Math.max(Math.abs(+dataExtent[0]), Math.abs(+dataExtent[1]));
119
+ dataExtent = [-max, max];
120
+ }
121
+ const dayRect = svgUpdate.select(".days").selectAll(".day").data(function (d) { return d3TimeDays(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });
122
+ const dayRectUpdate = dayRect.enter().append("rect")
123
+ .attr("class", "day")
124
+ .call(this._selection.enter.bind(this._selection))
125
+ .on("click", function (d) {
126
+ const data2 = mappedData.get(d);
127
+ if (data2 && data2.value && data2.value && data2.value.length) {
128
+ context.click(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));
129
+ }
130
+ })
131
+ .on("dblclick", function (d) {
132
+ const data2 = mappedData.get(d);
133
+ if (data2 && data2.value && data2.value && data2.value.length) {
134
+ context.dblclick(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));
135
+ }
136
+ }).each(function (d) {
137
+ const dayRectElement = d3Select(this);
138
+ dayRectElement.append("title");
139
+ })
140
+ .merge(dayRect)
141
+ .attr("x", function (d) { return d3TimeWeek.count(d3TimeYear(d), d) * cellSize; })
142
+ .attr("y", function (d) { return d.getDay() * cellSize; })
143
+ .attr("width", cellSize)
144
+ .attr("height", cellSize)
145
+ .style("stroke", this.dayStrokeColor())
146
+ .style("stroke-width", this.dayStrokeWidth())
147
+ .style("fill", null)
148
+ ;
149
+ dayRectUpdate.select("title")
150
+ .text(d => d)
151
+ ;
152
+ dayRectUpdate.filter(function (d) { return mappedData.has(d); })
153
+ .style("fill", function (d) {
154
+ const row = mappedData.get(d);
155
+ if (!row || !row.value || !row.value.aggregate) {
156
+ return null;
157
+ }
158
+ return context._palette(row.value.aggregate, dataExtent[0], dataExtent[1]);
159
+ })
160
+ .select("title")
161
+ .text(function (d) {
162
+ const data2 = mappedData.get(d);
163
+ return data2.key + ": " + data2.formattedValues;
164
+ })
165
+ ;
166
+ dayRect.exit().remove();
167
+
168
+ const monthPath = svg.select(".months").selectAll(".month").data(function (d) { return d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });
169
+ monthPath.enter().append("path")
170
+ .attr("class", "month")
171
+ .merge(monthPath)
172
+ .attr("d", calcMonthPath)
173
+ .style("stroke", this.monthStrokeColor())
174
+ .style("stroke-width", this.monthStrokeWidth())
175
+ ;
176
+ monthPath.exit().remove();
177
+
178
+ function calcMonthPath(t0) {
179
+ const t1 = new Date(t0.getFullYear(), t0.getMonth() + 1, 0);
180
+ const d0 = t0.getDay();
181
+ const w0 = d3TimeWeek.count(d3TimeYear(t0), t0);
182
+ const d1 = t1.getDay();
183
+ const w1 = d3TimeWeek.count(d3TimeYear(t1), t1);
184
+ return "M" + (w0 + 1) * cellSize + "," + d0 * cellSize +
185
+ "H" + w0 * cellSize + "V" + 7 * cellSize +
186
+ "H" + w1 * cellSize + "V" + (d1 + 1) * cellSize +
187
+ "H" + (w1 + 1) * cellSize + "V" + 0 +
188
+ "H" + (w0 + 1) * cellSize + "Z";
189
+ }
190
+ }
191
+
192
+ exit(domNode, element) {
193
+ super.exit(domNode, element);
194
+ }
195
+
196
+ // Events ---
197
+ click(row, column, selected) {
198
+ }
199
+
200
+ dblclick(row, column, selected) {
201
+ }
202
+
203
+ _palette;
204
+ paletteID: { (): string; (_: string): CalendarHeatMap };
205
+ paletteID_exists: () => boolean;
206
+ dateColumn: { (): string; (_: string): CalendarHeatMap };
207
+ dateColumn_exists: () => boolean;
208
+ datePattern: { (): string; (_: string): CalendarHeatMap };
209
+ datePattern_exists: () => boolean;
210
+ aggrType: { (): string; (_: string): CalendarHeatMap };
211
+ aggrType_exists: () => boolean;
212
+ aggrColumn: { (): string; (_: string): CalendarHeatMap };
213
+ aggrColumn_exists: () => boolean;
214
+ aggrDeltaColumn: { (): string; (_: string): CalendarHeatMap };
215
+ aggrDeltaColumn_exists: () => boolean;
216
+
217
+ // SimpleSelectionMixin
218
+ _selection;
219
+ }
220
+ CalendarHeatMap.prototype._class += " other_CalendarHeatMap";
221
+ CalendarHeatMap.prototype.mixin(Utility.SimpleSelectionMixin);
222
+ CalendarHeatMap.prototype._palette = Palette.rainbow("default");
223
+
224
+ export interface CalendarHeatMap {
225
+ dayStrokeColor(): string;
226
+ dayStrokeColor(_: string): this;
227
+ monthStrokeColor(): string;
228
+ monthStrokeColor(_: string): this;
229
+ dayStrokeWidth(): number;
230
+ dayStrokeWidth(_: number): this;
231
+ monthStrokeWidth(): number;
232
+ monthStrokeWidth(_: number): this;
233
+ }
234
+ CalendarHeatMap.prototype.publish("paletteID", "YlOrRd", "set", "Color palette for this widget", CalendarHeatMap.prototype._palette.switch(), { tags: ["Basic", "Shared"] });
235
+ CalendarHeatMap.prototype.publish("dayStrokeColor", "#ccc", "html-color", "Color of day border");
236
+ CalendarHeatMap.prototype.publish("monthStrokeColor", "#000", "html-color", "Color of month border");
237
+ CalendarHeatMap.prototype.publish("dayStrokeWidth", 1, "number", "Pixel width of day border");
238
+ CalendarHeatMap.prototype.publish("monthStrokeWidth", 2, "number", "Pixel width of month border");
239
+ CalendarHeatMap.prototype.publish("dateColumn", null, "set", "Date Column", function () { return this.columns(); }, { optional: true });
240
+ CalendarHeatMap.prototype.publish("datePattern", "%Y-%m-%d", "string", "Date Pattern");
241
+ CalendarHeatMap.prototype.publish("aggrType", null, "set", "Aggregation Type", [null, "mean", "median", "sum", "min", "max"], { optional: true });
242
+ CalendarHeatMap.prototype.publish("aggrColumn", null, "set", "Aggregation Field", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });
243
+ CalendarHeatMap.prototype.publish("aggrDeltaColumn", null, "set", "Aggregation Field", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });