@pirireis/webglobeplugins 0.9.6 → 0.9.8

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 (304) hide show
  1. package/{Math → dist/Math}/angle-calculation.js +15 -14
  2. package/dist/Math/arc.js +65 -0
  3. package/{Math → dist/Math}/bounds/line-bbox.js +188 -225
  4. package/dist/Math/constants.js +9 -0
  5. package/{Math/frustum/camera.ts → dist/Math/frustum/camera.js} +24 -32
  6. package/{Math/frustum/from-globeinfo.ts → dist/Math/frustum/from-globeinfo.js} +48 -63
  7. package/dist/Math/frustum/types.js +2 -0
  8. package/{Math/globe-util/horizon-plane.ts → dist/Math/globe-util/horizon-plane.js} +112 -137
  9. package/dist/Math/index.js +1 -0
  10. package/dist/Math/juction/arc-plane.js +83 -0
  11. package/dist/Math/juction/line-sphere.js +25 -0
  12. package/{Math/juction/plane-plane.ts → dist/Math/juction/plane-plane.js} +58 -66
  13. package/dist/Math/line.js +56 -0
  14. package/dist/Math/matrix4.js +1 -0
  15. package/{Math → dist/Math}/methods.js +201 -237
  16. package/dist/Math/plane.js +60 -0
  17. package/{Math/quaternion.ts → dist/Math/quaternion.js} +104 -120
  18. package/dist/Math/types.js +2 -0
  19. package/dist/Math/utils.js +4 -0
  20. package/{Math/vec3.ts → dist/Math/vec3.js} +126 -155
  21. package/dist/algorithms/search-binary.js +19 -0
  22. package/dist/altitude-locator/adaptors.js +1 -0
  23. package/{altitude-locator → dist/altitude-locator}/draw-subset-obj.js +18 -27
  24. package/dist/altitude-locator/keymethod.js +1 -0
  25. package/{altitude-locator → dist/altitude-locator}/plugin.js +341 -439
  26. package/{altitude-locator → dist/altitude-locator}/types.js +23 -26
  27. package/{arrowfield → dist/arrowfield}/adaptor.js +14 -11
  28. package/dist/arrowfield/index.js +10 -0
  29. package/{arrowfield → dist/arrowfield}/plugin.js +86 -128
  30. package/dist/bearing-line/index.js +8 -0
  31. package/{bearing-line → dist/bearing-line}/plugin.js +449 -512
  32. package/{circle-line-chain → dist/circle-line-chain}/chain-list-map.js +205 -221
  33. package/dist/circle-line-chain/init.js +1 -0
  34. package/{circle-line-chain → dist/circle-line-chain}/plugin.js +424 -469
  35. package/dist/circle-line-chain/util.js +5 -0
  36. package/{compass-rose → dist/compass-rose}/compass-rose-padding-flat.js +225 -266
  37. package/{compass-rose → dist/compass-rose}/compass-text-writer.js +153 -173
  38. package/dist/compass-rose/index.js +7 -0
  39. package/{compassrose → dist/compassrose}/compassrose.js +296 -341
  40. package/dist/compassrose/index.js +8 -0
  41. package/dist/globe-types.js +1 -0
  42. package/dist/heatwave/index.js +10 -0
  43. package/{heatwave → dist/heatwave}/isobar/objectarraylabels.js +202 -247
  44. package/{heatwave → dist/heatwave}/isobar/plugin.js +343 -340
  45. package/{heatwave → dist/heatwave}/isobar/quadtreecontours.js +300 -336
  46. package/{heatwave → dist/heatwave}/plugins/heatwaveglobeshell.js +206 -258
  47. package/dist/index.js +58 -0
  48. package/{jest.config.js → dist/jest.config.js} +7 -6
  49. package/{partialrings → dist/partialrings}/buffer-manager.js +81 -89
  50. package/dist/partialrings/index.js +41 -0
  51. package/{partialrings → dist/partialrings}/plugin.js +135 -160
  52. package/{partialrings → dist/partialrings}/program.js +204 -242
  53. package/{pin → dist/pin}/pin-object-array.js +305 -381
  54. package/{pin → dist/pin}/pin-point-totem.js +60 -77
  55. package/{point-heat-map → dist/point-heat-map}/adaptors/timetracksplugin-format-to-this.js +66 -78
  56. package/dist/point-heat-map/index.js +1 -0
  57. package/{point-heat-map → dist/point-heat-map}/plugin-webworker.js +126 -151
  58. package/{point-heat-map → dist/point-heat-map}/point-to-heat-map-flow.js +127 -150
  59. package/dist/point-tracks/key-methods.js +5 -0
  60. package/{point-tracks → dist/point-tracks}/plugin.js +338 -394
  61. package/dist/programs/arrowfield/index.js +7 -0
  62. package/{programs → dist/programs}/arrowfield/logic.js +144 -173
  63. package/{programs → dist/programs}/arrowfield/object.js +66 -89
  64. package/{programs → dist/programs}/data2legend/density-to-legend.js +76 -90
  65. package/{programs → dist/programs}/data2legend/point-to-density-texture.js +76 -90
  66. package/dist/programs/float2legendwithratio/index.js +8 -0
  67. package/{programs → dist/programs}/float2legendwithratio/logic.js +122 -145
  68. package/{programs → dist/programs}/float2legendwithratio/object.js +110 -141
  69. package/{programs → dist/programs}/globe-util/is-globe-moved.js +21 -27
  70. package/dist/programs/globeshell/index.js +8 -0
  71. package/dist/programs/globeshell/noise/noises.js +1 -0
  72. package/dist/programs/globeshell/wiggle/index.js +8 -0
  73. package/{programs → dist/programs}/globeshell/wiggle/logic.js +246 -272
  74. package/{programs → dist/programs}/globeshell/wiggle/object.js +72 -93
  75. package/dist/programs/helpers/blender/index.js +1 -0
  76. package/{programs → dist/programs}/helpers/blender/program.js +61 -73
  77. package/dist/programs/helpers/fadeaway/index.js +7 -0
  78. package/{programs → dist/programs}/helpers/fadeaway/logic.js +49 -53
  79. package/dist/programs/helpers/fadeaway/object.js +20 -0
  80. package/dist/programs/helpers/index.js +8 -0
  81. package/dist/programs/index.js +58 -0
  82. package/dist/programs/interface.js +1 -0
  83. package/{programs → dist/programs}/line-on-globe/angled-line.js +125 -155
  84. package/{programs → dist/programs}/line-on-globe/circle-accurate-3d.js +95 -121
  85. package/{programs → dist/programs}/line-on-globe/circle-accurate-flat.js +158 -204
  86. package/{programs → dist/programs}/line-on-globe/circle-accurate.js +117 -141
  87. package/{programs → dist/programs}/line-on-globe/circle.js +111 -135
  88. package/{programs → dist/programs}/line-on-globe/degree-padding-around-circle-3d.js +111 -140
  89. package/dist/programs/line-on-globe/index.js +1 -0
  90. package/{programs → dist/programs}/line-on-globe/lines-color-instanced-flat.js +91 -106
  91. package/{programs/line-on-globe/linestrip.ts → dist/programs/line-on-globe/linestrip.js} +108 -165
  92. package/{programs → dist/programs}/line-on-globe/naive-accurate-flexible.js +127 -171
  93. package/{programs → dist/programs}/line-on-globe/to-the-surface.js +83 -101
  94. package/dist/programs/line-on-globe/util.js +8 -0
  95. package/{programs → dist/programs}/picking/pickable-renderer.js +107 -135
  96. package/{programs → dist/programs}/point-on-globe/element-globe-surface-glow.js +101 -127
  97. package/{programs → dist/programs}/point-on-globe/element-point-glow.js +88 -119
  98. package/{programs → dist/programs}/point-on-globe/square-pixel-point.js +126 -141
  99. package/{programs/programcache.ts → dist/programs/programcache.js} +131 -131
  100. package/{programs → dist/programs}/rings/distancering/circleflatprogram.js +115 -95
  101. package/{programs → dist/programs}/rings/distancering/circlepaddingfreeangleprogram.js +320 -329
  102. package/{programs → dist/programs}/rings/distancering/circlepaddysharedbuffer.js +357 -420
  103. package/dist/programs/rings/distancering/index.js +14 -0
  104. package/{programs → dist/programs}/rings/distancering/paddyflatprogram.js +120 -94
  105. package/{programs → dist/programs}/rings/distancering/paddyflatprogram2d.js +122 -98
  106. package/{programs → dist/programs}/rings/distancering/paddyflatprogram3d.js +120 -94
  107. package/dist/programs/rings/distancering/shader.js +1 -0
  108. package/dist/programs/rings/index.js +17 -0
  109. package/{programs → dist/programs}/rings/partial-ring/piece-of-pie.js +181 -221
  110. package/{programs → dist/programs}/totems/camerauniformblock.js +147 -184
  111. package/{programs → dist/programs}/totems/canvas-webglobe-info.js +102 -128
  112. package/{programs → dist/programs}/totems/gpu-selection-uniform-block.js +104 -128
  113. package/dist/programs/totems/index.js +40 -0
  114. package/dist/programs/two-d/pixel-circle.js +1 -0
  115. package/{programs → dist/programs}/two-d/pixel-padding-for-compass.js +101 -113
  116. package/{programs → dist/programs}/util.js +17 -20
  117. package/dist/programs/vectorfields/index.js +23 -0
  118. package/{programs → dist/programs}/vectorfields/logics/drawrectangleparticles.js +65 -83
  119. package/dist/programs/vectorfields/logics/index.js +12 -0
  120. package/{programs → dist/programs}/vectorfields/logics/pixelbased.js +84 -103
  121. package/{programs → dist/programs}/vectorfields/logics/ubo.js +55 -56
  122. package/{programs → dist/programs}/vectorfields/pingpongbuffermanager.js +76 -80
  123. package/dist/rangerings/enum.js +5 -0
  124. package/dist/rangerings/index.js +15 -0
  125. package/{rangerings → dist/rangerings}/plugin.js +560 -649
  126. package/{rangerings → dist/rangerings}/rangeringangletext.js +329 -368
  127. package/{rangerings → dist/rangerings}/ring-account.js +117 -129
  128. package/{shaders → dist/shaders}/fragment-toy/firework.js +5 -2
  129. package/{shaders → dist/shaders}/fragment-toy/singularity.js +5 -5
  130. package/{shape-on-terrain/arc/naive/plugin.ts → dist/shape-on-terrain/arc/naive/plugin.js} +252 -304
  131. package/{timetracks → dist/timetracks}/adaptors-line-strip.js +71 -80
  132. package/{timetracks → dist/timetracks}/adaptors.js +122 -133
  133. package/dist/timetracks/index.js +19 -0
  134. package/{timetracks → dist/timetracks}/plugin-line-strip.js +250 -295
  135. package/{timetracks → dist/timetracks}/plugin.js +258 -304
  136. package/{timetracks → dist/timetracks}/program-line-strip.js +416 -493
  137. package/{timetracks → dist/timetracks}/program.js +464 -542
  138. package/{timetracks → dist/timetracks}/programpoint-line-strip.js +101 -122
  139. package/{timetracks → dist/timetracks}/programpoint.js +101 -122
  140. package/{types.ts → dist/types.js} +15 -17
  141. package/{util → dist/util}/account/bufferoffsetmanager.js +179 -209
  142. package/dist/util/account/index.js +23 -0
  143. package/{util/account/single-attribute-buffer-management/buffer-manager.ts → dist/util/account/single-attribute-buffer-management/buffer-manager.js} +108 -119
  144. package/{util/account/single-attribute-buffer-management/buffer-orchestrator.ts → dist/util/account/single-attribute-buffer-management/buffer-orchestrator.js} +150 -173
  145. package/dist/util/account/single-attribute-buffer-management/index.js +9 -0
  146. package/{util/account/single-attribute-buffer-management/object-store.ts → dist/util/account/single-attribute-buffer-management/object-store.js} +51 -65
  147. package/dist/util/account/single-attribute-buffer-management/types.js +2 -0
  148. package/{util → dist/util}/account/util.js +22 -22
  149. package/dist/util/algorithms/index.js +1 -0
  150. package/{util → dist/util}/algorithms/search-binary.js +28 -26
  151. package/dist/util/check/get.js +18 -0
  152. package/dist/util/check/index.js +1 -0
  153. package/dist/util/check/typecheck.js +49 -0
  154. package/{util → dist/util}/geometry/index.js +51 -53
  155. package/{util/gl-util/buffer/attribute-loader.ts → dist/util/gl-util/buffer/attribute-loader.js} +69 -85
  156. package/dist/util/gl-util/buffer/index.js +6 -0
  157. package/dist/util/gl-util/buffer/types.js +1 -0
  158. package/dist/util/gl-util/draw-options/methods.js +38 -0
  159. package/dist/util/gl-util/draw-options/types.js +15 -0
  160. package/{util/gl-util/uniform-block/manager.ts → dist/util/gl-util/uniform-block/manager.js} +156 -187
  161. package/dist/util/gl-util/uniform-block/shader.js +1 -0
  162. package/dist/util/gl-util/uniform-block/types.js +8 -0
  163. package/{util → dist/util}/heatwavedatamanager/datamanager.js +152 -168
  164. package/dist/util/heatwavedatamanager/index.js +10 -0
  165. package/{util → dist/util}/heatwavedatamanager/pointcoordinatesdatacalculator.js +122 -133
  166. package/{util → dist/util}/heatwavedatamanager/pointcoordsmeta.js +20 -22
  167. package/dist/util/index.js +57 -0
  168. package/dist/util/interpolation/index.js +1 -0
  169. package/dist/util/interpolation/timetrack/index.js +5 -0
  170. package/{util → dist/util}/interpolation/timetrack/timetrack-interpolator.js +79 -88
  171. package/{util → dist/util}/interpolation/timetrack/web-worker-str.js +5 -2
  172. package/{util → dist/util}/interpolation/timetrack/web-worker.js +48 -51
  173. package/{util → dist/util}/jshelpers/data-filler.js +20 -19
  174. package/{util → dist/util}/jshelpers/equality.js +20 -17
  175. package/dist/util/jshelpers/index.js +37 -0
  176. package/{util → dist/util}/jshelpers/timefilters.js +32 -32
  177. package/{util → dist/util}/picking/fence.js +46 -46
  178. package/{util → dist/util}/picking/picker-displayer.js +139 -177
  179. package/{util → dist/util}/programs/draw-texture-on-canvas.js +69 -82
  180. package/dist/util/programs/index.js +17 -0
  181. package/{util → dist/util}/programs/shapesonglobe.js +174 -206
  182. package/{util → dist/util}/programs/supersampletotextures.js +103 -132
  183. package/{util → dist/util}/programs/texturetoglobe.js +133 -154
  184. package/{util/shaderfunctions/geometrytransformations.ts → dist/util/shaderfunctions/geometrytransformations.js} +68 -116
  185. package/dist/util/shaderfunctions/index.js +18 -0
  186. package/{util → dist/util}/shaderfunctions/nodata.js +5 -4
  187. package/{util → dist/util}/shaderfunctions/noisefunctions.js +9 -10
  188. package/{util/surface-line-data/arc-bboxes.ts → dist/util/surface-line-data/arc-bboxes.js} +25 -42
  189. package/{util → dist/util}/surface-line-data/arcs-to-cuts.js +50 -74
  190. package/dist/util/surface-line-data/cut-arc.js +1 -0
  191. package/{util/surface-line-data/flow.ts → dist/util/surface-line-data/flow.js} +28 -52
  192. package/dist/util/surface-line-data/rbush-manager.js +1 -0
  193. package/dist/util/surface-line-data/types.js +1 -0
  194. package/dist/util/surface-line-data/web-worker.js +1 -0
  195. package/dist/util/webglobe/gldefaultstates.js +7 -0
  196. package/dist/util/webglobe/index.js +18 -0
  197. package/{util → dist/util}/webglobe/rasteroverlay.js +78 -96
  198. package/{util/webglobjectbuilders.ts → dist/util/webglobjectbuilders.js} +388 -456
  199. package/{util → dist/util}/webglobjectbuilders1.js +237 -271
  200. package/{waveparticles → dist/waveparticles}/adaptor.js +17 -16
  201. package/dist/waveparticles/index.js +10 -0
  202. package/{waveparticles → dist/waveparticles}/plugin.js +266 -313
  203. package/{wind → dist/wind}/imagetovectorfieldandmagnitude.js +35 -39
  204. package/dist/wind/index.js +14 -0
  205. package/{wind → dist/wind}/plugin.js +681 -812
  206. package/{wind → dist/wind}/vectorfieldimage.js +25 -27
  207. package/{write-text → dist/write-text}/attached-text-writer.js +91 -105
  208. package/{write-text → dist/write-text}/context-text.js +98 -125
  209. package/{write-text → dist/write-text}/context-text3.js +155 -178
  210. package/dist/write-text/index.js +5 -0
  211. package/{write-text → dist/write-text}/writer-plugin.js +8 -7
  212. package/package.json +5 -2
  213. package/Math/arc.ts +0 -76
  214. package/Math/constants.ts +0 -11
  215. package/Math/frustum/types.ts +0 -11
  216. package/Math/index.js +0 -0
  217. package/Math/juction/arc-plane.ts +0 -114
  218. package/Math/juction/line-sphere.ts +0 -30
  219. package/Math/line.ts +0 -70
  220. package/Math/matrix4.ts +0 -0
  221. package/Math/plane.ts +0 -86
  222. package/Math/roadmap.md +0 -10
  223. package/Math/types.ts +0 -45
  224. package/Math/utils.js +0 -3
  225. package/algorithms/search-binary.js +0 -14
  226. package/altitude-locator/adaptors.js +0 -0
  227. package/altitude-locator/keymethod.js +0 -0
  228. package/arrowfield/index.js +0 -3
  229. package/bearing-line/index.js +0 -2
  230. package/circle-line-chain/init.js +0 -0
  231. package/circle-line-chain/readme.md +0 -57
  232. package/circle-line-chain/util.js +0 -1
  233. package/compass-rose/index.js +0 -3
  234. package/compassrose/index.js +0 -2
  235. package/depth-locator/readme.md +0 -26
  236. package/globe-types.ts +0 -13
  237. package/heatwave/index.js +0 -4
  238. package/partialrings/goals.md +0 -17
  239. package/partialrings/index.js +0 -3
  240. package/point-heat-map/index.js +0 -0
  241. package/point-heat-map/readme.md +0 -15
  242. package/point-tracks/key-methods.js +0 -3
  243. package/programs/arrowfield/index.js +0 -2
  244. package/programs/float2legendwithratio/index.js +0 -3
  245. package/programs/globeshell/index.js +0 -2
  246. package/programs/globeshell/noise/noises.js +0 -0
  247. package/programs/globeshell/wiggle/index.js +0 -6
  248. package/programs/helpers/blender/index.js +0 -0
  249. package/programs/helpers/fadeaway/index.js +0 -3
  250. package/programs/helpers/fadeaway/object.js +0 -20
  251. package/programs/helpers/index.js +0 -2
  252. package/programs/index.js +0 -21
  253. package/programs/interface.ts +0 -7
  254. package/programs/line-on-globe/index.js +0 -0
  255. package/programs/line-on-globe/util.js +0 -8
  256. package/programs/rings/distancering/index.js +0 -5
  257. package/programs/rings/distancering/shader.js +0 -0
  258. package/programs/rings/index.js +0 -1
  259. package/programs/totems/camerauniformblock.d.ts +0 -48
  260. package/programs/totems/index.ts +0 -2
  261. package/programs/two-d/pixel-circle.js +0 -0
  262. package/programs/vectorfields/index.js +0 -3
  263. package/programs/vectorfields/logics/index.js +0 -5
  264. package/publish.bat +0 -60
  265. package/rangerings/enum.js +0 -3
  266. package/rangerings/index.js +0 -5
  267. package/shape-on-terrain/goal.md +0 -12
  268. package/tests/Math/junction/arc-plane.test.ts +0 -133
  269. package/tests/Math/junction/plane-plane.test.ts +0 -82
  270. package/tests/Math/plane.test.ts +0 -43
  271. package/tests/Math/vec3.test.ts +0 -14
  272. package/timetracks/index.js +0 -6
  273. package/timetracks/readme.md +0 -1
  274. package/tsconfig.json +0 -22
  275. package/util/account/index.js +0 -6
  276. package/util/account/single-attribute-buffer-management/index.ts +0 -13
  277. package/util/account/single-attribute-buffer-management/types.ts +0 -39
  278. package/util/algorithms/index.js +0 -0
  279. package/util/check/get.js +0 -13
  280. package/util/check/index.js +0 -0
  281. package/util/check/typecheck.js +0 -39
  282. package/util/gl-util/buffer/index.ts +0 -6
  283. package/util/gl-util/buffer/types.ts +0 -13
  284. package/util/gl-util/draw-options/methods.ts +0 -66
  285. package/util/gl-util/draw-options/types.ts +0 -28
  286. package/util/gl-util/uniform-block/roadmap.md +0 -70
  287. package/util/gl-util/uniform-block/shader.js +0 -0
  288. package/util/gl-util/uniform-block/types.ts +0 -27
  289. package/util/heatwavedatamanager/index.js +0 -3
  290. package/util/index.js +0 -13
  291. package/util/interpolation/index.js +0 -0
  292. package/util/interpolation/timetrack/index.js +0 -9
  293. package/util/jshelpers/index.js +0 -1
  294. package/util/programs/index.js +0 -1
  295. package/util/shaderfunctions/index.js +0 -2
  296. package/util/surface-line-data/cut-arc.js +0 -0
  297. package/util/surface-line-data/rbush-manager.js +0 -0
  298. package/util/surface-line-data/types.ts +0 -27
  299. package/util/surface-line-data/web-worker.js +0 -0
  300. package/util/webglobe/gldefaultstates.js +0 -5
  301. package/util/webglobe/index.js +0 -2
  302. package/waveparticles/index.js +0 -3
  303. package/wind/index.js +0 -5
  304. package/write-text/index.js +0 -1
