@vidro/map-handler 1.0.6 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (185) hide show
  1. package/README.md +187 -10
  2. package/dist/map-handler.js +1 -1
  3. package/doc/giswater.png +0 -0
  4. package/doc/giswaterInfo.png +0 -0
  5. package/doc/giswaterInfoApi.png +0 -0
  6. package/doc/giswatergeojson.png +0 -0
  7. package/doc/multiTile.png +0 -0
  8. package/doc/multiTileNoGutter.png +0 -0
  9. package/doc/togglelayergiswater.png +0 -0
  10. package/doc/vidromaps-basic.png +0 -0
  11. package/examples/externalwms/index.js +20 -0
  12. package/examples/externalwms/index.php +88 -0
  13. package/examples/full/apidemo.js +43 -1
  14. package/examples/full/cachedToken.dat +1 -1
  15. package/examples/full/cachedTokenData.dat +1 -1
  16. package/examples/full/index.php +31 -16
  17. package/examples/full/tester.js +172 -12
  18. package/examples/integration/tool/css/dist/home.css.min.css +0 -0
  19. package/examples/integration/tool/css/dist/home.min.css +1 -0
  20. package/examples/integration/tool/css/dist/home.min.css.map +10 -0
  21. package/examples/integration/tool/css/dist/style-login.css.min.css +0 -0
  22. package/examples/integration/tool/css/dist/style-login.min.css +1 -0
  23. package/examples/integration/tool/css/dist/style-login.min.css.map +10 -0
  24. package/examples/integration/tool/css/dist/style.css.min.css +0 -0
  25. package/examples/integration/tool/css/dist/style.min.css +1 -0
  26. package/examples/integration/tool/css/dist/style.min.css.map +23 -0
  27. package/examples/integration/tool/css/master/_bottom-sheet-2.scss +103 -0
  28. package/examples/integration/tool/css/master/_bottom-sheet.scss +142 -0
  29. package/examples/integration/tool/css/master/_colors.scss +35 -0
  30. package/examples/integration/tool/css/master/_dropdown-form.scss +167 -0
  31. package/examples/integration/tool/css/master/_forms.scss +416 -0
  32. package/examples/integration/tool/css/master/_header.scss +134 -0
  33. package/examples/integration/tool/css/master/_menu-toc.scss +135 -0
  34. package/examples/integration/tool/css/master/_menu-tools.scss +187 -0
  35. package/examples/integration/tool/css/master/_mixins.scss +42 -0
  36. package/examples/integration/tool/css/master/_notifyjs.scss +39 -0
  37. package/examples/integration/tool/css/master/_ol-map-controls.scss +117 -0
  38. package/examples/integration/tool/css/master/_simplelightbox.scss +287 -0
  39. package/examples/integration/tool/css/master/_toc-config.scss +28 -0
  40. package/examples/integration/tool/css/master/_toc-layouts.scss +173 -0
  41. package/examples/integration/tool/css/master/_tooltip.scss +34 -0
  42. package/examples/integration/tool/css/master/home.scss +266 -0
  43. package/examples/integration/tool/css/master/style-login.scss +240 -0
  44. package/examples/integration/tool/css/master/style.scss +166 -0
  45. package/examples/integration/tool/img/doc-gallery-placeholder.svg +3 -0
  46. package/examples/integration/tool/img/home/ic_calendar-clock.svg +1 -0
  47. package/examples/integration/tool/img/home/ic_caret-down.svg +1 -0
  48. package/examples/integration/tool/img/home/ic_cog.svg +1 -0
  49. package/examples/integration/tool/img/home/ic_marker.svg +1 -0
  50. package/examples/integration/tool/img/home/ic_play-circle.svg +1 -0
  51. package/examples/integration/tool/img/home/ic_power.svg +1 -0
  52. package/examples/integration/tool/img/home/ic_squares.svg +1 -0
  53. package/examples/integration/tool/img/home/ic_user-pointer.svg +1 -0
  54. package/examples/integration/tool/img/home/ic_user-square.svg +1 -0
  55. package/examples/integration/tool/img/home/logo_footer.svg +1 -0
  56. package/examples/integration/tool/img/ic/accessControl.svg +1 -0
  57. package/examples/integration/tool/img/ic/account-location.svg +1 -0
  58. package/examples/integration/tool/img/ic/actionDelete.svg +64 -0
  59. package/examples/integration/tool/img/ic/actionOpen.svg +64 -0
  60. package/examples/integration/tool/img/ic/addFile.svg +100 -0
  61. package/examples/integration/tool/img/ic/addFile_off.svg +102 -0
  62. package/examples/integration/tool/img/ic/arrow-left.svg +1 -0
  63. package/examples/integration/tool/img/ic/arrow-right-drop-circle-outline.svg +1 -0
  64. package/examples/integration/tool/img/ic/bt_add_photo.svg +3 -0
  65. package/examples/integration/tool/img/ic/bug.svg +1 -0
  66. package/examples/integration/tool/img/ic/caret-down-bottomsheet.svg +3 -0
  67. package/examples/integration/tool/img/ic/checkbox-blank-outline-grey.svg +8 -0
  68. package/examples/integration/tool/img/ic/checkbox-blank-outline-white.svg +8 -0
  69. package/examples/integration/tool/img/ic/checkbox-blank-outline.svg +1 -0
  70. package/examples/integration/tool/img/ic/checkbox-marked-outline-grey.svg +8 -0
  71. package/examples/integration/tool/img/ic/checkbox-marked-outline-white.svg +8 -0
  72. package/examples/integration/tool/img/ic/checkbox-marked-outline.svg +1 -0
  73. package/examples/integration/tool/img/ic/chevron-down-grey.svg +7 -0
  74. package/examples/integration/tool/img/ic/chevron-down-white.svg +7 -0
  75. package/examples/integration/tool/img/ic/chevron-down.svg +1 -0
  76. package/examples/integration/tool/img/ic/chevron-right-grey.svg +7 -0
  77. package/examples/integration/tool/img/ic/chevron-right-white.svg +7 -0
  78. package/examples/integration/tool/img/ic/chevron-right.svg +1 -0
  79. package/examples/integration/tool/img/ic/comment-text-outline.svg +1 -0
  80. package/examples/integration/tool/img/ic/cookie.svg +1 -0
  81. package/examples/integration/tool/img/ic/delete.svg +1 -0
  82. package/examples/integration/tool/img/ic/dot.svg +1 -0
  83. package/examples/integration/tool/img/ic/dump.svg +1 -0
  84. package/examples/integration/tool/img/ic/e.svg +9 -0
  85. package/examples/integration/tool/img/ic/eye-off.svg +1 -0
  86. package/examples/integration/tool/img/ic/eye.svg +1 -0
  87. package/examples/integration/tool/img/ic/forbidden.svg +1 -0
  88. package/examples/integration/tool/img/ic/form-title-1.svg +3 -0
  89. package/examples/integration/tool/img/ic/group.svg +1 -0
  90. package/examples/integration/tool/img/ic/hamburger.svg +1 -0
  91. package/examples/integration/tool/img/ic/ic-users.svg +1 -0
  92. package/examples/integration/tool/img/ic/ic_dropdown-form-close.svg +3 -0
  93. package/examples/integration/tool/img/ic/ic_dropdown-form-link.svg +3 -0
  94. package/examples/integration/tool/img/ic/ic_feature-edit-cancel.svg +14 -0
  95. package/examples/integration/tool/img/ic/ic_feature-edit-save.svg +14 -0
  96. package/examples/integration/tool/img/ic/ic_gallery-item-delete.svg +3 -0
  97. package/examples/integration/tool/img/ic/ic_gallery-item-view.svg +3 -0
  98. package/examples/integration/tool/img/ic/ic_gps.svg +3 -0
  99. package/examples/integration/tool/img/ic/ic_search.svg +5 -0
  100. package/examples/integration/tool/img/ic/ic_selector_fechas.svg +63 -0
  101. package/examples/integration/tool/img/ic/ic_zoom-to-extent.svg +3 -0
  102. package/examples/integration/tool/img/ic/icon_reminder.png +0 -0
  103. package/examples/integration/tool/img/ic/image-gallery-placeholder.svg +55 -0
  104. package/examples/integration/tool/img/ic/imaqua.svg +87 -0
  105. package/examples/integration/tool/img/ic/incidencia.svg +77 -0
  106. package/examples/integration/tool/img/ic/info_multi_selection.svg +230 -0
  107. package/examples/integration/tool/img/ic/layers.svg +1 -0
  108. package/examples/integration/tool/img/ic/map-marker.svg +3 -0
  109. package/examples/integration/tool/img/ic/map.svg +1 -0
  110. package/examples/integration/tool/img/ic/measure_area.svg +111 -0
  111. package/examples/integration/tool/img/ic/minus.svg +7 -0
  112. package/examples/integration/tool/img/ic/notification.svg +1 -0
  113. package/examples/integration/tool/img/ic/offline.svg +3 -0
  114. package/examples/integration/tool/img/ic/online.svg +1 -0
  115. package/examples/integration/tool/img/ic/pencil.svg +3 -0
  116. package/examples/integration/tool/img/ic/plus.svg +1 -0
  117. package/examples/integration/tool/img/ic/polygon_selection.svg +68 -0
  118. package/examples/integration/tool/img/ic/power.svg +1 -0
  119. package/examples/integration/tool/img/ic/remoteLocalized.svg +4 -0
  120. package/examples/integration/tool/img/ic/remoteStartLocalize.svg +4 -0
  121. package/examples/integration/tool/img/ic/ruler.svg +125 -0
  122. package/examples/integration/tool/img/ic/selection-plus.svg +10 -0
  123. package/examples/integration/tool/img/ic/selection.svg +1 -0
  124. package/examples/integration/tool/img/ic/settings.svg +1 -0
  125. package/examples/integration/tool/img/ic/sort.svg +1 -0
  126. package/examples/integration/tool/img/ic/sort_asc.svg +1 -0
  127. package/examples/integration/tool/img/ic/sort_desc.svg +1 -0
  128. package/examples/integration/tool/img/ic/spreadsheet.svg +3 -0
  129. package/examples/integration/tool/img/ic/times.svg +1 -0
  130. package/examples/integration/tool/img/ic/toolbar/AB3.svg +1 -0
  131. package/examples/integration/tool/img/ic/toolbar/AB4.svg +1 -0
  132. package/examples/integration/tool/img/ic/toolbar/IC1.svg +1 -0
  133. package/examples/integration/tool/img/ic/toolbar/TB1.svg +1 -0
  134. package/examples/integration/tool/img/ic/toolbar/TB11.svg +5 -0
  135. package/examples/integration/tool/img/ic/toolbar/TB2.svg +1 -0
  136. package/examples/integration/tool/img/ic/toolbar/TB20.svg +1 -0
  137. package/examples/integration/tool/img/ic/toolbar/TB21.svg +54 -0
  138. package/examples/integration/tool/img/ic/toolbar/TB3.svg +1 -0
  139. package/examples/integration/tool/img/ic/toolbar/TB31.svg +1 -0
  140. package/examples/integration/tool/img/ic/toolbar/TB32.svg +57 -0
  141. package/examples/integration/tool/img/ic/toolbar/TB4.svg +1 -0
  142. package/examples/integration/tool/img/ic/toolbar/TB5.svg +1 -0
  143. package/examples/integration/tool/img/ic/toolbar/TB6.svg +1 -0
  144. package/examples/integration/tool/img/ic/toolbar/TB7.svg +1 -0
  145. package/examples/integration/tool/img/ic/toolbar/TB8.svg +1 -0
  146. package/examples/integration/tool/img/ic/tools.svg +28 -0
  147. package/examples/integration/tool/img/ic/user.svg +1 -0
  148. package/examples/integration/tool/img/ic/vector-polygon.svg +1 -0
  149. package/examples/integration/tool/img/ic/visit_manager.svg +135 -0
  150. package/examples/integration/tool/img/logo-footer-login.png +0 -0
  151. package/examples/integration/tool/img/logo-footer.png +0 -0
  152. package/examples/integration/tool/img/logo-header-login.png +0 -0
  153. package/examples/integration/tool/img/logo-header-login@2x.png +0 -0
  154. package/examples/integration/tool/img/logo-header-login@3x.png +0 -0
  155. package/examples/integration/tool/img/logo-header.png +0 -0
  156. package/examples/integration/tool/img/logo-header@2x.png +0 -0
  157. package/examples/integration/tool/img/logo-header@3x.png +0 -0
  158. package/examples/integration/tool/img/logo_project.png +0 -0
  159. package/examples/integration/tool/img/photo-gallery-placeholder.svg +3 -0
  160. package/examples/integration/tool/img/pixel.png +0 -0
  161. package/examples/integration/tool/index.html +228 -0
  162. package/examples/integration/tool/js/demo.js +238 -0
  163. package/examples/integration/tool/js/interface.js +147 -0
  164. package/examples/integration/tool/js/jquery.js +4 -0
  165. package/examples/integration/vanguardia.html +6636 -0
  166. package/examples/multipleIframes/index.js +82 -0
  167. package/examples/multipleIframes/index.php +52 -0
  168. package/examples/serverLess/dist/index.23420cfa.js +120 -117
  169. package/examples/serverLess/dist/index.23420cfa.js.map +1 -1
  170. package/examples/serverLess/dist/index.html +38 -1
  171. package/examples/serverLess/index.html +2 -1
  172. package/examples/serverLess/main.js +2 -2
  173. package/examples/simple/index.html +1 -1
  174. package/examples/taigua/index.html +15 -0
  175. package/examples/taigua/main.js +44 -0
  176. package/examples/vidromap/index.js +12 -79
  177. package/examples/vidromap/index.php +63 -48
  178. package/examples/xavi/index.html +37 -0
  179. package/examples/xavi/main.js +160 -0
  180. package/flows.md +73 -0
  181. package/package.json +1 -1
  182. package/src/index.js +160 -44
  183. package/src/shared/iframe-communicator.js +12 -5
  184. package/examples/vidromap/vidromap.js +0 -13
  185. package/examples/vidromap/vidromap.php +0 -59
