@vidro/map-handler 1.2.180 → 1.2.192
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 +6 -3
- package/dist/map-handler.js +1 -1
- package/examples/full/apidemo.js +88 -48
- package/examples/full/cachedToken.dat +1 -1
- package/examples/full/cachedTokenData.dat +1 -1
- package/examples/full/docker/Docker_compose.yml +14 -0
- package/examples/full/docker/Dockerfile +27 -0
- package/examples/full/index.php +7 -5
- package/examples/full/tester.css +74 -0
- package/examples/full/tester.js +15 -5
- package/examples/react-next/atoms/PrintLayoutSelector.js +50 -0
- package/examples/react-next/atoms/PrintPaperSizeSelector.js +48 -0
- package/examples/react-next/atoms/ZoomToScaleButton.js +57 -0
- package/examples/react-next/components/MapButtons.js +16 -53
- package/examples/react-next/components/MapList.js +10 -2
- package/examples/react-next/contexts/auth.js +49 -3
- package/examples/react-next/contexts/maps.js +28 -1
- package/examples/react-next/contexts/print.js +24 -0
- package/examples/react-next/package.json +1 -0
- package/examples/react-next/pages/index.js +19 -16
- package/examples/react-next/shared/cookies.js +23 -0
- package/package.json +1 -1
- package/src/index.js +37 -2
package/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Map Handler
|
2
2
|
|
3
|
-
#### Version 1.2.
|
3
|
+
#### Version 1.2.191 - February 2025
|
4
4
|
|
5
5
|
Tool to achieve the easiest way of communication with the map iframe.
|
6
6
|
|
@@ -705,12 +705,15 @@ Geolocalizes user. Will dispatch `geolocation` event .
|
|
705
705
|
> Params
|
706
706
|
|
707
707
|
- toggle `<Boolean>` - starts or cancels geolocation
|
708
|
+
- options `<json>` - optional
|
709
|
+
- track `<Boolean>` - will track user position or geolocalize only once
|
708
710
|
|
709
711
|
> E.G.
|
710
712
|
|
711
713
|
```
|
712
714
|
//start
|
713
715
|
Geolocalize(true)
|
716
|
+
Geolocalize(true, {track:true})
|
714
717
|
|
715
718
|
//cancel
|
716
719
|
Geolocalize(false)
|
@@ -971,12 +974,12 @@ removeGeoJSONLayer('somename');
|
|
971
974
|
|
972
975
|
##### clearGeoJSON
|
973
976
|
|
974
|
-
Clears geoJSON
|
977
|
+
Clears geoJSON layer
|
975
978
|
|
976
979
|
> E.G.
|
977
980
|
|
978
981
|
```
|
979
|
-
clearGeoJSON();
|
982
|
+
clearGeoJSON(layername);
|
980
983
|
```
|
981
984
|
|
982
985
|
##### setFilters
|
package/dist/map-handler.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.VidroMaps=t():e.VidroMaps=t()}(self,(()=>(()=>{"use strict";var e={187:e=>{var t,o="object"==typeof Reflect?Reflect:null,n=o&&"function"==typeof o.apply?o.apply:function(e,t,o){return Function.prototype.apply.call(e,t,o)};t=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var r=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(e,t){return new Promise((function(o,n){function r(o){e.removeListener(t,s),n(o)}function s(){"function"==typeof e.removeListener&&e.removeListener("error",r),o([].slice.call(arguments))}y(e,t,s,{once:!0}),"error"!==t&&function(e,t,o){"function"==typeof e.on&&y(e,"error",t,{once:!0})}(e,r)}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var i=10;function a(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function c(e,t,o,n){var r,s,i,c;if(a(o),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,o.listener?o.listener:o),s=e._events),i=s[t]),void 0===i)i=s[t]=o,++e._eventsCount;else if("function"==typeof i?i=s[t]=n?[o,i]:[i,o]:n?i.unshift(o):i.push(o),(r=l(e))>0&&i.length>r&&!i.warned){i.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=i.length,c=u,console&&console.warn&&console.warn(c)}return e}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,o){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:o},r=u.bind(n);return r.listener=o,n.wrapFn=r,r}function p(e,t,o){var n=e._events;if(void 0===n)return[];var r=n[t];return void 0===r?[]:"function"==typeof r?o?[r.listener||r]:[r]:o?function(e){for(var t=new Array(e.length),o=0;o<t.length;++o)t[o]=e[o].listener||e[o];return t}(r):m(r,r.length)}function f(e){var t=this._events;if(void 0!==t){var o=t[e];if("function"==typeof o)return 1;if(void 0!==o)return o.length}return 0}function m(e,t){for(var o=new Array(t),n=0;n<t;++n)o[n]=e[n];return o}function y(e,t,o,n){if("function"==typeof e.on)n.once?e.once(t,o):e.on(t,o);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function r(s){n.once&&e.removeEventListener(t,r),o(s)}))}}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return i},set:function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");i=e}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},s.prototype.getMaxListeners=function(){return l(this)},s.prototype.emit=function(e){for(var t=[],o=1;o<arguments.length;o++)t.push(arguments[o]);var r="error"===e,s=this._events;if(void 0!==s)r=r&&void 0===s.error;else if(!r)return!1;if(r){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var a=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw a.context=i,a}var l=s[e];if(void 0===l)return!1;if("function"==typeof l)n(l,this,t);else{var c=l.length,u=m(l,c);for(o=0;o<c;++o)n(u[o],this,t)}return!0},s.prototype.addListener=function(e,t){return c(this,e,t,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(e,t){return c(this,e,t,!0)},s.prototype.once=function(e,t){return a(t),this.on(e,d(this,e,t)),this},s.prototype.prependOnceListener=function(e,t){return a(t),this.prependListener(e,d(this,e,t)),this},s.prototype.removeListener=function(e,t){var o,n,r,s,i;if(a(t),void 0===(n=this._events))return this;if(void 0===(o=n[e]))return this;if(o===t||o.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,o.listener||t));else if("function"!=typeof o){for(r=-1,s=o.length-1;s>=0;s--)if(o[s]===t||o[s].listener===t){i=o[s].listener,r=s;break}if(r<0)return this;0===r?o.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(o,r),1===o.length&&(n[e]=o[0]),void 0!==n.removeListener&&this.emit("removeListener",e,i||t)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(e){var t,o,n;if(void 0===(o=this._events))return this;if(void 0===o.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==o[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete o[e]),this;if(0===arguments.length){var r,s=Object.keys(o);for(n=0;n<s.length;++n)"removeListener"!==(r=s[n])&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=o[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},s.prototype.listeners=function(e){return p(this,e,!0)},s.prototype.rawListeners=function(e){return p(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},s.prototype.listenerCount=f,s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,o),s.exports}o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{o.r(n),o.d(n,{Communicator:()=>T});var e=o(187);function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}function r(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,i(n.key),n)}}function s(e,t,o){return t&&r(e.prototype,t),o&&r(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e}function i(e){var o=function(e,o){if("object"!==t(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===t(o)?o:String(o)}var a="undefined"==typeof window,l=s((function e(t){var o,n,r,s=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),o=this,r=function(e){a||window.top.frames[s.domId].postMessage(e,"*")},(n=i(n="sendMessageToMap"))in o?Object.defineProperty(o,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):o[n]=r,this.domId="map-frame","string"==typeof t.id&&(this.domId=t.id)}));function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,g(n.key),n)}}function d(){return d="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,o){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=y(e)););return e}(e,t);if(n){var r=Object.getOwnPropertyDescriptor(n,t);return r.get?r.get.call(arguments.length<3?e:o):r.value}},d.apply(this,arguments)}function p(e,t){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},p(e,t)}function f(e,t){if(t&&("object"===c(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return m(e)}function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function y(e){return y=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},y(e)}function v(e,t,o){return(t=g(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function g(e){var t=function(e,t){if("object"!==c(e)||null===e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var n=o.call(e,"string");if("object"!==c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===c(t)?t:String(t)}var T=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}(i,e);var t,o,n,r,s=(n=i,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=y(n);if(r){var o=y(this).constructor;e=Reflect.construct(t,arguments,o)}else e=t.apply(this,arguments);return f(this,e)});function i(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,i),v(m(t=s.call(this)),"onMessageReceived",(function(e){switch(e.data.type){case"onZoomChange":t.emitEvent("onZoomChange",e.data,e.data.domId);break;case"onCenterChange":t.emitEvent("onCenterChange",e.data,e.data.domId);break;case"geomAdded":t.emitEvent("geomAdded",e.data,e.data.domId);break;case"layers":t.emitEvent("layers",e.data,e.data.domId);break;case"geoJSONlayers":t.emitEvent("geoJSONlayers",e.data,e.data.domId);break;case"info":t.emitEvent("info",e.data,e.data.domId);break;case"error":t.emitEvent("error",e.data,e.data.domId);break;case"coordinates":t.emitEvent("coordinates",e.data,e.data.domId);break;case"activeLayer":t.emitEvent("activeLayer",e.data,e.data.domId);break;case"geolocation":t.emitEvent("geolocation",e.data,e.data.domId);break;case"WMSInfoAvailable":t.emitEvent("WMSInfoAvailable",e.data,e.data.domId);break;case"giswaterTiledBackgroundDisplayed":t.emitEvent("giswaterTiledBackgroundDisplayed",e.data,e.data.domId);break;case"giswaterTiledBackgroundAvailable":t.emitEvent("giswaterTiledBackgroundAvailable",e.data,e.data.domId);break;case"GiswaterLayerAvailableFilters":t.emitEvent("GiswaterLayerAvailableFilters",e.data,e.data.domId);break;case"loaded":t.emitEvent("loaded",e.data,e.data.domId);break;case"unloaded":t.emitEvent("unloaded",e.data,e.data.domId);break;case"availableWMSLayers":t.emitEvent("availableWMSLayers",e.data.layers,e.data.domId);break;case"layerElements":t.emitEvent("layerElements",e.data,e.data.domId);break;case"getToc":t.emitEvent("getToc",e.data,e.data.domId);break;case"status":t.emitEvent("status",e.data,e.data.domId);break;case"MeasureEnd":t.emitEvent("MeasureEnd",e.data,e.data.domId);break;case"queue":t.emitEvent("queue",e.data,e.data.domId);break;case"version":t.emitEvent("version",e.data,e.data.domId);break;case"hover":t.emitEvent("hover",e.data,e.data.domId);break;case"screenshot":t.emitEvent("screenshot",e.data,e.data.domId)}})),v(m(t),"emitEvent",(function(e,o,n){n===t.domId&&(delete o.domId,t.emit(e,o))})),v(m(t),"ZoomIn",(function(){t.com.sendMessageToMap({type:"zoomIn",sessionToken:t.sessionToken})})),v(m(t),"ZoomOut",(function(){t.com.sendMessageToMap({type:"zoomOut",sessionToken:t.sessionToken})})),v(m(t),"AddGeom",(function(e,o){t.com.sendMessageToMap({type:"AddGeom",geom:e,texts:null==o?void 0:o.texts,style:null==o?void 0:o.style,drawOnEnd:null==o?void 0:o.drawOnEnd,showConfirm:null==o?void 0:o.showConfirm,sessionToken:t.sessionToken})})),v(m(t),"CancelAddGeom",(function(e){t.com.sendMessageToMap({type:"CancelAddGeom"})})),v(m(t),"loadMultipleLayers",(function(e){void 0!==e?t.com.sendMessageToMap({type:"loadMultipleLayers",layers:e}):t.emit("error",{error:"no layers"})})),v(m(t),"toggleGroup",(function(e){t.com.sendMessageToMap({type:"toggleGroup",layers:e})})),v(m(t),"toggleLayer",(function(e,o){void 0===o&&(o={gutter:null,transparent:null,singletile:null,zIndex:null}),null!==o.singletile&&"boolean"!=typeof o.singletile&&(o.singletile=null,t.emit("error",{error:"singletile must be a Boolean",type:"error"})),""===o.gutter||null===o.gutter||o.singletile||(isNaN(parseInt(o.gutter))&&(o.gutter=null,t.emit("error",{type:"error",error:"Gutter must be a number"})),o.singletile&&(o.gutter=null,t.emit("error",{type:"error",error:"Gutter can only be user with multitile layers; set singletile to false"}))),null!==o.transparent&&"boolean"!=typeof o.transparent&&(o.transparent=null,t.emit("error",{type:"error",error:"transparent must be a Boolean"})),t.com.sendMessageToMap({type:"toggleLayer",layer:e,gutter:isNaN(parseInt(o.gutter))?null:parseInt(o.gutter),transparent:o.transparent,singletile:o.singletile,sessionToken:t.sessionToken,zIndex:isNaN(parseInt(o.zIndex))?null:parseInt(o.zIndex)})})),v(m(t),"removeLayer",(function(e){t.com.sendMessageToMap({type:"removeLayer",layer:e,sessionToken:t.sessionToken})})),v(m(t),"displayLayer",(function(e){t.com.sendMessageToMap({type:"displayLayer",layer:e,sessionToken:t.sessionToken})})),v(m(t),"setActiveLayer",(function(e){t.com.sendMessageToMap({type:"setActiveLayer",layer:e,sessionToken:t.sessionToken})})),v(m(t),"getActiveLayer",(function(){t.com.sendMessageToMap({type:"getActiveLayer",sessionToken:t.sessionToken})})),v(m(t),"bringLayerToTop",(function(e){t.com.sendMessageToMap({type:"bringLayerToTop",layer:e,sessionToken:t.sessionToken})})),v(m(t),"bringLayerToBottom",(function(e){t.com.sendMessageToMap({type:"bringLayerToBottom",layer:e,sessionToken:t.sessionToken})})),v(m(t),"loadWMSAvailableLayers",(function(){t.com.sendMessageToMap({type:"loadWMSAvailableLayers",sessionToken:t.sessionToken})})),v(m(t),"clear",(function(){t.com.sendMessageToMap({type:"clear",sessionToken:t.sessionToken})})),v(m(t),"Highlight",(function(e){t.com.sendMessageToMap({type:"highlight",geom:e.geom,zoom:e.zoom,metadata:null==e?void 0:e.data,center:void 0!==(null==e?void 0:e.center)&&e.center,animate:null==e?void 0:e.animate,style:null==e?void 0:e.style,sessionToken:t.sessionToken})})),v(m(t),"DrawGeometries",(function(e){void 0!==e?t.com.sendMessageToMap({type:"DrawGeometries",geoms:e}):t.emit("error",{type:"error",error:"no geoms"})})),v(m(t),"RemoveGeometriesByProperty",(function(e,o,n){void 0!==e&&void 0!==o&&void 0!==n?t.com.sendMessageToMap({type:"RemoveGeometriesByProperty",layer:e,property:o,value:n}):t.emit("error",{type:"error",error:"no layer, property or value"})})),v(m(t),"UpdateGeometriesByProperty",(function(e,o,n,r){void 0!==e&&void 0!==o&&void 0!==r&&void 0!==n?t.com.sendMessageToMap({type:"UpdateGeometriesByProperty",layer:e,property:o,value:n,style:r}):t.emit("error",{type:"error",error:"no layer, property or value"})})),v(m(t),"DrawGeometry",(function(e,o,n,r){console.warn("DrawGeometry is deprecated. Use DrawGeometries");var s={stroke_color:o.stroke_color?o.stroke_color:null,fill_color:o.fill_color?o.fill_color:null,point_fill_color:o.point_fill_color?o.point_fill_color:null,geom_radius:o.geom_radius?o.geom_radius:null,stroke_width:o.stroke_width?o.stroke_width:null,font_color:o.font_color?o.font_color:null,font:o.font?o.font:null,font_size:o.font_size?o.font_size:null,placement:o.placement?o.placement:null,fontFillColor:o.fontFillColor?o.fontFillColor:null,fontStrokeColor:o.fontStrokeColor?o.fontStrokeColor:null,fontStrokeWidth:o.fontStrokeWidth?o.fontStrokeWidth:null,baseline:o.baseline?o.baseline:null,align:o.align?o.align:null,display:o.display?o.display:null,offsetY:o.offsetY?o.offsetY:null};t.com.sendMessageToMap({type:"drawGeometry",geom:e,style:s,name:n||"highlight",id:r||Math.floor(1e3*Math.random())+1,sessionToken:t.sessionToken})})),v(m(t),"RemoveGeometry",(function(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=void 0===e?null:e;if(!n)return console.error("No element id"),void t.emit("error",{type:"error",error:"No element id"});t.com.sendMessageToMap({type:"removeGeometry",layer:o,id:n})})),v(m(t),"zoomToExtent",(function(){t.com.sendMessageToMap({type:"zoomToExtent",sessionToken:t.sessionToken})})),v(m(t),"zoomToScale",(function(e){var o=["1:100","1:200","1:400","1:500","1:1000","1:2000","1:5000","1:10000","1:50000"];if(!o.includes(e))return console.error("Invalid scale: ".concat(e,". Allowed values are: ").concat(o.join(", "))),void t.emit("error",{type:"error",error:"Invalid scale: ".concat(e)});t.com.sendMessageToMap({type:"zoomToScale",sessionToken:t.sessionToken,scale:e})})),v(m(t),"zoomToCoordinates",(function(e,o,n){isNaN(parseInt(n))||t.com.sendMessageToMap({type:"zoomToCoordinates",sessionToken:t.sessionToken,coordinates:[e,o],zoomLevel:n})})),v(m(t),"zoomToGeometry",(function(e,o){t.com.sendMessageToMap({type:"zoomToGeometry",sessionToken:t.sessionToken,geom:e,limits:o})})),v(m(t),"infoFromCoordinates",(function(e,o,n,r){var s=void 0===o?null:o,i=void 0!==n&&n?parseInt(n):5,a=void 0===r?"xml":r.toLowerCase();"xml"===a||"json"===a?isNaN(i)?console.error("hitTolerance must be a number"):t.com.sendMessageToMap({type:"infoFromCoordinates",info:e,layer:s,format:a,hitTolerance:i,sessionToken:t.sessionToken}):console.error("Format must be 'xml' or 'json")})),v(m(t),"getElementsFromLayer",(function(e,o,n){var r=void 0===n?"xml":n.toLowerCase();if("xml"===r||"json"===r)if(isNaN(o))console.error("Limit must be a number");else{var s=void 0===e?null:e;t.com.sendMessageToMap({type:"getElementsFromLayer",layer:s,limit:void 0!==o?parseInt(o):100,format:n,sessionToken:t.sessionToken})}else console.error("Format must be 'xml' or 'json")})),v(m(t),"Geolocalize",(function(e,o){t.com.sendMessageToMap({type:"Geolocalize",toggle:e,options:o,sessionToken:t.sessionToken})})),v(m(t),"toggleGiswaterTiled",(function(e,o){t.com.sendMessageToMap({type:"toggleGiswaterTiled",toggle:e,tiled:o,sessionToken:t.sessionToken})})),v(m(t),"toggleTiled",(function(e,o){t.com.sendMessageToMap({type:"toggleTiled",toggle:e,tiled:o,sessionToken:t.sessionToken})})),v(m(t),"getTiled",(function(){t.com.sendMessageToMap({type:"getTiled",sessionToken:t.sessionToken})})),v(m(t),"toggleSecondaryBackground",(function(e){t.com.sendMessageToMap({type:"toggleSecondaryBackground",toggle:e})})),v(m(t),"getSecondaryBackground",(function(){t.com.sendMessageToMap({type:"getSecondaryBackground",sessionToken:t.sessionToken})})),v(m(t),"reloadDisplayedLayers",(function(){return t.com.sendMessageToMap({type:"reloadDisplayedLayers",sessionToken:t.sessionToken})})),v(m(t),"addGeoJSON",(function(e,o,n){return e?t.com.sendMessageToMap({type:"addGeoJSON",geoJSON:e,options:void 0!==o?o:{fillcolor:null,strokecolor:null},name:n||Math.random().toString(36).substring(7),sessionToken:t.sessionToken}):void t.emit("error",{type:"error",error:"No geoJSON data"})})),v(m(t),"clearGeoJSON",(function(){return t.com.sendMessageToMap({type:"clearGeoJSON",sessionToken:t.sessionToken})})),v(m(t),"removeGeoJSONLayer",(function(e){return e?t.com.sendMessageToMap({type:"removeGeoJSONLayer",name:e,sessionToken:t.sessionToken}):void t.emit("error",{type:"error",error:"No geoJSON data"})})),v(m(t),"setGiswaterFilters",(function(e){var o=e;if(e){if("object"!=c(e)){e=(e=(e=e.trim()).replace(/^\s+|\s+$/g,"")).replace(/\\/g,"");try{o=JSON.parse(e)}catch(e){return void t.emit("error",{type:"error",error:"Filters is not a valid JSON"})}}return t.com.sendMessageToMap({type:"setGiswaterFilters",filters:o,sessionToken:t.sessionToken})}t.emit("error",{type:"error",error:"No filters"})})),v(m(t),"setFilters",(function(e){var o=e;if(e){if("object"!=c(e)){e=(e=(e=e.trim()).replace(/^\s+|\s+$/g,"")).replace(/\\/g,"");try{o=JSON.parse(e)}catch(e){return void t.emit("error",{type:"error",error:"Filters is not a valid JSON"})}}return o.every((function(e){return Array.isArray(e.filters)}))?t.com.sendMessageToMap({type:"setFilters",filters:o,sessionToken:t.sessionToken}):void t.emit("error",{type:"error",error:"Filters is not a valid JSON - missing filters array"})}t.emit("error",{type:"error",error:"No filters"})})),v(m(t),"getGiswaterLayerAvailableFilters",(function(e){return e?t.com.sendMessageToMap({type:"getGiswaterLayerAvailableFilters",name:e,sessionToken:t.sessionToken}):void t.emit("error",{type:"error",error:"No layer_name"})})),v(m(t),"CenterMap",(function(e,o){t.com.sendMessageToMap({type:"centerMap",coordinates:[e,o]})})),v(m(t),"getToc",(function(){return t.com.sendMessageToMap({type:"getToc",sessionToken:t.sessionToken})})),v(m(t),"setDebug",(function(e){isNaN(parseInt(e))?console.error("Debug is not a integer"):t.com.sendMessageToMap({type:"setDebug",what:e,sessionToken:t.sessionToken})})),v(m(t),"setCustomColors",(function(e){if("object"===c(e)){if(e.hasOwnProperty("geom_stroke_width")){if(isNaN(parseInt(e.geom_stroke_width)))return void console.error("geom_stroke_width is not an number");e.geom_stroke_width=parseInt(e.geom_stroke_width)}else e.geom_stroke_width=1;if(e.hasOwnProperty("geom_radius")){if(isNaN(parseInt(e.geom_radius)))return void console.error("geom_stroke_width is not an number");e.geom_radius=parseInt(e.geom_radius)}else e.geom_radius=4;e.hasOwnProperty("geom_shape")&&"circle"!==e.geom_shape&&"square"!==e.geom_shape&&(e.geom_shape="circle",console.error("geom_shape must be either 'circle' or 'square'")),t.com.sendMessageToMap({type:"setCustomColors",properties:e,sessionToken:t.sessionToken})}else console.error("properties is not an object")})),v(m(t),"changeBackground",(function(e){return t.com.sendMessageToMap({type:"changeBackground",sessionToken:t.sessionToken,newBackground:e})})),v(m(t),"getBackground",(function(){t.com.sendMessageToMap({type:"getBackground",sessionToken:t.sessionToken})})),v(m(t),"initMeasure",(function(e,o,n){return t.com.sendMessageToMap({type:"initMeasure",sessionToken:t.sessionToken,measure:e,textStart:o,textContinue:n})})),v(m(t),"cancelMeasure",(function(){return t.com.sendMessageToMap({type:"cancelMeasure",sessionToken:t.sessionToken})})),v(m(t),"setBboxSize",(function(e){isNaN(parseInt(e))?console.error("bbox is not a integer"):t.com.sendMessageToMap({type:"setBoundingBoxSize",bbox:e,sessionToken:t.sessionToken})})),v(m(t),"addIcon",(function(e){var o=e.icon,n=e.coordinates;o instanceof ArrayBuffer||t.emit("error",{type:"error",error:"Invalid icon: Expected an ArrayBuffer."}),Array.isArray(n)||t.emit("error",{type:"error",error:"Invalid coordinates: Expected an array [longitude, latitude]."}),2===n.length&&"number"==typeof n[0]&&"number"==typeof n[1]||t.emit("error",{type:"error",error:"Invalid coordinates: Expected an array with two numeric values [longitude, latitude]."}),t.com.sendMessageToMap({type:"AddIcon",icon:o,coordinates:n,sessionToken:t.sessionToken})})),v(m(t),"screenshot",(function(e){t.com.sendMessageToMap({type:"screenshot",options:e,sessionToken:t.sessionToken})})),t.domId="map-frame","undefined"==typeof window?f(t):("string"==typeof e.id&&(t.domId=e.id),t.com=new l(e),window.addEventListener("message",(function(e){return t.onMessageReceived(e)})),t.sessionToken=e.sessionToken,t)}return t=i,(o=[{key:"removeListener",value:function(e,t){d(y(i.prototype),"removeListener",this).call(this,e,t)}}])&&u(t.prototype,o),Object.defineProperty(t,"prototype",{writable:!1}),i}(e.EventEmitter)})(),n})()));
|
1
|
+
!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports.VidroMaps=o():e.VidroMaps=o()}(self,(()=>(()=>{"use strict";var e={187:e=>{var o,t="object"==typeof Reflect?Reflect:null,n=t&&"function"==typeof t.apply?t.apply:function(e,o,t){return Function.prototype.apply.call(e,o,t)};o=t&&"function"==typeof t.ownKeys?t.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var r=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(e,o){return new Promise((function(t,n){function r(t){e.removeListener(o,s),n(t)}function s(){"function"==typeof e.removeListener&&e.removeListener("error",r),t([].slice.call(arguments))}y(e,o,s,{once:!0}),"error"!==o&&function(e,o,t){"function"==typeof e.on&&y(e,"error",o,{once:!0})}(e,r)}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var i=10;function a(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function c(e,o,t,n){var r,s,i,c;if(a(t),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",o,t.listener?t.listener:t),s=e._events),i=s[o]),void 0===i)i=s[o]=t,++e._eventsCount;else if("function"==typeof i?i=s[o]=n?[t,i]:[i,t]:n?i.unshift(t):i.push(t),(r=l(e))>0&&i.length>r&&!i.warned){i.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(o)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=o,u.count=i.length,c=u,console&&console.warn&&console.warn(c)}return e}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,o,t){var n={fired:!1,wrapFn:void 0,target:e,type:o,listener:t},r=u.bind(n);return r.listener=t,n.wrapFn=r,r}function p(e,o,t){var n=e._events;if(void 0===n)return[];var r=n[o];return void 0===r?[]:"function"==typeof r?t?[r.listener||r]:[r]:t?function(e){for(var o=new Array(e.length),t=0;t<o.length;++t)o[t]=e[t].listener||e[t];return o}(r):m(r,r.length)}function f(e){var o=this._events;if(void 0!==o){var t=o[e];if("function"==typeof t)return 1;if(void 0!==t)return t.length}return 0}function m(e,o){for(var t=new Array(o),n=0;n<o;++n)t[n]=e[n];return t}function y(e,o,t,n){if("function"==typeof e.on)n.once?e.once(o,t):e.on(o,t);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(o,(function r(s){n.once&&e.removeEventListener(o,r),t(s)}))}}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return i},set:function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");i=e}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},s.prototype.getMaxListeners=function(){return l(this)},s.prototype.emit=function(e){for(var o=[],t=1;t<arguments.length;t++)o.push(arguments[t]);var r="error"===e,s=this._events;if(void 0!==s)r=r&&void 0===s.error;else if(!r)return!1;if(r){var i;if(o.length>0&&(i=o[0]),i instanceof Error)throw i;var a=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw a.context=i,a}var l=s[e];if(void 0===l)return!1;if("function"==typeof l)n(l,this,o);else{var c=l.length,u=m(l,c);for(t=0;t<c;++t)n(u[t],this,o)}return!0},s.prototype.addListener=function(e,o){return c(this,e,o,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(e,o){return c(this,e,o,!0)},s.prototype.once=function(e,o){return a(o),this.on(e,d(this,e,o)),this},s.prototype.prependOnceListener=function(e,o){return a(o),this.prependListener(e,d(this,e,o)),this},s.prototype.removeListener=function(e,o){var t,n,r,s,i;if(a(o),void 0===(n=this._events))return this;if(void 0===(t=n[e]))return this;if(t===o||t.listener===o)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,t.listener||o));else if("function"!=typeof t){for(r=-1,s=t.length-1;s>=0;s--)if(t[s]===o||t[s].listener===o){i=t[s].listener,r=s;break}if(r<0)return this;0===r?t.shift():function(e,o){for(;o+1<e.length;o++)e[o]=e[o+1];e.pop()}(t,r),1===t.length&&(n[e]=t[0]),void 0!==n.removeListener&&this.emit("removeListener",e,i||o)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(e){var o,t,n;if(void 0===(t=this._events))return this;if(void 0===t.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==t[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete t[e]),this;if(0===arguments.length){var r,s=Object.keys(t);for(n=0;n<s.length;++n)"removeListener"!==(r=s[n])&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(o=t[e]))this.removeListener(e,o);else if(void 0!==o)for(n=o.length-1;n>=0;n--)this.removeListener(e,o[n]);return this},s.prototype.listeners=function(e){return p(this,e,!0)},s.prototype.rawListeners=function(e){return p(this,e,!1)},s.listenerCount=function(e,o){return"function"==typeof e.listenerCount?e.listenerCount(o):f.call(e,o)},s.prototype.listenerCount=f,s.prototype.eventNames=function(){return this._eventsCount>0?o(this._events):[]}}},o={};function t(n){var r=o[n];if(void 0!==r)return r.exports;var s=o[n]={exports:{}};return e[n](s,s.exports,t),s.exports}t.d=(e,o)=>{for(var n in o)t.o(o,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:o[n]})},t.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{t.r(n),t.d(n,{Communicator:()=>T});var e=t(187);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function r(e,o){for(var t=0;t<o.length;t++){var n=o[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,i(n.key),n)}}function s(e,o,t){return o&&r(e.prototype,o),t&&r(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function i(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===o(t)?t:String(t)}var a="undefined"==typeof window,l=s((function e(o){var t,n,r,s=this;!function(e,o){if(!(e instanceof o))throw new TypeError("Cannot call a class as a function")}(this,e),t=this,r=function(e){a||window.top.frames[s.domId].postMessage(e,"*")},(n=i(n="sendMessageToMap"))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,this.domId="map-frame","string"==typeof o.id&&(this.domId=o.id)}));function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(e,o){for(var t=0;t<o.length;t++){var n=o[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,v(n.key),n)}}function d(){return d="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,o,t){var n=function(e,o){for(;!Object.prototype.hasOwnProperty.call(e,o)&&null!==(e=y(e)););return e}(e,o);if(n){var r=Object.getOwnPropertyDescriptor(n,o);return r.get?r.get.call(arguments.length<3?e:t):r.value}},d.apply(this,arguments)}function p(e,o){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,o){return e.__proto__=o,e},p(e,o)}function f(e,o){if(o&&("object"===c(o)||"function"==typeof o))return o;if(void 0!==o)throw new TypeError("Derived constructors may only return object or undefined");return m(e)}function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function y(e){return y=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},y(e)}function g(e,o,t){return(o=v(o))in e?Object.defineProperty(e,o,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[o]=t,e}function v(e){var o=function(e,o){if("object"!==c(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===c(o)?o:String(o)}var T=function(e){!function(e,o){if("function"!=typeof o&&null!==o)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(o&&o.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),o&&p(e,o)}(i,e);var o,t,n,r,s=(n=i,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,o=y(n);if(r){var t=y(this).constructor;e=Reflect.construct(o,arguments,t)}else e=o.apply(this,arguments);return f(this,e)});function i(e){var o;return function(e,o){if(!(e instanceof o))throw new TypeError("Cannot call a class as a function")}(this,i),g(m(o=s.call(this)),"onMessageReceived",(function(e){switch(e.data.type){case"onZoomChange":o.emitEvent("onZoomChange",e.data,e.data.domId);break;case"onCenterChange":o.emitEvent("onCenterChange",e.data,e.data.domId);break;case"geomAdded":o.emitEvent("geomAdded",e.data,e.data.domId);break;case"layers":o.emitEvent("layers",e.data,e.data.domId);break;case"geoJSONlayers":o.emitEvent("geoJSONlayers",e.data,e.data.domId);break;case"info":o.emitEvent("info",e.data,e.data.domId);break;case"error":o.emitEvent("error",e.data,e.data.domId);break;case"coordinates":o.emitEvent("coordinates",e.data,e.data.domId);break;case"activeLayer":o.emitEvent("activeLayer",e.data,e.data.domId);break;case"geolocation":o.emitEvent("geolocation",e.data,e.data.domId);break;case"WMSInfoAvailable":o.emitEvent("WMSInfoAvailable",e.data,e.data.domId);break;case"giswaterTiledBackgroundDisplayed":o.emitEvent("giswaterTiledBackgroundDisplayed",e.data,e.data.domId);break;case"giswaterTiledBackgroundAvailable":o.emitEvent("giswaterTiledBackgroundAvailable",e.data,e.data.domId);break;case"GiswaterLayerAvailableFilters":o.emitEvent("GiswaterLayerAvailableFilters",e.data,e.data.domId);break;case"loaded":o.emitEvent("loaded",e.data,e.data.domId);break;case"unloaded":o.emitEvent("unloaded",e.data,e.data.domId);break;case"availableWMSLayers":o.emitEvent("availableWMSLayers",e.data.layers,e.data.domId);break;case"layerElements":o.emitEvent("layerElements",e.data,e.data.domId);break;case"getToc":o.emitEvent("getToc",e.data,e.data.domId);break;case"status":o.emitEvent("status",e.data,e.data.domId);break;case"MeasureEnd":o.emitEvent("MeasureEnd",e.data,e.data.domId);break;case"queue":o.emitEvent("queue",e.data,e.data.domId);break;case"version":o.emitEvent("version",e.data,e.data.domId);break;case"hover":o.emitEvent("hover",e.data,e.data.domId);break;case"screenshot":o.emitEvent("screenshot",e.data,e.data.domId)}})),g(m(o),"emitEvent",(function(e,t,n){n===o.domId&&(delete t.domId,o.emit(e,t))})),g(m(o),"ZoomIn",(function(){o.com.sendMessageToMap({type:"zoomIn",sessionToken:o.sessionToken})})),g(m(o),"ZoomOut",(function(){o.com.sendMessageToMap({type:"zoomOut",sessionToken:o.sessionToken})})),g(m(o),"AddGeom",(function(e,t){o.com.sendMessageToMap({type:"AddGeom",geom:e,texts:null==t?void 0:t.texts,style:null==t?void 0:t.style,drawOnEnd:null==t?void 0:t.drawOnEnd,showConfirm:null==t?void 0:t.showConfirm,sessionToken:o.sessionToken})})),g(m(o),"CancelAddGeom",(function(e){o.com.sendMessageToMap({type:"CancelAddGeom"})})),g(m(o),"loadMultipleLayers",(function(e){void 0!==e?o.com.sendMessageToMap({type:"loadMultipleLayers",layers:e}):o.emit("error",{error:"no layers"})})),g(m(o),"toggleGroup",(function(e){o.com.sendMessageToMap({type:"toggleGroup",layers:e})})),g(m(o),"toggleLayer",(function(e,t){void 0===t&&(t={gutter:null,transparent:null,singletile:null,zIndex:null}),null!==t.singletile&&"boolean"!=typeof t.singletile&&(t.singletile=null,o.emit("error",{error:"singletile must be a Boolean",type:"error"})),""===t.gutter||null===t.gutter||t.singletile||(isNaN(parseInt(t.gutter))&&(t.gutter=null,o.emit("error",{type:"error",error:"Gutter must be a number"})),t.singletile&&(t.gutter=null,o.emit("error",{type:"error",error:"Gutter can only be user with multitile layers; set singletile to false"}))),null!==t.transparent&&"boolean"!=typeof t.transparent&&(t.transparent=null,o.emit("error",{type:"error",error:"transparent must be a Boolean"})),o.com.sendMessageToMap({type:"toggleLayer",layer:e,gutter:isNaN(parseInt(t.gutter))?null:parseInt(t.gutter),transparent:t.transparent,singletile:t.singletile,sessionToken:o.sessionToken,zIndex:isNaN(parseInt(t.zIndex))?null:parseInt(t.zIndex)})})),g(m(o),"removeLayer",(function(e){o.com.sendMessageToMap({type:"removeLayer",layer:e,sessionToken:o.sessionToken})})),g(m(o),"displayLayer",(function(e){o.com.sendMessageToMap({type:"displayLayer",layer:e,sessionToken:o.sessionToken})})),g(m(o),"setActiveLayer",(function(e){o.com.sendMessageToMap({type:"setActiveLayer",layer:e,sessionToken:o.sessionToken})})),g(m(o),"getActiveLayer",(function(){o.com.sendMessageToMap({type:"getActiveLayer",sessionToken:o.sessionToken})})),g(m(o),"bringLayerToTop",(function(e){o.com.sendMessageToMap({type:"bringLayerToTop",layer:e,sessionToken:o.sessionToken})})),g(m(o),"bringLayerToBottom",(function(e){o.com.sendMessageToMap({type:"bringLayerToBottom",layer:e,sessionToken:o.sessionToken})})),g(m(o),"loadWMSAvailableLayers",(function(){o.com.sendMessageToMap({type:"loadWMSAvailableLayers",sessionToken:o.sessionToken})})),g(m(o),"clear",(function(){o.com.sendMessageToMap({type:"clear",sessionToken:o.sessionToken})})),g(m(o),"Highlight",(function(e){o.com.sendMessageToMap({type:"highlight",geom:e.geom,zoom:e.zoom,metadata:null==e?void 0:e.data,center:void 0!==(null==e?void 0:e.center)&&e.center,animate:null==e?void 0:e.animate,style:null==e?void 0:e.style,sessionToken:o.sessionToken})})),g(m(o),"DrawGeometries",(function(e){void 0!==e?o.com.sendMessageToMap({type:"DrawGeometries",geoms:e}):o.emit("error",{type:"error",error:"no geoms"})})),g(m(o),"RemoveGeometriesByProperty",(function(e,t,n){void 0!==e&&void 0!==t&&void 0!==n?o.com.sendMessageToMap({type:"RemoveGeometriesByProperty",layer:e,property:t,value:n}):o.emit("error",{type:"error",error:"no layer, property or value"})})),g(m(o),"UpdateGeometriesByProperty",(function(e,t,n,r){void 0!==e&&void 0!==t&&void 0!==r&&void 0!==n?o.com.sendMessageToMap({type:"UpdateGeometriesByProperty",layer:e,property:t,value:n,style:r}):o.emit("error",{type:"error",error:"no layer, property or value"})})),g(m(o),"DrawGeometry",(function(e,t,n,r){console.warn("DrawGeometry is deprecated. Use DrawGeometries");var s={stroke_color:t.stroke_color?t.stroke_color:null,fill_color:t.fill_color?t.fill_color:null,point_fill_color:t.point_fill_color?t.point_fill_color:null,geom_radius:t.geom_radius?t.geom_radius:null,stroke_width:t.stroke_width?t.stroke_width:null,font_color:t.font_color?t.font_color:null,font:t.font?t.font:null,font_size:t.font_size?t.font_size:null,placement:t.placement?t.placement:null,fontFillColor:t.fontFillColor?t.fontFillColor:null,fontStrokeColor:t.fontStrokeColor?t.fontStrokeColor:null,fontStrokeWidth:t.fontStrokeWidth?t.fontStrokeWidth:null,baseline:t.baseline?t.baseline:null,align:t.align?t.align:null,display:t.display?t.display:null,offsetY:t.offsetY?t.offsetY:null};o.com.sendMessageToMap({type:"drawGeometry",geom:e,style:s,name:n||"highlight",id:r||Math.floor(1e3*Math.random())+1,sessionToken:o.sessionToken})})),g(m(o),"RemoveGeometry",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=void 0===e?null:e;if(!n)return console.error("No element id"),void o.emit("error",{type:"error",error:"No element id"});o.com.sendMessageToMap({type:"removeGeometry",layer:t,id:n})})),g(m(o),"zoomToExtent",(function(){o.com.sendMessageToMap({type:"zoomToExtent",sessionToken:o.sessionToken})})),g(m(o),"zoomToScale",(function(e){var t=["1:100","1:200","1:400","1:500","1:1000","1:2000","1:5000","1:10000","1:50000"];if(!t.includes(e))return console.error("Invalid scale: ".concat(e,". Allowed values are: ").concat(t.join(", "))),void o.emit("error",{type:"error",error:"Invalid scale: ".concat(e)});o.com.sendMessageToMap({type:"zoomToScale",sessionToken:o.sessionToken,scale:e})})),g(m(o),"zoomToCoordinates",(function(e,t,n){isNaN(parseInt(n))||o.com.sendMessageToMap({type:"zoomToCoordinates",sessionToken:o.sessionToken,coordinates:[e,t],zoomLevel:n})})),g(m(o),"zoomToGeometry",(function(e,t){o.com.sendMessageToMap({type:"zoomToGeometry",sessionToken:o.sessionToken,geom:e,limits:t})})),g(m(o),"infoFromCoordinates",(function(e,t,n,r){var s=void 0===t?null:t,i=void 0!==n&&n?parseInt(n):5,a=void 0===r?"xml":r.toLowerCase();"xml"===a||"json"===a?isNaN(i)?console.error("hitTolerance must be a number"):o.com.sendMessageToMap({type:"infoFromCoordinates",info:e,layer:s,format:a,hitTolerance:i,sessionToken:o.sessionToken}):console.error("Format must be 'xml' or 'json")})),g(m(o),"getElementsFromLayer",(function(e,t,n){var r=void 0===n?"xml":n.toLowerCase();if("xml"===r||"json"===r)if(isNaN(t))console.error("Limit must be a number");else{var s=void 0===e?null:e;o.com.sendMessageToMap({type:"getElementsFromLayer",layer:s,limit:void 0!==t?parseInt(t):100,format:n,sessionToken:o.sessionToken})}else console.error("Format must be 'xml' or 'json")})),g(m(o),"Geolocalize",(function(e,t){o.com.sendMessageToMap({type:"Geolocalize",toggle:e,options:t,sessionToken:o.sessionToken})})),g(m(o),"toggleGiswaterTiled",(function(e,t){o.com.sendMessageToMap({type:"toggleTiled",toggle:e,tiled:t,sessionToken:o.sessionToken})})),g(m(o),"toggleTiled",(function(e,t){o.com.sendMessageToMap({type:"toggleTiled",toggle:e,tiled:t,sessionToken:o.sessionToken})})),g(m(o),"getTiled",(function(){o.com.sendMessageToMap({type:"getTiled",sessionToken:o.sessionToken})})),g(m(o),"toggleSecondaryBackground",(function(e){o.com.sendMessageToMap({type:"toggleSecondaryBackground",toggle:e})})),g(m(o),"getSecondaryBackground",(function(){o.com.sendMessageToMap({type:"getSecondaryBackground",sessionToken:o.sessionToken})})),g(m(o),"reloadDisplayedLayers",(function(){return o.com.sendMessageToMap({type:"reloadDisplayedLayers",sessionToken:o.sessionToken})})),g(m(o),"addGeoJSON",(function(e,t,n){return e?o.com.sendMessageToMap({type:"addGeoJSON",geoJSON:e,options:void 0!==t?t:{fillcolor:null,strokecolor:null},name:n||Math.random().toString(36).substring(7),sessionToken:o.sessionToken}):void o.emit("error",{type:"error",error:"No geoJSON data"})})),g(m(o),"clearGeoJSON",(function(e){return e||o.emit("error",{type:"error",error:"No geoJSON layer name"}),o.com.sendMessageToMap({type:"clearGeoJSON",name:e,sessionToken:o.sessionToken})})),g(m(o),"removeGeoJSONLayer",(function(e){return e?o.com.sendMessageToMap({type:"removeGeoJSONLayer",name:e,sessionToken:o.sessionToken}):void o.emit("error",{type:"error",error:"No geoJSON data"})})),g(m(o),"setGiswaterFilters",(function(e){var t=e;if(e){if("object"!=c(e)){e=(e=(e=e.trim()).replace(/^\s+|\s+$/g,"")).replace(/\\/g,"");try{t=JSON.parse(e)}catch(e){return void o.emit("error",{type:"error",error:"Filters is not a valid JSON"})}}return o.com.sendMessageToMap({type:"setGiswaterFilters",filters:t,sessionToken:o.sessionToken})}o.emit("error",{type:"error",error:"No filters"})})),g(m(o),"setFilters",(function(e){var t=e;if(e){if("object"!=c(e)){e=(e=(e=e.trim()).replace(/^\s+|\s+$/g,"")).replace(/\\/g,"");try{t=JSON.parse(e)}catch(e){return void o.emit("error",{type:"error",error:"Filters is not a valid JSON"})}}return t.every((function(e){return Array.isArray(e.filters)}))?o.com.sendMessageToMap({type:"setFilters",filters:t,sessionToken:o.sessionToken}):void o.emit("error",{type:"error",error:"Filters is not a valid JSON - missing filters array"})}o.emit("error",{type:"error",error:"No filters"})})),g(m(o),"getGiswaterLayerAvailableFilters",(function(e){return e?o.com.sendMessageToMap({type:"getGiswaterLayerAvailableFilters",name:e,sessionToken:o.sessionToken}):void o.emit("error",{type:"error",error:"No layer_name"})})),g(m(o),"CenterMap",(function(e,t){o.com.sendMessageToMap({type:"centerMap",coordinates:[e,t]})})),g(m(o),"getToc",(function(){return o.com.sendMessageToMap({type:"getToc",sessionToken:o.sessionToken})})),g(m(o),"setDebug",(function(e){isNaN(parseInt(e))?console.error("Debug is not a integer"):o.com.sendMessageToMap({type:"setDebug",what:e,sessionToken:o.sessionToken})})),g(m(o),"setCustomColors",(function(e){if("object"===c(e)){if(e.hasOwnProperty("geom_stroke_width")){if(isNaN(parseInt(e.geom_stroke_width)))return void console.error("geom_stroke_width is not an number");e.geom_stroke_width=parseInt(e.geom_stroke_width)}else e.geom_stroke_width=1;if(e.hasOwnProperty("geom_radius")){if(isNaN(parseInt(e.geom_radius)))return void console.error("geom_stroke_width is not an number");e.geom_radius=parseInt(e.geom_radius)}else e.geom_radius=4;e.hasOwnProperty("geom_shape")&&"circle"!==e.geom_shape&&"square"!==e.geom_shape&&(e.geom_shape="circle",console.error("geom_shape must be either 'circle' or 'square'")),o.com.sendMessageToMap({type:"setCustomColors",properties:e,sessionToken:o.sessionToken})}else console.error("properties is not an object")})),g(m(o),"changeBackground",(function(e){return o.com.sendMessageToMap({type:"changeBackground",sessionToken:o.sessionToken,newBackground:e})})),g(m(o),"getBackground",(function(){o.com.sendMessageToMap({type:"getBackground",sessionToken:o.sessionToken})})),g(m(o),"initMeasure",(function(e,t,n){return o.com.sendMessageToMap({type:"initMeasure",sessionToken:o.sessionToken,measure:e,textStart:t,textContinue:n})})),g(m(o),"cancelMeasure",(function(){return o.com.sendMessageToMap({type:"cancelMeasure",sessionToken:o.sessionToken})})),g(m(o),"setBboxSize",(function(e){isNaN(parseInt(e))?console.error("bbox is not a integer"):o.com.sendMessageToMap({type:"setBoundingBoxSize",bbox:e,sessionToken:o.sessionToken})})),g(m(o),"addIcon",(function(e){var t=e.icon,n=e.coordinates;t instanceof ArrayBuffer||o.emit("error",{type:"error",error:"Invalid icon: Expected an ArrayBuffer."}),Array.isArray(n)||o.emit("error",{type:"error",error:"Invalid coordinates: Expected an array [longitude, latitude]."}),2===n.length&&"number"==typeof n[0]&&"number"==typeof n[1]||o.emit("error",{type:"error",error:"Invalid coordinates: Expected an array with two numeric values [longitude, latitude]."}),o.com.sendMessageToMap({type:"AddIcon",icon:t,coordinates:n,sessionToken:o.sessionToken})})),g(m(o),"screenshot",(function(e){o.com.sendMessageToMap({type:"screenshot",options:e,sessionToken:o.sessionToken})})),g(m(o),"printPaperSize",(function(e){o.com.sendMessageToMap({type:"printSetPaperSize",paperSize:e,sessionToken:o.sessionToken})})),g(m(o),"printPaperLayout",(function(e){o.com.sendMessageToMap({type:"printSetOrientation",paperLayout:e,sessionToken:o.sessionToken})})),g(m(o),"startPrint",(function(e){o.com.sendMessageToMap({type:"printStart",options:e,sessionToken:o.sessionToken})})),g(m(o),"cancelPrint",(function(e){o.com.sendMessageToMap({type:"printCancel",options:e,sessionToken:o.sessionToken})})),o.domId="map-frame","undefined"==typeof window?f(o):("string"==typeof e.id&&(o.domId=e.id),o.com=new l(e),window.addEventListener("message",(function(e){return o.onMessageReceived(e)})),o.sessionToken=e.sessionToken,o)}return o=i,(t=[{key:"removeListener",value:function(e,o){d(y(i.prototype),"removeListener",this).call(this,e,o)}}])&&u(o.prototype,t),Object.defineProperty(o,"prototype",{writable:!1}),i}(e.EventEmitter)})(),n})()));
|
package/examples/full/apidemo.js
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
// Config:
|
2
2
|
const urlParams = new URLSearchParams(window.location.search);
|
3
|
-
const user = urlParams.get(
|
4
|
-
const pwd = urlParams.get(
|
5
|
-
const apiQuery = urlParams.get(
|
3
|
+
const user = urlParams.get("user");
|
4
|
+
const pwd = urlParams.get("pwd");
|
5
|
+
const apiQuery = urlParams.get("api");
|
6
6
|
|
7
|
-
if(apiQuery) document.querySelector("#apiurl").value = apiQuery;
|
7
|
+
if (apiQuery) document.querySelector("#apiurl").value = apiQuery;
|
8
8
|
var apiUrl = document.querySelector("#apiurl").value;
|
9
|
-
if(user) document.querySelector("#user").value = user;
|
10
|
-
if(pwd) document.querySelector("#pwd").value = pwd;
|
11
|
-
|
9
|
+
if (user) document.querySelector("#user").value = user;
|
10
|
+
if (pwd) document.querySelector("#pwd").value = pwd;
|
12
11
|
|
13
12
|
// UI:
|
14
13
|
var usertoken = document.querySelector("#usertoken");
|
@@ -19,7 +18,9 @@ var btLoadMap = document.querySelector("#btLoadMap");
|
|
19
18
|
var btLoadProjectLayers = document.querySelector("#btLoadProjectLayers");
|
20
19
|
var projectlayers = document.getElementById("projectlayers");
|
21
20
|
var userData = document.querySelector("#userData");
|
22
|
-
var btAddGeoJSONFromGiswater = document.querySelector(
|
21
|
+
var btAddGeoJSONFromGiswater = document.querySelector(
|
22
|
+
"#btAddGeoJSONFromGiswater"
|
23
|
+
);
|
23
24
|
|
24
25
|
var btLogin = document.querySelector("#btLogin");
|
25
26
|
|
@@ -65,7 +66,7 @@ function reqListener() {
|
|
65
66
|
//simulate cache token
|
66
67
|
storeToken(res.message);
|
67
68
|
//fill user projects selector
|
68
|
-
fillUserProjects(res.message.
|
69
|
+
fillUserProjects(res.message.maps);
|
69
70
|
} else {
|
70
71
|
console.error(this.status);
|
71
72
|
var res = JSON.parse(this.responseText);
|
@@ -108,8 +109,8 @@ function checkToken() {
|
|
108
109
|
oReq.addEventListener("load", tokenListener);
|
109
110
|
oReq.open("GET", `${apiUrl}token/`, true);
|
110
111
|
oReq.setRequestHeader("Content-type", "application/json");
|
111
|
-
oReq.setRequestHeader(
|
112
|
-
|
112
|
+
oReq.setRequestHeader("Authorization", `Bearer ${usertoken.value}`);
|
113
|
+
|
113
114
|
oReq.send();
|
114
115
|
console.log("Check token", `${apiUrl}token/`);
|
115
116
|
} else {
|
@@ -117,10 +118,45 @@ function checkToken() {
|
|
117
118
|
loginContainer.classList.remove("hide");
|
118
119
|
}
|
119
120
|
}
|
121
|
+
|
122
|
+
function getUserProjects() {
|
123
|
+
//Check if user token is valid
|
124
|
+
console.log("getUserProjects", usertoken.value);
|
125
|
+
if (usertoken.value != "") {
|
126
|
+
//build XMLHttpRequest for checking token
|
127
|
+
var oReq = new XMLHttpRequest();
|
128
|
+
oReq.addEventListener("load", projectsListener);
|
129
|
+
oReq.open("GET", `${apiUrl}maps/`, true);
|
130
|
+
oReq.setRequestHeader("Content-type", "application/json");
|
131
|
+
oReq.setRequestHeader("Authorization", `Bearer ${usertoken.value}`);
|
132
|
+
|
133
|
+
oReq.send();
|
134
|
+
console.log("getUserProjects", `${apiUrl}projects/`);
|
135
|
+
} else {
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
function projectsListener() {
|
140
|
+
if (this.status === 200) {
|
141
|
+
var res = JSON.parse(this.responseText);
|
142
|
+
console.log("projectsListener", res.message);
|
143
|
+
var projects = [];
|
144
|
+
for (var i = 0; i < res.message.length; i++) {
|
145
|
+
projects.push(res.message[i].map_id);
|
146
|
+
}
|
147
|
+
fillUserProjects(projects);
|
148
|
+
} else {
|
149
|
+
//if token is invalid, show login form
|
150
|
+
console.error(this.status);
|
151
|
+
}
|
152
|
+
}
|
120
153
|
function tokenListener() {
|
121
154
|
if (this.status === 200) {
|
122
155
|
var res = JSON.parse(this.responseText);
|
123
156
|
console.log("Valid user token", res.message);
|
157
|
+
console.log("item", localStorage.getItem("selectedProjectId"));
|
158
|
+
getUserProjects();
|
159
|
+
|
124
160
|
//get from localstorage last iframe selected
|
125
161
|
var cachedMap = localStorage.getItem("iframe");
|
126
162
|
if (cachedMap) {
|
@@ -128,11 +164,8 @@ function tokenListener() {
|
|
128
164
|
mapContainer.classList.remove("hide");
|
129
165
|
iframe.src = cachedMap;
|
130
166
|
sessionToken.innerHTML = localStorage.getItem("sessionToken");
|
131
|
-
var selectedProjectId = localStorage.getItem("selectedProjectId");
|
132
|
-
if (selectedProjectId) {
|
133
|
-
selectProject(selectedProjectId);
|
134
|
-
}
|
135
167
|
}
|
168
|
+
//get user projects
|
136
169
|
} else {
|
137
170
|
//if token is invalid, show login form
|
138
171
|
console.error(this.status);
|
@@ -148,6 +181,7 @@ function tokenListener() {
|
|
148
181
|
//************** User projects SELECT
|
149
182
|
|
150
183
|
function fillUserProjects(options) {
|
184
|
+
console.log("fillUserProjects", options);
|
151
185
|
//empty previous options
|
152
186
|
var length = projects_select.options.length;
|
153
187
|
for (i = length - 1; i >= 0; i--) {
|
@@ -160,6 +194,11 @@ function fillUserProjects(options) {
|
|
160
194
|
el.value = opt;
|
161
195
|
projects_select.appendChild(el);
|
162
196
|
}
|
197
|
+
|
198
|
+
var selectedProjectId = localStorage.getItem("selectedProjectId");
|
199
|
+
if (selectedProjectId) {
|
200
|
+
selectProject(selectedProjectId);
|
201
|
+
}
|
163
202
|
}
|
164
203
|
|
165
204
|
function selectProject(id) {
|
@@ -193,7 +232,7 @@ btLoadMap.addEventListener("click", function (evt) {
|
|
193
232
|
uri += `&active_layer=${active_layer}`;
|
194
233
|
}
|
195
234
|
var overrideHost = document.querySelector("#overrideHost").value;
|
196
|
-
if(overrideHost){
|
235
|
+
if (overrideHost) {
|
197
236
|
uri += `&overrideHost=${overrideHost}`;
|
198
237
|
data.overrideHost = overrideHost;
|
199
238
|
}
|
@@ -218,11 +257,11 @@ btLoadMap.addEventListener("click", function (evt) {
|
|
218
257
|
data.use_giswater_tiled = use_giswater_tiled.checked;
|
219
258
|
}
|
220
259
|
|
221
|
-
console.log(uri)
|
260
|
+
console.log(uri);
|
222
261
|
var oReq = new XMLHttpRequest();
|
223
262
|
oReq.addEventListener("load", mapListener);
|
224
263
|
oReq.open("GET", uri, true);
|
225
|
-
oReq.setRequestHeader(
|
264
|
+
oReq.setRequestHeader("Authorization", `Bearer ${usertoken.value}`);
|
226
265
|
oReq.setRequestHeader("Content-type", "application/json");
|
227
266
|
oReq.send(JSON.stringify(data));
|
228
267
|
console.log("Attempt to load map", `${apiUrl}map/${selectedProjectId}`, data);
|
@@ -261,13 +300,12 @@ btLoadProjectLayers.addEventListener("click", function (evt) {
|
|
261
300
|
var selectedProjectId =
|
262
301
|
projects_select.options[projects_select.selectedIndex].value;
|
263
302
|
|
264
|
-
var uri = `${apiUrl}layers/${selectedProjectId}`;
|
265
|
-
|
303
|
+
var uri = `${apiUrl}/layers/${selectedProjectId}`;
|
266
304
|
|
267
305
|
var oReq = new XMLHttpRequest();
|
268
306
|
oReq.addEventListener("load", layersListener);
|
269
307
|
oReq.open("GET", uri, true);
|
270
|
-
oReq.setRequestHeader(
|
308
|
+
oReq.setRequestHeader("Authorization", `Bearer ${usertoken.value}`);
|
271
309
|
oReq.setRequestHeader("Content-type", "application/json");
|
272
310
|
oReq.send();
|
273
311
|
console.log("Attempt to load project layers", uri);
|
@@ -278,16 +316,16 @@ function layersListener() {
|
|
278
316
|
console.log("layersListener response", this.responseText);
|
279
317
|
var res = JSON.parse(this.responseText);
|
280
318
|
var length = projectlayers.options.length;
|
281
|
-
console.log(res)
|
282
|
-
for (i = length-1; i >= 0; i--) {
|
319
|
+
console.log(res);
|
320
|
+
for (i = length - 1; i >= 0; i--) {
|
283
321
|
projectlayers.options[i] = null;
|
284
322
|
}
|
285
|
-
for(var i = 0; i < res.message.length; i++) {
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
323
|
+
for (var i = 0; i < res.message.length; i++) {
|
324
|
+
var opt = res.message[i].qgis_name;
|
325
|
+
var el = document.createElement("option");
|
326
|
+
el.textContent = opt;
|
327
|
+
el.value = opt;
|
328
|
+
projectlayers.appendChild(el);
|
291
329
|
}
|
292
330
|
} else {
|
293
331
|
console.error(this.status);
|
@@ -300,47 +338,49 @@ function layersListener() {
|
|
300
338
|
}
|
301
339
|
}
|
302
340
|
|
303
|
-
function fillLayersSelect(options){
|
341
|
+
function fillLayersSelect(options) {
|
304
342
|
//empty previous options
|
305
|
-
|
306
343
|
}
|
307
344
|
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
345
|
+
if (btAddGeoJSONFromGiswater) {
|
346
|
+
btAddGeoJSONFromGiswater.addEventListener("click", function () {
|
347
|
+
let lay = document
|
348
|
+
.getElementById("currentActiveLayerForGeoJSON")
|
349
|
+
.innerHTML.trim();
|
350
|
+
console.log(`Requesting Giswater GeoJSON for layer ${lay}`);
|
351
|
+
if (lay && lay !== "") {
|
314
352
|
apiUrl = document.querySelector("#apiurl").value;
|
315
|
-
//Build XMLHttpRequest
|
353
|
+
//Build XMLHttpRequest
|
316
354
|
var selectedProjectId =
|
317
|
-
|
355
|
+
projects_select.options[projects_select.selectedIndex].value;
|
318
356
|
var uri = `${apiUrl}giswater/geojson/${selectedProjectId}/${lay}`;
|
319
357
|
var oReq = new XMLHttpRequest();
|
320
358
|
oReq.addEventListener("load", GeoJSONListener);
|
321
359
|
oReq.open("GET", uri, true);
|
322
|
-
oReq.setRequestHeader(
|
360
|
+
oReq.setRequestHeader("Authorization", `Bearer ${usertoken.value}`);
|
323
361
|
oReq.setRequestHeader("Content-type", "application/json");
|
324
362
|
oReq.send();
|
325
363
|
}
|
326
364
|
});
|
327
365
|
}
|
328
366
|
|
329
|
-
function GeoJSONListener(){
|
367
|
+
function GeoJSONListener() {
|
330
368
|
if (this.status === 200) {
|
331
|
-
try{
|
369
|
+
try {
|
332
370
|
var res = JSON.parse(this.responseText);
|
333
371
|
console.log("GeoJSONListener response", res.message);
|
334
|
-
if(document.getElementById(
|
335
|
-
document.getElementById(
|
372
|
+
if (document.getElementById("geojsondata")) {
|
373
|
+
document.getElementById("geojsondata").value = JSON.stringify(
|
374
|
+
res.message
|
375
|
+
);
|
336
376
|
var btAddGeoJSON = document.querySelector("#btAddGeoJSON");
|
337
|
-
if(btAddGeoJSON){
|
377
|
+
if (btAddGeoJSON) {
|
338
378
|
btAddGeoJSON.click();
|
339
379
|
}
|
340
380
|
}
|
341
|
-
}catch(e){
|
342
|
-
|
343
|
-
}
|
381
|
+
} catch (e) {
|
382
|
+
console.error("Invalid API response");
|
383
|
+
}
|
344
384
|
} else {
|
345
385
|
console.error(this.status);
|
346
386
|
}
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
e47b595bdd549b83c9c061918313886e
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
undefined
|
@@ -0,0 +1,27 @@
|
|
1
|
+
FROM ubuntu:20.04
|
2
|
+
|
3
|
+
# Set timezone to UTC to avoid tzdata interactive mode
|
4
|
+
ENV TZ=Etc/UTC
|
5
|
+
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
6
|
+
|
7
|
+
# Update packages and install Apache + PHP 7.4
|
8
|
+
RUN apt-get update && apt-get install -y \
|
9
|
+
apache2 \
|
10
|
+
php7.4 \
|
11
|
+
libapache2-mod-php7.4 \
|
12
|
+
php7.4-cli \
|
13
|
+
php7.4-mbstring \
|
14
|
+
php7.4-xml \
|
15
|
+
php7.4-curl \
|
16
|
+
php7.4-mysql \
|
17
|
+
php7.4-zip \
|
18
|
+
&& apt-get clean
|
19
|
+
|
20
|
+
# Set working directory
|
21
|
+
WORKDIR /var/www/html
|
22
|
+
|
23
|
+
# Expose port 80
|
24
|
+
EXPOSE 80
|
25
|
+
|
26
|
+
# Start Apache in foreground
|
27
|
+
CMD ["apache2ctl", "-D", "FOREGROUND"]
|
package/examples/full/index.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
<head>
|
4
4
|
<title>🛠️ MAP TESTER</title>
|
5
|
-
<link rel="stylesheet" href="
|
5
|
+
<link rel="stylesheet" href="tester.css">
|
6
6
|
</link>
|
7
7
|
<link rel="icon" type="image/png" href="https://www.vidrosoftware.com/favicon/favicon-32x32.png" sizes="32x32" />
|
8
8
|
<link rel="icon" type="image/png" href="https://www.vidrosoftware.com/favicon/favicon-16x16.png" sizes="16x16" />
|
@@ -160,15 +160,17 @@
|
|
160
160
|
<input type="hidden" name="geojsondata" id="geojsondata" />
|
161
161
|
<br><br>
|
162
162
|
<b>Options</b><br><br>
|
163
|
-
|
164
|
-
|
165
|
-
<
|
163
|
+
Geojson layer name: <input type="text" name="geojsonaLayername" id="geojsonaLayername" size="25" value="geojsontest"><br>
|
164
|
+
Stroke color: <input type="text" name="strokecolor" id="strokecolor" size="10" value="#FF0000" placeholder="#000000"> <small>Override stroke color, desfault #ff0000</small><br>
|
165
|
+
Fill color: <input type="text" name="fillcolor" id="fillcolor" size="10" value="#FF0000" placeholder="#000000"> <small>Override fill color, desfault #ff0000</small><br><br>
|
166
|
+
<button id="btSetColors">Set colors</button>
|
167
|
+
<button id="btAddGeoJSON">Add GeoJSON Layer</button> <button id="btClearGeoJSON">Clear GeoJSON Layer</button><br><br>
|
166
168
|
<input type="text" name="hitTolerance" id="hitTolerance" size="5" value="" placeholder="5"> <small>Override hit tolerance</small><br><br>
|
167
169
|
|
168
170
|
Selected GeoJSON Layer: <select id="geojsonlayers"></select> - <button id="btGeoJSONInfo" disabled="true">GeoJSON Info</button> <button id="btRemoveGeoJSONLayer" disabled="true">Remove GeoJSON Layer</button><br><br>
|
169
171
|
|
170
172
|
|
171
|
-
<script src="https://unpkg.com/@vidro/map-handler@1.
|
173
|
+
<script src="https://unpkg.com/@vidro/map-handler@1.2.191/dist/map-handler.js"></script>
|
172
174
|
<script src="./tester.js"></script>
|
173
175
|
<script src="./apidemo.js"></script>
|
174
176
|
</body>
|
@@ -0,0 +1,74 @@
|
|
1
|
+
* {
|
2
|
+
box-sizing: border-box;
|
3
|
+
}
|
4
|
+
|
5
|
+
body{
|
6
|
+
background-color: ghostwhite;
|
7
|
+
color: lightslategrey;
|
8
|
+
font-family: Hack, monospace;
|
9
|
+
padding: 20px;
|
10
|
+
}
|
11
|
+
|
12
|
+
#sessionToken{
|
13
|
+
display: none;
|
14
|
+
}
|
15
|
+
|
16
|
+
#iframes-container{
|
17
|
+
display: flex;
|
18
|
+
justify-content: space-between;
|
19
|
+
gap: 25px;
|
20
|
+
margin: 25px 0;
|
21
|
+
}
|
22
|
+
|
23
|
+
iframe{
|
24
|
+
background-color: white;
|
25
|
+
border-radius: 5px;
|
26
|
+
overflow: hidden;
|
27
|
+
border: none;
|
28
|
+
box-shadow: 0 5px 10px 0 rgba(0, 0, 0, .2);
|
29
|
+
}
|
30
|
+
|
31
|
+
iframe[name=map-frame]{
|
32
|
+
padding: 10px;
|
33
|
+
}
|
34
|
+
|
35
|
+
pre{
|
36
|
+
overflow: scroll;
|
37
|
+
|
38
|
+
}
|
39
|
+
.error{
|
40
|
+
color: red;
|
41
|
+
font-weight: bold;
|
42
|
+
}
|
43
|
+
.hide{
|
44
|
+
display: none;
|
45
|
+
}
|
46
|
+
.form{
|
47
|
+
margin: 20px;
|
48
|
+
|
49
|
+
}
|
50
|
+
.form div{
|
51
|
+
padding: 10px;
|
52
|
+
|
53
|
+
}
|
54
|
+
|
55
|
+
#Error_container{
|
56
|
+
color: red;
|
57
|
+
font-weight: bold;
|
58
|
+
}
|
59
|
+
#Result_container{
|
60
|
+
color: blue;
|
61
|
+
font-size: 10px;
|
62
|
+
}
|
63
|
+
|
64
|
+
small{
|
65
|
+
color: #ccc;
|
66
|
+
|
67
|
+
|
68
|
+
}
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
package/examples/full/tester.js
CHANGED
@@ -92,10 +92,13 @@ communicator.on("geomAdded", function (data) {
|
|
92
92
|
document.getElementById("geom").value = data;
|
93
93
|
});
|
94
94
|
|
95
|
+
communicator.on("unloaded", function (data) {
|
96
|
+
console.log("unloaded", data);
|
97
|
+
});
|
98
|
+
|
95
99
|
communicator.on("loaded", function (data) {
|
96
100
|
console.log("loaded", data);
|
97
101
|
});
|
98
|
-
|
99
102
|
communicator.on("layers", function (data) {
|
100
103
|
console.log("layers received", data);
|
101
104
|
fillDisplayedLayersSelect(data);
|
@@ -483,6 +486,7 @@ if (btAddGeoJSON) {
|
|
483
486
|
}
|
484
487
|
var fillcolor = document.querySelector("#fillcolor");
|
485
488
|
var strokecolor = document.querySelector("#strokecolor");
|
489
|
+
var geojsonaLayername = document.querySelector("#geojsonaLayername").value;
|
486
490
|
|
487
491
|
//Check JSON
|
488
492
|
try {
|
@@ -496,7 +500,12 @@ if (btAddGeoJSON) {
|
|
496
500
|
if (strokecolor) {
|
497
501
|
options.strokecolor = strokecolor.value;
|
498
502
|
}
|
499
|
-
|
503
|
+
|
504
|
+
communicator.addGeoJSON(
|
505
|
+
JSON.parse(geoToSend),
|
506
|
+
options,
|
507
|
+
geojsonaLayername
|
508
|
+
);
|
500
509
|
} catch (e) {
|
501
510
|
console.error("invalid geoJSON", e);
|
502
511
|
}
|
@@ -505,7 +514,8 @@ if (btAddGeoJSON) {
|
|
505
514
|
|
506
515
|
if (btClearGeoJSON) {
|
507
516
|
btClearGeoJSON.addEventListener("click", function () {
|
508
|
-
|
517
|
+
var geojsonaLayername = document.querySelector("#geojsonaLayername").value;
|
518
|
+
communicator.clearGeoJSON(geojsonaLayername);
|
509
519
|
});
|
510
520
|
}
|
511
521
|
|
@@ -596,8 +606,8 @@ if (btgetGiswaterFilters) {
|
|
596
606
|
if (btSetColors) {
|
597
607
|
btSetColors.addEventListener("click", function () {
|
598
608
|
var properties = {
|
599
|
-
geom_stroke_color:
|
600
|
-
geom_fill_color:
|
609
|
+
geom_stroke_color: strokecolor.value,
|
610
|
+
geom_fill_color: fillcolor.value,
|
601
611
|
geom_stroke_width: 1,
|
602
612
|
geom_shape: "circle",
|
603
613
|
geom_radius: 4,
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import { usePrint } from "@/contexts/print";
|
2
|
+
const { useMessages } = require("@/contexts/messages");
|
3
|
+
const { useState, useEffect } = require("react");
|
4
|
+
|
5
|
+
const PrintLayoutSelector = () => {
|
6
|
+
const { zoomToScale } = useMessages();
|
7
|
+
const { paperLayout, setPaperLayout } = usePrint();
|
8
|
+
const layouts = [
|
9
|
+
{ id: "landscape", val: "landscape", label: "landscape" },
|
10
|
+
{ id: "portrait", val: "portrait", label: "portrait" },
|
11
|
+
];
|
12
|
+
|
13
|
+
const [actualValue, setActualValue] = useState(
|
14
|
+
paperLayout ? paperLayout : "landscape"
|
15
|
+
);
|
16
|
+
useEffect(() => {
|
17
|
+
if (!paperLayout) return;
|
18
|
+
const current = layouts.find((s) => s.val === paperLayout);
|
19
|
+
if (current) {
|
20
|
+
setActualValue(current.val);
|
21
|
+
} else {
|
22
|
+
setActualValue("landscape");
|
23
|
+
}
|
24
|
+
console.log("paperLayout", paperLayout);
|
25
|
+
}, [paperLayout]);
|
26
|
+
return (
|
27
|
+
<div className="mx-2 pt-2">
|
28
|
+
<label>Layout:</label>
|
29
|
+
<select
|
30
|
+
value={actualValue}
|
31
|
+
onChange={(e) => {
|
32
|
+
const newVal = !isNaN(e.target.value)
|
33
|
+
? Number(e.target.value)
|
34
|
+
: e.target.value;
|
35
|
+
setActualValue(newVal);
|
36
|
+
setPaperLayout(newVal);
|
37
|
+
}}
|
38
|
+
>
|
39
|
+
{layouts.map((opt, index) => {
|
40
|
+
return (
|
41
|
+
<option key={`opt_layout_${index}`} value={opt.val}>
|
42
|
+
{opt.label}
|
43
|
+
</option>
|
44
|
+
);
|
45
|
+
})}
|
46
|
+
</select>
|
47
|
+
</div>
|
48
|
+
);
|
49
|
+
};
|
50
|
+
export default PrintLayoutSelector;
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import { usePrint } from "@/contexts/print";
|
2
|
+
const { useMessages } = require("@/contexts/messages");
|
3
|
+
const { useState, useEffect } = require("react");
|
4
|
+
|
5
|
+
const PrintPaperSizeSelector = () => {
|
6
|
+
const { zoomToScale } = useMessages();
|
7
|
+
const { paperSize, setPaperSize } = usePrint();
|
8
|
+
const sizes = [
|
9
|
+
{ id: "A4", val: "A4", label: "A4" },
|
10
|
+
{ id: "A3", val: "A3", label: "A3" },
|
11
|
+
];
|
12
|
+
|
13
|
+
const [actualValue, setActualValue] = useState(paperSize ? paperSize : "A4");
|
14
|
+
useEffect(() => {
|
15
|
+
if (!paperSize) return;
|
16
|
+
const currentSize = sizes.find((s) => s.val === paperSize);
|
17
|
+
if (currentSize) {
|
18
|
+
setActualValue(currentSize.val);
|
19
|
+
} else {
|
20
|
+
setActualValue("A4");
|
21
|
+
}
|
22
|
+
console.log("paperSize", paperSize);
|
23
|
+
}, [paperSize]);
|
24
|
+
return (
|
25
|
+
<div className="mx-2 pt-2">
|
26
|
+
<label>Paper size:</label>
|
27
|
+
<select
|
28
|
+
value={actualValue}
|
29
|
+
onChange={(e) => {
|
30
|
+
const newVal = !isNaN(e.target.value)
|
31
|
+
? Number(e.target.value)
|
32
|
+
: e.target.value;
|
33
|
+
setActualValue(newVal);
|
34
|
+
setPaperSize(newVal);
|
35
|
+
}}
|
36
|
+
>
|
37
|
+
{sizes.map((opt, index) => {
|
38
|
+
return (
|
39
|
+
<option key={`opt_${index}`} value={opt.val}>
|
40
|
+
{opt.label}
|
41
|
+
</option>
|
42
|
+
);
|
43
|
+
})}
|
44
|
+
</select>
|
45
|
+
</div>
|
46
|
+
);
|
47
|
+
};
|
48
|
+
export default PrintPaperSizeSelector;
|
@@ -0,0 +1,57 @@
|
|
1
|
+
const { useMaps } = require("@/contexts/maps");
|
2
|
+
const { useMessages } = require("@/contexts/messages");
|
3
|
+
const { useState, useEffect } = require("react");
|
4
|
+
|
5
|
+
const ZoomToScaleButton = () => {
|
6
|
+
const { zoomToScale } = useMessages();
|
7
|
+
const { mapScale } = useMaps();
|
8
|
+
const scales = [
|
9
|
+
{ id: "1:100", val: "1:100", label: "1:100" },
|
10
|
+
{ id: "1:200", val: "1:200", label: "1:200" },
|
11
|
+
{ id: "1:500", val: "1:500", label: "1:500" },
|
12
|
+
{ id: "1:1000", val: "1:1000", label: "1:1000" },
|
13
|
+
{ id: "1:2000", val: "1:2000", label: "1:2000" },
|
14
|
+
{ id: "1:5000", val: "1:5000", label: "1:5000" },
|
15
|
+
{ id: "1:10000", val: "1:10000", label: "1:10000" },
|
16
|
+
{ id: "1:50000", val: "1:50000", label: "1:50000" },
|
17
|
+
];
|
18
|
+
|
19
|
+
const [actualValue, setActualValue] = useState(mapScale ? mapScale : "-1");
|
20
|
+
useEffect(() => {
|
21
|
+
if (!mapScale) return;
|
22
|
+
const scale = scales.find((s) => s.val === mapScale);
|
23
|
+
if (scale) {
|
24
|
+
setActualValue(scale.val);
|
25
|
+
} else {
|
26
|
+
setActualValue("-1");
|
27
|
+
}
|
28
|
+
console.log("mapScale", mapScale, scale);
|
29
|
+
}, [mapScale]);
|
30
|
+
return (
|
31
|
+
<div className="mx-2 pt-2">
|
32
|
+
<label>Zoom to scale:</label>
|
33
|
+
<select
|
34
|
+
value={actualValue}
|
35
|
+
onChange={(e) => {
|
36
|
+
const newVal = !isNaN(e.target.value)
|
37
|
+
? Number(e.target.value)
|
38
|
+
: e.target.value;
|
39
|
+
setActualValue(newVal);
|
40
|
+
zoomToScale(newVal);
|
41
|
+
}}
|
42
|
+
>
|
43
|
+
<option key={`opt_select_scale`} value="-1">
|
44
|
+
Select scale...
|
45
|
+
</option>
|
46
|
+
{scales.map((opt, index) => {
|
47
|
+
return (
|
48
|
+
<option key={`opt_${index}`} value={opt.val}>
|
49
|
+
{opt.label}
|
50
|
+
</option>
|
51
|
+
);
|
52
|
+
})}
|
53
|
+
</select>
|
54
|
+
</div>
|
55
|
+
);
|
56
|
+
};
|
57
|
+
export default ZoomToScaleButton;
|
@@ -1,3 +1,6 @@
|
|
1
|
+
import PrintLayoutSelector from "@/atoms/PrintLayoutSelector";
|
2
|
+
import PrintPaperSizeSelector from "@/atoms/PrintPaperSizeSelector";
|
3
|
+
import ZoomToScaleButton from "@/atoms/ZoomToScaleButton";
|
1
4
|
import { useAuth } from "@/contexts/auth";
|
2
5
|
import { useMaps } from "@/contexts/maps";
|
3
6
|
import { useMessages } from "@/contexts/messages";
|
@@ -100,62 +103,22 @@ const MapButtons = () => {
|
|
100
103
|
Center map to clicked coordinates
|
101
104
|
</button>
|
102
105
|
<ZoomToScaleButton />
|
106
|
+
<div className="mx-2 pt-2">|</div>
|
107
|
+
<button
|
108
|
+
onClick={(e) => {
|
109
|
+
console.log("Highlight clickedCoordinates", clickedCoordinates);
|
110
|
+
}}
|
111
|
+
disabled={!clickedCoordinates}
|
112
|
+
className="border border-gray-300 bg-black text-white rounded-md p-2"
|
113
|
+
>
|
114
|
+
Print
|
115
|
+
</button>
|
116
|
+
|
117
|
+
<PrintPaperSizeSelector />
|
118
|
+
<PrintLayoutSelector />
|
103
119
|
</div>
|
104
120
|
)}
|
105
121
|
</>
|
106
122
|
);
|
107
123
|
};
|
108
124
|
export default MapButtons;
|
109
|
-
|
110
|
-
const ZoomToScaleButton = () => {
|
111
|
-
const { zoomToScale } = useMessages();
|
112
|
-
const { mapScale } = useMaps();
|
113
|
-
const scales = [
|
114
|
-
{ id: "1:100", val: "1:100", label: "1:100" },
|
115
|
-
{ id: "1:200", val: "1:200", label: "1:200" },
|
116
|
-
{ id: "1:500", val: "1:500", label: "1:500" },
|
117
|
-
{ id: "1:1000", val: "1:1000", label: "1:1000" },
|
118
|
-
{ id: "1:2000", val: "1:2000", label: "1:2000" },
|
119
|
-
{ id: "1:5000", val: "1:5000", label: "1:5000" },
|
120
|
-
{ id: "1:10000", val: "1:10000", label: "1:10000" },
|
121
|
-
{ id: "1:50000", val: "1:50000", label: "1:50000" },
|
122
|
-
];
|
123
|
-
|
124
|
-
const [actualValue, setActualValue] = useState(mapScale ? mapScale : "-1");
|
125
|
-
useEffect(() => {
|
126
|
-
if (!mapScale) return;
|
127
|
-
const scale = scales.find((s) => s.val === mapScale);
|
128
|
-
if (scale) {
|
129
|
-
setActualValue(scale.val);
|
130
|
-
} else {
|
131
|
-
setActualValue("-1");
|
132
|
-
}
|
133
|
-
console.log("mapScale", mapScale, scale);
|
134
|
-
}, [mapScale]);
|
135
|
-
return (
|
136
|
-
<div className="mx-2 pt-2">
|
137
|
-
<label>Zoom to scale:</label>
|
138
|
-
<select
|
139
|
-
value={actualValue}
|
140
|
-
onChange={(e) => {
|
141
|
-
const newVal = !isNaN(e.target.value)
|
142
|
-
? Number(e.target.value)
|
143
|
-
: e.target.value;
|
144
|
-
setActualValue(newVal);
|
145
|
-
zoomToScale(newVal);
|
146
|
-
}}
|
147
|
-
>
|
148
|
-
<option key={`opt_select_scale`} value="-1">
|
149
|
-
Select scale...
|
150
|
-
</option>
|
151
|
-
{scales.map((opt, index) => {
|
152
|
-
return (
|
153
|
-
<option key={`opt_${index}`} value={opt.val}>
|
154
|
-
{opt.label}
|
155
|
-
</option>
|
156
|
-
);
|
157
|
-
})}
|
158
|
-
</select>
|
159
|
-
</div>
|
160
|
-
);
|
161
|
-
};
|
@@ -1,11 +1,19 @@
|
|
1
1
|
import { useAuth } from "@/contexts/auth";
|
2
2
|
import { useMaps } from "@/contexts/maps";
|
3
|
-
import { useState } from "react";
|
4
|
-
|
3
|
+
import { useEffect, useState } from "react";
|
4
|
+
import { getMapId as getMapIdCookie } from "@/shared/cookies";
|
5
5
|
const MapList = () => {
|
6
6
|
const { GetMap } = useMaps();
|
7
7
|
const { projects, logged } = useAuth();
|
8
8
|
const [selectedMap, setSelectedMap] = useState("-1");
|
9
|
+
useEffect(() => {
|
10
|
+
if (!logged) return;
|
11
|
+
if (!getMapIdCookie()) {
|
12
|
+
return;
|
13
|
+
}
|
14
|
+
|
15
|
+
setSelectedMap(getMapIdCookie());
|
16
|
+
}, [logged]);
|
9
17
|
if (!logged) return null;
|
10
18
|
return (
|
11
19
|
<div>
|
@@ -1,7 +1,14 @@
|
|
1
1
|
"use client";
|
2
|
-
import { createContext, useContext, useState } from "react";
|
2
|
+
import { createContext, useContext, useState, useEffect } from "react";
|
3
3
|
import { useRouter } from "next/navigation";
|
4
|
-
|
4
|
+
import {
|
5
|
+
getToken,
|
6
|
+
setToken as setTokenCookie,
|
7
|
+
removeToken as removeTokenCookie,
|
8
|
+
setMapList as setMapListCookie,
|
9
|
+
getMapList as getMapListCookie,
|
10
|
+
removeMapList as removeMapListCookie,
|
11
|
+
} from "@/shared/cookies";
|
5
12
|
const AuthContext = createContext({});
|
6
13
|
|
7
14
|
export const AuthProvider = ({ children }) => {
|
@@ -19,8 +26,46 @@ export const AuthProvider = ({ children }) => {
|
|
19
26
|
setToken(null);
|
20
27
|
setUserId(null);
|
21
28
|
setProjects([]);
|
29
|
+
removeTokenCookie();
|
30
|
+
removeMapListCookie();
|
22
31
|
};
|
23
32
|
|
33
|
+
useEffect(() => {
|
34
|
+
(async () => {
|
35
|
+
if (!getToken()) {
|
36
|
+
console.log("No token found");
|
37
|
+
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
console.log("token cookie found, authenticating...");
|
41
|
+
try {
|
42
|
+
const response = await fetch(`${apiUrl}me`, {
|
43
|
+
method: "GET",
|
44
|
+
headers: {
|
45
|
+
"Content-Type": "application/json",
|
46
|
+
Authorization: `Bearer ${getToken()}`,
|
47
|
+
},
|
48
|
+
});
|
49
|
+
const data = await response.json();
|
50
|
+
if (!response.ok) {
|
51
|
+
resetAuthState();
|
52
|
+
return;
|
53
|
+
}
|
54
|
+
setToken(getToken());
|
55
|
+
setUserId(data.message.id);
|
56
|
+
setLogged(true);
|
57
|
+
const listMaps = getMapListCookie();
|
58
|
+
if (listMaps) {
|
59
|
+
setProjects(JSON.parse(listMaps));
|
60
|
+
}
|
61
|
+
|
62
|
+
console.log("authenticated through cookie", data);
|
63
|
+
} catch (error) {
|
64
|
+
console.error("Login error:", error);
|
65
|
+
return { error: true, message: "An unexpected error occurred" };
|
66
|
+
}
|
67
|
+
})();
|
68
|
+
}, []);
|
24
69
|
const login = async (email, password) => {
|
25
70
|
try {
|
26
71
|
const response = await fetch(`${apiUrl}letsgo`, {
|
@@ -40,9 +85,10 @@ export const AuthProvider = ({ children }) => {
|
|
40
85
|
|
41
86
|
setToken(data.message.token);
|
42
87
|
setUserId(data.message.id);
|
43
|
-
|
44
88
|
setLogged(true);
|
45
89
|
setProjects(data.message.maps);
|
90
|
+
setTokenCookie(data.message.token);
|
91
|
+
setMapListCookie(JSON.stringify(data.message.maps));
|
46
92
|
} catch (error) {
|
47
93
|
console.error("Login error:", error);
|
48
94
|
return { error: true, message: "An unexpected error occurred" };
|
@@ -1,7 +1,11 @@
|
|
1
1
|
"use client";
|
2
2
|
import { createContext, useContext, useState, useEffect } from "react";
|
3
3
|
import { useAuth } from "./auth";
|
4
|
-
|
4
|
+
import {
|
5
|
+
setMapId as setMapIdCookie,
|
6
|
+
getMapId as getMapIdCookie,
|
7
|
+
removeMapId as removeMapIdCookie,
|
8
|
+
} from "@/shared/cookies";
|
5
9
|
const MapsContext = createContext({});
|
6
10
|
|
7
11
|
export const MapsProvider = ({ children }) => {
|
@@ -45,6 +49,24 @@ export const MapsProvider = ({ children }) => {
|
|
45
49
|
//tools
|
46
50
|
const [selectedTool, setSelectedTool] = useState(null);
|
47
51
|
|
52
|
+
useEffect(() => {
|
53
|
+
if (!token) return;
|
54
|
+
(async () => {
|
55
|
+
if (!getMapIdCookie()) {
|
56
|
+
console.log("No map if cookie found");
|
57
|
+
|
58
|
+
return;
|
59
|
+
}
|
60
|
+
console.log("Map id cookie found, getting map...");
|
61
|
+
try {
|
62
|
+
await GetMap(getMapIdCookie());
|
63
|
+
} catch (error) {
|
64
|
+
console.error("Error getting map from cookie", error);
|
65
|
+
return;
|
66
|
+
}
|
67
|
+
})();
|
68
|
+
}, [token]);
|
69
|
+
|
48
70
|
const GetMap = async (id) => {
|
49
71
|
let url = `${apiUrl}map/${id}`;
|
50
72
|
|
@@ -64,12 +86,17 @@ export const MapsProvider = ({ children }) => {
|
|
64
86
|
setMap(
|
65
87
|
`${data.message.iframe}?sessionToken=${data.message.sessionToken}`
|
66
88
|
);
|
89
|
+
//store map id in cookie, to avoid losing it on page refresh
|
90
|
+
setMapIdCookie(id);
|
91
|
+
|
67
92
|
return;
|
68
93
|
} catch (error) {
|
69
94
|
console.error("Error fetching map:", error);
|
70
95
|
setSessionToken(null);
|
71
96
|
setMap(null);
|
72
97
|
setMapId(null);
|
98
|
+
removeMapIdCookie();
|
99
|
+
|
73
100
|
throw error;
|
74
101
|
}
|
75
102
|
};
|
@@ -0,0 +1,24 @@
|
|
1
|
+
"use client";
|
2
|
+
import { createContext, useContext, useState, useEffect } from "react";
|
3
|
+
|
4
|
+
const PrintsContext = createContext({});
|
5
|
+
|
6
|
+
export const PrintsProvider = ({ children }) => {
|
7
|
+
const [paperSize, setPaperSize] = useState(null);
|
8
|
+
const [paperLayout, setPaperLayout] = useState(null);
|
9
|
+
|
10
|
+
return (
|
11
|
+
<PrintsContext.Provider
|
12
|
+
value={{
|
13
|
+
paperLayout,
|
14
|
+
setPaperLayout,
|
15
|
+
paperSize,
|
16
|
+
setPaperSize,
|
17
|
+
}}
|
18
|
+
>
|
19
|
+
{children}
|
20
|
+
</PrintsContext.Provider>
|
21
|
+
);
|
22
|
+
};
|
23
|
+
|
24
|
+
export const usePrint = () => useContext(PrintsContext);
|
@@ -9,6 +9,7 @@ import Image from "next/image";
|
|
9
9
|
import MapList from "@/components/MapList";
|
10
10
|
import MapLayers from "@/components/MapLayers";
|
11
11
|
import MapFilters from "@/components/MapFilters";
|
12
|
+
import { PrintsProvider } from "@/contexts/print";
|
12
13
|
|
13
14
|
export default function Home() {
|
14
15
|
return (
|
@@ -16,23 +17,25 @@ export default function Home() {
|
|
16
17
|
<AuthProvider>
|
17
18
|
<MessageProvider>
|
18
19
|
<MapsProvider>
|
19
|
-
<
|
20
|
-
<
|
21
|
-
|
22
|
-
<
|
23
|
-
|
24
|
-
|
25
|
-
<
|
26
|
-
|
27
|
-
|
28
|
-
|
20
|
+
<PrintsProvider>
|
21
|
+
<main className="text-center">
|
22
|
+
<h1 className="text-3xl">Map component REACT integration</h1>
|
23
|
+
<div className="my-5">
|
24
|
+
<AuthComponent />
|
25
|
+
</div>
|
26
|
+
<div className="my-5">
|
27
|
+
<MapList />
|
28
|
+
<MapLayers />
|
29
|
+
<MapFilters />
|
30
|
+
</div>
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
<div className="my-5 bg-gray-100 border border-gray-400 p-4">
|
33
|
+
<MapButtons />
|
34
|
+
<MapInfo />
|
35
|
+
<MapIframe />
|
36
|
+
</div>
|
37
|
+
</main>
|
38
|
+
</PrintsProvider>
|
36
39
|
</MapsProvider>
|
37
40
|
</MessageProvider>
|
38
41
|
</AuthProvider>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import Cookies from "js-cookie";
|
2
|
+
export const NAMES = {
|
3
|
+
TOKEN: "componentReactExample-token",
|
4
|
+
MAPID: "componentReactExample-mapId",
|
5
|
+
MAPLIST: "componentReactExample-mapList",
|
6
|
+
};
|
7
|
+
// Default cookie setter, with the default expiry value:
|
8
|
+
const setCookie = (name, value, expires = 7) =>
|
9
|
+
Cookies.set(name, value, { expires: expires });
|
10
|
+
// Token: User authentication token
|
11
|
+
export const getToken = () => Cookies.get(NAMES.TOKEN) ?? null;
|
12
|
+
export const setToken = (token) => setCookie(NAMES.TOKEN, token);
|
13
|
+
export const removeToken = () => Cookies.remove(NAMES.TOKEN);
|
14
|
+
|
15
|
+
// Map id:
|
16
|
+
export const getMapId = () => Cookies.get(NAMES.MAPID) ?? null;
|
17
|
+
export const setMapId = (token) => setCookie(NAMES.MAPID, token);
|
18
|
+
export const removeMapId = () => Cookies.remove(NAMES.MAPID);
|
19
|
+
|
20
|
+
// Map list:
|
21
|
+
export const getMapList = () => Cookies.get(NAMES.MAPLIST) ?? null;
|
22
|
+
export const setMapList = (token) => setCookie(NAMES.MAPLIST, token);
|
23
|
+
export const removeMapList = () => Cookies.remove(NAMES.MAPLIST);
|
package/package.json
CHANGED
package/src/index.js
CHANGED
@@ -517,7 +517,7 @@ class Communicator extends EventEmitter {
|
|
517
517
|
/* deprecated since v1.1.19 */
|
518
518
|
toggleGiswaterTiled = (toggle, tiled) => {
|
519
519
|
this.com.sendMessageToMap({
|
520
|
-
type: "
|
520
|
+
type: "toggleTiled",
|
521
521
|
toggle: toggle,
|
522
522
|
tiled: tiled,
|
523
523
|
sessionToken: this.sessionToken,
|
@@ -579,9 +579,13 @@ class Communicator extends EventEmitter {
|
|
579
579
|
}
|
580
580
|
};
|
581
581
|
|
582
|
-
clearGeoJSON = () => {
|
582
|
+
clearGeoJSON = (name) => {
|
583
|
+
if (!name) {
|
584
|
+
this.emit("error", { type: "error", error: "No geoJSON layer name" });
|
585
|
+
}
|
583
586
|
return this.com.sendMessageToMap({
|
584
587
|
type: "clearGeoJSON",
|
588
|
+
name: name,
|
585
589
|
sessionToken: this.sessionToken,
|
586
590
|
});
|
587
591
|
};
|
@@ -836,6 +840,37 @@ class Communicator extends EventEmitter {
|
|
836
840
|
sessionToken: this.sessionToken,
|
837
841
|
});
|
838
842
|
};
|
843
|
+
|
844
|
+
//***** PRINT ******/
|
845
|
+
printPaperSize = (paperSize) => {
|
846
|
+
this.com.sendMessageToMap({
|
847
|
+
type: "printSetPaperSize",
|
848
|
+
paperSize: paperSize,
|
849
|
+
sessionToken: this.sessionToken,
|
850
|
+
});
|
851
|
+
};
|
852
|
+
printPaperLayout = (paperLayout) => {
|
853
|
+
this.com.sendMessageToMap({
|
854
|
+
type: "printSetOrientation",
|
855
|
+
paperLayout: paperLayout,
|
856
|
+
sessionToken: this.sessionToken,
|
857
|
+
});
|
858
|
+
};
|
859
|
+
|
860
|
+
startPrint = (options) => {
|
861
|
+
this.com.sendMessageToMap({
|
862
|
+
type: "printStart",
|
863
|
+
options,
|
864
|
+
sessionToken: this.sessionToken,
|
865
|
+
});
|
866
|
+
};
|
867
|
+
cancelPrint = (options) => {
|
868
|
+
this.com.sendMessageToMap({
|
869
|
+
type: "printCancel",
|
870
|
+
options,
|
871
|
+
sessionToken: this.sessionToken,
|
872
|
+
});
|
873
|
+
};
|
839
874
|
}
|
840
875
|
|
841
876
|
export { Communicator };
|