@@ -1,168 +1,152 @@
1
- /**
2
- * todo:
3
- * data must be processed before being set to the cache
4
- */
5
-
6
- export default class DataManager {
7
- /**
8
- *
9
- * @param {Array<number>} timeEpocs | array of time epocs
10
- * @param {Function} fetchMethod | fetchMethod(time) => Promise<data>
11
- * @param {boolean} autoDownload | auto download data or not
12
- */
13
- constructor(timeEpocs, fetchMethod, { autoDownload = true } = {}) {
14
-
15
- this._timeEpocs = timeEpocs.sort((a, b) => a - b);
16
- this._datas = []; this._datas.length = timeEpocs.length;
17
-
18
- // in construction
19
- this._dataPromises = []; this._dataPromises.length = timeEpocs.length;
20
-
21
- this._fetchMethod = fetchMethod;
22
- this._callbackmethods = [];
23
- this._callbackmethodOwners = [];
24
- this._lastTime = -1;
25
- this._lastIndex = -1;
26
- this.autoDownload(autoDownload);
27
- }
28
-
29
-
30
- autoDownload(bool, time) {
31
- if (!bool) {
32
- this._autoDownload = false;
33
- return;
34
- }
35
- let index = this._lastIndex === -1 ? 0 : this._lastIndex;
36
- if (time !== undefined) {
37
- if (time < this._timeEpocs[0] || time > this._timeEpocs[this._timeEpocs.length - 1]) {
38
- this._autoDownload = bool;
39
- return;
40
- }
41
- index = this._findIndex(time);
42
- }
43
-
44
- if (this._downloadStartIndex === index && this._autoDownload === bool) return;
45
- this._downloadStartIndex = index;
46
- this._autoDownload = bool;
47
- const recursion = (startId, currentDownloadId) => {
48
- if (startId !== this._downloadStartIndex) return;
49
- if (currentDownloadId < this._timeEpocs.length && this._autoDownload) {
50
- this._getData(currentDownloadId).then(() => {
51
- recursion(startId, currentDownloadId + 1);
52
- });
53
- }
54
- }
55
- recursion(index, index);
56
- // save index as start index
57
- //start recursive download
58
-
59
- // use started id as a flag to stop the download
60
- }
61
-
62
-
63
-
64
- /**
65
- * @param {number} time
66
- * It looks like async function is not needed here. changes just overwrites the previous changes.
67
- */
68
- updateTime(time) {
69
- if (time < this._timeEpocs[0] || time > this._timeEpocs[this._timeEpocs.length - 1]) {
70
- this._dontRender();
71
- return;
72
- }
73
- this._lastTime = time;
74
- const index = this._findIndex(time);
75
- const ratio = this._getRatio(time, index);
76
- Promise.all([this._getData(index - 1), this._getData(index)]).then((datas) => {
77
- if (this._lastTime === time) {
78
- this._lastIndex = index;
79
- this._ratio = ratio;
80
- this._pushCallback(ratio, datas);
81
- }
82
- });
83
- }
84
-
85
-
86
- register(key, callback) {
87
- if (this._callbackmethodOwners.indexOf(key) !== -1) {
88
- console.warn("key already registered, old one is unregistered");
89
- this.unregister(key);
90
- }
91
- this._callbackmethods.push(callback);
92
- this._callbackmethodOwners.push(key);
93
- if (this._lastIndex !== -1) callback(this._ratio, this._datas[this._lastIndex - 1], this._datas[this._lastIndex]);
94
- }
95
-
96
-
97
- /**
98
- * @param {*} key | id of the owner of the callback
99
- */
100
- unregister(key) {
101
- let index = this._callbackmethodOwners.indexOf(key);
102
- if (index !== -1) {
103
- this._callbackmethods.splice(index, 1);
104
- this._callbackmethodOwners.splice(index, 1);
105
- }
106
- if (this._callbackmethods.length === 0) {
107
- this.free();
108
- }
109
- }
110
-
111
-
112
- free() {
113
- this._callbackmethods = [];
114
- this._callbackmethodOwners = [];
115
- this._autoDownload = false;
116
- }
117
-
118
- _findIndex(time) {
119
- const { _timeEpocs } = this;
120
- let index = this._lastIndex === -1 ? 1 : this._lastIndex;
121
- if (this)
122
- if (time < _timeEpocs[index - 1]) {
123
- while (index > 1 && time < _timeEpocs[index - 1]) {
124
- index--;
125
- }
126
- } else if (time > _timeEpocs[index]) {
127
- while (index < _timeEpocs.length - 1 && time > _timeEpocs[index]) {
128
- index++;
129
- }
130
- }
131
- return index;
132
- }
133
-
134
-
135
- _getRatio(time, index) {
136
- return (time - this._timeEpocs[index - 1]) / (this._timeEpocs[index] - this._timeEpocs[index - 1]);
137
- }
138
-
139
-
140
- _pushCallback(ratio, datas) {
141
- for (let i = 0; i < this._callbackmethods.length; i++) {
142
- this._callbackmethods[i](ratio, ...datas);
143
- }
144
- }
145
-
146
-
147
- async _getData(index) {
148
- if (index < 0 || index >= this._timeEpocs.length) {
149
- throw new Error("Index out of range");
150
- }
151
- if (!this._datas[index]) {
152
- if (!this._dataPromises[index]) this._dataPromises[index] = this._fetchMethod(this._timeEpocs[index]).then((data) => {
153
- this._datas[index] = data;
154
- }, (error) => {
155
- console.error("error", error);
156
- }).finally(() => {
157
- this._dataPromises[index] = null;
158
- });
159
- }
160
- await this._dataPromises[index];
161
- return this._datas[index];
162
- }
163
-
164
- _dontRender() {
165
- this._pushCallback(0, [null, null]);
166
- }
167
-
168
- }
1
+ "use strict";
2
+ /**
3
+ * todo:
4
+ * data must be processed before being set to the cache
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ class DataManager {
8
+ /**
9
+ *
10
+ * @param {Array<number>} timeEpocs | array of time epocs
11
+ * @param {Function} fetchMethod | fetchMethod(time) => Promise<data>
12
+ * @param {boolean} autoDownload | auto download data or not
13
+ */
14
+ constructor(timeEpocs, fetchMethod, { autoDownload = true } = {}) {
15
+ this._timeEpocs = timeEpocs.sort((a, b) => a - b);
16
+ this._datas = [];
17
+ this._datas.length = timeEpocs.length;
18
+ // in construction
19
+ this._dataPromises = [];
20
+ this._dataPromises.length = timeEpocs.length;
21
+ this._fetchMethod = fetchMethod;
22
+ this._callbackmethods = [];
23
+ this._callbackmethodOwners = [];
24
+ this._lastTime = -1;
25
+ this._lastIndex = -1;
26
+ this.autoDownload(autoDownload);
27
+ }
28
+ autoDownload(bool, time) {
29
+ if (!bool) {
30
+ this._autoDownload = false;
31
+ return;
32
+ }
33
+ let index = this._lastIndex === -1 ? 0 : this._lastIndex;
34
+ if (time !== undefined) {
35
+ if (time < this._timeEpocs[0] || time > this._timeEpocs[this._timeEpocs.length - 1]) {
36
+ this._autoDownload = bool;
37
+ return;
38
+ }
39
+ index = this._findIndex(time);
40
+ }
41
+ if (this._downloadStartIndex === index && this._autoDownload === bool)
42
+ return;
43
+ this._downloadStartIndex = index;
44
+ this._autoDownload = bool;
45
+ const recursion = (startId, currentDownloadId) => {
46
+ if (startId !== this._downloadStartIndex)
47
+ return;
48
+ if (currentDownloadId < this._timeEpocs.length && this._autoDownload) {
49
+ this._getData(currentDownloadId).then(() => {
50
+ recursion(startId, currentDownloadId + 1);
51
+ });
52
+ }
53
+ };
54
+ recursion(index, index);
55
+ // save index as start index
56
+ //start recursive download
57
+ // use started id as a flag to stop the download
58
+ }
59
+ /**
60
+ * @param {number} time
61
+ * It looks like async function is not needed here. changes just overwrites the previous changes.
62
+ */
63
+ updateTime(time) {
64
+ if (time < this._timeEpocs[0] || time > this._timeEpocs[this._timeEpocs.length - 1]) {
65
+ this._dontRender();
66
+ return;
67
+ }
68
+ this._lastTime = time;
69
+ const index = this._findIndex(time);
70
+ const ratio = this._getRatio(time, index);
71
+ Promise.all([this._getData(index - 1), this._getData(index)]).then((datas) => {
72
+ if (this._lastTime === time) {
73
+ this._lastIndex = index;
74
+ this._ratio = ratio;
75
+ this._pushCallback(ratio, datas);
76
+ }
77
+ });
78
+ }
79
+ register(key, callback) {
80
+ if (this._callbackmethodOwners.indexOf(key) !== -1) {
81
+ console.warn("key already registered, old one is unregistered");
82
+ this.unregister(key);
83
+ }
84
+ this._callbackmethods.push(callback);
85
+ this._callbackmethodOwners.push(key);
86
+ if (this._lastIndex !== -1)
87
+ callback(this._ratio, this._datas[this._lastIndex - 1], this._datas[this._lastIndex]);
88
+ }
89
+ /**
90
+ * @param {*} key | id of the owner of the callback
91
+ */
92
+ unregister(key) {
93
+ let index = this._callbackmethodOwners.indexOf(key);
94
+ if (index !== -1) {
95
+ this._callbackmethods.splice(index, 1);
96
+ this._callbackmethodOwners.splice(index, 1);
97
+ }
98
+ if (this._callbackmethods.length === 0) {
99
+ this.free();
100
+ }
101
+ }
102
+ free() {
103
+ this._callbackmethods = [];
104
+ this._callbackmethodOwners = [];
105
+ this._autoDownload = false;
106
+ }
107
+ _findIndex(time) {
108
+ const { _timeEpocs } = this;
109
+ let index = this._lastIndex === -1 ? 1 : this._lastIndex;
110
+ if (this)
111
+ if (time < _timeEpocs[index - 1]) {
112
+ while (index > 1 && time < _timeEpocs[index - 1]) {
113
+ index--;
114
+ }
115
+ }
116
+ else if (time > _timeEpocs[index]) {
117
+ while (index < _timeEpocs.length - 1 && time > _timeEpocs[index]) {
118
+ index++;
119
+ }
120
+ }
121
+ return index;
122
+ }
123
+ _getRatio(time, index) {
124
+ return (time - this._timeEpocs[index - 1]) / (this._timeEpocs[index] - this._timeEpocs[index - 1]);
125
+ }
126
+ _pushCallback(ratio, datas) {
127
+ for (let i = 0; i < this._callbackmethods.length; i++) {
128
+ this._callbackmethods[i](ratio, ...datas);
129
+ }
130
+ }
131
+ async _getData(index) {
132
+ if (index < 0 || index >= this._timeEpocs.length) {
133
+ throw new Error("Index out of range");
134
+ }
135
+ if (!this._datas[index]) {
136
+ if (!this._dataPromises[index])
137
+ this._dataPromises[index] = this._fetchMethod(this._timeEpocs[index]).then((data) => {
138
+ this._datas[index] = data;
139
+ }, (error) => {
140
+ console.error("error", error);
141
+ }).finally(() => {
142
+ this._dataPromises[index] = null;
143
+ });
144
+ }
145
+ await this._dataPromises[index];
146
+ return this._datas[index];
147
+ }
148
+ _dontRender() {
149
+ this._pushCallback(0, [null, null]);
150
+ }
151
+ }
152
+ exports.default = DataManager;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PointCoordinatesDataCalculator = exports.HeatWaveDataManager = void 0;
7
+ const pointcoordinatesdatacalculator_1 = __importDefault(require("./pointcoordinatesdatacalculator"));
8
+ exports.PointCoordinatesDataCalculator = pointcoordinatesdatacalculator_1.default;
9
+ const datamanager_1 = __importDefault(require("./datamanager"));
10
+ exports.HeatWaveDataManager = datamanager_1.default;
@@ -1,133 +1,122 @@
1
- import PointCoordsMeta from "./pointcoordsmeta";
2
-
3
-
4
- const pointObject = (long, lat, posIndex, callback) => {
5
- return { long, lat, posIndex, callback };
6
- }
7
-
8
- export default class PointCoordinatesDataCalculator {
9
- constructor(bbox, width, height) {
10
- this._pointObjects = {};
11
-
12
- this._ratio = 0.0;
13
-
14
- this._bbox = bbox;
15
- this._width = width;
16
- this._height = height;
17
- this._metaCalculater = new PointCoordsMeta(bbox, width, height);
18
-
19
- this._texture0 = null;
20
- this._texture1 = null;
21
- }
22
-
23
- /**
24
- *
25
- * @param {*} key
26
- * @param {*} lat
27
- * @param {*} long
28
- * @param {*} callback | callback(data0, data1, interpolated)
29
- */
30
- registerPoint(key, long, lat, callback) {
31
- if (key in this._pointObjects) {
32
- console.warn("key already registered, old one is unregistered");
33
- this.unregisterPoint(key);
34
- }
35
- if (!this._isInBBox(long, lat)) return false;
36
-
37
- const meta = this._metaCalculater.getFlooredMeta(long, lat)
38
-
39
- this._pointObjects[key] = pointObject(long, lat, meta.index, callback);
40
- if (this._texture0 && this._texture1) {
41
- const { data0, data1, interpolated } = this._findAPoint(meta.index);
42
- callback(data0, data1, interpolated);
43
- }
44
- return true;
45
- }
46
-
47
- _isInBBox(long, lat) {
48
- return lat >= this._bbox[1] && lat <= this._bbox[3] && long >= this._bbox[0] && long <= this._bbox[2];
49
- }
50
-
51
-
52
- unregisterPoint(key) {
53
- if (!(key in this._pointObjects)) return false;
54
- delete this._pointObjects[key];
55
- return true;
56
- }
57
-
58
- updatePoint(key, long, lat) {
59
-
60
- if (!(key in this._pointObjects)) return false;
61
- if (!this._isInBBox(long, lat)) return false;
62
- this._pointObjects[key].long = long;
63
- this._pointObjects[key].lat = lat;
64
- const meta = this._metaCalculater.getFlooredMeta(long, lat);
65
- this._pointObjects[key].posIndex = meta.index;
66
- const { data0, data1, interpolated } = this._findAPoint(meta.index);
67
- this._pointObjects[key].callback(data0, data1, interpolated);
68
- return true;
69
- }
70
-
71
- /**
72
- * @param {Number} ratio 0-1
73
- * @param {} textureData0
74
- * @param {*} textureData1
75
- */
76
- updateData(ratio, textureData0 = null, textureData1 = null) {
77
- if (!textureData0 && !textureData1) {
78
- this._pushPointCallBackEmpty();
79
- return;
80
- }
81
- if (textureData0 && textureData1) {
82
- this._texture0 = textureData0;
83
- this._texture1 = textureData1;
84
- }
85
- this._ratio = ratio;
86
- this._pushPointCallbackAll();
87
- }
88
-
89
-
90
- _findAPoint(posIndex) {
91
- const data0 = this._texture0[posIndex];
92
- const data1 = this._texture1[posIndex];
93
- const interpolated = data0 * (1 - this._ratio) + data1 * this._ratio;
94
- return { data0, data1, interpolated };
95
- }
96
-
97
- _pushPointCallbackAll() {
98
- for (const key in this._pointObjects) {
99
- const { posIndex, callback } = this._pointObjects[key];
100
- const { data0, data1, interpolated } = this._findAPoint(posIndex);
101
- callback(data0, data1, interpolated);
102
- }
103
- }
104
-
105
- _pushPointCallBackEmpty() {
106
- for (const key in this._pointObjects) {
107
- const { callback } = this._pointObjects[key];
108
- callback(null, null, null);
109
- }
110
- }
111
-
112
- flush() {
113
- this._pointObjects = {};
114
- }
115
- }
116
-
117
- // function test() {
118
- // const cp = window.plugin.getPointCoordinatesDataCalculator();
119
- // const bbox = [-15, 25, 70, 60];
120
- // cp.registerPoint("left up", -15, 60, (data0, data1, interpolated) => {
121
- // console.log("left up", data0, data1, interpolated);
122
- // });
123
- // cp.registerPoint("right up", 70, 60, (data0, data1, interpolated) => {
124
- // console.log("right up", data0, data1, interpolated);
125
- // });
126
- // cp.registerPoint("left down", -15, 25, (data0, data1, interpolated) => {
127
- // console.log("right down", data0, data1, interpolated);
128
- // });
129
- // cp.registerPoint("right down", 70, 25, (data0, data1, interpolated) => {
130
- // console.log("right down", data0, data1, interpolated);
131
- // });
132
- // return cp;
133
- // }
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const pointcoordsmeta_1 = __importDefault(require("./pointcoordsmeta"));
7
+ const pointObject = (long, lat, posIndex, callback) => {
8
+ return { long, lat, posIndex, callback };
9
+ };
10
+ class PointCoordinatesDataCalculator {
11
+ constructor(bbox, width, height) {
12
+ this._pointObjects = {};
13
+ this._ratio = 0.0;
14
+ this._bbox = bbox;
15
+ this._width = width;
16
+ this._height = height;
17
+ this._metaCalculater = new pointcoordsmeta_1.default(bbox, width, height);
18
+ this._texture0 = null;
19
+ this._texture1 = null;
20
+ }
21
+ /**
22
+ *
23
+ * @param {*} key
24
+ * @param {*} lat
25
+ * @param {*} long
26
+ * @param {*} callback | callback(data0, data1, interpolated)
27
+ */
28
+ registerPoint(key, long, lat, callback) {
29
+ if (key in this._pointObjects) {
30
+ console.warn("key already registered, old one is unregistered");
31
+ this.unregisterPoint(key);
32
+ }
33
+ if (!this._isInBBox(long, lat))
34
+ return false;
35
+ const meta = this._metaCalculater.getFlooredMeta(long, lat);
36
+ this._pointObjects[key] = pointObject(long, lat, meta.index, callback);
37
+ if (this._texture0 && this._texture1) {
38
+ const { data0, data1, interpolated } = this._findAPoint(meta.index);
39
+ callback(data0, data1, interpolated);
40
+ }
41
+ return true;
42
+ }
43
+ _isInBBox(long, lat) {
44
+ return lat >= this._bbox[1] && lat <= this._bbox[3] && long >= this._bbox[0] && long <= this._bbox[2];
45
+ }
46
+ unregisterPoint(key) {
47
+ if (!(key in this._pointObjects))
48
+ return false;
49
+ delete this._pointObjects[key];
50
+ return true;
51
+ }
52
+ updatePoint(key, long, lat) {
53
+ if (!(key in this._pointObjects))
54
+ return false;
55
+ if (!this._isInBBox(long, lat))
56
+ return false;
57
+ this._pointObjects[key].long = long;
58
+ this._pointObjects[key].lat = lat;
59
+ const meta = this._metaCalculater.getFlooredMeta(long, lat);
60
+ this._pointObjects[key].posIndex = meta.index;
61
+ const { data0, data1, interpolated } = this._findAPoint(meta.index);
62
+ this._pointObjects[key].callback(data0, data1, interpolated);
63
+ return true;
64
+ }
65
+ /**
66
+ * @param {Number} ratio 0-1
67
+ * @param {} textureData0
68
+ * @param {*} textureData1
69
+ */
70
+ updateData(ratio, textureData0 = null, textureData1 = null) {
71
+ if (!textureData0 && !textureData1) {
72
+ this._pushPointCallBackEmpty();
73
+ return;
74
+ }
75
+ if (textureData0 && textureData1) {
76
+ this._texture0 = textureData0;
77
+ this._texture1 = textureData1;
78
+ }
79
+ this._ratio = ratio;
80
+ this._pushPointCallbackAll();
81
+ }
82
+ _findAPoint(posIndex) {
83
+ const data0 = this._texture0[posIndex];
84
+ const data1 = this._texture1[posIndex];
85
+ const interpolated = data0 * (1 - this._ratio) + data1 * this._ratio;
86
+ return { data0, data1, interpolated };
87
+ }
88
+ _pushPointCallbackAll() {
89
+ for (const key in this._pointObjects) {
90
+ const { posIndex, callback } = this._pointObjects[key];
91
+ const { data0, data1, interpolated } = this._findAPoint(posIndex);
92
+ callback(data0, data1, interpolated);
93
+ }
94
+ }
95
+ _pushPointCallBackEmpty() {
96
+ for (const key in this._pointObjects) {
97
+ const { callback } = this._pointObjects[key];
98
+ callback(null, null, null);
99
+ }
100
+ }
101
+ flush() {
102
+ this._pointObjects = {};
103
+ }
104
+ }
105
+ exports.default = PointCoordinatesDataCalculator;
106
+ // function test() {
107
+ // const cp = window.plugin.getPointCoordinatesDataCalculator();
108
+ // const bbox = [-15, 25, 70, 60];
109
+ // cp.registerPoint("left up", -15, 60, (data0, data1, interpolated) => {
110
+ // console.log("left up", data0, data1, interpolated);
111
+ // });
112
+ // cp.registerPoint("right up", 70, 60, (data0, data1, interpolated) => {
113
+ // console.log("right up", data0, data1, interpolated);
114
+ // });
115
+ // cp.registerPoint("left down", -15, 25, (data0, data1, interpolated) => {
116
+ // console.log("right down", data0, data1, interpolated);
117
+ // });
118
+ // cp.registerPoint("right down", 70, 25, (data0, data1, interpolated) => {
119
+ // console.log("right down", data0, data1, interpolated);
120
+ // });
121
+ // return cp;
122
+ // }
@@ -1,22 +1,20 @@
1
- export default class PointCoordsMeta {
2
-
3
- constructor(bbox, width, height) {
4
- this._bbox = bbox;
5
- this._width = width;
6
- this._height = height;
7
- this._xRatio = this._width / (this._bbox[2] - this._bbox[0]);
8
- this._yRatio = this._height / (this._bbox[3] - this._bbox[1]);
9
-
10
- }
11
-
12
- getFlooredMeta(long, lat) {
13
- let x = (long - this._bbox[0]) * this._xRatio;
14
- let y = (this._bbox[3] - lat) * this._yRatio;
15
- x = x > 0 ? x - 1 : 0;
16
- y = y > 0 ? y - 1 : 0;
17
- const index = Math.floor(y) * this._width + Math.floor(x);
18
- return { index };
19
- }
20
- }
21
-
22
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class PointCoordsMeta {
4
+ constructor(bbox, width, height) {
5
+ this._bbox = bbox;
6
+ this._width = width;
7
+ this._height = height;
8
+ this._xRatio = this._width / (this._bbox[2] - this._bbox[0]);
9
+ this._yRatio = this._height / (this._bbox[3] - this._bbox[1]);
10
+ }
11
+ getFlooredMeta(long, lat) {
12
+ let x = (long - this._bbox[0]) * this._xRatio;
13
+ let y = (this._bbox[3] - lat) * this._yRatio;
14
+ x = x > 0 ? x - 1 : 0;
15
+ y = y > 0 ? y - 1 : 0;
16
+ const index = Math.floor(y) * this._width + Math.floor(x);
17
+ return { index };
18
+ }
19
+ }
20
+ exports.default = PointCoordsMeta;