package/src/index.js CHANGED
@@ -1,71 +1,117 @@
1
1
  import { EventEmitter } from "events"
2
- import { sendMessageToMap } from "./shared/iframe-communicator";
3
-
2
+ import { iframeCommunicator } from "./shared/iframe-communicator";
4
3
  class Communicator extends EventEmitter {
5
4
 
6
- constructor({ sessionToken }){
5
+ constructor(data){
7
6
  super();
8
-
7
+ this.domId = 'map-frame';
9
8
  if(typeof window === 'undefined'){
10
9
  return;
11
10
  };
12
-
11
+ if(typeof data.id==="string"){
12
+ this.domId = data.id;
13
+ }
14
+ this.com = new iframeCommunicator(data)
13
15
  window.addEventListener("message", e => this.onMessageReceived(e));
14
- this.sessionToken = sessionToken;
15
-
16
+ this.sessionToken = data.sessionToken;
16
17
  }
17
18
 
18
19
  onMessageReceived = e => {
19
20
  switch(e.data.type){
20
- case "onZoomChange": this.emit("onZoomChange", e.data.zoom); break;
21
- case "geomAdded": this.emit("geomAdded", e.data.geom_astext); break;
22
- case "layers": this.emit("layers", e.data.layers); break;
23
- case "geoJSONlayers": this.emit("geoJSONlayers", e.data.layers); break;
24
- case "info": this.emit("info", e.data); break;
25
- case "error": this.emit("error", e.data); break;
26
- case "coordinates": this.emit("coordinates", e.data); break;
27
- case "activeLayer": this.emit("activeLayer", e.data); break;
28
- case "geolocation": this.emit("geolocation", e.data); break;
29
- case "WMSInfoAvailable": this.emit("WMSInfoAvailable", e.data); break;
30
- case "giswaterTiledBackgroundDisplayed": this.emit("giswaterTiledBackgroundDisplayed", e.data); break;
31
- case "giswaterTiledBackgroundAvailable": this.emit("giswaterTiledBackgroundAvailable", e.data); break;
32
- case "GiswaterLayerAvailableFilters": this.emit("GiswaterLayerAvailableFilters", e.data); break;
33
- case "loaded": this.emit("loaded", e.data); break;
21
+ case "onZoomChange": this.emitEvent("onZoomChange", e.data.zoom,e.data.domId); break;
22
+ case "geomAdded": this.emitEvent("geomAdded", e.data.geom_astext,e.data.domId); break;
23
+ case "layers": this.emitEvent("layers", e.data.layers,e.data.domId); break;
24
+ case "geoJSONlayers": this.emitEvent("geoJSONlayers", e.data.layers,e.data.domId); break;
25
+ case "info": this.emitEvent("info", e.data,e.data.domId); break;
26
+ case "error": this.emitEvent("error", e.data,e.data.domId); break;
27
+ case "coordinates": this.emitEvent("coordinates", e.data,e.data.domId); break;
28
+ case "activeLayer": this.emitEvent("activeLayer", e.data,e.data.domId); break;
29
+ case "geolocation": this.emitEvent("geolocation", e.data,e.data.domId); break;
30
+ case "WMSInfoAvailable": this.emitEvent("WMSInfoAvailable", e.data,e.data.domId); break;
31
+ case "giswaterTiledBackgroundDisplayed": this.emitEvent("giswaterTiledBackgroundDisplayed", e.data,e.data.domId); break;
32
+ case "giswaterTiledBackgroundAvailable": this.emitEvent("giswaterTiledBackgroundAvailable", e.data,e.data.domId); break;
33
+ case "GiswaterLayerAvailableFilters": this.emitEvent("GiswaterLayerAvailableFilters", e.data,e.data.domId); break;
34
+ case "loaded": this.emitEvent("loaded", e.data,e.data.domId); break;
35
+ case "availableWMSLayers": this.emitEvent("availableWMSLayers", e.data.layers,e.data.domId); break;
36
+ case "layerElements": this.emitEvent("layerElements", e.data,e.data.domId); break;
37
+ }
38
+
39
+ }
40
+
41
+ emitEvent = (type,data,domId)=>{
42
+ if(domId===this.domId){
43
+ delete data.domId;
44
+ this.emit(type, data);
34
45
  }
35
46
  }
36
47
 
37
48
  ZoomIn = () => {
38
- sendMessageToMap({
49
+ this.com.sendMessageToMap({
39
50
  type: "zoomIn",
40
51
  sessionToken: this.sessionToken,
41
- });
52
+ });
53
+
42
54
  }
43
55
 
44
56
  ZoomOut = () => {
45
- sendMessageToMap({
57
+ this.com.sendMessageToMap({
46
58
  type: "zoomOut",
47
59
  sessionToken: this.sessionToken,
48
60
  });
49
61
  }
50
62
 
51
63
  AddGeom = (geomtype) => {
52
- sendMessageToMap({
64
+ this.com.sendMessageToMap({
53
65
  type: "AddGeom",
54
66
  geom: geomtype,
55
67
  sessionToken: this.sessionToken,
56
68
  });
57
69
  }
58
70
 
59
- toggleLayer = (layer) => {
60
- sendMessageToMap({
71
+ toggleLayer = (layer,properties) => {
72
+ if(typeof properties==='undefined'){
73
+ properties = {
74
+ gutter: null,
75
+ transparent: null,
76
+ singletile: null
77
+ };
78
+ }
79
+
80
+ if(properties.singletile!==null){
81
+ if(typeof properties.singletile!=='boolean'){
82
+ properties.singletile = null;
83
+ this.emit("error",{error:"singleTile must be a Boolean"});
84
+ }
85
+ }
86
+ if(properties.gutter!=='' && properties.gutter!==null){
87
+ if(isNaN(parseInt(properties.gutter))){
88
+ properties.gutter = null;
89
+ this.emit("error",{error:"Gutter must be a number"});
90
+ }
91
+ if(properties.singletile){
92
+ properties.gutter = null;
93
+ this.emit("error",{error:"Gutter can only be user with multitile layers; set singletile to false"});
94
+ }
95
+ }
96
+
97
+ if(properties.transparent!==null){
98
+ if(typeof properties.transparent!=='boolean'){
99
+ properties.transparent = null;
100
+ this.emit("error",{error:"transparent must be a Boolean"});
101
+ }
102
+ }
103
+ this.com.sendMessageToMap({
61
104
  type: "toggleLayer",
62
105
  layer: layer,
106
+ gutter: !isNaN(parseInt(properties.gutter)) ? parseInt(properties.gutter) : null,
107
+ transparent: properties.transparent,
108
+ singletile: properties.singletile,
63
109
  sessionToken: this.sessionToken,
64
110
  });
65
111
  }
66
112
 
67
113
  setActiveLayer = (layer) => {
68
- sendMessageToMap({
114
+ this.com.sendMessageToMap({
69
115
  type: "setActiveLayer",
70
116
  layer: layer,
71
117
  sessionToken: this.sessionToken,
@@ -73,21 +119,28 @@ class Communicator extends EventEmitter {
73
119
  }
74
120
 
75
121
  getActiveLayer = () => {
76
- sendMessageToMap({
122
+ this.com.sendMessageToMap({
77
123
  type: "getActiveLayer",
78
124
  sessionToken: this.sessionToken,
79
125
  });
80
126
  }
81
127
 
128
+ loadWMSAvailableLayers = () => {
129
+ this.com.sendMessageToMap({
130
+ type: "loadWMSAvailableLayers",
131
+ sessionToken: this.sessionToken,
132
+ });
133
+ }
134
+
82
135
  clear = () => {
83
- sendMessageToMap({
136
+ this.com.sendMessageToMap({
84
137
  type: "clear",
85
138
  sessionToken: this.sessionToken,
86
139
  });
87
140
  }
88
141
 
89
142
  Highlight = (options) => {
90
- sendMessageToMap({
143
+ this.com.sendMessageToMap({
91
144
  type: "highlight",
92
145
  geom: options.geom,
93
146
  zoom: options.zoom,
@@ -96,7 +149,7 @@ class Communicator extends EventEmitter {
96
149
  }
97
150
 
98
151
  zoomToExtent = () => {
99
- sendMessageToMap({
152
+ this.com.sendMessageToMap({
100
153
  type: "zoomToExtent",
101
154
  sessionToken: this.sessionToken,
102
155
  });
@@ -104,7 +157,7 @@ class Communicator extends EventEmitter {
104
157
 
105
158
  zoomToCoordinates= (lat,lon,zoomLevel) => {
106
159
  if(!isNaN(parseInt(zoomLevel))){
107
- sendMessageToMap({
160
+ this.com.sendMessageToMap({
108
161
  type: "zoomToCoordinates",
109
162
  sessionToken: this.sessionToken,
110
163
  coordinates:[lat,lon],
@@ -115,7 +168,7 @@ class Communicator extends EventEmitter {
115
168
 
116
169
  infoFromCoordinates = (type,layer,hitTolerance) => {
117
170
  const _layer = (typeof layer=='undefined') ? null : layer
118
- sendMessageToMap({
171
+ this.com.sendMessageToMap({
119
172
  type: "infoFromCoordinates",
120
173
  info: type,
121
174
  layer: _layer,
@@ -124,8 +177,29 @@ class Communicator extends EventEmitter {
124
177
  });
125
178
  }
126
179
 
180
+ getElementsFromLayer= (layer,limit,format) => {
181
+ const _format = (typeof format=='undefined') ? 'xml' : format.toLowerCase();
182
+ console.log(_format)
183
+ if(_format!=="xml" && _format!=='json'){
184
+ console.error("Format must be 'xml' or 'json");
185
+ return;
186
+ }
187
+ if(isNaN(limit)){
188
+ console.error("Limit must be a number");
189
+ return;
190
+ }
191
+ const _layer = (typeof layer=='undefined') ? null : layer
192
+ this.com.sendMessageToMap({
193
+ type: "getElementsFromLayer",
194
+ layer: _layer,
195
+ limit: (typeof limit!='undefined') ? parseInt(limit) : 100,
196
+ format: format,
197
+ sessionToken: this.sessionToken,
198
+ });
199
+ }
200
+
127
201
  Geolocalize = (toggle) => {
128
- sendMessageToMap({
202
+ this.com.sendMessageToMap({
129
203
  type: "Geolocalize",
130
204
  toggle: toggle,
131
205
  sessionToken: this.sessionToken,
@@ -133,7 +207,7 @@ class Communicator extends EventEmitter {
133
207
  }
134
208
 
135
209
  toggleGiswaterTiled = (toggle) => {
136
- sendMessageToMap({
210
+ this.com.sendMessageToMap({
137
211
  type: "toggleGiswaterTiled",
138
212
  toggle: toggle,
139
213
  sessionToken: this.sessionToken,
@@ -141,7 +215,7 @@ class Communicator extends EventEmitter {
141
215
  }
142
216
 
143
217
  reloadDisplayedLayers = ()=>{
144
- return sendMessageToMap({
218
+ return this.com.sendMessageToMap({
145
219
  type: "reloadDisplayedLayers",
146
220
  sessionToken: this.sessionToken,
147
221
  });
@@ -149,7 +223,7 @@ class Communicator extends EventEmitter {
149
223
 
150
224
  addGeoJSON = (geoJSON,options, name)=>{
151
225
  if(geoJSON){
152
- return sendMessageToMap({
226
+ return this.com.sendMessageToMap({
153
227
  type: "addGeoJSON",
154
228
  geoJSON: geoJSON,
155
229
  options: (typeof options!='undefined') ? options : {fillcolor:null,strokecolor:null},
@@ -163,7 +237,7 @@ class Communicator extends EventEmitter {
163
237
  }
164
238
 
165
239
  clearGeoJSON = ()=>{
166
- return sendMessageToMap({
240
+ return this.com.sendMessageToMap({
167
241
  type: "clearGeoJSON",
168
242
  sessionToken: this.sessionToken,
169
243
  });
@@ -171,7 +245,7 @@ class Communicator extends EventEmitter {
171
245
 
172
246
  removeGeoJSONLayer = (name)=>{
173
247
  if(name){
174
- return sendMessageToMap({
248
+ return this.com.sendMessageToMap({
175
249
  type: "removeGeoJSONLayer",
176
250
  name: name,
177
251
  sessionToken: this.sessionToken,
@@ -197,7 +271,7 @@ class Communicator extends EventEmitter {
197
271
  }
198
272
  }
199
273
 
200
- return sendMessageToMap({
274
+ return this.com.sendMessageToMap({
201
275
  type: "setGiswaterFilters",
202
276
  filters: filtersJson,
203
277
  sessionToken: this.sessionToken,
@@ -210,7 +284,7 @@ class Communicator extends EventEmitter {
210
284
 
211
285
  getGiswaterLayerAvailableFilters = (layer_name)=>{
212
286
  if(layer_name){
213
- return sendMessageToMap({
287
+ return this.com.sendMessageToMap({
214
288
  type: "getGiswaterLayerAvailableFilters",
215
289
  name: layer_name,
216
290
  sessionToken: this.sessionToken,
@@ -223,14 +297,56 @@ class Communicator extends EventEmitter {
223
297
 
224
298
  setDebug = (what) =>{
225
299
  if(!isNaN(parseInt(what))){
226
- return sendMessageToMap({
300
+ this.com.sendMessageToMap({
227
301
  type: "setDebug",
228
302
  what: what,
229
303
  sessionToken: this.sessionToken,
230
304
  });
305
+ }else{
306
+ console.error("Debug is not a integer");
231
307
  }
232
308
  }
233
-
309
+
310
+ setCustomColors = (properties)=>{
311
+ //validate data
312
+ if(typeof properties!=='object'){
313
+ console.error("properties is not an object");
314
+ return;
315
+ }
316
+ if(properties.hasOwnProperty('geom_stroke_width')){
317
+ if(isNaN(parseInt(properties.geom_stroke_width))){
318
+ console.error("geom_stroke_width is not an number");
319
+ return;
320
+ }else{
321
+ properties.geom_stroke_width = parseInt(properties.geom_stroke_width);
322
+ }
323
+ }else{
324
+ properties.geom_stroke_width = 1;
325
+ }
326
+ if(properties.hasOwnProperty('geom_radius')){
327
+ if(isNaN(parseInt(properties.geom_radius))){
328
+ console.error("geom_stroke_width is not an number");
329
+ return;
330
+ }else{
331
+ properties.geom_radius = parseInt(properties.geom_radius);
332
+ }
333
+ }else{
334
+ properties.geom_radius = 4;
335
+ }
336
+
337
+ if(properties.hasOwnProperty('geom_shape')){
338
+ if(properties.geom_shape!=="circle" && properties.geom_shape!=="square"){
339
+ properties.geom_shape = 'circle';
340
+ console.error("geom_shape must be either 'circle' or 'square'");
341
+ }
342
+ }
343
+ this.com.sendMessageToMap({
344
+ type: "setCustomColors",
345
+ properties: properties,
346
+ sessionToken: this.sessionToken,
347
+ });
348
+ }
349
+
234
350
  }
235
351
 
236
352
  export {
@@ -1,11 +1,18 @@
1
1
  const isSSR = typeof window === 'undefined';
2
+ class iframeCommunicator {
3
+ constructor(data){
4
+ this.domId = 'map-frame';
5
+ if(typeof data.id==="string"){
6
+ this.domId = data.id;
7
+ }
8
+ }
2
9
 
3
- const sendMessageToMap = message => {
4
- if(isSSR) return;
5
- window.top.frames['map-frame'].postMessage(message, "*");
10
+ sendMessageToMap = message => {
11
+ if(isSSR) return;
12
+ window.top.frames[this.domId].postMessage(message, "*");
13
+ }
6
14
  }
7
15
 
8
-
9
16
  export {
10
- sendMessageToMap,
17
+ iframeCommunicator,
11
18
  }
@@ -1,13 +0,0 @@
1
-
2
- var sessionToken = document.querySelector("#sessionToken");
3
- var mapContainer = document.querySelector("#mapContainer");
4
- var iframe = document.querySelector("#map-frame");
5
- var host = document.querySelector("#overrideHost");
6
- //************** MAP EXAMPLE
7
- console.log("Load",`${host.value}?sessionToken=${sessionToken.value}`)
8
- iframe.src = `${host.value}?sessionToken=${sessionToken.value}`;
9
-
10
-
11
-
12
-
13
-
@@ -1,59 +0,0 @@
1
- <html>
2
- <head>
3
- <title>🛠️ MAP TESTER - Vidro Map</title>
4
- <link rel="stylesheet" href="../tester.css"></link>
5
- <link rel="icon" type="image/png" href="https://www.vidrosoftware.com/favicon/favicon-32x32.png" sizes="32x32" />
6
- <link rel="icon" type="image/png" href="https://www.vidrosoftware.com/favicon/favicon-16x16.png" sizes="16x16" />
7
- </head>
8
- <body>
9
-
10
-
11
-
12
- <div class="form" id="userData">
13
- <h1>Map Properties</h1>
14
- <div>
15
- Override iframe url: <input type="text" name="overrideHost" id="overrideHost" size="25" value="http://localhost:3000">
16
- </div>
17
- <div>
18
- Session Token: <textarea name="sessionToken" id="sessionToken" rows="4" cols="50" placeholder="">eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2MzEzNTM3NTksImF1ZCI6IjA0MWZkOWE2NWEyYzRlZDUxNjk5OTBkZWY1NGNiZWI4NmM1ZmNhYzgiLCJkYXRhIjp7Inpvb20iOjQsImJhY2tncm91bmQiOiJDYXJ0b0RCTGlnaHQiLCJzcmlkIjpudWxsLCJleHRlbnQiOm51bGwsImdlb3NlcnZpY2UiOiJRR0lTIiwibmFtZSI6Im5leHQiLCJwcmV2aWV3IjpudWxsLCJhcGkiOiJodHRwczpcL1wvZGV2YXBpLnZpZHJvc29mdHdhcmUuY29tXC8iLCJ0eXBlIjoidmlkcm9tYXAiLCJ0b2tlbiI6IjllNDlhOTQ2MmFhZjFkYjcwMjgxMjFhMDk0NDRlNWJkIiwic2hvd19sYXllcnMiOiIiLCJpZCI6OCwibG9nbyI6Imh0dHBzOlwvXC93d3cudmlkcm9zb2Z0d2FyZS5jb21cL2xvZ29zXC9WSURSTy5zdmcifX0.FJhMMjgvXBIvaDgroq2eZtnER6qKoIDtfm7-8ofjl_TXHB9GLAVKOAfKibEGCjPTaMlG9K4CT4zPzF9Y98Hp333Qk2_hmKKofDYLw1Zoce2hYQKXFUDcY-nMoN39Yxq_dT-txUkMjhGqVDFk0vlcweoUwsJcvRdPXmj4nweCh4Q5MNTFh9i9VKongZ4XY4w2IZnxtwFB2onjMR0G7p_qzYp0g6rcpFIlo2enzVFH9_8H0nlcQYXi7FikaTQRDCf6NX2WFRGjd5LN4ruUXwxtxsmqFcc4EmgqiwrgqIbv75d_udeCszVdJCCFExcfAyzjhSkrSZtiCvkq763SQNcCZcc_pyDzWKhLaDMgXlapafWfYpTQUQaE4G88AdjV8MVeqd46yn9qJN2kzHiDKUnFfj8QGGkkDMz6QVXDxcdsOOCOc1NIN-pH0hPF0biaDosKZ1mWyk3xNM74Pet8m2qfzMDfcHiOzDWuNqr_QRJiV4HTmBJfegB72vwKaBleNCQoG-H1ukpwWuHJouoUpYrlz5pOrTWHAUERr9bMp0usf_r8X_IZtfbrF3gxuA6b8hvz1APd2E8ZmHpTBx6nMxuhdtUS2UE9RQgefkp4UbWjwdxmTkLEtNBM1_W_avoaL5RTMOHs96-i7IO5rVFwE18K9n-kLmVzcZ2oiL5Rtbt2tII</textarea>
19
- </div>
20
-
21
- </div>
22
- <div id="Error_container"></div>
23
- <div id="mapContainer">
24
-
25
- <div id="iframes-container">
26
- <iframe id="map-frame" name="map-frame" src="" style="width:100%; height:600px;" allow="geolocation"></iframe>
27
- </div>
28
- <hr />
29
- <pre id="Result_container"></pre>
30
- <hr/>
31
- <h2>Zoom</h2>
32
- <button id="btZoomIn">Zoom In</button>
33
- <button id="btZoomOut">Zoom Out</button>
34
- <button id="btZoomToExtent">Zoom to extent</button>
35
- <h2>Info</h2>
36
- <button id="btWMSInfo" disabled="true">WMS Info</button>
37
- <button id="btGiswaterInfo">Giswater Info</button>
38
- <h2>Layers</h2>
39
- Project Layers: <select id="projectlayers"></select> - <small>click on "Load Project Layers button</small> <button id="btToggleLayer">Add / Remove Layer</button><br><br>
40
- Displayed Layers: <select id="layers"></select> -
41
- <button id="btActiveLayer">Set Active Layer</button>
42
- <button id="btGetActiveLayer">Get Active Layer</button>
43
- <span id="currentActiveLayer"></span>
44
-
45
-
46
- <h2>GeoJSON</h2>
47
-
48
- <input type="file" id="geojsonfile" name="geojsonfile" accept="application/json"><small> Select geoJSON file</small><br><br>
49
- <small>Or paste geoJSON content</small><br><br>
50
- <textarea name="geojsondata" id="geojsondata" rows="10" cols="80" placeholder=""></textarea> <br><br>
51
- <button id="btAddGeoJSON">Add GeoJSON </button><br><br>
52
- </div>
53
-
54
- <!--<script src="https://unpkg.com/@vidro/map-handler@1.0.1/dist/map-handler.js"></script>-->
55
- <script src="../../dist/map-handler.js"></script>
56
- <script src="../full/tester.js"></script>
57
- <script src="./vidromap.js"></script>
58
- </body>
59
- </html>