@internetarchive/histogram-date-range 1.3.2 → 1.4.0-alpha-webdev7756.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.
- package/demo/index.html +20 -0
- package/dist/demo/js/list-histogram-wrapper.d.ts +20 -0
- package/dist/demo/js/list-histogram-wrapper.js +59 -0
- package/dist/demo/js/list-histogram-wrapper.js.map +1 -0
- package/dist/demo/js/lit-histogram-wrapper.d.ts +21 -0
- package/dist/demo/js/lit-histogram-wrapper.js +73 -0
- package/dist/demo/js/lit-histogram-wrapper.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/src/histogram-date-range.d.ts +27 -0
- package/dist/src/histogram-date-range.js +301 -245
- package/dist/src/histogram-date-range.js.map +1 -1
- package/dist/test/histogram-date-range.test.js +221 -179
- package/dist/test/histogram-date-range.test.js.map +1 -1
- package/docs/demo/index.html +20 -0
- package/docs/dist/src/histogram-date-range.js +44 -12
- package/index.ts +3 -0
- package/package.json +1 -1
- package/src/histogram-date-range.ts +1172 -1110
- package/test/histogram-date-range.test.ts +992 -935
- package/dist/src/dayjs/fix-first-century-years.d.ts +0 -2
- package/dist/src/dayjs/fix-first-century-years.js +0 -25
- package/dist/src/dayjs/fix-first-century-years.js.map +0 -1
- package/dist/src/dayjs/fix-two-digit-dates.d.ts +0 -2
- package/dist/src/dayjs/fix-two-digit-dates.js +0 -25
- package/dist/src/dayjs/fix-two-digit-dates.js.map +0 -1
- package/dist/src/histogram-date-range copy.d.ts +0 -214
- package/dist/src/histogram-date-range copy.js +0 -1018
- package/dist/src/histogram-date-range copy.js.map +0 -1
package/demo/index.html
CHANGED
|
@@ -72,6 +72,26 @@
|
|
|
72
72
|
</histogram-date-range>
|
|
73
73
|
</div>
|
|
74
74
|
|
|
75
|
+
<div class="container">
|
|
76
|
+
<div class="description">
|
|
77
|
+
as above, but with linear scaled bars
|
|
78
|
+
</div>
|
|
79
|
+
<histogram-date-range
|
|
80
|
+
width="175"
|
|
81
|
+
tooltipwidth="120"
|
|
82
|
+
dateFormat="YYYY"
|
|
83
|
+
updateDelay="1000"
|
|
84
|
+
missingDataMessage="..."
|
|
85
|
+
barScaling="linear"
|
|
86
|
+
minSelectedDate="1987"
|
|
87
|
+
maxSelectedDate="2016"
|
|
88
|
+
minDate="1987"
|
|
89
|
+
maxDate="2016"
|
|
90
|
+
bins="[1519,1643,1880,2046,1973,2085,2148,2152,2349,2304,2314,2484,2590,2450,2495,2475,2392,2631,2504,2619,2519,2552,2462,2217,2171,2132,2127,2041,1638,1441]"
|
|
91
|
+
>
|
|
92
|
+
</histogram-date-range>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
75
95
|
<div class="container">
|
|
76
96
|
<div class="description">small year range and few bins</div>
|
|
77
97
|
<histogram-date-range width="175" tooltipwidth="120"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LitElement, TemplateResult } from 'lit';
|
|
2
|
+
import '../../src/histogram-date-range';
|
|
3
|
+
interface DataSource {
|
|
4
|
+
minDate: unknown;
|
|
5
|
+
maxDate: unknown;
|
|
6
|
+
minSelectedDate: unknown;
|
|
7
|
+
maxSelectedDate: unknown;
|
|
8
|
+
bins: number[];
|
|
9
|
+
barScalingFunction?: (input: number) => number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* This is mainly to test the histogram-date-range within
|
|
13
|
+
* a lit-element.
|
|
14
|
+
*/
|
|
15
|
+
export declare class LitHistogramWrapper extends LitElement {
|
|
16
|
+
dataSource: DataSource;
|
|
17
|
+
render(): TemplateResult;
|
|
18
|
+
private randomize;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { LitElement, html, nothing } from 'lit';
|
|
3
|
+
import { customElement, state } from 'lit/decorators.js';
|
|
4
|
+
import '../../src/histogram-date-range';
|
|
5
|
+
/**
|
|
6
|
+
* This is mainly to test the histogram-date-range within
|
|
7
|
+
* a lit-element.
|
|
8
|
+
*/
|
|
9
|
+
let LitHistogramWrapper = class LitHistogramWrapper extends LitElement {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.dataSource = {
|
|
13
|
+
minDate: 1955,
|
|
14
|
+
maxDate: 2000,
|
|
15
|
+
minSelectedDate: 1955,
|
|
16
|
+
maxSelectedDate: 2000,
|
|
17
|
+
bins: [
|
|
18
|
+
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
render() {
|
|
23
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
24
|
+
return html `
|
|
25
|
+
<histogram-date-range
|
|
26
|
+
.minDate=${(_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.minDate}
|
|
27
|
+
.maxDate=${(_b = this.dataSource) === null || _b === void 0 ? void 0 : _b.maxDate}
|
|
28
|
+
.minSelectedDate=${(_c = this.dataSource) === null || _c === void 0 ? void 0 : _c.minSelectedDate}
|
|
29
|
+
.maxSelectedDate=${(_d = this.dataSource) === null || _d === void 0 ? void 0 : _d.maxSelectedDate}
|
|
30
|
+
.updateDelay=${1000}
|
|
31
|
+
.bins=${(_e = this.dataSource) === null || _e === void 0 ? void 0 : _e.bins}
|
|
32
|
+
.barScalingFunction=${(_g = (_f = this.dataSource) === null || _f === void 0 ? void 0 : _f.barScalingFunction) !== null && _g !== void 0 ? _g : nothing}
|
|
33
|
+
></histogram-date-range>
|
|
34
|
+
|
|
35
|
+
<button @click=${this.randomize}>Randomize</button>
|
|
36
|
+
`;
|
|
37
|
+
}
|
|
38
|
+
randomize() {
|
|
39
|
+
const minDate = Math.round(Math.random() * 1000);
|
|
40
|
+
const maxDate = minDate + Math.round(Math.random() * 1000);
|
|
41
|
+
// generate random bins
|
|
42
|
+
const bins = Array.from({ length: 20 }, () => Math.floor(Math.random() * minDate));
|
|
43
|
+
this.dataSource = {
|
|
44
|
+
minDate,
|
|
45
|
+
maxDate,
|
|
46
|
+
minSelectedDate: minDate,
|
|
47
|
+
maxSelectedDate: maxDate,
|
|
48
|
+
bins: bins,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
__decorate([
|
|
53
|
+
state()
|
|
54
|
+
], LitHistogramWrapper.prototype, "dataSource", void 0);
|
|
55
|
+
LitHistogramWrapper = __decorate([
|
|
56
|
+
customElement('lit-histogram-wrapper')
|
|
57
|
+
], LitHistogramWrapper);
|
|
58
|
+
export { LitHistogramWrapper };
|
|
59
|
+
//# sourceMappingURL=list-histogram-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-histogram-wrapper.js","sourceRoot":"","sources":["../../../demo/js/list-histogram-wrapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAkB,OAAO,EAAE,MAAM,KAAK,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,gCAAgC,CAAC;AAWxC;;;GAGG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,UAAU;IAA5C;;QACI,eAAU,GAAe;YAChC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;YACrB,IAAI,EAAE;gBACJ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;aACtE;SACF,CAAC;IAiCJ,CAAC;IA/BC,MAAM;;QACJ,OAAO,IAAI,CAAA;;mBAEI,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;mBACxB,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;2BAChB,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;2BAChC,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;uBACpC,IAAI;gBACX,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI;8BACP,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,kBAAkB,mCAAI,OAAO;;;uBAGrD,IAAI,CAAC,SAAS;KAChC,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3D,uBAAuB;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CACpC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG;YAChB,OAAO;YACP,OAAO;YACP,eAAe,EAAE,OAAO;YACxB,eAAe,EAAE,OAAO;YACxB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;CACF,CAAA;AAzCU;IAAR,KAAK,EAAE;uDAQN;AATS,mBAAmB;IAD/B,aAAa,CAAC,uBAAuB,CAAC;GAC1B,mBAAmB,CA0C/B","sourcesContent":["import { LitElement, html, TemplateResult, nothing } from 'lit';\r\nimport { customElement, state } from 'lit/decorators.js';\r\nimport '../../src/histogram-date-range';\r\n\r\ninterface DataSource {\r\n minDate: unknown;\r\n maxDate: unknown;\r\n minSelectedDate: unknown;\r\n maxSelectedDate: unknown;\r\n bins: number[];\r\n barScalingFunction?: (input: number) => number;\r\n}\r\n\r\n/**\r\n * This is mainly to test the histogram-date-range within\r\n * a lit-element.\r\n */\r\n@customElement('lit-histogram-wrapper')\r\nexport class LitHistogramWrapper extends LitElement {\r\n @state() dataSource: DataSource = {\r\n minDate: 1955,\r\n maxDate: 2000,\r\n minSelectedDate: 1955,\r\n maxSelectedDate: 2000,\r\n bins: [\r\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\r\n ],\r\n };\r\n\r\n render(): TemplateResult {\r\n return html`\r\n <histogram-date-range\r\n .minDate=${this.dataSource?.minDate}\r\n .maxDate=${this.dataSource?.maxDate}\r\n .minSelectedDate=${this.dataSource?.minSelectedDate}\r\n .maxSelectedDate=${this.dataSource?.maxSelectedDate}\r\n .updateDelay=${1000}\r\n .bins=${this.dataSource?.bins}\r\n .barScalingFunction=${this.dataSource?.barScalingFunction ?? nothing}\r\n ></histogram-date-range>\r\n\r\n <button @click=${this.randomize}>Randomize</button>\r\n `;\r\n }\r\n\r\n private randomize() {\r\n const minDate = Math.round(Math.random() * 1000);\r\n const maxDate = minDate + Math.round(Math.random() * 1000);\r\n // generate random bins\r\n const bins = Array.from({ length: 20 }, () =>\r\n Math.floor(Math.random() * minDate)\r\n );\r\n this.dataSource = {\r\n minDate,\r\n maxDate,\r\n minSelectedDate: minDate,\r\n maxSelectedDate: maxDate,\r\n bins: bins,\r\n };\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { LitElement, TemplateResult } from 'lit';
|
|
2
|
+
import '../../src/histogram-date-range';
|
|
3
|
+
interface DataSource {
|
|
4
|
+
minDate: unknown;
|
|
5
|
+
maxDate: unknown;
|
|
6
|
+
minSelectedDate: unknown;
|
|
7
|
+
maxSelectedDate: unknown;
|
|
8
|
+
bins: number[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* This is mainly to test the histogram-date-range within
|
|
12
|
+
* a lit-element.
|
|
13
|
+
*/
|
|
14
|
+
export declare class LitHistogramWrapper extends LitElement {
|
|
15
|
+
barScaling?: 'linear' | 'logarithmic';
|
|
16
|
+
dataSource: DataSource;
|
|
17
|
+
render(): TemplateResult;
|
|
18
|
+
private randomize;
|
|
19
|
+
static get styles(): import("lit").CSSResult;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { LitElement, html, css, nothing } from 'lit';
|
|
3
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
4
|
+
import '../../src/histogram-date-range';
|
|
5
|
+
const IDENTITY_FN = (x) => x;
|
|
6
|
+
/**
|
|
7
|
+
* This is mainly to test the histogram-date-range within
|
|
8
|
+
* a lit-element.
|
|
9
|
+
*/
|
|
10
|
+
let LitHistogramWrapper = class LitHistogramWrapper extends LitElement {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.dataSource = {
|
|
14
|
+
minDate: 1955,
|
|
15
|
+
maxDate: 2000,
|
|
16
|
+
minSelectedDate: 1955,
|
|
17
|
+
maxSelectedDate: 2000,
|
|
18
|
+
bins: [
|
|
19
|
+
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
render() {
|
|
24
|
+
var _a, _b, _c, _d, _e;
|
|
25
|
+
const scalingFn = this.barScaling === 'linear' ? IDENTITY_FN : nothing;
|
|
26
|
+
return html `
|
|
27
|
+
<histogram-date-range
|
|
28
|
+
.minDate=${(_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.minDate}
|
|
29
|
+
.maxDate=${(_b = this.dataSource) === null || _b === void 0 ? void 0 : _b.maxDate}
|
|
30
|
+
.minSelectedDate=${(_c = this.dataSource) === null || _c === void 0 ? void 0 : _c.minSelectedDate}
|
|
31
|
+
.maxSelectedDate=${(_d = this.dataSource) === null || _d === void 0 ? void 0 : _d.maxSelectedDate}
|
|
32
|
+
.updateDelay=${1000}
|
|
33
|
+
.bins=${(_e = this.dataSource) === null || _e === void 0 ? void 0 : _e.bins}
|
|
34
|
+
.barScalingFunction=${scalingFn}
|
|
35
|
+
></histogram-date-range>
|
|
36
|
+
|
|
37
|
+
<button @click=${this.randomize}>Randomize</button>
|
|
38
|
+
`;
|
|
39
|
+
}
|
|
40
|
+
randomize() {
|
|
41
|
+
const minDate = Math.round(Math.random() * 1000);
|
|
42
|
+
const maxDate = minDate + Math.round(Math.random() * 1000);
|
|
43
|
+
// generate random bins
|
|
44
|
+
const bins = Array.from({ length: 20 }, () => Math.floor(Math.random() * minDate));
|
|
45
|
+
this.dataSource = {
|
|
46
|
+
minDate,
|
|
47
|
+
maxDate,
|
|
48
|
+
minSelectedDate: minDate,
|
|
49
|
+
maxSelectedDate: maxDate,
|
|
50
|
+
bins: bins,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
static get styles() {
|
|
54
|
+
return css `
|
|
55
|
+
:host {
|
|
56
|
+
display: flex;
|
|
57
|
+
flex-direction: column;
|
|
58
|
+
align-items: center;
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
__decorate([
|
|
64
|
+
property({ type: String })
|
|
65
|
+
], LitHistogramWrapper.prototype, "barScaling", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
state()
|
|
68
|
+
], LitHistogramWrapper.prototype, "dataSource", void 0);
|
|
69
|
+
LitHistogramWrapper = __decorate([
|
|
70
|
+
customElement('lit-histogram-wrapper')
|
|
71
|
+
], LitHistogramWrapper);
|
|
72
|
+
export { LitHistogramWrapper };
|
|
73
|
+
//# sourceMappingURL=lit-histogram-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lit-histogram-wrapper.js","sourceRoot":"","sources":["../../../demo/js/lit-histogram-wrapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAkB,OAAO,EAAE,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,gCAAgC,CAAC;AAUxC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAErC;;;GAGG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,UAAU;IAA5C;;QAGI,eAAU,GAAe;YAChC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;YACrB,IAAI,EAAE;gBACJ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;aACtE;SACF,CAAC;IA4CJ,CAAC;IA1CC,MAAM;;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;QACvE,OAAO,IAAI,CAAA;;mBAEI,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;mBACxB,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;2BAChB,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;2BAChC,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;uBACpC,IAAI;gBACX,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI;8BACP,SAAS;;;uBAGhB,IAAI,CAAC,SAAS;KAChC,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3D,uBAAuB;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CACpC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG;YAChB,OAAO;YACP,OAAO;YACP,eAAe,EAAE,OAAO;YACxB,eAAe,EAAE,OAAO;YACxB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;KAMT,CAAC;IACJ,CAAC;CACF,CAAA;AAtD6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDAAuC;AAEzD;IAAR,KAAK,EAAE;uDAQN;AAXS,mBAAmB;IAD/B,aAAa,CAAC,uBAAuB,CAAC;GAC1B,mBAAmB,CAuD/B","sourcesContent":["import { LitElement, html, css, TemplateResult, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../../src/histogram-date-range';\n\ninterface DataSource {\n minDate: unknown;\n maxDate: unknown;\n minSelectedDate: unknown;\n maxSelectedDate: unknown;\n bins: number[];\n}\n\nconst IDENTITY_FN = (x: number) => x;\n\n/**\n * This is mainly to test the histogram-date-range within\n * a lit-element.\n */\n@customElement('lit-histogram-wrapper')\nexport class LitHistogramWrapper extends LitElement {\n @property({ type: String }) barScaling?: 'linear' | 'logarithmic';\n\n @state() dataSource: DataSource = {\n minDate: 1955,\n maxDate: 2000,\n minSelectedDate: 1955,\n maxSelectedDate: 2000,\n bins: [\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\n ],\n };\n\n render(): TemplateResult {\n const scalingFn = this.barScaling === 'linear' ? IDENTITY_FN : nothing;\n return html`\n <histogram-date-range\n .minDate=${this.dataSource?.minDate}\n .maxDate=${this.dataSource?.maxDate}\n .minSelectedDate=${this.dataSource?.minSelectedDate}\n .maxSelectedDate=${this.dataSource?.maxSelectedDate}\n .updateDelay=${1000}\n .bins=${this.dataSource?.bins}\n .barScalingFunction=${scalingFn}\n ></histogram-date-range>\n\n <button @click=${this.randomize}>Randomize</button>\n `;\n }\n\n private randomize() {\n const minDate = Math.round(Math.random() * 1000);\n const maxDate = minDate + Math.round(Math.random() * 1000);\n // generate random bins\n const bins = Array.from({ length: 20 }, () =>\n Math.floor(Math.random() * minDate)\n );\n this.dataSource = {\n minDate,\n maxDate,\n minSelectedDate: minDate,\n maxSelectedDate: maxDate,\n bins: bins,\n };\n }\n\n static get styles() {\n return css`\n :host {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n `;\n }\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { HistogramDateRange, BinSnappingInterval, } from './src/histogram-date-range';
|
|
1
|
+
export { HistogramDateRange, BinSnappingInterval, BarScalingPreset, BarScalingFunction, BarScalingOption, } from './src/histogram-date-range';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAKnB,MAAM,4BAA4B,CAAC","sourcesContent":["export {\n HistogramDateRange,\n BinSnappingInterval,\n BarScalingPreset,\n BarScalingFunction,\n BarScalingOption,\n} from './src/histogram-date-range';\n"]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import '@internetarchive/ia-activity-indicator';
|
|
2
2
|
import { LitElement, PropertyValues, SVGTemplateResult, TemplateResult } from 'lit';
|
|
3
3
|
export type BinSnappingInterval = 'none' | 'month' | 'year';
|
|
4
|
+
export type BarScalingPreset = 'linear' | 'logarithmic';
|
|
5
|
+
export type BarScalingFunction = (binValue: number) => number;
|
|
6
|
+
export type BarScalingOption = BarScalingPreset | BarScalingFunction;
|
|
4
7
|
export declare class HistogramDateRange extends LitElement {
|
|
5
8
|
width: number;
|
|
6
9
|
height: number;
|
|
@@ -28,6 +31,26 @@ export declare class HistogramDateRange extends LitElement {
|
|
|
28
31
|
* - `year`: Same as `month`, but snapping to year boundaries instead of months.
|
|
29
32
|
*/
|
|
30
33
|
binSnapping: BinSnappingInterval;
|
|
34
|
+
/**
|
|
35
|
+
* What label to use on tooltips to identify the type of data being represented.
|
|
36
|
+
* Defaults to `'item(s)'`.
|
|
37
|
+
*/
|
|
38
|
+
tooltipLabel: string;
|
|
39
|
+
/**
|
|
40
|
+
* A function or preset value indicating how the height of each bar relates to its
|
|
41
|
+
* corresponding bin value. Current presets available are 'logarithmic' and 'linear',
|
|
42
|
+
* but a custom function may be provided instead if other behavior is desired.
|
|
43
|
+
*
|
|
44
|
+
* The default scaling (`'logarithmic'`) uses the logarithm of each bin value, yielding
|
|
45
|
+
* more prominent bars for smaller values. This ensures that even when the difference
|
|
46
|
+
* between the min & max values is large, small values are unlikely to completely disappear
|
|
47
|
+
* visually. However, the cost is that bars have less noticeable variation among values of
|
|
48
|
+
* a similar magnitude, and their heights are not a direct representation of the bin values.
|
|
49
|
+
*
|
|
50
|
+
* The `'linear'` preset option instead sizes the bars in linear proportion to their bin
|
|
51
|
+
* values.
|
|
52
|
+
*/
|
|
53
|
+
barScaling: BarScalingOption;
|
|
31
54
|
private _tooltipOffsetX;
|
|
32
55
|
private _tooltipOffsetY;
|
|
33
56
|
private _tooltipContent?;
|
|
@@ -77,6 +100,10 @@ export declare class HistogramDateRange extends LitElement {
|
|
|
77
100
|
* Default is simply to snap to the nearest full second.
|
|
78
101
|
*/
|
|
79
102
|
private snapTimestamp;
|
|
103
|
+
/**
|
|
104
|
+
* Function to scale bin values, whether from a preset or a provided custom function.
|
|
105
|
+
*/
|
|
106
|
+
private get barScalingFunction();
|
|
80
107
|
private calculateHistData;
|
|
81
108
|
private get hasBinData();
|
|
82
109
|
private get _numBins();
|