gridviz 3.0.14 → 3.0.16

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 (55) hide show
  1. package/README.md +127 -128
  2. package/dist/gridviz.js +7959 -7860
  3. package/dist/gridviz.min.js +1 -1
  4. package/package.json +74 -74
  5. package/src/button/ZoomButtons.js +101 -96
  6. package/src/core/Dataset.js +154 -157
  7. package/src/core/Drawable.js +60 -61
  8. package/src/core/GeoCanvas.js +409 -370
  9. package/src/core/Layer.js +23 -25
  10. package/src/core/Legend.js +108 -110
  11. package/src/core/Map.js +495 -495
  12. package/src/core/MultiResolutionDataset.js +93 -97
  13. package/src/core/Style.js +98 -99
  14. package/src/dataset/CSVGrid.js +112 -112
  15. package/src/dataset/GeoTIFF.js +122 -123
  16. package/src/dataset/JSGrid.js +55 -54
  17. package/src/dataset/TiledGrid.js +289 -288
  18. package/src/dataset/worker.js +18 -0
  19. package/src/index.js +77 -71
  20. package/src/layer/BackgroundLayer.js +162 -158
  21. package/src/layer/BackgroundLayerImage.js +81 -84
  22. package/src/layer/BackgroundLayerWMS.js +104 -108
  23. package/src/layer/GeoJSONLayer.js +214 -220
  24. package/src/layer/GridLayer.js +148 -157
  25. package/src/layer/LabelLayer.js +194 -193
  26. package/src/legend/ColorCategoryLegend.js +109 -110
  27. package/src/legend/ColorDiscreteLegend.js +100 -102
  28. package/src/legend/ColorLegend.js +115 -118
  29. package/src/legend/OrientationLegend.js +89 -91
  30. package/src/legend/SizeLegend.js +224 -224
  31. package/src/legend/TernaryLegend.js +302 -210
  32. package/src/style/CompositionStyle.js +291 -288
  33. package/src/style/DotDensityStyle.js +133 -134
  34. package/src/style/ImageStyle.js +100 -102
  35. package/src/style/IsoFenceStyle.js +217 -203
  36. package/src/style/JoyPlotStyle.js +127 -128
  37. package/src/style/LegoStyle.js +110 -110
  38. package/src/style/MosaicStyle.js +99 -99
  39. package/src/style/NinjaStarStyle.js +102 -102
  40. package/src/style/PillarStyle.js +207 -208
  41. package/src/style/SegmentStyle.js +105 -105
  42. package/src/style/ShapeColorSizeStyle.js +147 -132
  43. package/src/style/SideCategoryStyle.js +112 -114
  44. package/src/style/SideStyle.js +212 -205
  45. package/src/style/SquareColorCategoryWebGLStyle.js +107 -108
  46. package/src/style/SquareColorWebGLStyle.js +126 -126
  47. package/src/style/StrokeStyle.js +135 -136
  48. package/src/style/TanakaStyle.js +69 -68
  49. package/src/style/TextStyle.js +110 -111
  50. package/src/style/TimeSeriesStyle.js +222 -229
  51. package/src/utils/scale.js +218 -228
  52. package/src/utils/stretching.js +120 -133
  53. package/src/utils/ternary.js +203 -203
  54. package/src/utils/utils.js +58 -63
  55. package/src/utils/webGLUtils.js +72 -70
