gridviz 2.0.45 → 2.0.46
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/README.md +119 -119
- package/dist/gridviz.js +6937 -6937
- package/package.json +76 -76
- package/src/App.js +668 -668
- package/src/BackgroundLayer.js +182 -182
- package/src/BackgroundLayerWMS.js +131 -131
- package/src/Dataset.js +76 -76
- package/src/DatasetComponent.js +101 -101
- package/src/GeoCanvas.js +420 -420
- package/src/LabelLayer.js +190 -190
- package/src/Layer.js +92 -92
- package/src/Legend.js +86 -86
- package/src/LineLayer.js +150 -150
- package/src/Style.js +114 -114
- package/src/Tooltip.js +172 -172
- package/src/dataset/COGeo.js +24 -24
- package/src/dataset/CSVGrid.js +104 -104
- package/src/dataset/GeoTIFF.js +127 -127
- package/src/dataset/GridTile.js +41 -41
- package/src/dataset/TiledGrid.js +264 -264
- package/src/index.js +177 -176
- package/src/legend/ColorCategoryLegend.js +124 -124
- package/src/legend/ColorDiscreteLegend.js +103 -103
- package/src/legend/ColorLegend.js +124 -124
- package/src/legend/SegmentOrientationLegend.js +87 -87
- package/src/legend/SegmentWidthLegend.js +97 -97
- package/src/legend/SizeLegend.js +141 -141
- package/src/style/CompositionStyle.js +300 -300
- package/src/style/ContourStyle.js +54 -54
- package/src/style/DotDensityStyle.js +156 -156
- package/src/style/JoyPlotStyle.js +135 -135
- package/src/style/LegoStyle.js +112 -112
- package/src/style/MosaicStyle.js +107 -107
- package/src/style/NinjaStarStyle.js +124 -124
- package/src/style/PillarStyle.js +230 -230
- package/src/style/SegmentStyle.js +142 -142
- package/src/style/ShapeColorSizeStyle.js +126 -126
- package/src/style/SideCatStyle.js +172 -172
- package/src/style/SideStyle.js +218 -218
- package/src/style/SquareColorCatWGLStyle.js +120 -120
- package/src/style/SquareColorWGLStyle.js +146 -146
- package/src/style/StrokeStyle.js +131 -131
- package/src/style/TanakaStyle.js +160 -160
- package/src/style/TextStyle.js +132 -132
- package/src/utils/Utils.js +35 -35
- package/src/utils/WebGLRectangleColoring.js +106 -106
- package/src/utils/WebGLSquareColoring.js +118 -118
- package/src/utils/WebGLSquareColoringAdvanced.js +230 -230
- package/src/utils/WebGLSquareColoringCatAdvanced.js +133 -133
- package/src/utils/WebGLSquareColoringKS.js +153 -153
- package/src/utils/stretching.js +131 -131
- package/src/utils/webGLUtils.js +71 -71
- package/src/utils/zoomUtils.js +142 -142
package/src/utils/zoomUtils.js
CHANGED
|
@@ -1,142 +1,142 @@
|
|
|
1
|
-
//@ts-check
|
|
2
|
-
'use strict'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
* @param {import("../App").App} app
|
|
7
|
-
* @param {number} zfTarget
|
|
8
|
-
* @param {number} factor
|
|
9
|
-
* @param {number} delayMs
|
|
10
|
-
* @param {function|undefined} callback
|
|
11
|
-
* @param {number} delayBeforeCallBackMs
|
|
12
|
-
* @returns
|
|
13
|
-
*/
|
|
14
|
-
export function zoomTo(
|
|
15
|
-
app,
|
|
16
|
-
zfTarget,
|
|
17
|
-
factor = 1.01,
|
|
18
|
-
delayMs = 0,
|
|
19
|
-
callback = undefined,
|
|
20
|
-
delayBeforeCallBackMs = 0
|
|
21
|
-
) {
|
|
22
|
-
//ensure good factor value: >1
|
|
23
|
-
factor = factor || 1.01
|
|
24
|
-
if (factor < 1) {
|
|
25
|
-
console.error('Unexpected value for factor: ' + factor + '. Set to default value 1.01')
|
|
26
|
-
factor = 1.01
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const zfIni = app.getZoomFactor()
|
|
30
|
-
if (zfTarget == zfIni) return
|
|
31
|
-
if (zfTarget < zfIni) factor = 1 / factor
|
|
32
|
-
let zf = zfIni
|
|
33
|
-
let timer = setInterval(() => {
|
|
34
|
-
//compute new zoom level
|
|
35
|
-
zf = app.getZoomFactor() * factor
|
|
36
|
-
if (zfTarget > zfIni && zf > zfTarget) zf = zfTarget
|
|
37
|
-
if (zfTarget < zfIni && zf < zfTarget) zf = zfTarget
|
|
38
|
-
|
|
39
|
-
//set new zoom level
|
|
40
|
-
app.setZoomFactor(zf)
|
|
41
|
-
app.redraw()
|
|
42
|
-
|
|
43
|
-
//target reached
|
|
44
|
-
if (zf == zfTarget) {
|
|
45
|
-
clearInterval(timer)
|
|
46
|
-
//trigger callback, if any
|
|
47
|
-
if (callback)
|
|
48
|
-
setTimeout(() => {
|
|
49
|
-
callback()
|
|
50
|
-
}, delayBeforeCallBackMs)
|
|
51
|
-
}
|
|
52
|
-
}, delayMs)
|
|
53
|
-
return timer
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
*
|
|
58
|
-
* @param {import("../App").App} app
|
|
59
|
-
* @param {number} xTarget
|
|
60
|
-
* @param {number} yTarget
|
|
61
|
-
* @param {number} zfTarget
|
|
62
|
-
* @param {number} progressFactorPix
|
|
63
|
-
* @param {number} delayMs
|
|
64
|
-
* @param {function|undefined} callback
|
|
65
|
-
* @param {number} delayBeforeCallBackMs
|
|
66
|
-
* @returns
|
|
67
|
-
*/
|
|
68
|
-
export function goToStraight(
|
|
69
|
-
app,
|
|
70
|
-
xTarget = NaN,
|
|
71
|
-
yTarget = NaN,
|
|
72
|
-
zfTarget = NaN,
|
|
73
|
-
progressFactorPix = 5,
|
|
74
|
-
delayMs = 0,
|
|
75
|
-
callback = undefined,
|
|
76
|
-
delayBeforeCallBackMs = 0
|
|
77
|
-
) {
|
|
78
|
-
//store initial position/zoom
|
|
79
|
-
const zfIni = app.getZoomFactor()
|
|
80
|
-
const cIni = app.getGeoCenter()
|
|
81
|
-
|
|
82
|
-
//default
|
|
83
|
-
xTarget = isNaN(xTarget) ? cIni.x : xTarget
|
|
84
|
-
yTarget = isNaN(yTarget) ? cIni.y : yTarget
|
|
85
|
-
zfTarget = isNaN(zfTarget) ? zfIni : zfTarget
|
|
86
|
-
|
|
87
|
-
//prepare for pan
|
|
88
|
-
const dx = xTarget - cIni.x
|
|
89
|
-
const dy = yTarget - cIni.y
|
|
90
|
-
let d = Math.hypot(dx, dy)
|
|
91
|
-
const ddx = (progressFactorPix * zfIni * dx) / d
|
|
92
|
-
const ddy = (progressFactorPix * zfIni * dy) / d
|
|
93
|
-
|
|
94
|
-
//prepare for zoom
|
|
95
|
-
let r = zfTarget / zfIni
|
|
96
|
-
const n = d / (progressFactorPix * zfIni)
|
|
97
|
-
const zoomFactor = d > 0 ? Math.pow(r, 1 / n) : Math.pow(r, 1 / 10) //TODO not 10 ?
|
|
98
|
-
|
|
99
|
-
//timer
|
|
100
|
-
let timer = setInterval(() => {
|
|
101
|
-
//compute and set new position
|
|
102
|
-
if (d > 0) {
|
|
103
|
-
const c = app.getGeoCenter()
|
|
104
|
-
let nx = c.x + ddx
|
|
105
|
-
let ny = c.y + ddy
|
|
106
|
-
//if went too far, stop at target values
|
|
107
|
-
if (nx < xTarget && xTarget < c.x) nx = xTarget
|
|
108
|
-
if (c.x < xTarget && xTarget < nx) nx = xTarget
|
|
109
|
-
if (ny < yTarget && yTarget < c.y) ny = yTarget
|
|
110
|
-
if (c.y < yTarget && yTarget < ny) ny = yTarget
|
|
111
|
-
app.setGeoCenter({ x: nx, y: ny })
|
|
112
|
-
if (nx == xTarget && ny == yTarget) d = 0
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
//compute and set new zoom
|
|
116
|
-
if (r != 1) {
|
|
117
|
-
const zf = app.getZoomFactor()
|
|
118
|
-
let nzf = zoomFactor * zf
|
|
119
|
-
//if went too far, stop at target values
|
|
120
|
-
if (nzf < zfTarget && zfTarget < zf) nzf = zfTarget
|
|
121
|
-
if (zf < zfTarget && zfTarget < nzf) nzf = zfTarget
|
|
122
|
-
app.setZoomFactor(nzf)
|
|
123
|
-
if (nzf == zfTarget) r = 1
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
//redraw
|
|
127
|
-
app.redraw()
|
|
128
|
-
|
|
129
|
-
//if target reached, stop
|
|
130
|
-
if (d == 0 && r == 1) {
|
|
131
|
-
//console.log("OK !")
|
|
132
|
-
clearInterval(timer)
|
|
133
|
-
//trigger callback, if any
|
|
134
|
-
if (callback)
|
|
135
|
-
setTimeout(() => {
|
|
136
|
-
callback()
|
|
137
|
-
}, delayBeforeCallBackMs)
|
|
138
|
-
}
|
|
139
|
-
}, delayMs)
|
|
140
|
-
|
|
141
|
-
return timer
|
|
142
|
-
}
|
|
1
|
+
//@ts-check
|
|
2
|
+
'use strict'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @param {import("../App").App} app
|
|
7
|
+
* @param {number} zfTarget
|
|
8
|
+
* @param {number} factor
|
|
9
|
+
* @param {number} delayMs
|
|
10
|
+
* @param {function|undefined} callback
|
|
11
|
+
* @param {number} delayBeforeCallBackMs
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
export function zoomTo(
|
|
15
|
+
app,
|
|
16
|
+
zfTarget,
|
|
17
|
+
factor = 1.01,
|
|
18
|
+
delayMs = 0,
|
|
19
|
+
callback = undefined,
|
|
20
|
+
delayBeforeCallBackMs = 0
|
|
21
|
+
) {
|
|
22
|
+
//ensure good factor value: >1
|
|
23
|
+
factor = factor || 1.01
|
|
24
|
+
if (factor < 1) {
|
|
25
|
+
console.error('Unexpected value for factor: ' + factor + '. Set to default value 1.01')
|
|
26
|
+
factor = 1.01
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const zfIni = app.getZoomFactor()
|
|
30
|
+
if (zfTarget == zfIni) return
|
|
31
|
+
if (zfTarget < zfIni) factor = 1 / factor
|
|
32
|
+
let zf = zfIni
|
|
33
|
+
let timer = setInterval(() => {
|
|
34
|
+
//compute new zoom level
|
|
35
|
+
zf = app.getZoomFactor() * factor
|
|
36
|
+
if (zfTarget > zfIni && zf > zfTarget) zf = zfTarget
|
|
37
|
+
if (zfTarget < zfIni && zf < zfTarget) zf = zfTarget
|
|
38
|
+
|
|
39
|
+
//set new zoom level
|
|
40
|
+
app.setZoomFactor(zf)
|
|
41
|
+
app.redraw()
|
|
42
|
+
|
|
43
|
+
//target reached
|
|
44
|
+
if (zf == zfTarget) {
|
|
45
|
+
clearInterval(timer)
|
|
46
|
+
//trigger callback, if any
|
|
47
|
+
if (callback)
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
callback()
|
|
50
|
+
}, delayBeforeCallBackMs)
|
|
51
|
+
}
|
|
52
|
+
}, delayMs)
|
|
53
|
+
return timer
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
*
|
|
58
|
+
* @param {import("../App").App} app
|
|
59
|
+
* @param {number} xTarget
|
|
60
|
+
* @param {number} yTarget
|
|
61
|
+
* @param {number} zfTarget
|
|
62
|
+
* @param {number} progressFactorPix
|
|
63
|
+
* @param {number} delayMs
|
|
64
|
+
* @param {function|undefined} callback
|
|
65
|
+
* @param {number} delayBeforeCallBackMs
|
|
66
|
+
* @returns
|
|
67
|
+
*/
|
|
68
|
+
export function goToStraight(
|
|
69
|
+
app,
|
|
70
|
+
xTarget = NaN,
|
|
71
|
+
yTarget = NaN,
|
|
72
|
+
zfTarget = NaN,
|
|
73
|
+
progressFactorPix = 5,
|
|
74
|
+
delayMs = 0,
|
|
75
|
+
callback = undefined,
|
|
76
|
+
delayBeforeCallBackMs = 0
|
|
77
|
+
) {
|
|
78
|
+
//store initial position/zoom
|
|
79
|
+
const zfIni = app.getZoomFactor()
|
|
80
|
+
const cIni = app.getGeoCenter()
|
|
81
|
+
|
|
82
|
+
//default
|
|
83
|
+
xTarget = isNaN(xTarget) ? cIni.x : xTarget
|
|
84
|
+
yTarget = isNaN(yTarget) ? cIni.y : yTarget
|
|
85
|
+
zfTarget = isNaN(zfTarget) ? zfIni : zfTarget
|
|
86
|
+
|
|
87
|
+
//prepare for pan
|
|
88
|
+
const dx = xTarget - cIni.x
|
|
89
|
+
const dy = yTarget - cIni.y
|
|
90
|
+
let d = Math.hypot(dx, dy)
|
|
91
|
+
const ddx = (progressFactorPix * zfIni * dx) / d
|
|
92
|
+
const ddy = (progressFactorPix * zfIni * dy) / d
|
|
93
|
+
|
|
94
|
+
//prepare for zoom
|
|
95
|
+
let r = zfTarget / zfIni
|
|
96
|
+
const n = d / (progressFactorPix * zfIni)
|
|
97
|
+
const zoomFactor = d > 0 ? Math.pow(r, 1 / n) : Math.pow(r, 1 / 10) //TODO not 10 ?
|
|
98
|
+
|
|
99
|
+
//timer
|
|
100
|
+
let timer = setInterval(() => {
|
|
101
|
+
//compute and set new position
|
|
102
|
+
if (d > 0) {
|
|
103
|
+
const c = app.getGeoCenter()
|
|
104
|
+
let nx = c.x + ddx
|
|
105
|
+
let ny = c.y + ddy
|
|
106
|
+
//if went too far, stop at target values
|
|
107
|
+
if (nx < xTarget && xTarget < c.x) nx = xTarget
|
|
108
|
+
if (c.x < xTarget && xTarget < nx) nx = xTarget
|
|
109
|
+
if (ny < yTarget && yTarget < c.y) ny = yTarget
|
|
110
|
+
if (c.y < yTarget && yTarget < ny) ny = yTarget
|
|
111
|
+
app.setGeoCenter({ x: nx, y: ny })
|
|
112
|
+
if (nx == xTarget && ny == yTarget) d = 0
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
//compute and set new zoom
|
|
116
|
+
if (r != 1) {
|
|
117
|
+
const zf = app.getZoomFactor()
|
|
118
|
+
let nzf = zoomFactor * zf
|
|
119
|
+
//if went too far, stop at target values
|
|
120
|
+
if (nzf < zfTarget && zfTarget < zf) nzf = zfTarget
|
|
121
|
+
if (zf < zfTarget && zfTarget < nzf) nzf = zfTarget
|
|
122
|
+
app.setZoomFactor(nzf)
|
|
123
|
+
if (nzf == zfTarget) r = 1
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
//redraw
|
|
127
|
+
app.redraw()
|
|
128
|
+
|
|
129
|
+
//if target reached, stop
|
|
130
|
+
if (d == 0 && r == 1) {
|
|
131
|
+
//console.log("OK !")
|
|
132
|
+
clearInterval(timer)
|
|
133
|
+
//trigger callback, if any
|
|
134
|
+
if (callback)
|
|
135
|
+
setTimeout(() => {
|
|
136
|
+
callback()
|
|
137
|
+
}, delayBeforeCallBackMs)
|
|
138
|
+
}
|
|
139
|
+
}, delayMs)
|
|
140
|
+
|
|
141
|
+
return timer
|
|
142
|
+
}
|