@@ -1,133 +1,120 @@
1
- //@ts-check
2
- 'use strict'
3
-
4
- /**
5
- * @module utils
6
- */
7
-
8
-
9
- //TODO invert for circular
10
- //TODO use Math.sqrt
11
- //TODO validate
12
-
13
-
14
- /**
15
- * Some function [0,1]->[0,1] to stretch range of values.
16
- * @see https://github.com/eurostat/gridviz/blob/master/docs/reference.md#stretching
17
- * @see https://observablehq.com/@jgaffuri/stretching
18
- */
19
-
20
- //identity function
21
- const identity = t => t
22
- identity.invert = identity
23
-
24
-
25
- /**
26
- * @param {number} base
27
- * @returns {function(number):number}
28
- */
29
- export const exponentialScale = (base = 3) => {
30
- if (base == 0) return identity
31
- const a = (Math.exp(base) - 1)
32
- const f = t => (Math.exp(t * base) - 1) / a
33
- f.invert = t => Math.log(a * t + 1) / base
34
- return f
35
- }
36
-
37
- /**
38
- * @param {number} base
39
- * @returns {function(number):number}
40
- */
41
- export const logarithmicScale = (base = 3) => {
42
- if (base == 0) return identity
43
- const a = Math.exp(base), b = 1 - a
44
- const f = t => 1 - Math.log(a + t * b) / base
45
- f.invert = t => (Math.exp((1 - t) * base) - a) / b
46
- return f
47
- }
48
-
49
-
50
-
51
-
52
-
53
- /**
54
- * @param {number} exponent
55
- * @returns {function(number):number}
56
- */
57
- export const powerScale = (exponent = 3) => {
58
- if (exponent == 1) return identity
59
- //TODO if (exponent == 0.5) return Math.sqrt
60
- const f = t => Math.pow(t, exponent)
61
- const a = 1 / exponent
62
- f.invert = t => Math.pow(t, a)
63
- return f
64
- }
65
-
66
- /**
67
- * @param {number} exponent
68
- * @returns {function(number):number}
69
- */
70
- export const powerInverseScale = (exponent = 3) => {
71
- if (exponent == 1) return identity
72
- //TODO if (exponent == 2) return t => 1 - Math.sqrt(1 - t)
73
- const a = 1 / exponent
74
- const f = t => 1 - Math.pow(1 - t, a)
75
- f.invert = t => 1 - Math.pow(1 - t, exponent)
76
- return f
77
- }
78
-
79
-
80
-
81
-
82
- /**
83
- * @param {number} circularity
84
- * @returns {function(number):number}
85
- */
86
- export const circularScale = (circularity = 0.8) => {
87
- if (circularity == 0) return identity
88
- if (circularity == 1) return t => Math.sqrt(t * (2 - t))
89
- else {
90
- const a = circularity / (1 - circularity)
91
- return t => Math.sqrt(1 / (a * a) + t * (2 / a + 2 - t)) - 1 / a
92
- }
93
- }
94
-
95
- /**
96
- * @param {number} circularity
97
- * @returns {function(number):number}
98
- */
99
- export const circularInverseScale = (circularity = 0.8) => {
100
- if (circularity == 0) return identity
101
- const f = circularScale(circularity)
102
- return t => 1 - f(1 - t)
103
- }
104
-
105
-
106
-
107
-
108
-
109
- //test
110
- /*
111
- const test = (f, fun, a, err = 1e-12) => {
112
- for (let t = 0; t <= 1; t += 1 / 50) {
113
- const er = t - f.invert(f(t))
114
- if (Math.abs(er) < err) continue
115
- console.log(fun, a, er)
116
- }
117
- }
118
-
119
- for (let fun of [powerScale, powerInverseScale])
120
- for (let exp = -30; exp <= 50; exp += 1) {
121
- if (exp == 0) continue
122
- const f = fun(exp)
123
- test(f, fun, exp)
124
- }
125
-
126
-
127
- for (let fun of [exponentialScale, logarithmicScale])
128
- for (let base = -20; base <= 20; base += 1) {
129
- //if (exp == 0) continue
130
- const f = fun(base)
131
- test(f, fun, base, 1e-10)
132
- }
133
- */
1
+ //@ts-check
2
+ 'use strict'
3
+
4
+ /**
5
+ * @module utils
6
+ */
7
+
8
+ //TODO invert for circular
9
+ //TODO use Math.sqrt
10
+ //TODO validate
11
+
12
+ /**
13
+ * Some function [0,1]->[0,1] to stretch range of values.
14
+ * @see https://github.com/eurostat/gridviz/blob/master/docs/reference.md#stretching
15
+ * @see https://observablehq.com/@jgaffuri/stretching
16
+ */
17
+
18
+ //identity function
19
+ const identity = (t) => t
20
+ identity.invert = identity
21
+
22
+ /**
23
+ * @param {number} base
24
+ * @returns {function(number):number}
25
+ */
26
+ export const exponentialScale = (base = 3) => {
27
+ if (base == 0) return identity
28
+ const a = Math.exp(base) - 1
29
+ const f = (t) => (Math.exp(t * base) - 1) / a
30
+ f.invert = (t) => Math.log(a * t + 1) / base
31
+ return f
32
+ }
33
+
34
+ /**
35
+ * @param {number} base
36
+ * @returns {function(number):number}
37
+ */
38
+ export const logarithmicScale = (base = 3) => {
39
+ if (base == 0) return identity
40
+ const a = Math.exp(base),
41
+ b = 1 - a
42
+ const f = (t) => 1 - Math.log(a + t * b) / base
43
+ f.invert = (t) => (Math.exp((1 - t) * base) - a) / b
44
+ return f
45
+ }
46
+
47
+ /**
48
+ * @param {number} exponent
49
+ * @returns {function(number):number}
50
+ */
51
+ export const powerScale = (exponent = 3) => {
52
+ if (exponent == 1) return identity
53
+ //TODO if (exponent == 0.5) return Math.sqrt
54
+ const f = (t) => Math.pow(t, exponent)
55
+ const a = 1 / exponent
56
+ f.invert = (t) => Math.pow(t, a)
57
+ return f
58
+ }
59
+
60
+ /**
61
+ * @param {number} exponent
62
+ * @returns {function(number):number}
63
+ */
64
+ export const powerInverseScale = (exponent = 3) => {
65
+ if (exponent == 1) return identity
66
+ //TODO if (exponent == 2) return t => 1 - Math.sqrt(1 - t)
67
+ const a = 1 / exponent
68
+ const f = (t) => 1 - Math.pow(1 - t, a)
69
+ f.invert = (t) => 1 - Math.pow(1 - t, exponent)
70
+ return f
71
+ }
72
+
73
+ /**
74
+ * @param {number} circularity
75
+ * @returns {function(number):number}
76
+ */
77
+ export const circularScale = (circularity = 0.8) => {
78
+ if (circularity == 0) return identity
79
+ if (circularity == 1) return (t) => Math.sqrt(t * (2 - t))
80
+ else {
81
+ const a = circularity / (1 - circularity)
82
+ return (t) => Math.sqrt(1 / (a * a) + t * (2 / a + 2 - t)) - 1 / a
83
+ }
84
+ }
85
+
86
+ /**
87
+ * @param {number} circularity
88
+ * @returns {function(number):number}
89
+ */
90
+ export const circularInverseScale = (circularity = 0.8) => {
91
+ if (circularity == 0) return identity
92
+ const f = circularScale(circularity)
93
+ return (t) => 1 - f(1 - t)
94
+ }
95
+
96
+ //test
97
+ /*
98
+ const test = (f, fun, a, err = 1e-12) => {
99
+ for (let t = 0; t <= 1; t += 1 / 50) {
100
+ const er = t - f.invert(f(t))
101
+ if (Math.abs(er) < err) continue
102
+ console.log(fun, a, er)
103
+ }
104
+ }
105
+
106
+ for (let fun of [powerScale, powerInverseScale])
107
+ for (let exp = -30; exp <= 50; exp += 1) {
108
+ if (exp == 0) continue
109
+ const f = fun(exp)
110
+ test(f, fun, exp)
111
+ }
112
+
113
+
114
+ for (let fun of [exponentialScale, logarithmicScale])
115
+ for (let base = -20; base <= 20; base += 1) {
116
+ //if (exp == 0) continue
117
+ const f = fun(base)
118
+ test(f, fun, base, 1e-10)
119
+ }
120
+ */