2024-10-24 15:10:58 +02:00
var $jscomp = $jscomp || { } ; $jscomp . scope = { } ; $jscomp . ASSUME _ES5 = ! 1 ; $jscomp . ASSUME _NO _NATIVE _MAP = ! 1 ; $jscomp . ASSUME _NO _NATIVE _SET = ! 1 ; $jscomp . SIMPLE _FROUND _POLYFILL = ! 1 ; $jscomp . defineProperty = $jscomp . ASSUME _ES5 || "function" == typeof Object . defineProperties ? Object . defineProperty : function ( a , b , c ) { a != Array . prototype && a != Object . prototype && ( a [ b ] = c . value ) } ; $jscomp . getGlobal = function ( a ) { return "undefined" != typeof window && window === a ? a : "undefined" != typeof global && null != global ? global : a } ; $jscomp . global = $jscomp . getGlobal ( this ) ;
$jscomp . polyfill = function ( a , b , c , d ) { if ( b ) { c = $jscomp . global ; a = a . split ( "." ) ; for ( d = 0 ; d < a . length - 1 ; d ++ ) { var e = a [ d ] ; e in c || ( c [ e ] = { } ) ; c = c [ e ] } a = a [ a . length - 1 ] ; d = c [ a ] ; b = b ( d ) ; b != d && null != b && $jscomp . defineProperty ( c , a , { configurable : ! 0 , writable : ! 0 , value : b } ) } } ; $jscomp . polyfill ( "Number.parseFloat" , function ( a ) { return a || parseFloat } , "es6" , "es3" ) ; $jscomp . polyfill ( "Number.parseInt" , function ( a ) { return a || parseInt } , "es6" , "es3" ) ;
$jscomp . arrayIteratorImpl = function ( a ) { var b = 0 ; return function ( ) { return b < a . length ? { done : ! 1 , value : a [ b ++ ] } : { done : ! 0 } } } ; $jscomp . arrayIterator = function ( a ) { return { next : $jscomp . arrayIteratorImpl ( a ) } } ; $jscomp . SYMBOL _PREFIX = "jscomp_symbol_" ; $jscomp . initSymbol = function ( ) { $jscomp . initSymbol = function ( ) { } ; $jscomp . global . Symbol || ( $jscomp . global . Symbol = $jscomp . Symbol ) } ; $jscomp . SymbolClass = function ( a , b ) { this . $jscomp$symbol$id _ = a ; $jscomp . defineProperty ( this , "description" , { configurable : ! 0 , writable : ! 0 , value : b } ) } ;
$jscomp . SymbolClass . prototype . toString = function ( ) { return this . $jscomp$symbol$id _ } ; $jscomp . Symbol = function ( ) { function a ( c ) { if ( this instanceof a ) throw new TypeError ( "Symbol is not a constructor" ) ; return new $jscomp . SymbolClass ( $jscomp . SYMBOL _PREFIX + ( c || "" ) + "_" + b ++ , c ) } var b = 0 ; return a } ( ) ;
2023-01-02 19:34:37 +01:00
$jscomp . initSymbolIterator = function ( ) { $jscomp . initSymbol ( ) ; var a = $jscomp . global . Symbol . iterator ; a || ( a = $jscomp . global . Symbol . iterator = $jscomp . global . Symbol ( "Symbol.iterator" ) ) ; "function" != typeof Array . prototype [ a ] && $jscomp . defineProperty ( Array . prototype , a , { configurable : ! 0 , writable : ! 0 , value : function ( ) { return $jscomp . iteratorPrototype ( $jscomp . arrayIteratorImpl ( this ) ) } } ) ; $jscomp . initSymbolIterator = function ( ) { } } ;
$jscomp . initSymbolAsyncIterator = function ( ) { $jscomp . initSymbol ( ) ; var a = $jscomp . global . Symbol . asyncIterator ; a || ( a = $jscomp . global . Symbol . asyncIterator = $jscomp . global . Symbol ( "Symbol.asyncIterator" ) ) ; $jscomp . initSymbolAsyncIterator = function ( ) { } } ; $jscomp . iteratorPrototype = function ( a ) { $jscomp . initSymbolIterator ( ) ; a = { next : a } ; a [ $jscomp . global . Symbol . iterator ] = function ( ) { return this } ; return a } ;
$jscomp . iteratorFromArray = function ( a , b ) { $jscomp . initSymbolIterator ( ) ; a instanceof String && ( a += "" ) ; var c = 0 , d = { next : function ( ) { if ( c < a . length ) { var e = c ++ ; return { value : b ( e , a [ e ] ) , done : ! 1 } } d . next = function ( ) { return { done : ! 0 , value : void 0 } } ; return d . next ( ) } } ; d [ Symbol . iterator ] = function ( ) { return d } ; return d } ; $jscomp . polyfill ( "Array.prototype.values" , function ( a ) { return a ? a : function ( ) { return $jscomp . iteratorFromArray ( this , function ( a , c ) { return c } ) } } , "es8" , "es3" ) ;
2024-10-24 15:10:58 +02:00
$jscomp . polyfill ( "Number.isNaN" , function ( a ) { return a ? a : function ( a ) { return "number" === typeof a && isNaN ( a ) } } , "es6" , "es3" ) ; $jscomp . owns = function ( a , b ) { return Object . prototype . hasOwnProperty . call ( a , b ) } ; $jscomp . assign = "function" == typeof Object . assign ? Object . assign : function ( a , b ) { for ( var c = 1 ; c < arguments . length ; c ++ ) { var d = arguments [ c ] ; if ( d ) for ( var e in d ) $jscomp . owns ( d , e ) && ( a [ e ] = d [ e ] ) } return a } ; $jscomp . polyfill ( "Object.assign" , function ( a ) { return a || $jscomp . assign } , "es6" , "es3" ) ; var netgis = netgis || { } ;
netgis . Attribution = function ( a ) { this . config = a ; this . layers = this . client = null ; this . items = [ ] ; this . initElements ( a ) } ; netgis . Attribution . prototype . initElements = function ( a ) { this . container = document . createElement ( "section" ) ; this . container . className = "netgis-attribution netgis-text-a" ; a . attribution && a . attribution . prefix && this . items . push ( a . attribution . prefix ) ; this . update ( ) } ;
netgis . Attribution . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) ; a . addEventListener ( netgis . Events . MAP _LAYER _TOGGLE , this . onMapLayerToggle . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _EDIT _LAYER _CHANGE , this . onEditLayerChange . bind ( this ) ) } ; netgis . Attribution . prototype . update = function ( ) { var a = "© " + this . items . join ( ", " ) ; this . appendix && ( a += ", " + this . appendix ) ; this . container . innerHTML = a } ;
netgis . Attribution . prototype . add = function ( a ) { for ( var b = 0 ; b < this . items . length ; b ++ ) if ( this . items [ b ] === a ) return ; this . items . push ( a ) ; this . update ( ) } ; netgis . Attribution . prototype . remove = function ( a ) { for ( var b = 0 ; b < this . items . length ; b ++ ) if ( this . items [ b ] === a ) { this . items . splice ( b , 1 ) ; break } this . update ( ) } ; netgis . Attribution . prototype . onMapLayerToggle = function ( a ) { a = a . detail ; for ( var b = this . config . layers , c = null , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] ; e . id === a . id && ( c = e . attribution ) } c && ( a . on ? this . add ( c ) : this . remove ( c ) ) } ;
netgis . Attribution . prototype . onContextUpdate = function ( a ) { this . layers = [ ] ; for ( var b = 0 ; b < a . layers . length ; b ++ ) { var c = a . layers [ b ] ; c . attribution && 0 < c . attribution . length && ( this . layers [ c . id ] = c . attribution ) } for ( b = 0 ; b < a . layers . length ; b ++ ) if ( c = a . layers [ b ] , c . active ) this . onLayerShow ( { id : c . id } ) } ; netgis . Attribution . prototype . onLayerShow = function ( a ) { if ( a = this . layers [ a . id ] ) { for ( var b = 0 ; b < this . items . length ; b ++ ) if ( this . items [ b ] === a ) return ; this . items . push ( a ) ; this . update ( ) } } ;
2024-10-31 14:53:24 +01:00
netgis . Attribution . prototype . onLayerHide = function ( a ) { if ( a = this . layers [ a . id ] ) { for ( var b = 0 ; b < this . items . length ; b ++ ) if ( this . items [ b ] === a ) { this . items . splice ( b , 1 ) ; break } this . update ( ) } } ; netgis . Attribution . prototype . onEditLayerChange = function ( a ) { a = a . detail . geojson . area ; for ( var b = 0 ; b < this . items . length ; b ++ ) if ( - 1 < this . items [ b ] . search ( "Zeichnungsfl\u00e4che: " ) ) { this . items . splice ( b , 1 ) ; break } this . appendix = a && 0 < a ? "<b>Zeichnungsfl\u00e4che: " + netgis . util . formatArea ( a , ! 0 ) + "</b>" : null ; this . update ( ) } ; netgis = netgis || { } ; netgis . Client = function ( a , b ) { this . container = this . initContainer ( a ) ; this . config = b ; netgis . util . isString ( b ) ? ( this . showLoader ( ! 0 ) , netgis . util . request ( b , this . onConfigResponse . bind ( this ) ) ) : this . init ( this . container , b ) } ;
2024-10-31 14:46:27 +01:00
netgis . Client . prototype . init = function ( a , b ) { this . config = b ; this . logEvents = ! 1 ; this . initParams ( b ) ; this . initConfig ( b ) ; this . initElements ( a ) ; this . initModules ( b ) ; this . initEvents ( ) ; this . initOutput ( b ) ; a = new netgis . ContextMenu ; a . attachTo ( this . container ) ; this . modules . contextmenu = a ; this . popup = new netgis . Popup ; this . popup . attachTo ( this . container ) } ; netgis . Client . prototype . initContainer = function ( a ) { netgis . util . isString ( a ) && ( a = document . getElementById ( a ) ) ; a . classList . add ( "netgis-client" , "netgis-font" ) ; return a } ;
2024-10-24 15:10:58 +02:00
netgis . Client . prototype . initParams = function ( a ) { var b = window . location . search . substr ( 1 ) ; b = b . split ( "&" ) ; this . params = { } ; for ( var c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] . split ( "=" ) , e = d [ 0 ] . toLowerCase ( ) ; d = d [ 1 ] ; e && "" !== e && ( this . params [ e ] = d ) } for ( e in this . params ) switch ( d = this . params [ e ] , e ) { case "wmc_id" : a . wmc && ( a . wmc . id = d ) } } ; netgis . Client . prototype . initConfig = function ( a ) { a . wmc && a . wmc . url && this . requestContextWMC ( a . wmc . url , a . wmc . id ) ; a . ows && a . ows . url && this . requestContextOWS ( a . ows . url ) } ;
2024-10-31 14:46:27 +01:00
netgis . Client . prototype . initElements = function ( a ) { if ( a . hasAttribute ( "data-lon" ) && a . hasAttribute ( "data-lat" ) ) { var b = Number . parseFloat ( a . getAttribute ( "data-lon" ) ) , c = Number . parseFloat ( a . getAttribute ( "data-lat" ) ) ; this . config . map . center _lonlat = [ b , c ] } a . hasAttribute ( "data-zoom" ) && ( b = Number . parseFloat ( a . getAttribute ( "data-zoom" ) ) , this . config . map . zoom = b ) ; a . hasAttribute ( "data-bounds" ) && ( b = a . getAttribute ( "data-bounds" ) , this . config . tools . bounds = b ) ; a . hasAttribute ( "data-editable" ) && ( b = "true" === a . getAttribute ( "data-editable" ) ,
this . config . tools || ( this . config . tools = { } ) , this . config . tools . editable = b ) ; this . container = a } ; netgis . Client . prototype . initOutput = function ( a ) { if ( a . output && a . output . id ) { if ( ( a = document . getElementById ( a . output . id ) ) && a . value && 0 < a . value . length ) { var b = JSON . parse ( a . value ) ; netgis . util . invoke ( this . container , netgis . Events . MAP _EDIT _LAYER _LOADED , { geojson : b } ) } this . output = a } this . output || ( this . output = document . createElement ( "input" ) , this . output . setAttribute ( "type" , "hidden" ) , this . output . className = "netgis-storage" , this . container . appendChild ( this . output ) ) } ;
2024-10-24 15:10:58 +02:00
netgis . Client . prototype . initModules = function ( a ) { this . modules = { } ; if ( a = a . modules ) a . map && this . addModule ( "map" , netgis . Map ) , a . controls && this . addModule ( "controls" , netgis . Controls ) , a . attribution && this . addModule ( "attribution" , netgis . Attribution ) , a . info && this . addModule ( "info" , netgis . Info ) , a . menu && this . addModule ( "menu" , netgis . Menu ) , a . layertree && this . addModule ( "layertree" , netgis . LayerTree ) , a . searchplace && this . addModule ( "searchplace" , netgis . SearchPlace ) , a . searchparcel && this . addModule ( "searchparcel" , netgis . SearchParcel ) ,
a . toolbox && this . addModule ( "toolbox" , netgis . Toolbox ) , a [ "import" ] && this . addModule ( "import" , netgis . Import ) , a [ "export" ] && this . addModule ( "export" , netgis . Export ) , a . timeslider && this . addModule ( "timeslider" , netgis . TimeSlider ) } ;
2024-10-31 14:46:27 +01:00
netgis . Client . prototype . initEvents = function ( ) { this . container . addEventListener ( void 0 , function ( a ) { console . error ( "undefined event invoked" , a ) } ) ; for ( var a in netgis . Events ) this . container . addEventListener ( netgis . Events [ a ] , this . handleEvent . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . MAP _EDIT _LAYER _CHANGE , this . onMapEditLayerChange . bind ( this ) ) } ;
netgis . Client . prototype . showLoader = function ( a ) { this . loader || ( this . loader = document . createElement ( "div" ) , this . loader . className = "netgis-loader netgis-color-e netgis-text-a" , this . loader . innerHTML = "<i class='fas fa-cog'></i>" , this . container . appendChild ( this . loader ) ) ; ! 1 === a ? this . loader . classList . add ( "netgis-hide" ) : this . loader . classList . remove ( "netgis-hide" ) } ; netgis . Client . prototype . handleEvent = function ( a ) { var b = a . type ; a = a . detail ; ! 0 === this . logEvents && console . info ( "EVENT:" , b , a ) } ;
netgis . Client . prototype . addModule = function ( a , b ) { b = new b ( this . config ) ; b . attachTo && b . attachTo ( this . container ) ; return this . modules [ a ] = b } ; netgis . Client . prototype . isMobile = function ( ) { return netgis . util . isMobile ( this . container ) } ; netgis . Client . prototype . onConfigResponse = function ( a ) { a = JSON . parse ( a ) ; this . init ( this . container , a ) ; this . showLoader ( ! 1 ) } ;
netgis . Client . prototype . requestContextWMC = function ( a , b ) { if ( - 1 < a . indexOf ( "{id}" ) ) if ( b ) a = netgis . util . replace ( a , "{id}" , b ) ; else { console . warn ( "No WMC id set in config for url" , a ) ; return } ( new netgis . WMC ) . requestContext ( a , this . onContextResponseWMC . bind ( this ) ) } ;
2024-10-24 15:10:58 +02:00
netgis . Client . prototype . onContextResponseWMC = function ( a ) { for ( var b = 0 ; b < a . config . layers . length ; b ++ ) this . config . layers . push ( a . config . layers [ b ] ) ; a . config . map . bbox && ( this . config . map . bbox = a . config . map . bbox ) ; netgis . util . invoke ( this . container , netgis . Events . CONTEXT _RESPONSE , { context : a } ) } ; netgis . Client . prototype . requestContextOWS = function ( a ) { console . info ( "Request OWS:" , a ) ; netgis . util . request ( a , this . onContextResponseOWS . bind ( this ) ) } ;
netgis . Client . prototype . onContextResponseOWS = function ( a ) { a = JSON . parse ( a ) ; console . info ( "OWS Response:" , a ) ; a = netgis . OWS . read ( a , this ) ; console . info ( "OWS Config:" , a ) } ; netgis . Client . prototype . onIconbarIconClick = function ( a ) { switch ( a . detail . id ) { case "home" : a = this . config . layers ; for ( var b = 0 ; b < a . length ; b ++ ) { var c = a [ b ] , d = c . id ; ! 0 === c . active ? ( this . modules . map . addLayer ( d , c ) , this . modules . layertree . tree . setItemChecked ( d , ! 0 ) ) : ( this . modules . map . removeLayer ( d ) , this . modules . layertree . tree . setItemChecked ( d , ! 1 ) ) } } } ;
netgis . Client . prototype . onIconbarItemClick = function ( a ) { a = a . detail ; for ( var b = this . config . layers , c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] , e = d . id ; "background" !== d . folder && ( e === a . id ? ( this . modules . map . addLayer ( e , d ) , this . modules . layertree . tree . setItemChecked ( e , ! 0 ) ) : ( this . modules . map . removeLayer ( e ) , this . modules . layertree . tree . setItemChecked ( e , ! 1 ) ) ) } } ;
netgis . Client . prototype . onSwitcherButtonClick = function ( a ) { a = a . detail ; for ( var b = this . config . switcher . buttons , c = this . config . layers , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] . id ; if ( e === a . id ) for ( var f = 0 ; f < c . length ; f ++ ) { var g = c [ f ] ; g . id === e && ( this . modules . map . addLayer ( e , g ) , this . modules . layertree . tree . setItemChecked ( e , ! 0 ) ) } else this . modules . map . removeLayer ( e ) , this . modules . layertree . tree . setItemChecked ( e , ! 1 ) } 0 === this . modules . switcher . getIndex ( a . id ) && this . modules . switcher . shift ( 1 , 0 ) } ;
netgis . Client . prototype . onGeolocationToggle = function ( a ) { this . modules . map . setGeolocMarkerVisible ( a . detail . on ) } ; netgis . Client . prototype . onGeolocationChange = function ( a ) { a = a . detail ; this . modules . map . zoomLonLat ( a . lon , a . lat , this . config . geolocation . zoom ) ; this . modules . map . setGeolocMarkerLonLat ( a . lon , a . lat ) } ; netgis . Client . prototype . onMapEditLayerChange = function ( a ) { a = JSON . stringify ( a . detail . geojson ) ; this . output . value = a } ;
netgis . Client . handleCommand = function ( a , b ) { switch ( b ) { case netgis . Commands . LAYERTREE : netgis . util . invoke ( a , netgis . Events . LAYERTREE _TOGGLE , null ) ; break ; case netgis . Commands . SEARCHPLACE : netgis . util . invoke ( a , netgis . Events . SEARCHPLACE _TOGGLE , null ) ; break ; case netgis . Commands . SEARCHPARCEL : netgis . util . invoke ( a , netgis . Events . SEARCHPARCEL _TOGGLE , null ) ; break ; case netgis . Commands . TOOLBOX : netgis . util . invoke ( a , netgis . Events . TOOLBOX _TOGGLE , null ) ; break ; case netgis . Commands . VIEW _PREV : netgis . util . invoke ( a , netgis . Events . MAP _VIEW _PREV ,
null ) ; break ; case netgis . Commands . VIEW _NEXT : netgis . util . invoke ( a , netgis . Events . MAP _VIEW _NEXT , null ) ; break ; case netgis . Commands . VIEW : netgis . util . invoke ( a , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . VIEW } ) ; break ; case netgis . Commands . ZOOM _BOX : netgis . util . invoke ( a , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . ZOOM _BOX } ) ; break ; case netgis . Commands . MEASURE _LINE : netgis . util . invoke ( a , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . MEASURE _LINE } ) ; break ; case netgis . Commands . MEASURE _AREA : netgis . util . invoke ( a ,
netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . MEASURE _AREA } ) ; break ; case netgis . Commands . MEASURE _CLEAR : netgis . util . invoke ( a , netgis . Events . MEASURE _CLEAR , null ) ; break ; case netgis . Commands . DRAW _POINTS : netgis . util . invoke ( a , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . DRAW _POINTS } ) ; break ; case netgis . Commands . DRAW _LINES : netgis . util . invoke ( a , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . DRAW _LINES } ) ; break ; case netgis . Commands . DRAW _POLYGONS : netgis . util . invoke ( a , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . DRAW _POLYGONS } ) ;
break ; case netgis . Commands . MODIFY _FEATURES : netgis . util . invoke ( a , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . MODIFY _FEATURES } ) ; break ; case netgis . Commands . DELETE _FEATURES : netgis . util . invoke ( a , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . DELETE _FEATURES } ) ; break ; case netgis . Commands . BUFFER _FEATURES : netgis . util . invoke ( a , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . BUFFER _FEATURES } ) ; break ; case netgis . Commands . CUT _FEATURES : netgis . util . invoke ( a , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . CUT _FEATURES } ) ;
break ; case netgis . Commands . IMPORT _LAYER : netgis . util . invoke ( a , netgis . Events . IMPORT _LAYER _SHOW , null ) ; break ; case netgis . Commands . EXPORT : netgis . util . invoke ( a , netgis . Events . EXPORT _SHOW , null ) ; break ; default : console . warn ( "unhandled command id" , b ) } } ; netgis = netgis || { } ;
netgis . Commands = Object . freeze ( { LAYERTREE : "layertree" , SEARCHPLACE : "searchplace" , SEARCHPARCEL : "searchparcel" , TOOLBOX : "toolbox" , VIEW _PREV : "view_prev" , VIEW _NEXT : "view_next" , VIEW : "view" , ZOOM _BOX : "zoom_box" , MEASURE _LINE : "measure_line" , MEASURE _AREA : "measure_area" , MEASURE _CLEAR : "measure_clear" , DRAW _POINTS : "draw_points" , DRAW _LINES : "draw_lines" , DRAW _POLYGONS : "draw_polygons" , MODIFY _FEATURES : "modify_features" , DELETE _FEATURES : "delete_features" , BUFFER _FEATURES : "buffer_features" , CUT _FEATURES : "cut_features" , SNAP _TOGGLE : "snap_toggle" ,
IMPORT _LAYER : "import_layer" , EXPORT : "export" } ) ; netgis = netgis || { } ; netgis . ContextMenu = function ( ) { this . initElements ( ) } ; netgis . ContextMenu . prototype . initElements = function ( ) { this . container = document . createElement ( "div" ) ; this . container . className = "netgis-contextmenu netgis-shadow-large netgis-color-e netgis-hide" } ;
netgis . ContextMenu . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) ; a . addEventListener ( netgis . Events . CONTEXTMENU _SHOW , this . onContextMenuShow . bind ( this ) ) ; a . addEventListener ( "click" , this . onParentClick . bind ( this ) ) ; a . addEventListener ( "pointerup" , this . onParentClick . bind ( this ) ) ; a . addEventListener ( "scroll" , this . onParentScroll . bind ( this ) , ! 0 ) ; a . addEventListener ( "keydown" , this . onParentKeyDown . bind ( this ) ) } ; netgis . ContextMenu . prototype . clear = function ( ) { this . container . innerHTML = "" } ;
netgis . ContextMenu . prototype . addButton = function ( a , b ) { var c = document . createElement ( "button" ) ; c . className = "netgis-button netgis-clip-text netgis-hover-d" ; c . innerHTML = b ; c . setAttribute ( "type" , "button" ) ; c . setAttribute ( "data-id" , a ) ; c . addEventListener ( "click" , this . onButtonClick . bind ( this ) ) ; this . container . appendChild ( c ) ; return c } ;
netgis . ContextMenu . prototype . addCheckbox = function ( a , b , c ) { var d = document . createElement ( "label" ) ; d . className = "netgis-noselect netgis-hover-d" ; var e = document . createElement ( "input" ) ; e . setAttribute ( "type" , "checkbox" ) ; e . setAttribute ( "title" , b ) ; e . setAttribute ( "data-id" , a ) ; e . checked = c ; e . addEventListener ( "change" , this . onCheckboxChange . bind ( this ) ) ; d . appendChild ( e ) ; a = document . createElement ( "span" ) ; a . className = "netgis-clip-text" ; a . innerHTML = b ; d . appendChild ( a ) ; this . container . appendChild ( d ) ; return e } ;
netgis . ContextMenu . prototype . addSlider = function ( a , b , c , d , e , f ) { var g = document . createElement ( "label" ) ; g . className = "netgis-noselect netgis-hover-d" ; var h = document . createElement ( "span" ) ; h . className = "netgis-clip-text" ; h . innerHTML = b ; g . appendChild ( h ) ; h = document . createElement ( "span" ) ; g . appendChild ( h ) ; c || 0 === c || ( c = 50 ) ; d || 0 === d || ( d = 0 ) ; e || 0 === e || ( e = 100 ) ; f || ( f = 1 ) ; var k = document . createElement ( "input" ) ; k . setAttribute ( "type" , "range" ) ; k . setAttribute ( "min" , d ) ; k . setAttribute ( "max" , e ) ; k . setAttribute ( "step" , f ) ; k . setAttribute ( "value" ,
c ) ; k . setAttribute ( "data-id" , a ) ; k . setAttribute ( "data-title" , b ) ; k . setAttribute ( "title" , b + " " + c ) ; k . addEventListener ( "change" , this . onSliderChange . bind ( this ) ) ; k . addEventListener ( "input" , this . onSliderChange . bind ( this ) ) ; h . appendChild ( k ) ; this . container . appendChild ( g ) ; return k } ; netgis . ContextMenu . prototype . setVisible = function ( a ) { a ? this . container . classList . remove ( "netgis-hide" ) : this . container . classList . add ( "netgis-hide" ) } ;
netgis . ContextMenu . prototype . setPosition = function ( a , b ) { var c = this . container . parentNode . getBoundingClientRect ( ) , d = this . container . getBoundingClientRect ( ) ; a + d . width > c . width && ( a -= d . width ) ; b + d . height > c . height && ( b -= d . height ) ; this . container . style . left = a + "px" ; this . container . style . top = b + "px" } ;
netgis . ContextMenu . prototype . onContextMenuShow = function ( a ) { a = a . detail ; this . clear ( ) ; for ( var b = 0 ; b < a . items . length ; b ++ ) { var c = a . items [ b ] ; switch ( c . type ) { case "slider" : this . addSlider ( c . id , c . title , c . val , c . min , c . max ) } } this . setVisible ( ! 0 ) ; this . setPosition ( a . x , a . y ) } ; netgis . ContextMenu . prototype . onContextMenu = function ( a ) { a . preventDefault ( ) ; var b = a . clientX ; a = a . clientY ; this . setVisible ( ! 0 ) ; this . setPosition ( b , a ) ; return ! 1 } ;
netgis . ContextMenu . prototype . onParentClick = function ( a ) { this . container . contains ( a . target ) || this . setVisible ( ! 1 ) } ; netgis . ContextMenu . prototype . onParentScroll = function ( a ) { this . setVisible ( ! 1 ) } ; netgis . ContextMenu . prototype . onParentKeyDown = function ( a ) { 27 === ( a . keyCode || a . which ) && this . setVisible ( ! 1 ) } ;
netgis . ContextMenu . prototype . onButtonClick = function ( a ) { a = a . currentTarget ; var b = a . getAttribute ( "data-id" ) ; this . setVisible ( ! 1 ) ; netgis . util . invoke ( a , netgis . Events . CONTEXTMENU _BUTTON _CLICK , { id : b } ) ; netgis . Client . handleCommand ( a , b ) } ; netgis . ContextMenu . prototype . onCheckboxChange = function ( a ) { a = a . currentTarget ; var b = a . getAttribute ( "data-id" ) ; netgis . util . invoke ( a , netgis . Events . CONTEXTMENU _CHECKBOX _CHANGE , { id : b , checked : a . checked } ) } ;
netgis . ContextMenu . prototype . onSliderChange = function ( a ) { a = a . currentTarget ; var b = a . getAttribute ( "data-id" ) , c = Number . parseFloat ( a . value ) , d = a . getAttribute ( "data-title" ) ; a . setAttribute ( "title" , d + " " + c ) ; netgis . util . invoke ( a , netgis . Events . CONTEXTMENU _SLIDER _CHANGE , { id : b , val : c } ) } ; netgis = netgis || { } ; netgis . Controls = function ( a ) { this . config = a ; this . initElements ( ) ; this . initConfig ( a ) } ; netgis . Controls . Events = Object . freeze ( { BUTTON _CLICK : "controls-button-click" } ) ; netgis . Controls . prototype . initElements = function ( ) { this . container = document . createElement ( "section" ) ; this . container . className = "netgis-controls netgis-color-e netgis-text-a netgis-shadow netgis-round" } ;
netgis . Controls . prototype . initConfig = function ( a ) { a = a . controls . buttons ; for ( var b = 0 ; b < a . length ; b ++ ) { var c = a [ b ] ; this . addButton ( c . id , c . icon , c . title ) } } ; netgis . Controls . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) } ;
netgis . Controls . prototype . addButton = function ( a , b , c ) { var d = document . createElement ( "button" ) ; d . setAttribute ( "type" , "button" ) ; d . setAttribute ( "data-id" , a ) ; d . className = "netgis-hover-a" ; d . innerHTML = b ; d . title = c ; d . addEventListener ( "pointerdown" , this . onButtonClick . bind ( this ) ) ; this . container . appendChild ( d ) ; return d } ;
netgis . Controls . prototype . onButtonClick = function ( a ) { a = a . currentTarget ; switch ( a . getAttribute ( "data-id" ) ) { case "zoom_in" : netgis . util . invoke ( a , netgis . Events . MAP _ZOOM , { delta : 1 } ) ; break ; case "zoom_out" : netgis . util . invoke ( a , netgis . Events . MAP _ZOOM , { delta : - 1 } ) ; break ; case "zoom_home" : netgis . util . invoke ( a , netgis . Events . MAP _ZOOM _HOME , null ) } } ; netgis = netgis || { } ;
netgis . Events = Object . freeze ( { CLIENT _CONTEXT _RESPONSE : "client-context-response" , CLIENT _SET _MODE : "client-set-mode" , CONTROLS _BUTTON _CLICK : "controls-button-click" , MAP _ZOOM : "map-zoom" , MAP _ZOOM _HOME : "map-zoom-home" , MAP _ZOOM _LONLAT : "map-zoom-lonlat" , MAP _ZOOM _SCALE : "map-zoom-scale" , MAP _ZOOM _LAYER : "map-zoom-layer" , MAP _ZOOM _LEVEL : "map-zoom-level" , MAP _LAYER _TOGGLE : "map-layer-toggle" , MAP _LAYER _TRANSPARENCY : "map-layer-transparency" , MAP _VIEW _CHANGE : "map-view-change" , MAP _VIEW _NEXT : "map-view-next" , MAP _VIEW _PREV : "map-view-prev" ,
MAP _CLICK : "map-click" , MAP _FEATURE _ENTER : "map-feature-enter" , MAP _FEATURE _CLICK : "map-feature-click" , MAP _FEATURE _LEAVE : "map-feature-leave" , MAP _SNAP _TOGGLE : "map-snap-toggle" , MAP _EDIT _LAYER _CHANGE : "map-edit-layer-change" , MAP _EDIT _LAYER _LOADED : "map-edit-layer-loaded" , MAP _COPY _FEATURE _TO _EDIT : "map-copy-feature-to-edit" , PANEL _TOGGLE : "panel-toggle" , PANEL _RESIZE : "panel-resize" , TREE _ITEM _CHANGE : "tree-item-change" , TREE _ITEM _SLIDER _CHANGE : "tree-item-slider-change" , TREE _BUTTON _CLICK : "tree-button-click" , LAYERTREE _TOGGLE : "layertree-toggle" ,
TOOLBOX _TOGGLE : "toolbox-toggle" , TOOLBOX _BUTTON _CLICK : "toolbox-button-click" , MENU _BUTTON _CLICK : "menu-button-click" , MENU _CHECKBOX _CHANGE : "menu-checkbox-change" , MENU _SELECT _CHANGE : "menu-select-change" , CONTEXTMENU _SHOW : "contextmenu-show" , CONTEXTMENU _BUTTON _CLICK : "contextmenu-button-click" , CONTEXTMENU _CHECKBOX _CHANGE : "contextmenu-checkbox-change" , CONTEXTMENU _SLIDER _CHANGE : "contextmenu-slider-change" , SEARCH _CHANGE : "search-change" , SEARCH _SELECT : "search-select" , SEARCH _CLEAR : "search-clear" , SEARCHPLACE _TOGGLE : "searchplace-toggle" ,
SEARCHPARCEL _TOGGLE : "searchparcel-toggle" , SEARCHPARCEL _RESET : "searchparcel-reset" , SEARCHPARCEL _PARCELS _RESPONSE : "searchparcel-parcels-response" , SEARCHPARCEL _ITEM _ENTER : "searchparcel-item-enter" , SEARCHPARCEL _ITEM _LEAVE : "searchparcel-item-leave" , SEARCHPARCEL _ITEM _CLICK : "searchparcel-item-click" , SEARCHPARCEL _ITEM _IMPORT : "searchparcel-item-import" , MEASURE _CLEAR : "measure-clear" , DRAW _BUFFER _TOGGLE : "draw-buffer-toggle" , DRAW _BUFFER _CHANGE : "draw-buffer-change" , BUFFER _CHANGE : "buffer-change" , BUFFER _ACCEPT : "buffer-accept" ,
IMPORT _LAYER _SHOW : "import-layer-show" , IMPORT _LAYER _ACCEPT : "import-layer-accept" , IMPORT _LAYER _PREVIEW : "import-layer-preview" , IMPORT _LAYER _PREVIEW _FEATURES : "import-layer-preview-features" , IMPORT _GEOPORTAL _SUBMIT : "import-geoportal-submit" , EXPORT _SHOW : "export-show" , EXPORT _BEGIN : "export-begin" , EXPORT _END : "export-end" , TIMESLIDER _SHOW : "timeslider-show" , TIMESLIDER _HIDE : "timeslider-hide" , TIMESLIDER _SELECT : "timeslider-select" } ) ; netgis = netgis || { } ; netgis . Export = function ( a ) { this . config = a ; this . initElements ( a ) ; this . initSections ( ) } ;
netgis . Export . prototype . initElements = function ( a ) { a = a [ "export" ] ; this . modal = new netgis . Modal ( a . title ? a . title : "Export" ) ; this . modal . container . classList . add ( "netgis-export" ) ; this . tabs = new netgis . Tabs ( [ "PDF" , "JPEG" , "PNG" , "GIF" , "GeoJSON" ] ) ; this . tabs . container . style . position = "absolute" ; this . tabs . container . style . left = "0mm" ; this . tabs . container . style . right = "0mm" ; this . tabs . container . style . top = "12mm" ; this . tabs . container . style . bottom = "0mm" ; this . tabs . attachTo ( this . modal . content ) } ;
netgis . Export . prototype . initSections = function ( ) { this . sections = { } ; var a = 0 ; this . sections . pdf = this . tabs . getContentSection ( a ) ; a += 1 ; this . addInputNumber ( this . sections . pdf , "Breite (Pixel):" , 1600 , 0 ) ; this . addInputNumber ( this . sections . pdf , "H\u00f6he (Pixel):" , 900 , 0 ) ; this . addInputNumber ( this . sections . pdf , "Seitenr\u00e4nder (Millimeter):" , 10 , 0 ) ; this . addCheckbox ( this . sections . pdf , "Querformat" , ! 0 ) ; this . addButton ( this . sections . pdf , "<i class='netgis-icon fas fa-save'></i><span>Exportieren</span>" , this . onExportClickPDF . bind ( this ) ) ;
this . sections . jpeg = this . tabs . getContentSection ( a ) ; a += 1 ; this . addInputNumber ( this . sections . jpeg , "Breite (Pixel):" , 1600 , 0 ) ; this . addInputNumber ( this . sections . jpeg , "H\u00f6he (Pixel):" , 900 , 0 ) ; this . addCheckbox ( this . sections . jpeg , "Querformat" , ! 0 ) ; this . addButton ( this . sections . jpeg , "<i class='netgis-icon fas fa-save'></i><span>Exportieren</span>" , this . onExportClickJPEG . bind ( this ) ) ; this . sections . png = this . tabs . getContentSection ( a ) ; a += 1 ; this . addInputNumber ( this . sections . png , "Breite (Pixel):" , 1600 , 0 ) ; this . addInputNumber ( this . sections . png ,
"H\u00f6he (Pixel):" , 900 , 0 ) ; this . addCheckbox ( this . sections . png , "Querformat" , ! 0 ) ; this . addButton ( this . sections . png , "<i class='netgis-icon fas fa-save'></i><span>Exportieren</span>" , this . onExportClickPNG . bind ( this ) ) ; this . sections . gif = this . tabs . getContentSection ( a ) ; a += 1 ; this . addInputNumber ( this . sections . gif , "Breite (Pixel):" , 1600 , 0 ) ; this . addInputNumber ( this . sections . gif , "H\u00f6he (Pixel):" , 900 , 0 ) ; this . addCheckbox ( this . sections . gif , "Querformat" , ! 0 ) ; this . addButton ( this . sections . gif , "<i class='netgis-icon fas fa-save'></i><span>Exportieren</span>" ,
this . onExportClickGIF . bind ( this ) ) ; this . sections . geojson = this . tabs . getContentSection ( a ) ; this . addCheckbox ( this . sections . geojson , "Nicht-Editierbare Geometrien einbeziehen" , ! 1 ) ; this . addButton ( this . sections . geojson , "<i class='netgis-icon fas fa-save'></i><span>Exportieren</span>" , this . onExportClickGeoJSON . bind ( this ) ) } ;
netgis . Export . prototype . attachTo = function ( a ) { a . appendChild ( this . modal . container ) ; a . addEventListener ( netgis . Events . EXPORT _SHOW , this . onExportShow . bind ( this ) ) ; a . addEventListener ( netgis . Events . EXPORT _END , this . onExportEnd . bind ( this ) ) } ; netgis . Export . prototype . addText = function ( a , b ) { var c = document . createElement ( "div" ) ; c . innerHTML = b ; a . appendChild ( c ) ; return c } ;
netgis . Export . prototype . addButton = function ( a , b , c ) { var d = document . createElement ( "button" ) ; d . className = "netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow" ; d . setAttribute ( "type" , "button" ) ; d . innerHTML = b ; c && ( d . onclick = c ) ; a . appendChild ( d ) ; return d } ;
netgis . Export . prototype . addInputText = function ( a , b , c ) { var d = document . createElement ( "label" ) ; d . innerHTML = b ; var e = document . createElement ( "input" ) ; e . setAttribute ( "type" , "text" ) ; d . appendChild ( e ) ; if ( c ) { b = "list-" + netgis . util . stringToID ( b ) ; var f = document . createElement ( "datalist" ) ; f . setAttribute ( "id" , b ) ; for ( var g = 0 ; g < c . length ; g ++ ) { var h = document . createElement ( "option" ) ; h . setAttribute ( "value" , c [ g ] ) ; f . appendChild ( h ) } a . appendChild ( f ) ; e . setAttribute ( "list" , b ) } a . appendChild ( d ) ; return e } ;
netgis . Export . prototype . addInputNumber = function ( a , b , c , d , e ) { var f = document . createElement ( "label" ) ; f . innerHTML = b ; b = document . createElement ( "input" ) ; b . setAttribute ( "type" , "number" ) ; ( d || 0 === d ) && b . setAttribute ( "min" , d ) ; e && b . setAttribute ( "max" , e ) ; b . setAttribute ( "value" , c ) ; f . appendChild ( b ) ; a . appendChild ( f ) ; return b } ;
netgis . Export . prototype . addCheckbox = function ( a , b , c ) { var d = document . createElement ( "label" ) , e = document . createElement ( "input" ) ; e . setAttribute ( "type" , "checkbox" ) ; e . checked = c ; d . appendChild ( e ) ; c = document . createElement ( "span" ) ; c . innerHTML = b ; d . appendChild ( c ) ; a . appendChild ( d ) ; return e } ; netgis . Export . prototype . onExportShow = function ( a ) { this . modal . show ( ) } ;
netgis . Export . prototype . onExportClickPDF = function ( a ) { var b = this . sections . pdf . getElementsByTagName ( "input" ) ; b = { format : "pdf" , width : Number . parseInt ( b [ 0 ] . value ) , height : Number . parseInt ( b [ 1 ] . value ) , padding : Number . parseInt ( b [ 2 ] . value ) , landscape : b [ 3 ] . checked } ; netgis . util . invoke ( a . target , netgis . Events . EXPORT _BEGIN , b ) } ;
netgis . Export . prototype . onExportClickJPEG = function ( a ) { var b = this . sections . pdf . getElementsByTagName ( "input" ) ; b = { format : "jpeg" , width : Number . parseInt ( b [ 0 ] . value ) , height : Number . parseInt ( b [ 1 ] . value ) , landscape : b [ 3 ] . checked } ; netgis . util . invoke ( a . target , netgis . Events . EXPORT _BEGIN , b ) } ;
netgis . Export . prototype . onExportClickPNG = function ( a ) { var b = this . sections . pdf . getElementsByTagName ( "input" ) ; b = { format : "png" , width : Number . parseInt ( b [ 0 ] . value ) , height : Number . parseInt ( b [ 1 ] . value ) , landscape : b [ 3 ] . checked } ; netgis . util . invoke ( a . target , netgis . Events . EXPORT _BEGIN , b ) } ;
netgis . Export . prototype . onExportClickGIF = function ( a ) { var b = this . sections . pdf . getElementsByTagName ( "input" ) ; b = { format : "gif" , width : Number . parseInt ( b [ 0 ] . value ) , height : Number . parseInt ( b [ 1 ] . value ) , landscape : b [ 3 ] . checked } ; netgis . util . invoke ( a . target , netgis . Events . EXPORT _BEGIN , b ) } ; netgis . Export . prototype . onExportClickGeoJSON = function ( a ) { var b = { format : "geojson" , nonEdits : this . sections . geojson . getElementsByTagName ( "input" ) [ 0 ] . checked } ; netgis . util . invoke ( a . target , netgis . Events . EXPORT _BEGIN , b ) } ;
netgis . Export . prototype . onExportEnd = function ( a ) { this . modal . hide ( ) } ; netgis = netgis || { } ; netgis . Import = function ( a ) { this . config = a ; this . initElements ( a ) ; this . initSections ( ) ; this . initPreview ( ) } ;
netgis . Import . prototype . initElements = function ( a ) { a = a [ "import" ] ; this . modal = new netgis . Modal ( a . title ? a . title : "Import" ) ; this . modal . container . classList . add ( "netgis-import" ) ; var b = "WMS WFS GeoJSON GML GeoPackage Spatialite Shapefile" . split ( " " ) ; a . geoportal _tab && b . unshift ( "Geoportal" ) ; this . tabs = new netgis . Tabs ( b ) ; this . tabs . container . style . position = "absolute" ; this . tabs . container . style . left = "0mm" ; this . tabs . container . style . right = "0mm" ; this . tabs . container . style . top = "12mm" ; this . tabs . container . style . bottom = "0mm" ;
this . tabs . attachTo ( this . modal . content ) } ;
netgis . Import . prototype . initSections = function ( ) { this . sections = { } ; var a = 0 ; this . config [ "import" ] . geoportal _tab && ( this . sections . geoportal = this . tabs . getContentSection ( a ) , a += 1 , this . sections . geoportal . classList . add ( "netgis-geoportal" ) , this . geoportalSearch = this . addInputText ( this . sections . geoportal , "Suche im Datenkatalog:" ) , this . geoportalSearch . addEventListener ( "change" , this . onGeoportalSearchChange . bind ( this ) ) , this . geoportalSearch . setAttribute ( "placeholder" , "Thema, Schlagwort..." ) , this . geoportalResults = new netgis . Tree ,
this . geoportalResults . attachTo ( this . sections . geoportal ) , this . geoportalSubmit = this . addButton ( this . sections . geoportal , "<i class='netgis-icon fas fa-check'></i><span>Hinzuf\u00fcgen</span>" , this . onGeoportalSubmit . bind ( this ) ) ) ; this . sections . wms = this . tabs . getContentSection ( a ) ; a += 1 ; this . addInputText ( this . sections . wms , "WMS-URL:" , this . config [ "import" ] . wms _options ) ; this . addButton ( this . sections . wms , "<i class='netgis-icon fas fa-cloud-download-alt'></i><span>Dienst laden</span>" , this . onWMSLoadClick . bind ( this ) ) ;
this . addInputText ( this . sections . wms , "Bezeichnung:" ) ; this . addInputSelect ( this . sections . wms , "Ebene:" ) ; this . addInputSelect ( this . sections . wms , "Format:" ) ; this . addButton ( this . sections . wms , "<i class='netgis-icon fas fa-check'></i><span>Hinzuf\u00fcgen</span>" , this . onWMSAcceptClick . bind ( this ) ) ; this . showDetailsWMS ( ! 1 ) ; this . sections . wfs = this . tabs . getContentSection ( a ) ; a += 1 ; this . addInputText ( this . sections . wfs , "WFS-URL:" , this . config [ "import" ] . wfs _options ) ; this . addButton ( this . sections . wfs , "<i class='netgis-icon fas fa-cloud-download-alt'></i><span>Dienst laden</span>" ,
this . onWFSLoadClick . bind ( this ) ) ; this . addInputText ( this . sections . wfs , "Bezeichnung:" ) ; this . addInputSelect ( this . sections . wfs , "Ebene:" ) ; this . addInputSelect ( this . sections . wfs , "Format:" ) ; this . addButton ( this . sections . wfs , "<i class='netgis-icon fas fa-check'></i><span>Hinzuf\u00fcgen</span>" , this . onWFSAcceptClick . bind ( this ) ) ; this . showDetailsWFS ( ! 1 ) ; this . sections . geojson = this . tabs . getContentSection ( a ) ; a += 1 ; this . addInputFile ( this . sections . geojson , "GeoJSON-Datei:" , ".geojson,.json" ) ; this . addText ( this . sections . geojson ,
"<h3>Unterst\u00fctzte Koordinatensysteme:</h3><ul><li>Web Mercator (EPSG:3857)</li><li>WGS84 / Lon-Lat (EPSG:4326)</li><li>ETRS89 / UTM Zone 32N (EPSG:25832)</li></ul>" ) ; this . addButton ( this . sections . geojson , "<i class='netgis-icon fas fa-check'></i><span>Datei laden</span>" , this . onGeoJSONAcceptClick . bind ( this ) ) ; this . sections . gml = this . tabs . getContentSection ( a ) ; a += 1 ; this . addInputFile ( this . sections . gml , "GML-Datei:" , ".gml,.xml" ) ; this . addText ( this . sections . gml , "<h3>Unterst\u00fctzte Koordinatensysteme:</h3><ul><li>Web Mercator (EPSG:3857)</li><li>WGS84 / Lon-Lat (EPSG:4326)</li><li>ETRS89 / UTM Zone 32N (EPSG:25832)</li></ul>" ) ;
this . addButton ( this . sections . gml , "<i class='netgis-icon fas fa-check'></i><span>Datei laden</span>" , this . onGMLAcceptClick . bind ( this ) ) ; this . sections . geopackage = this . tabs . getContentSection ( a ) ; a += 1 ; this . addInputFile ( this . sections . geopackage , "GeoPackage-Datei:" , ".gpkg" ) ; this . addText ( this . sections . geopackage , "<h3>Unterst\u00fctzte Koordinatensysteme:</h3><ul><li>Web Mercator (EPSG:3857)</li><li>WGS84 / Lon-Lat (EPSG:4326)</li><li>ETRS89 / UTM Zone 32N (EPSG:25832)</li></ul>" ) ; this . addButton ( this . sections . geopackage ,
"<i class='netgis-icon fas fa-check'></i><span>Datei laden</span>" , this . onGeoPackageAcceptClick . bind ( this ) ) ; this . sections . spatialite = this . tabs . getContentSection ( a ) ; a += 1 ; this . addInputFile ( this . sections . spatialite , "Spatialite-Datei:" , ".sqlite" ) ; this . addText ( this . sections . spatialite , "<h3>Unterst\u00fctzte Koordinatensysteme:</h3><ul><li>Web Mercator (EPSG:3857)</li><li>WGS84 / Lon-Lat (EPSG:4326)</li><li>ETRS89 / UTM Zone 32N (EPSG:25832)</li></ul>" ) ; this . addButton ( this . sections . spatialite , "<i class='netgis-icon fas fa-check'></i><span>Datei laden</span>" ,
this . onSpatialiteAcceptClick . bind ( this ) ) ; this . sections . shapefile = this . tabs . getContentSection ( a ) ; this . addInputFile ( this . sections . shapefile , "Shapefile-Zip-Datei:" , ".zip" ) ; this . addText ( this . sections . shapefile , "<h3>Unterst\u00fctzte Koordinatensysteme:</h3><ul><li>Web Mercator (EPSG:3857)</li><li>WGS84 / Lon-Lat (EPSG:4326)</li><li>ETRS89 / UTM Zone 32N (EPSG:25832)</li></ul>" ) ; this . addButton ( this . sections . shapefile , "<i class='netgis-icon fas fa-check'></i><span>Datei laden</span>" , this . onShapefileAcceptClick . bind ( this ) ) } ;
netgis . Import . prototype . initPreview = function ( ) { this . preview = new netgis . Modal ( "Vorschau" ) ; this . preview . attachTo ( this . modal . content ) ; this . previewMapContainer = document . createElement ( "div" ) ; this . previewMapContainer . className = "netgis-preview-map" ; this . preview . content . appendChild ( this . previewMapContainer ) ; if ( ol ) { var a = this . config . map ; a = { projection : a . projection , center : a . centerLonLat ? ol . proj . fromLonLat ( a . centerLonLat ) : a . center , zoom : a . zoom } ; this . previewMap = new ol . Map ( { target : this . previewMapContainer , view : new ol . View ( a ) ,
pixelRatio : 1 , moveTolerance : 3 , controls : [ ] } ) ; this . previewMap . getView ( ) . padding = [ 10 , 10 , 10 , 10 ] ; this . previewMap . addLayer ( new ol . layer . Tile ( { source : new ol . source . OSM } ) ) } this . previewTree = new netgis . Tree ; this . previewTree . container . classList . add ( "netgis-preview-tree" ) ; this . previewTree . attachTo ( this . preview . content ) ; this . previewTree . container . addEventListener ( netgis . Events . TREE _ITEM _CHANGE , this . onPreviewTreeItemChange . bind ( this ) ) ; this . previewSubmit = document . createElement ( "button" ) ; this . previewSubmit . setAttribute ( "type" ,
"button" ) ; this . previewSubmit . className = "netgis-import-submit netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow" ; this . previewSubmit . innerHTML = "<i class='netgis-icon fas fa-check'></i><span>Hinzuf\u00fcgen</span>" ; this . previewSubmit . addEventListener ( "click" , this . onPreviewSubmitClick . bind ( this ) ) ; this . preview . content . appendChild ( this . previewSubmit ) } ;
netgis . Import . prototype . attachTo = function ( a ) { a . appendChild ( this . modal . container ) ; a . addEventListener ( netgis . Events . IMPORT _LAYER _SHOW , this . onImportShow . bind ( this ) ) ; a . addEventListener ( netgis . Events . IMPORT _LAYER _PREVIEW _FEATURES , this . onImportPreviewFeatures . bind ( this ) ) } ; netgis . Import . prototype . addText = function ( a , b ) { var c = document . createElement ( "div" ) ; c . innerHTML = b ; a . appendChild ( c ) ; return c } ;
netgis . Import . prototype . addButton = function ( a , b , c ) { var d = document . createElement ( "button" ) ; d . className = "netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow" ; d . setAttribute ( "type" , "button" ) ; d . innerHTML = b ; c && ( d . onclick = c ) ; a . appendChild ( d ) ; return d } ;
netgis . Import . prototype . addInputText = function ( a , b , c ) { var d = document . createElement ( "label" ) ; d . innerHTML = b ; var e = document . createElement ( "input" ) ; e . setAttribute ( "type" , "text" ) ; d . appendChild ( e ) ; if ( c ) { b = "list-" + netgis . util . stringToID ( b ) ; var f = document . createElement ( "datalist" ) ; f . setAttribute ( "id" , b ) ; for ( var g = 0 ; g < c . length ; g ++ ) { var h = document . createElement ( "option" ) ; h . setAttribute ( "value" , c [ g ] ) ; f . appendChild ( h ) } a . appendChild ( f ) ; e . setAttribute ( "list" , b ) } a . appendChild ( d ) ; return e } ;
netgis . Import . prototype . addInputSelect = function ( a , b , c ) { c = document . createElement ( "label" ) ; c . innerHTML = b ; b = document . createElement ( "select" ) ; c . appendChild ( b ) ; a . appendChild ( c ) ; return b } ; netgis . Import . prototype . addInputFile = function ( a , b , c ) { var d = document . createElement ( "label" ) ; d . innerHTML = b ; b = document . createElement ( "input" ) ; b . setAttribute ( "type" , "file" ) ; b . setAttribute ( "accept" , c ) ; d . appendChild ( b ) ; a . appendChild ( d ) ; return b } ; netgis . Import . prototype . getLayerOrder = function ( ) { return 1E4 } ;
netgis . Import . prototype . showDetailsWMS = function ( a ) { var b = this . sections . wms , c = b . getElementsByTagName ( "label" ) ; b = b . getElementsByTagName ( "button" ) ; a ? ( c [ 1 ] . classList . remove ( "netgis-hide" ) , c [ 2 ] . classList . remove ( "netgis-hide" ) , c [ 3 ] . classList . remove ( "netgis-hide" ) , b [ 1 ] . classList . remove ( "netgis-hide" ) ) : ( c [ 1 ] . classList . add ( "netgis-hide" ) , c [ 2 ] . classList . add ( "netgis-hide" ) , c [ 3 ] . classList . add ( "netgis-hide" ) , b [ 1 ] . classList . add ( "netgis-hide" ) ) } ;
netgis . Import . prototype . showDetailsWFS = function ( a ) { var b = this . sections . wfs , c = b . getElementsByTagName ( "label" ) ; b = b . getElementsByTagName ( "button" ) ; a ? ( c [ 1 ] . classList . remove ( "netgis-hide" ) , c [ 2 ] . classList . remove ( "netgis-hide" ) , c [ 3 ] . classList . remove ( "netgis-hide" ) , b [ 1 ] . classList . remove ( "netgis-hide" ) ) : ( c [ 1 ] . classList . add ( "netgis-hide" ) , c [ 2 ] . classList . add ( "netgis-hide" ) , c [ 3 ] . classList . add ( "netgis-hide" ) , b [ 1 ] . classList . add ( "netgis-hide" ) ) } ;
netgis . Import . prototype . submitImportLayer = function ( a ) { ! 0 === this . config [ "import" ] . preview ? netgis . util . invoke ( this . modal . container , netgis . Events . IMPORT _LAYER _PREVIEW , a ) : ( this . config . layers . push ( a ) , netgis . util . invoke ( this . modal . container , netgis . Events . IMPORT _LAYER _ACCEPT , a ) , this . modal . hide ( ) ) } ; netgis . Import . prototype . onImportShow = function ( a ) { this . modal . show ( ) ; this . tabs . updateHeaderScroll ( ) } ;
netgis . Import . prototype . onWMSLoadClick = function ( a ) { this . showDetailsWMS ( ! 1 ) ; var b = this . sections . wms . getElementsByTagName ( "input" ) [ 0 ] . value ; b = b . trim ( ) ; if ( ! ( 1 > b . length ) ) { var c = b . indexOf ( "?" ) ; a = - 1 < c ? b . substr ( 0 , c ) : b ; var d = [ "request=GetCapabilities" ] ; if ( - 1 < c ) for ( b = b . substr ( c + 1 ) , b = b . split ( "&" ) , c = 0 ; c < b . length ; c ++ ) { var e = b [ c ] ; e = e . toLowerCase ( ) ; - 1 < e . search ( "service" ) ? d . push ( e ) : - 1 < e . search ( "version" ) ? d . push ( e ) : e . search ( "request" ) } d = d . join ( "&" ) ; - 1 === d . search ( "service=" ) && ( d += "&service=WMS" ) ; netgis . util . request ( a +
"?" + d , this . onWMSCapsResponse . bind ( this ) ) } } ;
netgis . Import . prototype . onWMSCapsResponse = function ( a ) { var b = ( new DOMParser ) . parseFromString ( a , "text/xml" ) , c = b . documentElement ; b = b . getElementsByTagName ( "parsererror" ) ; for ( var d = 0 ; d < b . length ; d ++ ) console . error ( "WMS caps parser error:" , b [ d ] . textContent ) ; 0 < b . length && alert ( 0 < a . length ? a : b [ 0 ] . textContent ) ; a = this . sections . wms ; var e = a . getElementsByTagName ( "input" ) ; a = a . getElementsByTagName ( "select" ) ; b = a [ 0 ] ; a = a [ 1 ] ; for ( d = b . options . length - 1 ; 0 <= d ; d -- ) b . options . remove ( d ) ; for ( d = a . options . length - 1 ; 0 <= d ; d -- ) a . options . remove ( d ) ;
switch ( c . nodeName ) { default : case "HTML" : console . warn ( "could not detect WMS service" , c ) ; break ; case "WMS_Capabilities" : case "WMT_MS_Capabilities" : c . getAttribute ( "version" ) ; d = c . getElementsByTagName ( "Service" ) [ 0 ] . getElementsByTagName ( "Title" ) [ 0 ] . textContent ; e [ 1 ] . value = d ; d = c . getElementsByTagName ( "Layer" ) ; for ( var f = [ ] , g = 0 ; g < d . length ; g ++ ) { e = d [ g ] ; var h = e . getElementsByTagName ( "Name" ) [ 0 ] . textContent , k = e . getElementsByTagName ( "Title" ) [ 0 ] . textContent ; f . push ( { name : h , title : k } ) ; e = document . createElement ( "option" ) ;
e . text = k ; e . value = h ; b . options . add ( e ) } c = c . getElementsByTagName ( "GetMap" ) [ 0 ] . getElementsByTagName ( "Format" ) ; b = [ ] ; for ( d = 0 ; d < c . length ; d ++ ) e = c [ d ] , f = e . textContent , b . push ( f ) , e = document . createElement ( "option" ) , e . text = f , e . value = f , a . options . add ( e ) } this . showDetailsWMS ( ! 0 ) } ;
netgis . Import . prototype . onWMSAcceptClick = function ( a ) { a = this . sections . wms ; var b = a . getElementsByTagName ( "input" ) , c = a . getElementsByTagName ( "select" ) , d = "import_" + netgis . util . getTimeStamp ( ! 0 ) ; b = b [ 0 ] . value ; var e = c [ 0 ] . selectedOptions [ 0 ] . innerText , f = c [ 0 ] . value ; c = c [ 1 ] . value ; b = netgis . util . replace ( b , "request=" , "oldrequest=" ) ; b = netgis . util . replace ( b , "Request=" , "oldrequest=" ) ; d = { id : d , folder : null , active : ! 0 , order : this . getLayerOrder ( ) , type : netgis . LayerTypes . WMS , url : b , title : e , name : f , format : c , tiled : ! 0 } ; this . config . layers . push ( d ) ;
netgis . util . invoke ( a , netgis . Events . IMPORT _LAYER _ACCEPT , d ) ; this . modal . hide ( ) } ;
netgis . Import . prototype . onWFSLoadClick = function ( a ) { this . showDetailsWFS ( ! 1 ) ; var b = this . sections . wfs . getElementsByTagName ( "input" ) [ 0 ] . value ; b = b . trim ( ) ; if ( ! ( 1 > b . length ) ) { var c = b . indexOf ( "?" ) ; a = - 1 < c ? b . substr ( 0 , c ) : b ; var d = [ "request=GetCapabilities" ] ; if ( - 1 < c ) for ( b = b . substr ( c + 1 ) , b = b . split ( "&" ) , c = 0 ; c < b . length ; c ++ ) { var e = b [ c ] ; e = e . toLowerCase ( ) ; - 1 < e . search ( "service" ) ? d . push ( e ) : - 1 < e . search ( "version" ) ? d . push ( e ) : - 1 < e . search ( "request" ) || d . push ( e ) } d = d . join ( "&" ) ; - 1 === d . search ( "service=" ) && ( d += "&service=WFS" ) ; a = a +
"?" + d ; this . config [ "import" ] . wfs _proxy && ( a = this . config [ "import" ] . wfs _proxy + a ) ; netgis . util . request ( a , this . onWFSCapsResponse . bind ( this ) ) } } ;
netgis . Import . prototype . onWFSCapsResponse = function ( a ) { var b = ( new DOMParser ) . parseFromString ( a , "text/xml" ) , c = b . documentElement ; b = b . getElementsByTagName ( "parsererror" ) ; for ( var d = 0 ; d < b . length ; d ++ ) console . error ( "WFS caps parser error:" , b [ d ] . textContent ) ; 0 < b . length && alert ( 0 < a . length ? a : b [ 0 ] . textContent ) ; a = this . sections . wfs ; var e = a . getElementsByTagName ( "input" ) ; a = a . getElementsByTagName ( "select" ) ; b = a [ 0 ] ; a = a [ 1 ] ; for ( d = b . options . length - 1 ; 0 <= d ; d -- ) b . options . remove ( d ) ; for ( d = a . options . length - 1 ; 0 <= d ; d -- ) a . options . remove ( d ) ;
switch ( c . nodeName ) { default : case "HTML" : console . error ( "could not detect WFS service" , c ) ; break ; case "WFS_Capabilities" : case "wfs:WFS_Capabilities" : c . getAttribute ( "version" ) ; d = c . getElementsByTagName ( "ows:ServiceIdentification" ) [ 0 ] . getElementsByTagName ( "ows:Title" ) [ 0 ] . textContent ; e [ 1 ] . value = d ; d = c . getElementsByTagName ( "FeatureType" ) ; for ( var f = [ ] , g = 0 ; g < d . length ; g ++ ) { e = d [ g ] ; var h = e . getElementsByTagName ( "Name" ) [ 0 ] . textContent , k = e . getElementsByTagName ( "Title" ) [ 0 ] . textContent ; f . push ( { name : h , title : k } ) ; e = document . createElement ( "option" ) ;
e . text = k ; e . value = h ; b . options . add ( e ) } c = c . getElementsByTagName ( "ows:Operation" ) ; b = null ; for ( e = 0 ; e < c . length ; e ++ ) if ( "GetFeature" === c [ e ] . getAttribute ( "name" ) ) { b = c [ e ] ; break } c = null ; if ( b ) for ( b = b . getElementsByTagName ( "ows:Parameter" ) , e = 0 ; e < b . length ; e ++ ) if ( d = b [ e ] , "outputFormat" === d . getAttribute ( "name" ) ) { b = d . getElementsByTagName ( "ows:Value" ) ; for ( d = 0 ; d < b . length ; d ++ ) e = b [ d ] , f = e . textContent , e = document . createElement ( "option" ) , e . text = f , e . value = f , a . options . add ( e ) , - 1 < f . search ( "json" ) && ( c = f ) ; break } c && ( a . value = c ) } this . showDetailsWFS ( ! 0 ) } ;
netgis . Import . prototype . onWFSAcceptClick = function ( a ) { a = this . sections . wfs ; var b = a . getElementsByTagName ( "input" ) , c = a . getElementsByTagName ( "select" ) , d = "import_" + netgis . util . getTimeStamp ( ! 0 ) ; b = b [ 0 ] . value ; var e = c [ 0 ] . selectedOptions [ 0 ] . innerText , f = c [ 0 ] . value ; c = c [ 1 ] . value ; b = netgis . util . replace ( b , "request=" , "oldrequest=" ) ; b = netgis . util . replace ( b , "Request=" , "oldrequest=" ) ; this . config [ "import" ] . wfs _proxy && ( b = this . config [ "import" ] . wfs _proxy + b ) ; d = { id : d , folder : null , active : ! 0 , order : this . getLayerOrder ( ) , style : this . config . styles [ "import" ] ,
title : e , type : netgis . LayerTypes . WFS , url : b , name : f , format : c } ; this . config . layers . push ( d ) ; netgis . util . invoke ( a , netgis . Events . IMPORT _LAYER _ACCEPT , d ) ; this . modal . hide ( ) } ; netgis . Import . prototype . onGeoJSONAcceptClick = function ( a ) { if ( a = this . sections . geojson . getElementsByTagName ( "input" ) [ 0 ] . files [ 0 ] ) { var b = new FileReader ; b . title = a . name ; b . onload = this . onGeoJSONLoad . bind ( this ) ; b . readAsText ( a ) } else alert ( "No file selected!" ) } ;
netgis . Import . prototype . onGeoJSONLoad = function ( a ) { var b = a . target ; a = b . title ; b = b . result ; a = { id : "import_" + netgis . util . getTimeStamp ( ! 0 ) , folder : null , active : ! 0 , order : this . getLayerOrder ( ) , style : this . config . styles [ "import" ] , title : a , type : netgis . LayerTypes . GEOJSON , data : b } ; this . submitImportLayer ( a ) } ; netgis . Import . prototype . onGMLAcceptClick = function ( a ) { if ( a = this . sections . gml . getElementsByTagName ( "input" ) [ 0 ] . files [ 0 ] ) { var b = new FileReader ; b . title = a . name ; b . onload = this . onGMLLoad . bind ( this ) ; b . readAsText ( a ) } else alert ( "No file selected!" ) } ;
netgis . Import . prototype . onGMLLoad = function ( a ) { var b = a . target ; a = b . result ; var c = "import_" + netgis . util . getTimeStamp ( ! 0 ) ; b = b . title ; a = { id : c , folder : null , active : ! 0 , order : this . getLayerOrder ( ) , style : this . config . styles [ "import" ] , title : b , type : netgis . LayerTypes . GML , data : a } ; this . submitImportLayer ( a ) } ; netgis . Import . prototype . onGeoPackageAcceptClick = function ( a ) { if ( a = this . sections . geopackage . getElementsByTagName ( "input" ) [ 0 ] . files [ 0 ] ) { var b = new FileReader ; b . title = a . name ; b . onload = this . onGeoPackageLoad . bind ( this ) ; b . readAsArrayBuffer ( a ) } else alert ( "No file selected!" ) } ;
netgis . Import . prototype . onGeoPackageLoad = function ( a ) { var b = a . target ; a = b . result ; var c = "import_" + netgis . util . getTimeStamp ( ! 0 ) ; b = b . title ; a = { id : c , folder : null , active : ! 0 , order : this . getLayerOrder ( ) , style : this . config . styles [ "import" ] , title : b , type : netgis . LayerTypes . GEOPACKAGE , data : a } ; this . submitImportLayer ( a ) } ;
netgis . Import . prototype . onSpatialiteAcceptClick = function ( a ) { if ( a = this . sections . spatialite . getElementsByTagName ( "input" ) [ 0 ] . files [ 0 ] ) { var b = new FileReader ; b . title = a . name ; b . onload = this . onSpatialiteLoad . bind ( this ) ; b . readAsArrayBuffer ( a ) } else alert ( "No file selected!" ) } ;
netgis . Import . prototype . onSpatialiteLoad = function ( a ) { var b = a . target ; a = b . result ; var c = "import_" + netgis . util . getTimeStamp ( ! 0 ) ; b = b . title ; a = { id : c , folder : null , active : ! 0 , order : this . getLayerOrder ( ) , style : this . config . styles [ "import" ] , title : b , type : netgis . LayerTypes . SPATIALITE , data : a } ; this . submitImportLayer ( a ) } ;
netgis . Import . prototype . onShapefileAcceptClick = function ( a ) { if ( a = this . sections . shapefile . getElementsByTagName ( "input" ) [ 0 ] . files [ 0 ] ) { var b = new FileReader ; b . title = a . name ; b . onload = this . onShapefileLoad . bind ( this ) ; b . readAsArrayBuffer ( a ) } else alert ( "No file selected!" ) } ;
netgis . Import . prototype . onShapefileLoad = function ( a ) { var b = a . target ; a = b . result ; var c = "import_" + netgis . util . getTimeStamp ( ! 0 ) ; b = b . title ; a = { id : c , folder : null , active : ! 0 , order : this . getLayerOrder ( ) , style : this . config . styles [ "import" ] , title : b , type : netgis . LayerTypes . SHAPEFILE , data : a } ; this . submitImportLayer ( a ) } ;
netgis . Import . prototype . onImportPreviewFeatures = function ( a ) { var b = a . detail , c = b . layer ; this . previewTree . clear ( ) ; a = this . previewMap . getLayers ( ) . getArray ( ) ; for ( var d = 1 ; d < a . length ; d ++ ) this . previewMap . removeLayer ( a [ d ] ) ; if ( ol ) { a = config . styles [ "import" ] ; a = new ol . style . Style ( { fill : new ol . style . Fill ( { color : a . fill } ) , stroke : new ol . style . Stroke ( { color : a . stroke , width : a . width } ) } ) ; c . setStyle ( a ) ; this . previewMap . addLayer ( c ) ; var e = this . previewTree . addFolder ( null , b . id , b . title ) ; a = c . getSource ( ) . getFeatures ( ) ; if ( 0 === a . length ) { var f =
this ; c . getSource ( ) . on ( "addfeature" , function ( a ) { f . featureLoadTimeout && window . clearTimeout ( f . featureLoadTimeout ) ; f . featureLoadTimeout = window . setTimeout ( function ( ) { var a = c . getSource ( ) . getFeatures ( ) ; f . updatePreviewFeatures ( a , e , c , b ) ; f . featureLoadTimeout = null } , 100 ) } ) } else this . updatePreviewFeatures ( a , e , c , b ) } else console . error ( "import preview only supported with OL map renderer" , c ) } ;
netgis . Import . prototype . updatePreviewFeatures = function ( a , b , c , d ) { for ( var e = 0 ; e < a . length ; e ++ ) { var f = a [ e ] , g = f . getId ( ) , h = f . getProperties ( ) ; g || ( g = e + 1 , f . setId ( g ) ) ; var k = null , l ; for ( l in h ) switch ( l . toLowerCase ( ) ) { case "name" : k = h [ l ] ; break ; case "title" : k = h [ l ] ; break ; case "id" : k = h [ l ] ; break ; case "gid" : k = h [ l ] ; break ; case "oid" : k = h [ l ] ; break ; case "objectid" : k = h [ l ] } k || ( k = g ) ; h = f . getGeometry ( ) ; if ( h instanceof ol . geom . Polygon || h instanceof ol . geom . MultiPolygon ) k += " (" + netgis . util . formatArea ( h . getArea ( ) ) + ")" ; else if ( h instanceof
ol . geom . LineString ) k += " (" + netgis . util . formatArea ( h . getLength ( ) ) + ")" ; else if ( h instanceof ol . geom . MultiLineString ) { f = 0 ; h = h . getLineStrings ( ) ; for ( var m = 0 ; m < h . length ; m ++ ) f += h [ m ] . getLength ( ) ; k += " (" + netgis . util . formatArea ( f ) + ")" } this . previewTree . addCheckbox ( b , g , "Feature " + k , ! 0 ) } this . previewTree . setFolderOpen ( d . id , ! 0 ) ; this . previewTree . updateFolderChecks ( ) ; this . preview . show ( ) ; this . previewMap . updateSize ( ) ; this . previewMap . getView ( ) . fit ( c . getSource ( ) . getExtent ( ) ) } ;
netgis . Import . prototype . onPreviewSubmitClick = function ( a ) { var b = this . previewTree . container . getElementsByClassName ( "netgis-folder" ) [ 0 ] ; a = b . getAttribute ( "data-id" ) ; b = b . getElementsByTagName ( "span" ) [ 0 ] . innerText ; for ( var c = this . previewTree . container . getElementsByTagName ( "input" ) , d = this . previewMap . getLayers ( ) . getArray ( ) [ 1 ] . getSource ( ) , e = [ ] , f = 1 ; f < c . length ; f ++ ) { var g = c [ f ] ; g . checked && ( g = g . getAttribute ( "data-id" ) , g = d . getFeatureById ( g ) , e . push ( g ) ) } c = ( new ol . format . GeoJSON ) . writeFeaturesObject ( e ) ; d = this . previewMap . getView ( ) . getProjection ( ) . getCode ( ) ;
c . crs = { type : "name" , properties : { name : "urn:ogc:def:crs:" + d . replace ( ":" , "::" ) } } ; a = { id : a , folder : null , active : ! 0 , order : this . getLayerOrder ( ) , style : this . config . styles [ "import" ] , title : b , type : netgis . LayerTypes . GEOJSON , data : c } ; this . config . layers . push ( a ) ; netgis . util . invoke ( this . preview . container , netgis . Events . IMPORT _LAYER _ACCEPT , a ) ; this . preview . hide ( ) ; this . modal . hide ( ) } ;
netgis . Import . prototype . onPreviewTreeItemChange = function ( a ) { a = a . detail ; var b = this . previewMap . getLayers ( ) . getArray ( ) [ 1 ] . getSource ( ) . getFeatureById ( a . id ) ; a . checked ? b . setStyle ( null ) : b . setStyle ( new ol . style . Style ( { } ) ) } ; netgis . Import . prototype . onGeoportalSearchChange = function ( a ) { a = this . geoportalSearch . value ; a = a . trim ( ) ; var b = this . config [ "import" ] . geoportal _search _url ; b = netgis . util . replace ( b , "{query}" , a ) ; console . info ( "Geoportal Search:" , b ) ; netgis . util . request ( b , this . onGeoportalSearchResponse . bind ( this ) ) } ;
netgis . Import . prototype . onGeoportalSearchResponse = function ( a ) { function b ( a ) { if ( a && a . layer ) for ( var c = 0 ; c < a . layer . length ; c ++ ) b ( a . layer [ c ] ) ; else a && e . push ( a ) ; return e . length } a = JSON . parse ( a ) ; this . geoportalResults . clear ( ) ; console . info ( "Geoportal Response:" , a ) ; this . geoportalDataRaw = a = a . wms . srv ; this . geoportalData = [ ] ; for ( var c = 0 ; c < a . length ; c ++ ) { var d = a [ c ] ; console . info ( "Result Layer:" , d ) ; var e = [ ] ; var f = b ( d ) ; f = this . geoportalResults . addFolder ( null , c , d . title + " (" + f + ")" ) ; f . setAttribute ( "title" , d [ "abstract" ] ) ;
for ( var g = 0 ; g < e . length ; g ++ ) { var h = e [ g ] ; console . info ( "Result Child:" , h ) ; this . geoportalResults . addCheckbox ( f , g , h . title ) } d . children = e ; this . geoportalData . push ( d ) } } ;
netgis . Import . prototype . onGeoportalSubmit = function ( a ) { console . info ( "Geoportal Submit..." ) ; a = this . geoportalResults . container . getElementsByClassName ( "netgis-item" ) ; for ( var b = 0 , c = 0 ; c < a . length ; c ++ ) { var d = a [ c ] , e = d . getElementsByTagName ( "input" ) [ 0 ] ; if ( e . checked ) { b += 1 ; e = e . getAttribute ( "data-id" ) ; d = d . parentNode . parentNode . parentNode . getAttribute ( "data-id" ) ; var f = this . geoportalData [ d ] , g = f . children [ e ] ; console . info ( "Item:" , d , e , f , g ) ; var h = f . title ; f = f . getMapUrl ; var k = g . name ; g = g . title ; d = "geoportal_" + d ; e = d + "_" + e ;
netgis . util . invoke ( this . sections . geoportal , netgis . Events . IMPORT _GEOPORTAL _SUBMIT , { folder : { id : d , title : h } , layer : { id : e , url : f , name : k , title : g } } ) } } 0 < b && this . modal . hide ( ) } ; netgis = netgis || { } ; netgis . Info = function ( a ) { this . config = a ; this . queryLayers = { } ; this . popup = new netgis . Popup ; this . popup . setHeader ( "Abfrage:" ) ; this . initConfig ( a ) } ; netgis . Info . prototype . initConfig = function ( a ) { for ( a = a . layers . length - 1 ; 0 <= a ; a -- ) ; } ; netgis . Info . prototype . attachTo = function ( a ) { this . popup . attachTo ( a ) ; a . addEventListener ( netgis . Events . MAP _CLICK , this . onMapClick . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _LAYER _TOGGLE , this . onMapLayerToggle . bind ( this ) ) } ; netgis . Info . prototype . onContextResponse = function ( a ) { this . initConfig ( a . detail . context . config ) } ;
netgis . Info . prototype . onMapLayerToggle = function ( a ) { var b = a . detail ; a = b . id ; if ( b . on ) { b = this . config . layers ; for ( var c = null , d = 0 ; d < b . length ; d ++ ) if ( b [ d ] . id === a ) { c = b [ d ] ; break } if ( c ) switch ( c . type ) { case netgis . LayerTypes . WMS : case netgis . LayerTypes . WMST : this . queryLayers [ a ] = c } } else delete this . queryLayers [ a ] } ;
netgis . Info . prototype . onMapClick = function ( a ) { a = a . detail ; if ( a . mode === netgis . Modes . VIEW ) { this . popup . container !== a . overlay && this . popup . attachTo ( a . overlay ) ; this . popup . clearContent ( ) ; var b = 0 , c ; for ( c in this . queryLayers ) { var d = this . queryLayers [ c ] ; switch ( d . type ) { case netgis . LayerTypes . WMS : case netgis . LayerTypes . WMST : var e = d . url ; d . query _url && ( e = d . query _url ) ; var f = [ "service=WMS" , "version=1.1.0" , "request=GetFeatureInfo" , "styles=" , "layers=" + window . encodeURIComponent ( d . name ) , "query_layers=" + window . encodeURIComponent ( d . name ) ,
"bbox=" + a . view . bbox . join ( "," ) , "srs=" + a . view . projection , "width=" + a . view . width , "height=" + a . view . height , "x=" + a . pixel [ 0 ] , "y=" + a . pixel [ 1 ] , "info_format=text/html" ] ; e = e + ( - 1 === e . indexOf ( "?" ) ? "?" : "" ) + f . join ( "&" ) ; console . info ( "WMS REQUEST 1:" , e ) ; netgis . util . request ( e , this . onLayerResponseWMS . bind ( this ) , { title : d . title } ) ; b += 1 } ( e = d . query _url ) && "" !== e && ( e = netgis . util . replace ( e , "{bbox}" , a . view . bbox . join ( "," ) ) , e = netgis . util . replace ( e , "{proj}" , a . view . projection ) , e = netgis . util . replace ( e , "{width}" , a . view . width ) , e = netgis . util . replace ( e ,
"{height}" , a . view . height ) , e = netgis . util . replace ( e , "{x}" , a . pixel [ 0 ] ) , e = netgis . util . replace ( e , "{y}" , a . pixel [ 1 ] ) , e = netgis . util . replace ( e , "{lon}" , a . lon ) , e = netgis . util . replace ( e , "{lat}" , a . lat ) , console . info ( "WMS REQUEST 2:" , e ) , netgis . util . request ( e , this . onLayerResponseWMS . bind ( this ) , { title : d . title } ) , b += 1 ) } 0 < b ? ( this . popup . showLoader ( ) , this . popup . show ( ) ) : this . popup . hide ( ) } } ;
netgis . Info . prototype . onLayerResponseWMS = function ( a , b ) { this . popup . hideLoader ( ) ; this . popup . addContent ( [ "<details><summary class='netgis-button netgis-noselect netgis-clip-text netgis-color-e netgis-hover-d'>" , b . title , "</summary><div>" , a , "</div></details>" ] . join ( "" ) ) } ; netgis = netgis || { } ; netgis . LayerID = Object . freeze ( { EDITABLE : "editable-layer" , NON _EDITABLE : "non-editable-layer" } ) ; netgis = netgis || { } ; netgis . LayerTree = function ( a ) { this . config = a ; this . importFolder = null ; this . initElements ( ) ; this . initConfig ( a ) ; this . initFolders ( ) } ; netgis . LayerTree . prototype . initElements = function ( ) { this . panel = new netgis . Panel ( "Layers" ) ; this . tree = new netgis . Tree ; this . tree . attachTo ( this . panel . content ) ; this . tree . container . addEventListener ( netgis . Events . TREE _ITEM _CHANGE , this . onTreeItemChange . bind ( this ) ) ; this . tree . container . addEventListener ( netgis . Events . TREE _ITEM _SLIDER _CHANGE , this . onTreeItemSliderChange . bind ( this ) ) } ;
netgis . LayerTree . prototype . initFolders = function ( ) { this . editFolder = this . tree . addFolder ( null , "edit-folder" , "Zeichnung" , ! 0 ) ; this . tree . addCheckbox ( this . editFolder , netgis . LayerID . EDITABLE , "Editierbar" ) ; this . tree . setItemChecked ( netgis . LayerID . EDITABLE , ! 0 ) ; this . tree . addCheckbox ( this . editFolder , netgis . LayerID . NON _EDITABLE , "Nicht-Editierbar" ) ; this . tree . setItemChecked ( netgis . LayerID . NON _EDITABLE , ! 0 ) ; this . editFolder . classList . add ( "netgis-hide" ) } ;
netgis . LayerTree . prototype . initConfig = function ( a , b ) { a . layertree && a . layertree . title && this . panel . setTitle ( a . layertree . title ) ; for ( var c = a . folders , d = { } , e = 0 ; e < c . length ; e ++ ) { var f = c [ e ] , g = this . tree . addFolder ( null , f . id , f . title , b , ! 1 ) ; d [ f . id ] = g ; ! 0 === f . open && this . tree . setFolderOpen ( f . id , ! 0 ) } b = a . layers ; for ( e = 0 ; e < b . length ; e ++ ) { g = b [ e ] ; f = d [ g . folder ] ? d [ g . folder ] : null ; var h = g . id ? g . id : e . toString ( ) , k = ! 1 ; if ( f ) for ( var l = 0 ; l < c . length ; l ++ ) { var m = c [ l ] ; m . id === g . folder && ( k = m . radio ) } g = ! 0 === k ? this . tree . addRadioButton ( f , h , g . title ,
g . active , this . createDefaultDetails ( g ) ) : this . tree . addCheckbox ( f , h , g . title , g . active , ! 1 , this . createDefaultDetails ( g ) ) ; g . addEventListener ( "contextmenu" , this . onTreeItemMenu . bind ( this ) ) } this . tree . updateFolderChecks ( ) ; c = a . layertree . buttons ; for ( e = 0 ; e < c . length ; e ++ ) d = c [ e ] , this . tree . addButton ( null , d . id , d . title , this . onTreeButtonClick . bind ( this ) ) ; a . layertree && ! 0 === a . layertree . open && this . panel . show ( ) } ;
netgis . LayerTree . prototype . attachTo = function ( a ) { a . appendChild ( this . panel . container ) ; a . addEventListener ( netgis . Events . CLIENT _CONTEXT _RESPONSE , this . onClientContextResponse . bind ( this ) ) ; a . addEventListener ( netgis . Events . LAYERTREE _TOGGLE , this . onLayerTreeToggle . bind ( this ) ) ; a . addEventListener ( netgis . Events . TOOLBOX _TOGGLE , this . onToolboxToggle . bind ( this ) ) ; a . addEventListener ( netgis . Events . SEARCHPARCEL _TOGGLE , this . onSearchParcelToggle . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _LAYER _TOGGLE , this . onMapLayerToggle . bind ( this ) ) ;
a . addEventListener ( netgis . Events . IMPORT _LAYER _ACCEPT , this . onImportLayerAccept . bind ( this ) ) ; a . addEventListener ( netgis . Events . IMPORT _GEOPORTAL _SUBMIT , this . onImportGeoportalSubmit . bind ( this ) ) ; a . addEventListener ( netgis . Events . CONTEXTMENU _SLIDER _CHANGE , this . onContextMenuSliderChange . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _EDIT _LAYER _LOADED , this . onMapEditLayerChange . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _EDIT _LAYER _CHANGE , this . onMapEditLayerChange . bind ( this ) ) } ;
netgis . LayerTree . prototype . createDefaultDetails = function ( a ) { return [ { title : "Transparenz:" , type : "slider" , val : a . transparency ? Math . round ( 100 * a . transparency ) : 0 } ] } ; netgis . LayerTree . prototype . onTreeItemChange = function ( a ) { var b = a . detail ; netgis . util . invoke ( a . target , netgis . Events . MAP _LAYER _TOGGLE , { id : b . id , on : b . checked } ) } ; netgis . LayerTree . prototype . onClientContextResponse = function ( a ) { this . initConfig ( a . detail . context . config , ! 0 ) } ; netgis . LayerTree . prototype . onLayerTreeToggle = function ( a ) { this . panel . toggle ( ) } ;
netgis . LayerTree . prototype . onToolboxToggle = function ( a ) { this . panel . hide ( ) } ; netgis . LayerTree . prototype . onSearchParcelToggle = function ( a ) { this . panel . hide ( ) } ; netgis . LayerTree . prototype . onTreeButtonClick = function ( a ) { a = a . currentTarget ; var b = a . getAttribute ( "data-id" ) ; netgis . Client . handleCommand ( a , b ) } ; netgis . LayerTree . prototype . onMapLayerToggle = function ( a ) { a = a . detail ; this . tree . setItemChecked ( a . id , a . on , ! 0 ) ; this . tree . updateFolderChecks ( ) } ;
netgis . LayerTree . prototype . onImportLayerAccept = function ( a ) { a = a . detail ; this . importFolder || ( this . importFolder = this . tree . addFolder ( null , "_import" , "Import" , ! 0 , ! 1 ) ) ; this . tree . addCheckbox ( this . importFolder , a . id , a . title , ! 0 , ! 0 , this . createDefaultDetails ( a ) ) . addEventListener ( "contextmenu" , this . onTreeItemMenu . bind ( this ) ) ; this . tree . updateFolderChecks ( ) } ;
netgis . LayerTree . prototype . onImportGeoportalSubmit = function ( a ) { a = a . detail ; var b = a . folder . id , c = this . tree . getFolder ( b ) ; c || ( c = this . tree . addFolder ( null , b , a . folder . title , ! 0 , ! 1 ) ) ; var d = a . layer . id ; b = { id : d , folder : b , title : a . layer . title , active : ! 0 , type : netgis . LayerTypes . WMS , url : a . layer . url , name : a . layer . name , order : 1E4 , transparency : 0 } ; this . config . layers . push ( b ) ; this . tree . addCheckbox ( c , d , a . layer . title , ! 1 , ! 1 , this . createDefaultDetails ( b ) ) ; this . tree . setItemChecked ( d , ! 0 , ! 1 ) } ;
netgis . LayerTree . prototype . onTreeItemMenu = function ( a ) { a . preventDefault ( ) ; return ! 1 } ; netgis . LayerTree . prototype . onContextMenuSliderChange = function ( a ) { var b = a . detail ; a = . 01 * b . val ; var c = null ; 0 === b . id . indexOf ( "layer_trans_" ) && ( c = b . id . split ( "layer_trans_" ) [ 1 ] ) ; b = this . config . layers ; for ( var d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] ; if ( e . id === c ) { e . transparency = a ; break } } netgis . util . invoke ( this . tree . container , netgis . Events . MAP _LAYER _TRANSPARENCY , { id : c , transparency : a } ) } ;
netgis . LayerTree . prototype . onTreeItemSliderChange = function ( a ) { var b = a . detail ; a = b . id ; b = . 01 * b . val ; for ( var c = this . config . layers , d = 0 ; d < c . length ; d ++ ) { var e = c [ d ] ; if ( e . id === a ) { e . transparency = b ; break } } netgis . util . invoke ( this . tree . container , netgis . Events . MAP _LAYER _TRANSPARENCY , { id : a , transparency : b } ) } ; netgis . LayerTree . prototype . onMapEditLayerChange = function ( a ) { this . editFolder . classList . remove ( "netgis-hide" ) } ; netgis = netgis || { } ; netgis . LayerTypes = Object . freeze ( { TMS : "TMS" , WMTS : "WMTS" , WMS : "WMS" , WMST : "WMST" , GEOJSON : "GEOJSON" , VTILES : "VTILES" , WFS : "WFS" , GML : "GML" , GEOPACKAGE : "GEOPACKAGE" , SPATIALITE : "SPATIALITE" , SHAPEFILE : "SHAPEFILE" , WKT : "WKT" , OSM : "OSM" , XYZ : "XYZ" } ) ; netgis = netgis || { } ; netgis . Logic = function ( a ) { this . client = a ; this . config = a . config ; this . container = a . container ; this . modules = a . modules ; this . initConfig ( config ) ; this . initEvents ( ) } ; netgis . Logic . prototype . initConfig = function ( a ) { a . wmc && a . wmc . url && ( new netgis . WMC ) . requestContext ( a . wmc . url , this . onContextLoaded . bind ( this ) ) } ; netgis . Logic . prototype . initEvents = function ( ) { } ;
netgis . Logic . prototype . onMenuButtonClick = function ( a ) { a = a . detail ; switch ( a . id ) { case "layertree" : this . modules . layertree . panel . toggle ( ) ; break ; case "searchplace" : this . modules . searchplace . search . toggle ( ) ; break ; default : console . error ( "unhandled menu button" , a ) } } ; netgis . Logic . prototype . onLayerItemChange = function ( a ) { a = a . detail ; if ( a . checked ) for ( var b = this . config . layers , c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; d . id === a . id && this . modules . map . addLayer ( a . id , d ) } else this . modules . map . removeLayer ( a . id ) } ;
netgis . Logic . prototype . onControlsButtonClick = function ( a ) { switch ( a . detail . id ) { case "zoom_in" : this . modules . map . zoom ( 1 ) ; break ; case "zoom_out" : this . modules . map . zoom ( - 1 ) ; break ; case "zoom_home" : this . config . map . bbox ? this . modules . map . zoomBBox ( this . config . map . bbox , 500 ) : this . config . map . centerLonLat && ( a = this . config . map . centerLonLat , this . modules . map . zoomLonLat ( a [ 0 ] , a [ 1 ] , this . config . map . zoom ) ) } } ;
netgis . Logic . prototype . onSearchPlaceChange = function ( a ) { var b = this . config . searchplace . url ; b = netgis . util . replace ( b , "{query}" , window . encodeURIComponent ( a . detail . query ) ) ; netgis . util . request ( b , this . onSearchPlaceResponse . bind ( this ) ) } ;
netgis . Logic . prototype . onSearchPlaceResponse = function ( a ) { a = JSON . parse ( a ) . data ; this . modules . searchplace . search . clearResults ( ) ; for ( var b = 0 ; b < a . length ; b ++ ) { var c = a [ b ] , d = c . name ; c = { type : "street" , id : c . strid , lon : Number . parseFloat ( c . wgs _x ) , lat : Number . parseFloat ( c . wgs _y ) } ; this . modules . searchplace . search . addResult ( d , JSON . stringify ( c ) ) } } ;
netgis . Logic . prototype . onSearchPlaceSelect = function ( a ) { a = JSON . parse ( a . detail . data ) ; this . modules . map . zoomLonLat ( a . lon , a . lat , this . config . searchplace . zoom ) ; if ( "street" === a . type ) { var b = this . config . searchplace . url _detail ; b && ( b = netgis . util . replace ( b , "{id}" , a . id ) , netgis . util . request ( b , this . onSearchPlaceDetailResponse . bind ( this ) ) ) } } ;
netgis . Logic . prototype . onSearchPlaceDetailResponse = function ( a ) { a = JSON . parse ( a ) ; var b = a . hsnrarr ; if ( 0 !== b . length ) { this . modules . searchplace . search . clearResults ( ) ; for ( var c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] , e = a . strname + " " + d . hsnr ; d = { type : "address" , lon : Number . parseFloat ( d . wgs _x ) , lat : Number . parseFloat ( d . wgs _y ) } ; this . modules . searchplace . search . addResult ( e , JSON . stringify ( d ) ) } } } ; netgis . Logic . prototype . onSearchPlaceClear = function ( a ) { } ;
netgis . Logic . prototype . onContextLoaded = function ( a ) { console . info ( "Context Loaded:" , a ) ; for ( var b = 0 ; b < a . config . layers . length ; b ++ ) this . config . layers . push ( a . config . layers [ b ] ) ; a . config . map . bbox && ( this . config . map . bbox = a . config . map . bbox ) ; this . modules . map && this . modules . map . initConfig ( a . config ) ; this . modules . layertree && this . modules . layertree . initConfig ( a . config , ! 0 ) } ; netgis = netgis || { } ;
netgis . Map = function ( a ) { this . config = a ; this . mode = null ; this . interactions = { } ; this . layers = { } ; this . viewHistory = [ ] ; this . viewIndex = - 1 ; this . viewFromHistory = ! 1 ; this . viewHistoryMax = 20 ; this . hoverBounds = this . hoverFeature = null ; this . selectedFeatures = [ ] ; this . sketchFeatures = [ ] ; this . snap = null ; this . snapFeatures = new ol . Collection ; this . drawError = this . selectMultiple = this . editEventsSilent = ! 1 ; this . initElements ( ) ; this . initMap ( a ) ; this . initLayers ( ) ; this . initOverlays ( ) ; this . initInteractions ( ) ; this . initConfig ( a ) ; this . setMode ( netgis . Modes . VIEW ) } ;
netgis . Map . prototype . initElements = function ( ) { this . container = document . createElement ( "div" ) ; this . container . setAttribute ( "tabindex" , - 1 ) ; this . container . className = "netgis-map" ; this . container . addEventListener ( "pointerleave" , this . onPointerLeave . bind ( this ) ) ; this . container . addEventListener ( "contextmenu" , this . onRightClick . bind ( this ) ) ; this . container . addEventListener ( "keydown" , this . onKeyDown . bind ( this ) ) ; this . container . addEventListener ( "keyup" , this . onKeyUp . bind ( this ) ) } ;
netgis . Map . prototype . initMap = function ( a ) { var b = a . map ; "undefined" !== typeof proj4 && ( proj4 . defs ( a . projections ) , proj4 . defs ( "urn:ogc:def:crs:OGC:1.3:CRS84" , proj4 . defs ( "EPSG:4326" ) ) , ol . proj . proj4 . register ( proj4 ) ) ; var c = { projection : b . projection , center : b . center _lonlat ? ol . proj . fromLonLat ( b . center _lonlat , b . projection ) : b . center , minZoom : b . min _zoom , maxZoom : b . max _zoom , zoom : b . zoom } ; this . view = new ol . View ( c ) ; this . map = new ol . Map ( { target : this . container , view : this . view , pixelRatio : 1 , moveTolerance : 5 , controls : [ ] } ) ; b . scalebar &&
( this . scalebar = new ol . control . ScaleLine ( { bar : ! 0 } ) , this . map . addControl ( this . scalebar ) ) ; this . map . on ( "moveend" , this . onMapMoveEnd . bind ( this ) ) ; this . map . on ( "pointermove" , this . onPointerMove . bind ( this ) ) ; this . map . on ( "click" , this . onPointerClick . bind ( this ) ) ; if ( a . map . extent ) { var d = this ; window . setTimeout ( function ( ) { d . map . updateSize ( ) ; d . view . fit ( a . map . extent ) } , 10 ) } } ;
netgis . Map . prototype . initLayers = function ( ) { this . measureLayer = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) , zIndex : 6E4 , style : this . styleMeasure . bind ( this ) } ) ; this . map . addLayer ( this . measureLayer ) ; var a = this . config . tools ; this . nonEditLayer = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) , zIndex : 5E4 , style : this . styleNonEdit . bind ( this ) , updateWhileAnimating : a . interactive _render , updateWhileInteracting : a . interactive _render } ) ; this . map . addLayer ( this . nonEditLayer ) ; this . editLayer =
new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) , zIndex : 5E4 , style : this . styleEdit . bind ( this ) , updateWhileAnimating : a . interactive _render , updateWhileInteracting : a . interactive _render } ) ; this . map . addLayer ( this . editLayer ) ; this . editLayer . getSource ( ) . on ( "addfeature" , this . onEditLayerAdd . bind ( this ) ) ; this . editLayer . getSource ( ) . on ( "changefeature" , this . onEditLayerChange . bind ( this ) ) ; this . editLayer . getSource ( ) . on ( "removefeature" , this . onEditLayerRemove . bind ( this ) ) ; this . previewLayer = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) ,
zIndex : 55E3 , style : this . styleSketch . bind ( this ) } ) ; this . map . addLayer ( this . previewLayer ) ; this . boundsLayer = null ; if ( this . config . tools . bounds ) { a = ( new ol . format . GeoJSON ) . readFeatures ( this . config . tools . bounds ) ; var b = null ; this . config . tools . show _bounds && this . config . styles . bounds && ( b = this . createStyle ( this . config . styles . bounds ) ) ; this . boundsLayer = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : a } ) , style : b , zIndex : 6E4 } ) ; this . map . addLayer ( this . boundsLayer ) } } ;
netgis . Map . prototype . initOverlays = function ( ) { var a = document . createElement ( "div" ) ; a . className = "netgis-map-overlay" ; this . popupOverlay = new ol . Overlay ( { id : "popup" , element : a , positioning : "center-center" } ) ; this . map . addOverlay ( this . popupOverlay ) } ;
netgis . Map . prototype . initInteractions = function ( ) { this . interactions [ netgis . Modes . VIEW ] = [ new ol . interaction . DragPan , new ol . interaction . DragPan ( { condition : function ( a ) { return 1 === a . originalEvent . button } } ) , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . ZOOM _BOX ] = [ new ol . interaction . DragZoom ( { condition : function ( a ) { return 0 === a . originalEvent . button } , out : ! 1 } ) , new ol . interaction . DragPan ( { condition : function ( a ) { return 1 === a . originalEvent . button } } ) , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . MEASURE _LINE ] =
[ new ol . interaction . DragPan , new ol . interaction . Modify ( { source : this . measureLayer . getSource ( ) , deleteCondition : ol . events . condition . doubleClick , style : this . styleMeasure . bind ( this ) } ) , new ol . interaction . Draw ( { type : "LineString" , source : this . measureLayer . getSource ( ) , style : this . styleMeasure . bind ( this ) } ) , new ol . interaction . DragPan ( { condition : function ( a ) { return 1 === a . originalEvent . button } } ) , new ol . interaction . PinchZoom , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . MEASURE _AREA ] = [ new ol . interaction . DragPan ,
new ol . interaction . Modify ( { source : this . measureLayer . getSource ( ) , deleteCondition : ol . events . condition . doubleClick , style : this . styleMeasure . bind ( this ) } ) , new ol . interaction . Draw ( { type : "Polygon" , source : this . measureLayer . getSource ( ) , style : this . styleMeasure . bind ( this ) } ) , new ol . interaction . DragPan ( { condition : function ( a ) { return 1 === a . originalEvent . button } } ) , new ol . interaction . PinchZoom , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . MEASURE _LINE ] [ 2 ] . on ( "drawstart" , this . onMeasureLineBegin . bind ( this ) ) ;
this . interactions [ netgis . Modes . MEASURE _AREA ] [ 2 ] . on ( "drawstart" , this . onMeasureAreaBegin . bind ( this ) ) ; if ( ! 0 === this . config . tools . editable ) { var a = this . config . tools . bounds ? ! 0 : ! 1 ; this . interactions [ netgis . Modes . DRAW _POINTS ] = [ new ol . interaction . Draw ( { type : "Point" , source : this . editLayer . getSource ( ) , style : this . styleSketch . bind ( this ) , geometryFunction : a ? this . onDrawPointsUpdateGeom . bind ( this ) : void 0 } ) , new ol . interaction . DragPan , new ol . interaction . DragPan ( { condition : function ( a ) { return 1 === a . originalEvent . button } } ) ,
new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . DRAW _POINTS ] [ 0 ] . on ( "drawend" , this . onDrawBufferEnd . bind ( this ) ) ; if ( a ) this . interactions [ netgis . Modes . DRAW _POINTS ] [ 0 ] . on ( "drawend" , this . onDrawPointsEnd . bind ( this ) ) ; this . interactions [ netgis . Modes . DRAW _LINES ] = [ new ol . interaction . Draw ( { type : "LineString" , source : this . editLayer . getSource ( ) , style : this . styleSketch . bind ( this ) , geometryFunction : a ? this . onDrawLinesUpdateGeom . bind ( this ) : void 0 } ) , new ol . interaction . DragPan , new ol . interaction . DragPan ( { condition : function ( a ) { return 1 ===
a . originalEvent . button } } ) , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . DRAW _LINES ] [ 0 ] . on ( "drawend" , this . onDrawBufferEnd . bind ( this ) ) ; if ( a ) this . interactions [ netgis . Modes . DRAW _LINES ] [ 0 ] . on ( "drawend" , this . onDrawLinesEnd . bind ( this ) ) ; this . interactions [ netgis . Modes . DRAW _POLYGONS ] = [ new ol . interaction . Draw ( { type : "Polygon" , source : this . editLayer . getSource ( ) , style : this . styleSketch . bind ( this ) , geometryFunction : a ? this . onDrawPolygonsUpdateGeom . bind ( this ) : void 0 } ) , new ol . interaction . DragPan , new ol . interaction . DragPan ( { condition : function ( a ) { return 1 ===
a . originalEvent . button } } ) , new ol . interaction . MouseWheelZoom ] ; if ( a ) this . interactions [ netgis . Modes . DRAW _POLYGONS ] [ 0 ] . on ( "drawend" , this . onDrawPolygonsEnd . bind ( this ) ) ; this . interactions [ netgis . Modes . MODIFY _FEATURES ] = [ new ol . interaction . DragPan , new ol . interaction . Modify ( { source : this . editLayer . getSource ( ) , deleteCondition : ol . events . condition . doubleClick , style : this . styleModify . bind ( this ) } ) , new ol . interaction . DragPan ( { condition : function ( a ) { return 1 === a . originalEvent . button } } ) , new ol . interaction . MouseWheelZoom ] ;
this . interactions [ netgis . Modes . DELETE _FEATURES ] = [ new ol . interaction . DragPan , new ol . interaction . DragPan ( { condition : function ( a ) { return 1 === a . originalEvent . button } } ) , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . CUT _FEATURES _DRAW ] = [ new ol . interaction . Draw ( { type : "Polygon" , style : this . styleSketch . bind ( this ) } ) , new ol . interaction . DragPan , new ol . interaction . DragPan ( { condition : function ( a ) { return 1 === a . originalEvent . button } } ) , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . CUT _FEATURES _DRAW ] [ 0 ] . on ( "drawend" ,
this . onCutFeaturesDrawEnd . bind ( this ) ) } } ; netgis . Map . prototype . initConfig = function ( a ) { a . map . bbox && this . zoomBBox ( a . map . bbox ) ; a . map . zoom && this . view . setZoom ( a . map . zoom ) ; a = a . layers ; for ( var b = a . length - 1 ; 0 <= b ; b -- ) { var c = a [ b ] ; ! 0 === c . active && this . addLayer ( c . id , c ) } } ;
netgis . Map . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) ; a . addEventListener ( netgis . Events . CLIENT _CONTEXT _RESPONSE , this . onClientContextResponse . bind ( this ) ) ; a . addEventListener ( netgis . Events . CLIENT _SET _MODE , this . onClientSetMode . bind ( this ) ) ; a . addEventListener ( netgis . Events . PANEL _TOGGLE , this . onPanelToggle . bind ( this ) ) ; a . addEventListener ( netgis . Events . PANEL _RESIZE , this . onPanelResize . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _EDIT _LAYER _LOADED , this . onEditLayerLoaded . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _ZOOM ,
this . onMapZoom . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _ZOOM _HOME , this . onMapZoomHome . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _ZOOM _LONLAT , this . onMapZoomLonLat . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _ZOOM _SCALE , this . onMapZoomScale . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _ZOOM _LAYER , this . onMapZoomLayer . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _ZOOM _LEVEL , this . onMapZoomLevel . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _LAYER _TOGGLE , this . onMapLayerToggle . bind ( this ) ) ;
a . addEventListener ( netgis . Events . MAP _LAYER _TRANSPARENCY , this . onMapLayerTransparency . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _SNAP _TOGGLE , this . onMapSnapToggle . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _VIEW _PREV , this . onMapViewPrev . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _VIEW _NEXT , this . onMapViewNext . bind ( this ) ) ; a . addEventListener ( netgis . Events . MEASURE _CLEAR , this . onMeasureClear . bind ( this ) ) ; a . addEventListener ( netgis . Events . DRAW _BUFFER _TOGGLE , this . onDrawBufferToggle . bind ( this ) ) ;
a . addEventListener ( netgis . Events . DRAW _BUFFER _CHANGE , this . onDrawBufferChange . bind ( this ) ) ; a . addEventListener ( netgis . Events . BUFFER _CHANGE , this . onBufferChange . bind ( this ) ) ; a . addEventListener ( netgis . Events . BUFFER _ACCEPT , this . onBufferAccept . bind ( this ) ) ; a . addEventListener ( netgis . Events . IMPORT _LAYER _ACCEPT , this . onImportLayerAccept . bind ( this ) ) ; a . addEventListener ( netgis . Events . IMPORT _LAYER _PREVIEW , this . onImportLayerPreview . bind ( this ) ) ; a . addEventListener ( netgis . Events . IMPORT _GEOPORTAL _SUBMIT , this . onImportGeoportalSubmit . bind ( this ) ) ;
a . addEventListener ( netgis . Events . MAP _COPY _FEATURE _TO _EDIT , this . onCopyFeatureToEdit . bind ( this ) ) ; a . addEventListener ( netgis . Events . SEARCHPARCEL _ITEM _ENTER , this . onSearchParcelItemEnter . bind ( this ) ) ; a . addEventListener ( netgis . Events . SEARCHPARCEL _ITEM _LEAVE , this . onSearchParcelItemLeave . bind ( this ) ) ; a . addEventListener ( netgis . Events . SEARCHPARCEL _ITEM _CLICK , this . onSearchParcelItemClick . bind ( this ) ) ; a . addEventListener ( netgis . Events . SEARCHPARCEL _ITEM _IMPORT , this . onSearchParcelItemImport . bind ( this ) ) ; a . addEventListener ( netgis . Events . EXPORT _BEGIN ,
this . onExportBegin . bind ( this ) ) ; a . addEventListener ( netgis . Events . TIMESLIDER _SHOW , this . onTimeSliderShow . bind ( this ) ) ; a . addEventListener ( netgis . Events . TIMESLIDER _HIDE , this . onTimeSliderHide . bind ( this ) ) ; a . addEventListener ( netgis . Events . TIMESLIDER _SELECT , this . onTimeSliderSelect . bind ( this ) ) } ;
netgis . Map . prototype . setMode = function ( a ) { switch ( this . mode ) { case netgis . Modes . MODIFY _FEATURES : this . editLayer . setStyle ( this . styleEdit . bind ( this ) ) ; break ; case netgis . Modes . DRAW _POINTS : case netgis . Modes . DRAW _LINES : this . previewLayer . getSource ( ) . clear ( ) ; this . container . classList . remove ( "netgis-not-allowed" ) ; break ; case netgis . Modes . DRAW _POLYGONS : this . container . classList . remove ( "netgis-not-allowed" ) ; break ; case netgis . Modes . BUFFER _FEATURES _EDIT : this . clearSketchFeatures ( ) } this . map . getInteractions ( ) . clear ( ) ; this . mode &&
this . container . classList . remove ( "netgis-mode-" + this . mode ) ; var b = this . interactions [ a ] ; b || ( console . warn ( "no interactions found for mode" , a ) , b = this . interactions [ netgis . Modes . VIEW ] ) ; for ( var c = 0 ; c < b . length ; c ++ ) this . map . addInteraction ( b [ c ] ) ; b = this . config . tools . editable ; switch ( a ) { case netgis . Modes . DRAW _POINTS : case netgis . Modes . DRAW _LINES : b && ( this . setSnapping ( this . drawSnapOn ) , this . onDrawBufferToggle ( { detail : { on : this . drawBufferOn , radius : this . drawBufferRadius , segments : this . drawBufferSegments } } ) ) ; break ; case netgis . Modes . DRAW _POLYGONS : b &&
this . setSnapping ( this . drawSnapOn ) ; break ; case netgis . Modes . MODIFY _FEATURES : b && this . editLayer . setStyle ( this . styleModify . bind ( this ) ) } this . container . classList . add ( "netgis-mode-" + a ) ; this . mode = a } ;
netgis . Map . prototype . addLayer = function ( a , b ) { var c = this . createLayer ( b ) ; c && ( c . set ( "id" , a ) , this . map . addLayer ( c ) , this . layers [ a ] = c , b . order && c . setZIndex ( b . order ) , b . transparency && c . setOpacity ( 1 - b . transparency ) , b . style && c . setStyle ( this . createStyle ( b . style ) ) , b . min _zoom && c . setMinZoom ( b . min _zoom - 1E-4 ) , b . max _zoom && c . setMaxZoom ( b . max _zoom ) , c instanceof ol . layer . Vector && this . addSnapLayer ( c ) , b . type === netgis . LayerTypes . WMST && netgis . util . invoke ( this . container , netgis . Events . TIMESLIDER _SHOW , { layer : a , title : b . title , url : b . url ,
name : b . name } ) ) ; return c } ;
netgis . Map . prototype . createLayer = function ( a ) { switch ( a . type ) { case netgis . LayerTypes . TMS : case netgis . LayerTypes . XYZ : var b = this . createLayerTMS ( a . url , a . projection , a . extent , a . scales ) ; break ; case netgis . LayerTypes . OSM : b = this . createLayerTMS ( "https://{a-c}.tile.openstreetmap.de/{z}/{x}/{y}.png" ) ; break ; case netgis . LayerTypes . WMTS : b = this . createLayerWMTS ( a . url , a . name ) ; break ; case netgis . LayerTypes . WMS : b = this . createLayerWMS ( a . url , a . name , a . format , a . tiled , a . username , a . password ) ; break ; case netgis . LayerTypes . WMST : b = this . createLayerWMST ( a . url ,
a . name , a . format , a . tiled , a . username , a . password ) ; break ; case netgis . LayerTypes . GEOJSON : ( b = a . data ) && netgis . util . isString ( b ) && ( b = JSON . parse ( b ) ) ; b = this . createLayerGeoJSON ( b ? b : a . url ) ; break ; case netgis . LayerTypes . WFS : b = this . createLayerWFS ( a . url , a . name , this . view . getProjection ( ) . getCode ( ) , a . format , a . username , a . password ) ; break ; case netgis . LayerTypes . VTILES : b = this . createLayerVectorTiles ( a . url , a . extent , a . min _zoom , a . max _zoom ) ; break ; case netgis . LayerTypes . GML : b = this . createLayerGML ( a . data ) ; break ; case netgis . LayerTypes . GEOPACKAGE : b =
this . createLayerGeoPackage ( a . data ) ; break ; case netgis . LayerTypes . SPATIALITE : b = this . createLayerSpatialite ( a . data ) ; break ; case netgis . LayerTypes . SHAPEFILE : b = this . createLayerShapefile ( a . data ) ; break ; case netgis . LayerTypes . WKT : b = this . createLayerWKT ( a . data ) ; break ; default : console . error ( "unknown layer type" , a . type ) } return b } ;
netgis . Map . prototype . removeLayer = function ( a ) { var b = this . layers [ a ] ; b instanceof ol . layer . Vector && this . removeSnapLayer ( b ) ; for ( var c = 0 ; c < this . config . layers . length ; c ++ ) if ( this . config . layers [ c ] . id === a ) { this . config . layers [ c ] . type === netgis . LayerTypes . WMST && netgis . util . invoke ( this . container , netgis . Events . TIMESLIDER _HIDE , null ) ; break } this . map . removeLayer ( b ) ; delete this . layers [ a ] } ; netgis . Map . prototype . setLayerOrder = function ( a , b ) { this . layers [ a ] . setZIndex ( b ) } ;
netgis . Map . prototype . createStyle = function ( a ) { var b = a . radius ? a . radius : 3 , c = a . width ? a . width : 1 , d = a . fill ? a . fill : "gray" , e = a . stroke ? a . stroke : "black" ; return function ( a ) { return new ol . style . Style ( { image : new ol . style . Circle ( { radius : b - c , fill : new ol . style . Fill ( { color : d } ) } ) , fill : new ol . style . Fill ( { color : d } ) , stroke : new ol . style . Stroke ( { color : e , width : c } ) } ) } } ;
netgis . Map . prototype . styleMeasure = function ( a ) { var b = a . getGeometry ( ) , c = this . config . measure , d = new ol . style . Style ( { fill : new ol . style . Fill ( { color : c . area _fill } ) , stroke : new ol . style . Stroke ( { color : c . line _color , width : c . line _width , lineDash : c . line _dash } ) } ) ; b instanceof ol . geom . Polygon ? ( b = b . getArea ( ) , d . setText ( new ol . style . Text ( { text : [ netgis . util . formatArea ( b , ! 0 ) , "4mm sans-serif" ] , font : "Arial" , fill : new ol . style . Fill ( { color : c . text _color } ) , backgroundFill : new ol . style . Fill ( { color : c . text _back } ) , padding : [ 2 , 4 , 2 , 4 ] ,
overflow : ! 0 } ) ) ) : b instanceof ol . geom . LineString && ( this . mode === netgis . Modes . MEASURE _LINE || this . mode === netgis . Modes . VIEW ) && ( b = b . getLength ( ) , d . setText ( new ol . style . Text ( { text : [ netgis . util . formatDistance ( b ) , "4mm sans-serif" ] , font : "Arial" , fill : new ol . style . Fill ( { color : c . text _color } ) , backgroundFill : new ol . style . Fill ( { color : c . text _back } ) , padding : [ 2 , 4 , 2 , 4 ] , overflow : ! 0 } ) ) ) ; return c . point _radius && 0 < c . point _radius ? ( b = this . getGeometryPoints ( a ) , a = new ol . style . Style ( { image : new ol . style . Circle ( { radius : 1.25 * c . point _radius ,
fill : new ol . style . Fill ( { color : c . point _stroke } ) } ) , geometry : b } ) , c = new ol . style . Style ( { image : new ol . style . Circle ( { radius : c . point _radius , fill : new ol . style . Fill ( { color : c . point _fill } ) } ) , geometry : b } ) , [ d , a , c ] ) : d } ;
netgis . Map . prototype . styleEdit = function ( a ) { var b = this . config . styles . draw , c = this . config . styles . select , d = a . getGeometry ( ) , e = this . hoverFeature === a ; - 1 < this . selectedFeatures . indexOf ( a ) && ( e = ! 0 ) ; var f = e ? c . fill : b . fill ; a = e ? c . stroke : b . stroke ; c = new ol . style . Style ( { image : new ol . style . Circle ( { radius : e ? c . radius : b . radius , fill : new ol . style . Fill ( { color : a } ) } ) , fill : new ol . style . Fill ( { color : f } ) , stroke : new ol . style . Stroke ( { color : a , width : b . width } ) } ) ; e && c . setZIndex ( 1 ) ; if ( d instanceof ol . geom . Polygon || d instanceof ol . geom . MultiPolygon ) { e =
d . getArea ( ) ; if ( ! e || 0 >= e ) return c ; ! 0 === b . viewport _labels && ( b = this . view . calculateExtent ( this . map . getSize ( ) ) , f = ol . geom . Polygon . fromExtent ( b ) , b = new jsts . io . OL3Parser , d = b . read ( d ) , f = b . read ( f ) , d = d . intersection ( f ) , d = b . write ( d ) , c . setGeometry ( d ) ) ; c . setText ( new ol . style . Text ( { text : [ netgis . util . formatArea ( e , ! 0 ) , "4mm sans-serif" ] , font : "Arial" , fill : new ol . style . Fill ( { color : a } ) , backgroundFill : new ol . style . Fill ( { color : "rgba( 255, 255, 255, 0.5 )" } ) , padding : [ 2 , 4 , 2 , 4 ] } ) ) } return c } ;
netgis . Map . prototype . styleNonEdit = function ( a ) { var b = this . config . styles . non _edit , c = this . config . styles . select , d = a . getGeometry ( ) , e = this . hoverFeature === a ; - 1 < this . selectedFeatures . indexOf ( a ) && ( e = ! 0 ) ; var f = e ? c . fill : b . fill ; a = e ? c . stroke : b . stroke ; c = new ol . style . Style ( { image : new ol . style . Circle ( { radius : e ? c . radius : b . radius , fill : new ol . style . Fill ( { color : a } ) } ) , fill : new ol . style . Fill ( { color : f } ) , stroke : new ol . style . Stroke ( { color : a , width : b . width } ) } ) ; e && c . setZIndex ( 1 ) ; if ( d instanceof ol . geom . Polygon ) { e = d . getArea ( ) ;
if ( ! e || 0 >= e ) return c ; ! 0 === b . viewport _labels && ( b = this . map . getView ( ) . calculateExtent ( this . map . getSize ( ) ) , f = ol . geom . Polygon . fromExtent ( b ) , b = new jsts . io . OL3Parser , d = b . read ( d ) , f = b . read ( f ) , d = d . intersection ( f ) , d = b . write ( d ) , c . setGeometry ( d ) ) ; c . setText ( new ol . style . Text ( { text : [ netgis . util . formatArea ( e , ! 0 ) , "4mm sans-serif" ] , font : "Arial" , fill : new ol . style . Fill ( { color : a } ) , backgroundFill : new ol . style . Fill ( { color : "rgba( 255, 255, 255, 0.5 )" } ) , padding : [ 2 , 4 , 2 , 4 ] } ) ) } return c } ;
netgis . Map . prototype . styleSketch = function ( a ) { var b = this . config . styles [ this . drawError ? "error" : "sketch" ] , c = a . getGeometry ( ) , d = new ol . style . Style ( { image : new ol . style . Circle ( { radius : b . radius , fill : new ol . style . Fill ( { color : b . fill } ) } ) , fill : new ol . style . Fill ( { color : b . fill } ) , stroke : new ol . style . Stroke ( { color : b . stroke , width : b . width } ) } ) ; c instanceof ol . geom . Polygon && ( c = c . getArea ( ) , d . setText ( new ol . style . Text ( { text : [ netgis . util . formatArea ( c , ! 0 ) , "4mm sans-serif" ] , font : "Arial" , fill : new ol . style . Fill ( { color : b . stroke } ) ,
backgroundFill : new ol . style . Fill ( { color : "rgba( 255, 255, 255, 0.5 )" } ) , padding : [ 2 , 4 , 2 , 4 ] } ) ) ) ; a = new ol . style . Style ( { image : new ol . style . Circle ( { radius : b . radius , fill : new ol . style . Fill ( { color : b . stroke } ) } ) , geometry : this . getGeometryPoints ( a ) } ) ; return [ d , a ] } ;
netgis . Map . prototype . styleModify = function ( a ) { var b = this . config . styles . modify , c = new ol . style . Style ( { image : new ol . style . Circle ( { radius : b . radius , fill : new ol . style . Fill ( { color : b . stroke } ) } ) , fill : new ol . style . Fill ( { color : b . fill } ) , stroke : new ol . style . Stroke ( { color : b . stroke , width : b . width } ) } ) , d = new ol . style . Style ( { image : new ol . style . Circle ( { radius : b . radius , fill : new ol . style . Fill ( { color : b . stroke } ) } ) , geometry : this . getGeometryPoints ( a ) } ) ; a = a . getGeometry ( ) ; a instanceof ol . geom . Polygon && ( a = a . getArea ( ) , c . setText ( new ol . style . Text ( { text : [ netgis . util . formatArea ( a ,
! 0 ) , "4mm sans-serif" ] , font : "Arial" , fill : new ol . style . Fill ( { color : b . stroke } ) , backgroundFill : new ol . style . Fill ( { color : "rgba( 255, 255, 255, 0.5 )" } ) , padding : [ 2 , 4 , 2 , 4 ] } ) ) ) ; return [ c , d ] } ; netgis . Map . prototype . styleHover = function ( a ) { a = this . config . styles . select ; return new ol . style . Style ( { image : new ol . style . Circle ( { radius : a . radius , fill : new ol . style . Fill ( { color : a . stroke } ) } ) , fill : new ol . style . Fill ( { color : a . fill } ) , stroke : new ol . style . Stroke ( { color : a . stroke , width : a . width } ) , zIndex : 1 } ) } ;
netgis . Map . prototype . getGeometryPoints = function ( a ) { var b = a . getGeometry ( ) ; if ( b instanceof ol . geom . LineString ) return new ol . geom . MultiPoint ( b . getCoordinates ( ) ) ; if ( b instanceof ol . geom . Polygon ) { a = [ ] ; b = b . getCoordinates ( ) ; for ( var c = 0 ; c < b . length ; c ++ ) for ( var d = b [ c ] , e = 0 ; e < d . length ; e ++ ) a . push ( d [ e ] ) ; return new ol . geom . MultiPoint ( a ) } if ( b instanceof ol . geom . MultiPolygon ) { a = [ ] ; for ( var f = b . getPolygons ( ) , g = 0 ; g < f . length ; g ++ ) for ( b = f [ g ] . getCoordinates ( ) , c = 0 ; c < b . length ; c ++ ) for ( d = b [ c ] , e = 0 ; e < d . length ; e ++ ) a . push ( d [ e ] ) ;
return new ol . geom . MultiPoint ( a ) } if ( b instanceof ol . geom . MultiLineString ) { a = [ ] ; f = b . getPolygons ( ) ; for ( g = 0 ; g < f . length ; g ++ ) for ( b = f [ g ] . getCoordinates ( ) , c = 0 ; c < b . length ; c ++ ) for ( d = b [ c ] , e = 0 ; e < d . length ; e ++ ) a . push ( d [ e ] ) ; return new ol . geom . MultiPoint ( a ) } return b } ; netgis . Map . prototype . redrawVectorLayers = function ( ) { this . map . getLayers ( ) . forEach ( function ( a , b , c ) { ( a instanceof ol . layer . Vector || a instanceof ol . layer . VectorTile ) && a . setStyle ( a . getStyle ( ) ) } ) } ;
netgis . Map . prototype . setSnapping = function ( a ) { var b = this . config . tools . snapping ; a ? ( this . snap = new ol . interaction . Snap ( { features : this . snapFeatures , pixelTolerance : b . tolerance ? b . tolerance : 10 } ) , this . map . addInteraction ( this . snap ) , this . snapFeatures . changed ( ) ) : this . snap && ( this . map . removeInteraction ( this . snap ) , this . snap = null ) ; this . drawSnapOn = a } ; netgis . Map . prototype . setDrawTrace = function ( a ) { } ; netgis . Map . prototype . addSnapLayer = function ( a ) { a = a . getSource ( ) . getFeatures ( ) ; for ( var b = 0 ; b < a . length ; b ++ ) this . snapFeatures . push ( a [ b ] ) } ;
netgis . Map . prototype . removeSnapLayer = function ( a ) { a = a . getSource ( ) . getFeatures ( ) ; for ( var b = 0 ; b < a . length ; b ++ ) this . snapFeatures . remove ( a [ b ] ) } ; netgis . Map . prototype . setDrawBuffer = function ( a , b , c ) { if ( a ) { var d = this . createBufferFeature ( new ol . geom . Point ( this . view . getCenter ( ) ) , b , c ) ; this . previewLayer . getSource ( ) . addFeature ( d ) ; this . drawBufferRadius = b ; this . drawBufferSegments = c } else this . previewLayer . getSource ( ) . clear ( ) ; this . drawBufferOn = a } ;
netgis . Map . prototype . createLayerTMS = function ( a , b , c , d ) { if ( b && c && d ) { b = [ ] ; d = "map" === d ? this . config . map . scales : d ; c = "map" === c ? this . config . map . extent : c ; for ( var e = 0 ; e < d . length ; e ++ ) b . unshift ( this . getResolutionFromScale ( d [ e ] ) ) ; c = new ol . source . TileImage ( { crossOrigin : null , projection : this . view . getProjection ( ) , tileGrid : new ol . tilegrid . TileGrid ( { extent : c , origin : [ c [ 0 ] , c [ 1 ] ] , resolutions : b } ) , tileUrlFunction : function ( b ) { if ( null !== b ) { var c = a ; c = netgis . util . replace ( c , "{z}" , b [ 0 ] ) ; c = netgis . util . replace ( c , "{x}" , b [ 1 ] ) ; c = netgis . util . replace ( c ,
"{y}" , b [ 2 ] ) ; return c = netgis . util . replace ( c , "{-y}" , - b [ 2 ] - 1 ) } } } ) ; c = new ol . layer . Tile ( { source : c } ) } else c = new ol . layer . Tile ( { source : new ol . source . XYZ ( { url : a , crossOrigin : "anonymous" } ) } ) ; return c } ;
netgis . Map . prototype . createLayerWMS = function ( a , b , c , d , e , f ) { a = { url : a , params : { LAYERS : b , FORMAT : c ? c : "image/png" , TRANSPARENT : "true" , VERSION : "1.1.1" } , hidpi : ! 1 } ; e && f && ( a . imageLoadFunction = function ( a , b ) { var c = new XMLHttpRequest ; c . open ( "GET" , b ) ; c . setRequestHeader ( "Authorization" , "Basic " + window . btoa ( e + ":" + f ) ) ; c . onload = function ( ) { a . getImage ( ) . src = b } ; c . send ( ) } ) ; d ? ( d = new ol . source . TileWMS ( a ) , d = new ol . layer . Tile ( { source : d } ) ) : ( d = new ol . source . ImageWMS ( a ) , d = new ol . layer . Image ( { source : d } ) ) ; return d } ;
netgis . Map . prototype . createLayerWMST = function ( a , b , c , d , e , f ) { a = { url : a , params : { LAYERS : b , FORMAT : c ? c : "image/png" , TRANSPARENT : "true" , VERSION : "1.1.1" } , hidpi : ! 1 } ; e && f && ( a . imageLoadFunction = function ( a , b ) { var c = new XMLHttpRequest ; c . open ( "GET" , b ) ; c . setRequestHeader ( "Authorization" , "Basic " + window . btoa ( e + ":" + f ) ) ; c . onload = function ( ) { a . getImage ( ) . src = b } ; c . send ( ) } ) ; d ? ( d = new ol . source . TileWMS ( a ) , d = new ol . layer . Tile ( { source : d } ) ) : ( d = new ol . source . ImageWMS ( a ) , d = new ol . layer . Image ( { source : d } ) ) ; return d } ;
netgis . Map . prototype . createLayerWMTS = function ( a ) { for ( var b = [ ] , c = this . client . config . map . scales , d = this . client . config . map . extent , e = 0 ; e < c . length ; e ++ ) b . unshift ( this . getResolutionFromScale ( c [ e ] ) ) ; b = new ol . source . TileImage ( { crossOrigin : null , projection : this . view . getProjection ( ) , tileGrid : new ol . tilegrid . TileGrid ( { extent : d , origin : [ d [ 0 ] , d [ 1 ] ] , resolutions : b } ) , tileUrlFunction : function ( b ) { if ( null !== b ) { var c = a ; c = netgis . util . replace ( c , "{z}" , b [ 0 ] ) ; c = netgis . util . replace ( c , "{x}" , b [ 1 ] ) ; c = netgis . util . replace ( c , "{y}" ,
b [ 2 ] ) ; return c = netgis . util . replace ( c , "{-y}" , - b [ 2 ] ) } } } ) ; return new ol . layer . Tile ( { source : b } ) } ;
netgis . Map . prototype . createLayerWMTS _01 = function ( a , b ) { for ( var c = this . view . getProjection ( ) . getExtent ( ) , d = ol . extent . getWidth ( c ) / 256 , e = Array ( 14 ) , f = Array ( 14 ) , g = 0 ; 14 > g ; ++ g ) e [ g ] = d / Math . pow ( 2 , g ) , f [ g ] = g ; source = new ol . source . WMTS ( { url : a , params : { LAYER : b , FORMAT : "image/png" , TRANSPARENT : "true" , VERSION : "1.1.1" } , layer : b , format : "image/jpeg" , matrixSet : "UTM32" , tileGrid : new ol . tilegrid . WMTS ( { origin : ol . extent . getTopLeft ( c ) , resolutions : e , matrixIds : f } ) } ) } ;
netgis . Map . prototype . createLayerGeoJSON = function ( a ) { if ( netgis . util . isObject ( a ) ) { var b = new ol . format . GeoJSON , c = b . readProjection ( a ) ; a = b . readFeatures ( a , { featureProjection : this . view . getProjection ( ) } ) ; c = c . getCode ( ) ; switch ( c ) { case "EPSG:3857" : case "EPSG:4326" : case this . view . getProjection ( ) . getCode ( ) : break ; default : console . warn ( "unsupported import projection '" + c + "'" ) } var d = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : a } ) } ) ; return d } if ( netgis . util . isString ( a ) ) { d = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) } ) ;
var e = this ; netgis . util . request ( a , function ( a ) { a = JSON . parse ( a ) ; a = e . createLayerGeoJSON ( a ) ; d . getSource ( ) . addFeatures ( a . getSource ( ) . getFeatures ( ) ) } ) ; return d } } ;
netgis . Map . prototype . createLayerGML = function ( a ) { console . warn ( "GML support is experimental!" ) ; var b = [ ] ; a = ( new DOMParser ) . parseFromString ( a , "text/xml" ) . getElementsByTagName ( "gml:featureMember" ) ; for ( var c = 0 ; c < a . length ; c ++ ) { for ( var d = { } , e = a [ c ] . children [ 0 ] , f = 0 ; f < e . attributes . length ; f ++ ) { var g = e . attributes [ f ] ; d [ g . nodeName ] = g . nodeValue } for ( f = 0 ; f < e . children . length ; f ++ ) if ( g = e . children [ f ] , "ogr:geometryProperty" !== g . nodeName ) { var h = g . nodeName . split ( ":" ) ; d [ h [ h . length - 1 ] ] = g . innerHTML } e = e . getElementsByTagName ( "ogr:geometryProperty" ) [ 0 ] . children [ 0 ] ;
( f = e . getAttribute ( "srsName" ) ) && "EPSG:4326" !== f && f !== this . projection && console . warn ( "unsupported import projection:" , f ) ; switch ( e . nodeName ) { case "gml:Polygon" : d . geometry = this . gmlParsePolygon ( e , f ) ; break ; case "gml:MultiPolygon" : d . geometry = this . gmlParseMultiPolygon ( e , f ) } d = new ol . Feature ( d ) ; b . push ( d ) } return new ol . layer . Vector ( { source : new ol . source . Vector ( { features : b } ) } ) } ;
netgis . Map . prototype . gmlParsePolygon = function ( a , b ) { var c = [ ] ; a = a . getElementsByTagName ( "gml:LinearRing" ) ; for ( var d = 0 ; d < a . length ; d ++ ) { var e = a [ d ] . getElementsByTagName ( "gml:coordinates" ) [ 0 ] . innerHTML ; c . push ( this . gmlParseCoordinates ( e , b ) ) } return new ol . geom . Polygon ( c ) } ; netgis . Map . prototype . gmlParseMultiPolygon = function ( a , b ) { var c = [ ] ; a = a . getElementsByTagName ( "gml:polygonMember" ) ; for ( var d = 0 ; d < a . length ; d ++ ) { var e = a [ d ] . getElementsByTagName ( "gml:Polygon" ) [ 0 ] ; c . push ( this . gmlParsePolygon ( e , b ) ) } return new ol . geom . MultiPolygon ( c ) } ;
netgis . Map . prototype . gmlParseCoordinates = function ( a , b ) { a = a . split ( " " ) ; for ( var c = 0 ; c < a . length ; c ++ ) { a [ c ] = a [ c ] . split ( "," ) ; for ( var d = 0 ; d < a [ c ] . length ; d ++ ) a [ c ] [ d ] = Number . parseFloat ( a [ c ] [ d ] ) ; b && ( a [ c ] = ol . proj . transform ( a [ c ] , b , this . view . getProjection ( ) ) ) } return a } ;
netgis . Map . prototype . createLayerGeoPackage = function ( a ) { var b = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) } ) , c = this ; a = new Uint8Array ( a ) ; window . GeoPackage . setSqljsWasmLocateFile ( function ( a ) { return c . config [ "import" ] . geopackage _lib + a } ) ; window . GeoPackage . GeoPackageAPI . open ( a ) . then ( function ( a ) { for ( var d = [ ] , f = new ol . format . GeoJSON , g = a . getFeatureTables ( ) , h = 0 ; h < g . length ; h ++ ) for ( var k = a . queryForGeoJSONFeaturesInTable ( g [ h ] ) , l = 0 ; l < k . length ; l ++ ) { var m = f . readGeometry ( k [ l ] . geometry , { featureProjection : c . view . getProjection ( ) } ) ;
m = new ol . Feature ( { geometry : m } ) ; d . push ( m ) } b . getSource ( ) . addFeatures ( d ) } ) ; return b } ;
netgis . Map . prototype . createLayerSpatialite = function ( a ) { var b = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) } ) , c = this ; window . initSqlJs ( ) . then ( function ( d ) { var e = [ ] , f = new Uint8Array ( a ) ; d = new d . Database ( f ) ; var g = d . exec ( "SELECT name FROM sqlite_schema WHERE type = 'table' \n\t\t\t\t\tAND name NOT LIKE 'sqlite_%' \n\t\t\t\t\tAND name NOT LIKE 'sql_%' \n\t\t\t\t\tAND name NOT LIKE 'idx_%' \n\t\t\t\t\tAND name NOT LIKE 'spatial_ref_sys%' \n\t\t\t\t\tAND name NOT LIKE 'spatialite_%' \n\t\t\t\t\tAND name NOT LIKE 'geometry_columns%' \n\t\t\t\t\tAND name NOT LIKE 'views_%' \n\t\t\t\t\tAND name NOT LIKE 'virts_%' \n\t\t\t\t\tAND name NOT LIKE 'SpatialIndex' \n\t\t\t\t\tAND name NOT LIKE 'KNN%' \n\t\t\t\t\tAND name NOT LIKE 'ElementaryGeometries' \n\t\t\t\t;" ) ; f =
g [ 0 ] . values ; for ( var h = 0 ; h < f . length ; h ++ ) { g = d . exec ( "SELECT * FROM " + f [ h ] [ 0 ] ) ; var k = g [ 0 ] ; g = null ; for ( var l = 0 ; l < k . columns . length ; l ++ ) { if ( "geometry" === k . columns [ l ] . toLowerCase ( ) ) { g = l ; break } if ( "geom" === k . columns [ l ] . toLowerCase ( ) ) { g = l ; break } } if ( null !== g ) for ( k = k . values , l = 0 ; l < k . length ; l ++ ) { var m = k [ l ] [ g ] , n = new Uint8Array ( m . length - 43 - 1 + 5 ) ; n [ 0 ] = m [ 1 ] ; n [ 1 ] = m [ 39 ] ; n [ 2 ] = m [ 40 ] ; n [ 3 ] = m [ 41 ] ; n [ 4 ] = m [ 42 ] ; for ( var q = m . length - 43 - 1 , p = 0 ; p < q ; p ++ ) n [ 5 + p ] = m [ 43 + p ] ; m = ( new ol . format . WKB ) . readGeometry ( n , { featureProjection : c . view . getProjection ( ) } ) ;
e . push ( new ol . Feature ( { geometry : m } ) ) } } b . getSource ( ) . addFeatures ( e ) } ) ; return b } ; netgis . Map . prototype . createLayerShapefile = function ( a ) { var b = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) } ) , c = this ; shp ( a ) . then ( function ( a ) { var d = new ol . format . GeoJSON ; d . readProjection ( a ) ; a = d . readFeatures ( a , { featureProjection : c . view . getProjection ( ) } ) ; b . getSource ( ) . addFeatures ( a ) } ) ; return b } ;
netgis . Map . prototype . createLayerWKT = function ( a ) { for ( var b = new ol . format . WKT , c = [ ] , d = 0 ; d < a . length ; d ++ ) { var e = a [ d ] , f = b . readGeometry ( e . geometry ) , g = e . properties ; g . geometry = f ; g . wkt = e . geometry ; f = new ol . Feature ( g ) ; f . setId ( e . id ) ; c . push ( f ) } return new ol . layer . Vector ( { source : new ol . source . Vector ( { features : c } ) } ) } ;
netgis . Map . prototype . createLayerWFS = function ( a , b , c , d , e , f ) { "?" !== a [ a . length - 1 ] && ( a += "?" ) ; a += "service=WFS&version=1.1.0&request=GetFeature" ; c || ( c = this . view . getProjection ( ) . getCode ( ) ) ; d = d ? netgis . util . replace ( d , " " , "+" ) : "application/json" ; var g = new ol . source . Vector ( { format : new ol . format . GeoJSON , strategy : ol . loadingstrategy . bbox , loader : function ( h , k , n , q , p ) { h = a + "&typename=" + b + "&srsname=" + c + "&bbox=" + h . join ( "," ) + "," + c + "&outputFormat=" + d ; var l = new XMLHttpRequest ; l . open ( "GET" , h ) ; e && f && l . setRequestHeader ( "Authorization" ,
"Basic " + window . btoa ( e + ":" + f ) ) ; l . onerror = function ( ) { console . error ( "WFS request error" ) ; p ( ) } ; l . onload = function ( ) { if ( 200 === l . status ) { g . clear ( ) ; var a = g . getFormat ( ) . readFeatures ( l . responseText ) ; g . addFeatures ( a ) ; q ( a ) } else console . error ( "WFS request status" , l . status ) , p ( ) } ; l . send ( ) } } ) , h = new ol . layer . Vector ( { source : g } ) , k = this ; g . on ( "featuresloadstart" , function ( a ) { k . removeSnapLayer ( h ) } ) ; g . on ( "featuresloadend" , function ( a ) { window . setTimeout ( function ( ) { k . addSnapLayer ( h ) } , 10 ) } ) ; return h } ;
netgis . Map . prototype . createLayerVectorTiles = function ( a , b , c , d ) { return new ol . layer . VectorTile ( { extent : b , source : new ol . source . VectorTile ( { format : new ol . format . MVT , overlaps : ! 0 , url : a , minZoom : c , maxZoom : d } ) } ) } ; netgis . Map . prototype . createBufferFeature = function ( a , b , c ) { a = this . createBufferGeometry ( a , b , c ) ; return new ol . Feature ( { geometry : a } ) } ;
netgis . Map . prototype . createBufferGeometry = function ( a , b , c ) { var d = new jsts . io . OL3Parser ; a = d . read ( a ) . buffer ( b , c ) ; if ( this . boundsLayer ) for ( b = this . boundsLayer . getSource ( ) . getFeatures ( ) , c = 0 ; c < b . length ; c ++ ) { var e = d . read ( b [ c ] . getGeometry ( ) ) ; a . intersects ( e ) && ( a = a . intersection ( e ) ) } return d . write ( a ) } ;
netgis . Map . prototype . splitMultiPolygons = function ( a ) { a = a . getSource ( ) ; for ( var b = a . getFeatures ( ) , c = [ ] , d = [ ] , e = 0 ; e < b . length ; e ++ ) { var f = b [ e ] , g = f . getGeometry ( ) ; if ( g instanceof ol . geom . MultiPolygon ) { g = g . getPolygons ( ) ; for ( var h = 0 ; h < g . length ; h ++ ) { var k = new ol . Feature ( { geometry : g [ h ] } ) ; d . push ( k ) } c . push ( f ) } } for ( e = 0 ; e < c . length ; e ++ ) a . removeFeature ( c [ e ] ) ; a . addFeatures ( d ) } ;
netgis . Map . prototype . clearSketchFeatures = function ( ) { for ( var a = this . editLayer . getSource ( ) , b = 0 ; b < this . sketchFeatures . length ; b ++ ) a . removeFeature ( this . sketchFeatures [ b ] ) ; this . sketchFeatures = [ ] } ;
netgis . Map . prototype . updateDrawBufferPreview = function ( ) { if ( ! 1 !== this . config . tools . editable ) { var a = this . interactions [ this . mode ] [ 0 ] . getOverlay ( ) . getSource ( ) . getFeatures ( ) ; if ( ! ( 1 > a . length ) ) { var b = this . previewLayer . getSource ( ) . getFeatures ( ) [ 0 ] ; b && ( a = a [ 0 ] . getGeometry ( ) , a = this . createBufferGeometry ( a , this . drawBufferRadius , this . drawBufferSegments ) , b . setGeometry ( a ) ) } } } ;
netgis . Map . prototype . isPointInsideLayer = function ( a , b ) { a = a . getSource ( ) . getFeatures ( ) ; for ( var c = 0 ; c < a . length ; c ++ ) if ( a [ c ] . getGeometry ( ) . intersectsCoordinate ( b ) ) return ! 0 ; return ! 1 } ;
netgis . Map . prototype . isGeomInsideLayer = function ( a , b ) { var c = b . getCoordinates ( ) ; if ( b instanceof ol . geom . LineString ) { if ( 2 > c . length ) return ! 0 } else if ( b instanceof ol . geom . Polygon && ( c = c [ 0 ] , 4 > c . length || 0 >= b . getArea ( ) ) ) return ! 0 ; c = new jsts . io . OL3Parser ; b = c . read ( b ) ; a = a . getSource ( ) . getFeatures ( ) ; for ( var d = 0 ; d < a . length ; d ++ ) { var e = a [ d ] . getGeometry ( ) ; if ( c . read ( e ) . contains ( b ) ) return ! 0 } return ! 1 } ; netgis . Map . prototype . getScaleFromResolution = function ( a ) { return Math . round ( 2834.6472 * a ) } ;
netgis . Map . prototype . getResolutionFromScale = function ( a ) { var b = 39.3701 * ol . proj . Units . METERS _PER _UNIT [ this . view . getProjection ( ) . getUnits ( ) ] ; return 1 / ( this . normalizeScale ( a ) * b * 72 ) } ; netgis . Map . prototype . normalizeScale = function ( a ) { return 1 < a ? 1 / a : a } ;
netgis . Map . prototype . updateEditOutput = function ( ) { var a = this . editLayer . getSource ( ) . getFeatures ( ) , b = this . view . getProjection ( ) . getCode ( ) , c = ( new ol . format . GeoJSON ) . writeFeaturesObject ( a , { dataProjection : b , featureProjection : b } ) ; c . crs = { type : "name" , properties : { name : "urn:ogc:def:crs:" + b . replace ( ":" , "::" ) } } ; for ( var d = b = 0 ; d < a . length ; d ++ ) { var e = a [ d ] . getGeometry ( ) ; e instanceof ol . geom . Polygon && ( b += e . getArea ( ) ) } c . area = b ; netgis . util . invoke ( this . container , netgis . Events . MAP _EDIT _LAYER _CHANGE , { geojson : c } ) } ;
netgis . Map . prototype . updateSnapFeatures = function ( ) { this . snapFeatures . clear ( ) ; var a = this ; this . map . getLayers ( ) . forEach ( function ( b , c , d ) { c = b . get ( "id" ) ; c !== netgis . Client . Layers . PARCEL _DISTRICTS && c !== netgis . Client . Layers . PARCEL _FIELDS && c !== netgis . Client . Layers . PARCEL _FEATURES && b instanceof ol . layer . Vector && a . addSnapLayer ( b ) } ) } ; netgis . Map . prototype . zoom = function ( a ) { this . view . animate ( { zoom : this . view . getZoom ( ) + a , duration : 200 } ) } ;
netgis . Map . prototype . zoomLevel = function ( a ) { this . view . animate ( { zoom : a , center : this . view . getCenter ( ) , duration : 300 } ) } ; netgis . Map . prototype . zoomLonLat = function ( a , b , c ) { this . view . animate ( { zoom : c , center : ol . proj . fromLonLat ( [ a , b ] , this . view . getProjection ( ) ) , duration : 500 } ) } ; netgis . Map . prototype . zoomExtentLonLat = function ( a , b , c , d ) { a = ol . proj . fromLonLat ( [ a , b ] , this . view . getProjection ( ) ) ; c = ol . proj . fromLonLat ( [ c , d ] , this . view . getProjection ( ) ) ; this . view . fit ( [ a [ 0 ] , a [ 1 ] , c [ 0 ] , c [ 1 ] ] ) } ;
netgis . Map . prototype . zoomExtent = function ( a , b , c , d ) { this . view . fit ( [ a , b , c , d ] ) } ; netgis . Map . prototype . zoomBBox = function ( a , b ) { this . view . fit ( a , { duration : b } ) } ; netgis . Map . prototype . zoomScale = function ( a ) { this . view . setResolution ( this . getResolutionFromScale ( a ) ) } ; netgis . Map . prototype . zoomFeature = function ( a , b ) { a = this . layers [ a ] . getSource ( ) . getFeatureById ( b ) ; this . view . fit ( a . getGeometry ( ) . getExtent ( ) , { duration : 500 } ) } ;
netgis . Map . prototype . addViewHistory = function ( a , b ) { if ( 0 < this . viewHistory . length ) { var c = this . viewHistory [ this . viewHistory . length - 1 ] , d = ! 0 ; 10 < Math . abs ( a [ 0 ] - c . center [ 0 ] ) && ( d = ! 1 ) ; 10 < Math . abs ( a [ 1 ] - c . center [ 1 ] ) && ( d = ! 1 ) ; . 1 < Math . abs ( b - c . zoom ) && ( d = ! 1 ) ; if ( ! 0 === d ) return } this . viewHistory . push ( { center : a , zoom : b } ) ; this . viewHistory . length > this . viewHistoryMax && this . viewHistory . shift ( ) ; this . viewIndex = this . viewHistory . length - 1 } ;
netgis . Map . prototype . gotoViewHistory = function ( a ) { if ( ! ( 1 > this . viewHistory . length ) ) { var b = this . viewHistory . length - 1 ; 0 > a && ( a = b ) ; a > b && ( a = 0 ) ; a !== this . viewIndex && ( b = this . viewHistory [ a ] , this . viewIndex = a , this . viewFromHistory = ! 0 , this . view . setCenter ( b . center ) , this . view . setZoom ( b . zoom ) ) } } ; netgis . Map . prototype . setPadding = function ( a , b , c , d ) { this . view . padding = [ a + 40 , b + 40 , c + 40 , d + 40 ] } ;
netgis . Map . prototype . exportImage = function ( a , b , c , d , e ) { var f = this , g = this . container , h = this . map , k = this . config [ "export" ] , l = new Image ; l . onload = function ( ) { var m = document . createElement ( "div" ) ; m . style . position = "fixed" ; m . style . top = "0px" ; m . style . left = "0px" ; m . style . width = b + "px" ; m . style . height = c + "px" ; m . style . background = "white" ; m . style . zIndex = - 1 ; m . style . opacity = 0 ; m . style . pointerEvents = "none" ; g . appendChild ( m ) ; h . setTarget ( m ) ; h . once ( "rendercomplete" , function ( ) { var n = document . createElement ( "canvas" ) ; n . width = b ; n . height =
c ; var q = n . getContext ( "2d" ) ; q . webkitImageSmoothingEnabled = ! 1 ; q . mozImageSmoothingEnabled = ! 1 ; q . imageSmoothingEnabled = ! 1 ; Array . prototype . forEach . call ( document . querySelectorAll ( ".ol-layer canvas" ) , function ( a ) { if ( 0 < a . width ) { var b = a . parentNode . style . opacity ; q . globalAlpha = "" === b ? 1 : Number ( b ) ; b = a . style . transform . match ( /^matrix\(([^\(]*)\)$/ ) [ 1 ] . split ( "," ) . map ( Number ) ; CanvasRenderingContext2D . prototype . setTransform . apply ( q , b ) ; q . drawImage ( a , 0 , 0 ) } } ) ; q . drawImage ( l , 0 , 0 ) ; q . fillStyle = "#fff" ; q . fillRect ( 0 , n . height -
30 , 140 , 30 ) ; q . fillStyle = "#000" ; q . font = "4mm sans-serif" ; q . fillText ( netgis . util . getTimeStamp ( ) , 10 , n . height - 10 ) ; var p = document . createElement ( "a" ) ; switch ( a ) { case "pdf" : e = e ? e : 0 ; var r = 297 - e - e , v = 210 - e - e , t = n . width / n . height ; if ( ! d ) { var w = r ; r = v ; v = w } if ( n . height > n . width ) { var u = v ; w = u * t ; w > r && ( w = r , u = w / t ) } else w = r , u = w / t , u > v && ( u = v , w = u * t ) ; t = new jsPDF ( d ? "l" : "p" ) ; var x = e ; x += ( r - w ) / 2 ; r = e ; r += ( v - u ) / 2 ; t . addImage ( n . toDataURL ( "image/png,1.0" , 1 ) , "PNG" , x , r , w , u ) ; t . setFillColor ( 255 , 255 , 255 ) ; t . rect ( x , r + u - 11 , 80 , 11 , "F" ) ; t . setFontSize ( 8 ) ;
t . text ( "Datum: " + netgis . util . getTimeStamp ( ) , x + 2 , r + u - 2 - 4 ) ; t . text ( "Quelle: " + window . location . href , x + 2 , r + u - 2 ) ; n = t . output ( "bloburl" , { filename : k . default _filename + ".pdf" } ) ; window . open ( n , "_blank" ) ; break ; case "jpeg" : window . navigator . msSaveBlob ? window . navigator . msSaveBlob ( n . msToBlob ( ) , k . default _filename + ".jpg" ) : ( p . setAttribute ( "download" , k . default _filename + ".jpg" ) , p . setAttribute ( "href" , n . toDataURL ( "image/jpeg" , 1 ) ) , p . click ( ) ) ; break ; case "png" : window . navigator . msSaveBlob ? window . navigator . msSaveBlob ( n . msToBlob ( ) ,
k . default _filename + ".png" ) : ( p . setAttribute ( "download" , k . default _filename + ".png" ) , p . setAttribute ( "href" , n . toDataURL ( "image/png" , 1 ) ) , p . click ( ) ) ; break ; case "gif" : p . setAttribute ( "download" , k . default _filename + ".gif" ) , v = new GIF ( { workerScript : k . gif _worker , quality : 1 } ) , v . addFrame ( n ) , v . on ( "finished" , function ( a ) { p . setAttribute ( "href" , window . URL . createObjectURL ( a ) ) ; p . click ( ) } ) , v . render ( ) } h . setTarget ( g ) ; g . removeChild ( m ) ; netgis . util . invoke ( f . container , netgis . Events . EXPORT _END , null ) } ) ; h . renderSync ( ) } ; l . src = k . logo } ;
netgis . Map . prototype . exportFeatures = function ( a ) { var b = this . editLayer . getSource ( ) . getFeatures ( ) ; ! 0 === a && ( a = this . nonEditLayer . getSource ( ) . getFeatures ( ) , b = b . concat ( a ) ) ; b = ( new ol . format . GeoJSON ) . writeFeaturesObject ( b , { featureProjection : this . view . getProjection ( ) , dataProjection : "EPSG:4326" } ) ; a = this . config [ "export" ] . default _filename + ".geojson" ; b . name = a ; netgis . util . downloadJSON ( b , a ) ; netgis . util . invoke ( this . container , netgis . Events . EXPORT _END , null ) } ; netgis . Map . prototype . onClientContextResponse = function ( a ) { this . initConfig ( a . detail . context . config ) } ;
netgis . Map . prototype . onEditLayerLoaded = function ( a ) { a = a . detail . geojson ; var b = new ol . format . GeoJSON ; b . readProjection ( a ) ; a = b . readFeatures ( a , { featureProjection : this . view . getProjection ( ) . getCode ( ) } ) ; b = [ ] ; for ( var c = 0 ; c < a . length ; c ++ ) { var d = a [ c ] ; ! 0 === d . getProperties ( ) . editable && b . push ( d ) } for ( c = 0 ; c < b . length ; c ++ ) a . splice ( a . indexOf ( b [ c ] ) , 1 ) ; this . editEventsSilent = ! 0 ; this . editLayer . getSource ( ) . addFeatures ( b ) ; this . nonEditLayer . getSource ( ) . addFeatures ( a ) ; this . editEventsSilent = ! 1 } ;
netgis . Map . prototype . onClientSetMode = function ( a ) { this . setMode ( a . detail . mode ) } ; netgis . Map . prototype . onPanelResize = function ( a ) { this . setPadding ( 0 , 0 , 0 , a . detail . width ) ; this . redrawVectorLayers ( ) } ; netgis . Map . prototype . onPanelToggle = function ( a ) { a = ! 1 ; for ( var b = 0 , c = this . container . parentNode . getElementsByClassName ( "netgis-panel" ) , d = 0 ; d < c . length ; d ++ ) if ( c [ d ] . classList . contains ( "netgis-show" ) ) { a = ! 0 ; b = c [ d ] . getBoundingClientRect ( ) . width ; break } a ? this . setPadding ( 0 , 0 , 0 , b ) : this . setPadding ( 0 , 0 , 0 , 0 ) ; this . redrawVectorLayers ( ) } ;
netgis . Map . prototype . onMapZoom = function ( a ) { this . zoom ( a . detail . delta ) } ; netgis . Map . prototype . onMapZoomHome = function ( a ) { a = this . config ; if ( a . map . bbox ) this . zoomBBox ( a . map . bbox , 500 ) ; else if ( a . map . center _lonlat ) { var b = a . map . center _lonlat ; this . zoomLonLat ( b [ 0 ] , b [ 1 ] , a . map . zoom ) } } ; netgis . Map . prototype . onMapZoomLonLat = function ( a ) { a = a . detail ; this . zoomLonLat ( a . lon , a . lat , a . zoom ) } ; netgis . Map . prototype . onMapZoomScale = function ( a ) { this . zoomScale ( a . detail . scale ) } ;
netgis . Map . prototype . onMapZoomLayer = function ( a ) { a = a . detail ; var b = this . layers [ a . id ] ; b ? this . view . fit ( b . getSource ( ) . getExtent ( ) , { duration : 600 } ) : console . warning ( "trying to zoom non existing layer" , a . id ) } ; netgis . Map . prototype . onMapZoomLevel = function ( a ) { this . view . setZoom ( a . detail . z ) } ; netgis . Map . prototype . onMapViewPrev = function ( a ) { this . gotoViewHistory ( this . viewIndex - 1 ) } ; netgis . Map . prototype . onMapViewNext = function ( a ) { this . gotoViewHistory ( this . viewIndex + 1 ) } ;
netgis . Map . prototype . onMapLayerToggle = function ( a ) { a = a . detail ; switch ( a . id ) { case netgis . LayerID . EDITABLE : a . on ? this . map . addLayer ( this . editLayer ) : this . map . removeLayer ( this . editLayer ) ; break ; case netgis . LayerID . NON _EDITABLE : a . on ? this . map . addLayer ( this . nonEditLayer ) : this . map . removeLayer ( this . nonEditLayer ) ; break ; default : if ( a . on ) for ( var b = this . config . layers , c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; d . id === a . id && this . addLayer ( a . id , d ) } else this . removeLayer ( a . id ) } } ;
netgis . Map . prototype . onMapLayerTransparency = function ( a ) { a = a . detail ; var b = this . layers [ a . id ] ; b || ( netgis . util . invoke ( this . container , netgis . Events . MAP _LAYER _TOGGLE , { id : a . id , on : ! 0 } ) , b = this . layers [ a . id ] ) ; b . setOpacity ( 1 - a . transparency ) } ; netgis . Map . prototype . onMapSnapToggle = function ( a ) { this . setSnapping ( a . detail . on ) } ;
netgis . Map . prototype . onMapMoveEnd = function ( a ) { a = this . view . getCenter ( ) ; var b = this . view . getZoom ( ) , c = this . getScaleFromResolution ( this . view . getResolution ( ) ) ; ! 1 === this . viewFromHistory && this . addViewHistory ( a , b ) ; netgis . util . invoke ( this . container , netgis . Events . MAP _VIEW _CHANGE , { center : a , zoom : b , scale : c } ) ; this . viewFromHistory = ! 1 } ;
netgis . Map . prototype . onPointerMove = function ( a ) { var b = a . pixel ; a = a . coordinate ; var c = null , d = null , e = void 0 , f = this ; this . map . forEachFeatureAtPixel ( b , function ( a , b ) { if ( b && b !== f . nonEditLayer ) if ( b === f . boundsLayer ) e = a ; else return c = a , d = b , ! 0 } ) ; switch ( this . mode ) { case netgis . Modes . DRAW _POINTS : case netgis . Modes . DRAW _LINES : this . updateDrawBufferPreview ( ) } ! this . boundsLayer || this . mode !== netgis . Modes . DRAW _POINTS && this . mode !== netgis . Modes . DRAW _LINES && this . mode !== netgis . Modes . DRAW _POLYGONS || ( e ? this . container . classList . remove ( "netgis-not-allowed" ) :
this . container . classList . add ( "netgis-not-allowed" ) , this . hoverBounds = e ) ; var g = ! 0 ; this . mode === netgis . Modes . VIEW && ( g = ! 1 ) ; this . mode === netgis . Modes . DRAW _POINTS && ( g = ! 1 ) ; this . mode === netgis . Modes . DRAW _LINES && ( g = ! 1 ) ; this . mode === netgis . Modes . DRAW _POLYGONS && ( g = ! 1 ) ; this . mode === netgis . Modes . CUT _FEATURES _DRAW && ( g = ! 1 ) ; if ( c !== this . hoverFeature && g ) { if ( this . hoverFeature ) this . onFeatureLeave ( this . hoverFeature , this . hoverLayer , b , a ) ; if ( c ) this . onFeatureEnter ( c , d , b , a ) ; this . redrawVectorLayers ( ) ; this . hoverFeature = c ; this . hoverLayer =
d } if ( c ) this . onFeatureHover ( c , d , b , a ) } ; netgis . Map . prototype . onPointerLeave = function ( a ) { this . hoverFeature && ( this . onFeatureLeave ( this . hoverFeature , this . hoverLayer , [ a . offsetX , a . offsetY ] , null ) , this . hoverLayer = this . hoverFeature = null ) } ;
netgis . Map . prototype . onPointerClick = function ( a ) { var b = a . pixel ; a = a . coordinate ; this . popupOverlay . setPosition ( a ) ; var c = [ ] , d = this ; this . map . forEachFeatureAtPixel ( b , function ( a , b ) { b && b !== d . nonEditLayer && b !== d . boundsLayer && b !== d . measureLayer && b !== d . previewLayer && c . push ( { feature : a , layer : b } ) } ) ; var e = ! 0 ; this . mode === netgis . Modes . VIEW && ( e = ! 1 ) ; this . mode === netgis . Modes . DRAW _POINTS && ( e = ! 1 ) ; this . mode === netgis . Modes . DRAW _LINES && ( e = ! 1 ) ; this . mode === netgis . Modes . DRAW _POLYGONS && ( e = ! 1 ) ; this . mode === netgis . Modes . CUT _FEATURES _DRAW &&
( e = ! 1 ) ; 0 < c . length && ! 1 === this . selectMultiple && e && ( this . selectedFeatures = [ ] ) ; for ( var f = 0 ; f < c . length ; f ++ ) { var g = c [ f ] ; e && this . selectedFeatures . push ( g . feature ) ; this . onFeatureClick ( g . feature , g . layer , b , a ) } e = { resolution : this . view . getResolution ( ) , projection : this . view . getProjection ( ) . getCode ( ) , bbox : this . view . calculateExtent ( this . map . getSize ( ) ) , width : this . map . getSize ( ) [ 0 ] , height : this . map . getSize ( ) [ 1 ] } ; f = ol . proj . toLonLat ( a , this . view . getProjection ( ) ) ; b = { mode : this . mode , pixel : b , coords : a , lon : f [ 0 ] , lat : f [ 1 ] , overlay : this . popupOverlay . getElement ( ) ,
view : e } ; netgis . util . invoke ( this . container , netgis . Events . MAP _CLICK , b ) ; this . redrawVectorLayers ( ) } ; netgis . Map . prototype . onRightClick = function ( a ) { switch ( this . mode ) { case netgis . Modes . MEASURE _LINE : this . interactions [ netgis . Modes . MEASURE _LINE ] [ 2 ] . finishDrawing ( ) ; break ; case netgis . Modes . MEASURE _AREA : this . interactions [ netgis . Modes . MEASURE _AREA ] [ 2 ] . finishDrawing ( ) } a . preventDefault ( ) ; return ! 1 } ;
netgis . Map . prototype . onKeyDown = function ( a ) { a = a . keyCode || a . which ; switch ( this . mode ) { case netgis . Modes . MEASURE _LINE : 13 === a && this . interactions [ netgis . Modes . MEASURE _LINE ] [ 2 ] . finishDrawing ( ) ; 27 === a && this . interactions [ netgis . Modes . MEASURE _LINE ] [ 2 ] . abortDrawing ( ) ; break ; case netgis . Modes . MEASURE _AREA : 13 === a && this . interactions [ netgis . Modes . MEASURE _AREA ] [ 2 ] . finishDrawing ( ) ; 27 === a && this . interactions [ netgis . Modes . MEASURE _AREA ] [ 2 ] . abortDrawing ( ) ; break ; case netgis . Modes . DRAW _LINES : var b = this . interactions [ netgis . Modes . DRAW _LINES ] [ 0 ] ;
13 === a && b . finishDrawing ( ) ; 27 === a && b . abortDrawing ( ) ; 8 === a && b . removeLastPoint ( ) ; 46 === a && b . abortDrawing ( ) ; break ; case netgis . Modes . DRAW _POLYGONS : b = this . interactions [ netgis . Modes . DRAW _POLYGONS ] [ 0 ] , 13 === a && b . finishDrawing ( ) , 27 === a && b . abortDrawing ( ) , 8 === a && b . removeLastPoint ( ) , 46 === a && b . abortDrawing ( ) } 16 === a && ( this . selectMultiple = ! 0 ) } ;
netgis . Map . prototype . onKeyUp = function ( a ) { a = a . keyCode || a . which ; switch ( this . mode ) { case netgis . Modes . BUFFER _FEATURES : this . selectMultiple && netgis . util . invoke ( this . container , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . BUFFER _FEATURES _EDIT } ) ; break ; case netgis . Modes . CUT _FEATURES : this . selectMultiple && netgis . util . invoke ( this . container , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . CUT _FEATURES _DRAW } ) } 16 === a && ( this . selectMultiple = ! 1 ) } ;
netgis . Map . prototype . onFeatureEnter = function ( a , b , c , d ) { if ( b ) { switch ( this . mode ) { case netgis . Modes . DELETE _FEATURES : case netgis . Modes . BUFFER _FEATURES : case netgis . Modes . CUT _FEATURES : this . container . classList . add ( "netgis-clickable" ) ; a . setStyle ( this . styleHover . bind ( this ) ) ; break ; case netgis . Modes . SEARCH _PARCEL : this . container . classList . add ( "netgis-clickable" ) , a . setStyle ( this . styleHover . bind ( this ) ) } netgis . util . invoke ( this . container , netgis . Events . MAP _FEATURE _ENTER , { pixel : c , coords : d , layer : b . get ( "id" ) , properties : a . getProperties ( ) } ) } } ;
netgis . Map . prototype . onFeatureHover = function ( a , b , c , d ) { } ;
netgis . Map . prototype . onFeatureClick = function ( a , b , c , d ) { c = { pixel : c , coords : d , layer : this . hoverLayer ? this . hoverLayer . get ( "id" ) : null , id : this . hoverFeature ? this . hoverFeature . getId ( ) : null , properties : this . hoverFeature ? this . hoverFeature . getProperties ( ) : null } ; netgis . util . invoke ( this . container , netgis . Events . MAP _FEATURE _CLICK , c ) ; switch ( this . mode ) { case netgis . Modes . DELETE _FEATURES : b . getSource ( ) . removeFeature ( a ) ; this . onFeatureLeave ( a , b ) ; netgis . util . invoke ( this . container , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . VIEW } ) ;
break ; case netgis . Modes . BUFFER _FEATURES : this . onFeatureLeave ( a , b ) ; this . selectMultiple || netgis . util . invoke ( this . container , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . BUFFER _FEATURES _EDIT } ) ; break ; case netgis . Modes . CUT _FEATURES : if ( a . getGeometry ( ) instanceof ol . geom . Point ) this . onFeatureLeave ( a , b ) ; else this . selectMultiple || netgis . util . invoke ( this . container , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . CUT _FEATURES _DRAW } ) } } ;
netgis . Map . prototype . onFeatureLeave = function ( a , b , c , d ) { netgis . util . invoke ( this . container , netgis . Events . MAP _FEATURE _LEAVE , { pixel : c , coords : d , layer : b ? b . get ( "id" ) : null , properties : a . getProperties ( ) } ) ; switch ( this . mode ) { case netgis . Modes . DELETE _FEATURES : case netgis . Modes . BUFFER _FEATURES : case netgis . Modes . CUT _FEATURES : case netgis . Modes . CUT _FEATURES _DRAW : this . container . classList . remove ( "netgis-clickable" ) ; a . setStyle ( null ) ; break ; case netgis . Modes . SEARCH _PARCEL : this . container . classList . remove ( "netgis-clickable" ) ,
a . setStyle ( null ) } } ; netgis . Map . prototype . onEditLayerAdd = function ( a ) { this . editEventsSilent || this . updateEditOutput ( ) ; this . snapFeatures . push ( a . feature ) } ; netgis . Map . prototype . onEditLayerRemove = function ( a ) { this . editEventsSilent || this . updateEditOutput ( ) ; this . snapFeatures . remove ( a . feature ) } ; netgis . Map . prototype . onEditLayerChange = function ( a ) { this . editEventsSilent || this . updateEditOutput ( ) } ;
netgis . Map . prototype . onCopyFeatureToEdit = function ( a ) { a = a . detail ; var b = this . layers [ a . source ] . getSource ( ) . getFeatureById ( a . id ) ; b ? this . editLayer . getSource ( ) . getFeatureById ( a . id ) || ( b . setStyle ( void 0 ) , this . selectedFeatures = [ ] , this . editLayer . getSource ( ) . addFeature ( b ) ) : console . error ( "feature to copy not found" , a ) } ; netgis . Map . prototype . onMeasureLineBegin = function ( a ) { this . measureLayer . getSource ( ) . clear ( ) } ; netgis . Map . prototype . onMeasureAreaBegin = function ( a ) { this . measureLayer . getSource ( ) . clear ( ) } ;
netgis . Map . prototype . onMeasureClear = function ( a ) { this . measureLayer . getSource ( ) . clear ( ) } ;
netgis . Map . prototype . onDrawBufferEnd = function ( a ) { var b = a . feature ; a = this . previewLayer . getSource ( ) . getFeatures ( ) ; if ( 0 !== a . length ) { a = a [ 0 ] ; if ( this . boundsLayer ) { var c = ! 0 ; c = b . getGeometry ( ) instanceof ol . geom . Point ? this . isPointInsideLayer ( this . boundsLayer , b . getGeometry ( ) . getCoordinates ( ) ) : this . isGeomInsideLayer ( this . boundsLayer , b . getGeometry ( ) ) ; if ( ! c ) return ; c = new jsts . io . OL3Parser ; for ( var d = c . read ( a . getGeometry ( ) ) , e = this . boundsLayer . getSource ( ) . getFeatures ( ) , f = 0 ; f < e . length ; f ++ ) { var g = c . read ( e [ f ] . getGeometry ( ) ) ;
d . intersects ( g ) && ( d = d . intersection ( g ) ) } c = c . write ( d ) ; a . setGeometry ( c ) } var h = this . editLayer . getSource ( ) ; h . addFeature ( a . clone ( ) ) ; window . setTimeout ( function ( ) { h . removeFeature ( b ) } , 10 ) } } ; netgis . Map . prototype . onDrawBufferToggle = function ( a ) { a = a . detail ; this . setDrawBuffer ( a . on , a . radius , a . segments ) } ; netgis . Map . prototype . onDrawBufferChange = function ( a ) { a = a . detail ; this . drawBufferRadius = a . radius ; this . drawBufferSegments = a . segments ; this . updateDrawBufferPreview ( ) } ;
netgis . Map . prototype . onBufferChange = function ( a ) { a = a . detail ; var b = this . selectedFeatures , c = this . editLayer . getSource ( ) ; this . clearSketchFeatures ( ) ; for ( var d = 0 ; d < b . length ; d ++ ) { var e = this . createBufferFeature ( this . selectedFeatures [ d ] . getGeometry ( ) , a . radius , a . segments ) ; c . addFeature ( e ) ; this . sketchFeatures . push ( e ) } } ;
netgis . Map . prototype . onBufferAccept = function ( a ) { a = this . selectedFeatures ; for ( var b = this . editLayer . getSource ( ) , c = 0 ; c < a . length ; c ++ ) b . removeFeature ( a [ c ] ) ; this . sketchFeatures = [ ] ; this . selectedFeatures = [ ] } ;
netgis . Map . prototype . onCutFeaturesDrawEnd = function ( a ) { a = a . feature ; for ( var b = 0 ; b < this . selectedFeatures . length ; b ++ ) { var c = this . selectedFeatures [ b ] ; if ( c ) if ( this . onFeatureLeave ( c , null ) , c . getGeometry ( ) instanceof ol . geom . Point ) console . error ( "trying to cut a point feature" , c ) ; else { var d = new jsts . io . OL3Parser , e = d . read ( c . getGeometry ( ) ) , f = d . read ( a . getGeometry ( ) ) ; e = e . difference ( f ) ; d = d . write ( e ) ; d = new ol . Feature ( { geometry : d } ) ; e = this . editLayer . getSource ( ) ; e . removeFeature ( c ) ; e . addFeature ( d ) } } this . selectedFeatures =
[ ] ; this . editEventsSilent = ! 0 ; this . splitMultiPolygons ( this . editLayer ) ; this . editEventsSilent = ! 1 ; this . updateEditOutput ( ) ; netgis . util . invoke ( this . container , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . VIEW } ) } ; netgis . Map . prototype . onImportLayerAccept = function ( a ) { a = a . detail ; a = this . addLayer ( a . id , a ) ; 0 !== a . getSource ( ) . getFeatures ( ) . length && this . view . fit ( a . getSource ( ) . getExtent ( ) , { duration : 600 } ) } ; netgis . Map . prototype . onImportGeoportalSubmit = function ( a ) { } ;
netgis . Map . prototype . onImportLayerPreview = function ( a ) { a = a . detail ; var b = this . createLayer ( a ) , c = this . view . getProjection ( ) . getCode ( ) ; netgis . util . invoke ( this . container , netgis . Events . IMPORT _LAYER _PREVIEW _FEATURES , { id : a . id , title : a . title , layer : b , proj : c } ) } ; netgis . Map . prototype . onSearchParcelReset = function ( a ) { ( a = this . config . searchparcel . districts _service . min _zoom ) && this . view . setZoom ( a ) } ; netgis . Map . prototype . onSearchParcelItemEnter = function ( a ) { a = a . detail . id ; this . layers . searchparcel _parcels . getSource ( ) . getFeatureById ( a ) . setStyle ( this . styleHover . bind ( this ) ) } ;
netgis . Map . prototype . onSearchParcelItemLeave = function ( a ) { a = a . detail . id ; this . layers . searchparcel _parcels . getSource ( ) . getFeatureById ( a ) . setStyle ( null ) } ; netgis . Map . prototype . onSearchParcelItemClick = function ( a ) { a = a . detail . id ; console . info ( "PARCEL CLICK:" , a ) ; this . zoomFeature ( "searchparcel_parcels" , a ) } ; netgis . Map . prototype . onSearchParcelItemImport = function ( a ) { } ; netgis . Map . prototype . onDrawPointsUpdateGeom = function ( a , b , c ) { b ? b . setCoordinates ( a ) : b = new ol . geom . Point ( a ) ; return b } ;
netgis . Map . prototype . onDrawLinesUpdateGeom = function ( a , b , c ) { b ? b . setCoordinates ( a ) : b = new ol . geom . LineString ( a ) ; this . drawError = ! this . isGeomInsideLayer ( this . boundsLayer , b ) ; return b } ;
netgis . Map . prototype . onDrawPolygonsUpdateGeom = function ( a , b , c ) { b ? ( a = [ a [ 0 ] . concat ( [ a [ 0 ] [ 0 ] ] ) ] , b . setCoordinates ( a ) ) : b = new ol . geom . Polygon ( a ) ; c = ! 0 ; if ( 4 > a [ 0 ] . length ) for ( var d = 0 ; d < a [ 0 ] . length ; d ++ ) { if ( ! this . isPointInsideLayer ( this . boundsLayer , a [ 0 ] [ d ] ) ) { c = ! 1 ; break } } else c = this . isGeomInsideLayer ( this . boundsLayer , b ) ; this . drawError = ! c ; return b } ;
netgis . Map . prototype . onDrawPointsEnd = function ( a ) { if ( this . boundsLayer ) { var b = a . feature , c = this . editLayer ; this . isPointInsideLayer ( this . boundsLayer , b . getGeometry ( ) . getCoordinates ( ) ) || window . setTimeout ( function ( ) { c . getSource ( ) . removeFeature ( b ) } , 10 ) } } ; netgis . Map . prototype . onDrawLinesEnd = function ( a ) { if ( this . boundsLayer ) { var b = a . feature , c = this . editLayer ; this . isGeomInsideLayer ( this . boundsLayer , b . getGeometry ( ) ) || window . setTimeout ( function ( ) { c . getSource ( ) . removeFeature ( b ) } , 10 ) } } ;
netgis . Map . prototype . onDrawPolygonsEnd = function ( a ) { if ( this . boundsLayer ) { var b = a . feature , c = this . editLayer ; this . isGeomInsideLayer ( this . boundsLayer , b . getGeometry ( ) ) || window . setTimeout ( function ( ) { c . getSource ( ) . removeFeature ( b ) } , 10 ) } } ; netgis . Map . prototype . onExportBegin = function ( a ) { a = a . detail ; switch ( a . format ) { case "geojson" : this . exportFeatures ( a . nonEdits ) ; break ; default : this . exportImage ( a . format , a . width , a . height , a . landscape , a . padding ) } } ; netgis . Map . prototype . onTimeSliderShow = function ( a ) { } ;
netgis . Map . prototype . onTimeSliderHide = function ( a ) { } ; netgis . Map . prototype . onTimeSliderSelect = function ( a ) { a = a . detail ; console . info ( "Time Slider Select:" , a ) ; this . layers [ a . layer ] . getSource ( ) . updateParams ( { TIME : a . time } ) } ; netgis = netgis || { } ; netgis . Menu = function ( a ) { this . config = a ; this . initElements ( ) ; this . initConfig ( a ) } ;
2024-10-31 14:46:27 +01:00
netgis . Menu . prototype . initElements = function ( ) { this . container = document . createElement ( "nav" ) ; this . container . className = "netgis-menu netgis-noselect netgis-color-a netgis-shadow-large" ; this . toggle = document . createElement ( "button" ) ; this . toggle . setAttribute ( "type" , "button" ) ; this . toggle . addEventListener ( "click" , this . onToggleClick . bind ( this ) ) ; this . toggle . className = "netgis-menu-toggle netgis-hover-c" ; this . toggle . innerHTML = "<i class='fas fa-bars'></i>" ; this . container . appendChild ( this . toggle ) } ;
2024-10-24 15:10:58 +02:00
netgis . Menu . prototype . initConfig = function ( a ) { ! 0 === a . menu . compact && this . container . classList . add ( "netgis-compact" ) ; this . addHeader ( a . menu . header ) ; for ( var b = a . menu . items , c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; if ( d . items ) this . addDropdown ( d . title , d . items ) ; else if ( d . url && 0 < d . url . length ) this . addLink ( d . url , d . title ) ; else if ( d . options ) { var e ; if ( "scales" === d . options ) { var f = { 0 : "1:X" } ; for ( e = 0 ; e < a . map . scales . length ; e ++ ) f [ a . map . scales [ e ] ] = "1:" + a . map . scales [ e ] ; e = a . map . default _scale ; this . addSelect ( d . id , d . title , f , e ) . options [ 0 ] . classList . add ( "netgis-hide" ) } else { f =
d . options ; if ( d . value ) e = d . value ; else for ( var g in f ) { e = g ; break } this . addSelect ( d . id , d . title , f , e ) } } else this . addButton ( d . id , d . title ) } } ; netgis . Menu . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) ; a . addEventListener ( netgis . Events . MAP _VIEW _CHANGE , this . onMapViewChange . bind ( this ) ) } ; netgis . Menu . prototype . addHeader = function ( a ) { var b = document . createElement ( "h1" ) ; b . className = "netgis-hover-c" ; b . innerHTML = a ; this . container . appendChild ( b ) ; return b } ;
netgis . Menu . prototype . addButton = function ( a , b ) { a = this . createButton ( a , b ) ; this . container . appendChild ( a ) ; return a } ; netgis . Menu . prototype . addLink = function ( a , b ) { a = this . createLink ( a , b ) ; this . container . appendChild ( a ) ; return a } ;
2024-10-31 14:46:27 +01:00
netgis . Menu . prototype . addSelect = function ( a , b , c , d ) { var e = document . createElement ( "span" ) ; e . className = "netgis-wrapper netgis-hover-c" ; var f = document . createElement ( "select" ) ; f . setAttribute ( "data-id" , a ) ; for ( var g in c ) { a = c [ g ] ; var h = document . createElement ( "option" ) ; h . setAttribute ( "value" , g ) ; h . innerHTML = a ; f . appendChild ( h ) } f . value = d ; f . addEventListener ( "change" , this . onSelectChange . bind ( this ) ) ; e . appendChild ( f ) ; b && ( c = document . createElement ( "span" ) , c . className = "netgis-icon" , c . innerHTML = b , e . appendChild ( c ) ) ; this . container . appendChild ( e ) ;
return f } ; netgis . Menu . prototype . addDropdown = function ( a , b ) { var c = document . createElement ( "div" ) ; c . className = "netgis-dropdown netgis-hover-c" ; var d = document . createElement ( "button" ) ; d . setAttribute ( "type" , "button" ) ; d . innerHTML = a ; c . appendChild ( d ) ; a = document . createElement ( "ul" ) ; a . className = "netgis-color-e netgis-shadow" ; c . appendChild ( a ) ; for ( d = 0 ; d < b . length ; d ++ ) a . appendChild ( this . createMenuItem ( b [ d ] ) ) ; this . container . appendChild ( c ) ; return c } ;
2024-10-24 15:10:58 +02:00
netgis . Menu . prototype . createMenuItem = function ( a ) { var b = document . createElement ( "li" ) ; b . className = "netgis-hover-c" ; if ( a . items ) a = this . createMenu ( a . title , a . items ) , b . appendChild ( a . button ) , b . appendChild ( a . list ) ; else if ( a . type ) switch ( a . type ) { case "checkbox" : a = this . createCheckbox ( a . id , a . title , a . value ) ; b . appendChild ( a ) ; break ; default : console . error ( "unhandled menu item type" , a . type , "for" , a . id ) } else a . url ? ( a = this . createLink ( a . url , a . title ) , b . appendChild ( a ) ) : ( a = this . createButton ( a . id , a . title ) , b . appendChild ( a ) ) ;
return b } ; netgis . Menu . prototype . createMenu = function ( a , b ) { var c = document . createElement ( "button" ) ; c . setAttribute ( "type" , "button" ) ; c . addEventListener ( "pointerdown" , this . onButtonClick . bind ( this ) ) ; c . innerHTML = a ; a = document . createElement ( "ul" ) ; a . className = "netgis-color-e netgis-shadow" ; for ( var d = 0 ; d < b . length ; d ++ ) a . appendChild ( this . createMenuItem ( b [ d ] ) ) ; return { button : c , list : a } } ;
netgis . Menu . prototype . createLink = function ( a , b ) { var c = document . createElement ( "a" ) ; c . setAttribute ( "href" , a ) ; c . setAttribute ( "target" , "_blank" ) ; c . classList = "netgis-button" ; c . innerHTML = b ; return c } ; netgis . Menu . prototype . createButton = function ( a , b ) { var c = document . createElement ( "button" ) ; c . className = "netgis-text-e netgis-hover-c" ; c . setAttribute ( "type" , "button" ) ; c . setAttribute ( "data-id" , a ) ; c . addEventListener ( "pointerdown" , this . onButtonClick . bind ( this ) ) ; c . innerHTML = b ; return c } ;
netgis . Menu . prototype . createCheckbox = function ( a , b , c ) { var d = document . createElement ( "label" ) ; d . className = "netgis-button" ; var e = document . createElement ( "input" ) ; e . setAttribute ( "type" , "checkbox" ) ; e . setAttribute ( "data-id" , a ) ; e . addEventListener ( "change" , this . onCheckboxChange . bind ( this ) ) ; e . checked = c ; d . appendChild ( e ) ; a = document . createElement ( "span" ) ; a . innerHTML = b ; d . appendChild ( a ) ; return d } ; netgis . Menu . prototype . onToggleClick = function ( a ) { this . container . classList . toggle ( "netgis-menu-large" ) } ;
netgis . Menu . prototype . onButtonClick = function ( a ) { a = a . currentTarget ; var b = a . getAttribute ( "data-id" ) ; netgis . util . invoke ( a , netgis . Events . MENU _BUTTON _CLICK , { id : b } ) ; netgis . Client . handleCommand ( a , b ) } ;
netgis . Menu . prototype . onCheckboxChange = function ( a ) { a = a . currentTarget ; var b = a . getAttribute ( "data-id" ) , c = a . checked ; netgis . util . invoke ( a , netgis . Events . MENU _CHECKBOX _CHANGE , { id : b , checked : c } ) ; switch ( b ) { case netgis . Menu . ItemID . SNAP _TOGGLE : netgis . util . invoke ( a , netgis . Events . MAP _SNAP _TOGGLE , { on : c } ) ; break ; default : console . error ( "unhandled menu item id" , b ) } } ;
netgis . Menu . prototype . onSelectChange = function ( a ) { a = a . currentTarget ; var b = a . getAttribute ( "data-id" ) , c = a . value ; netgis . util . invoke ( a , netgis . Events . MENU _SELECT _CHANGE , { id : b , value : c } ) ; switch ( b ) { case "scales" : netgis . util . invoke ( a , netgis . Events . MAP _ZOOM _SCALE , { scale : Number . parseInt ( c ) } ) } } ;
netgis . Menu . prototype . onMapViewChange = function ( a ) { a = a . detail ; for ( var b = this . container . getElementsByTagName ( "select" ) , c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; if ( "scales" === ! d . getAttribute ( "data-id" ) ) break ; for ( var e = ! 1 , f = this . config . map . scales , g = 0 ; g < f . length ; g ++ ) if ( f [ g ] === a . scale ) { e = ! 0 ; break } e ? d . options [ 0 ] . classList . add ( "netgis-hide" ) : ( d . options [ 0 ] . setAttribute ( "value" , a . scale ) , d . options [ 0 ] . innerHTML = "1:" + a . scale , d . options [ 0 ] . classList . remove ( "netgis-hide" ) ) ; d . value = a . scale } } ; netgis = netgis || { } ; netgis . Modal = function ( a ) { this . initElements ( a ) ; this . initEvents ( ) } ; netgis . Modal . prototype . initElements = function ( a ) { this . container = document . createElement ( "div" ) ; this . container . className = "netgis-modal" ; this . container . addEventListener ( "click" , this . onContainerClick . bind ( this ) ) ; this . content = document . createElement ( "div" ) ; this . content . className = "netgis-color-e netgis-shadow" ; this . container . appendChild ( this . content ) ; this . header = this . addHeader ( this . content , a , this . onHeaderClick . bind ( this ) ) } ;
netgis . Modal . prototype . initEvents = function ( ) { } ; netgis . Modal . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) } ; netgis . Modal . prototype . show = function ( ) { this . container . classList . add ( "netgis-show" ) } ; netgis . Modal . prototype . hide = function ( ) { this . container . classList . remove ( "netgis-show" ) } ;
netgis . Modal . prototype . addHeader = function ( a , b , c ) { var d = document . createElement ( "button" ) ; d . className = "netgis-button netgis-clip-text netgis-color-c" ; d . innerHTML = "<span>" + b + "</span><i class='netgis-icon fas fa-times'></i>" ; d . setAttribute ( "type" , "button" ) ; c && ( d . onclick = c ) ; a && a . appendChild ( d ) ; return d } ; netgis . Modal . prototype . onHeaderClick = function ( a ) { this . hide ( ) } ; netgis . Modal . prototype . onContainerClick = function ( a ) { a . target === this . container && this . hide ( ) } ; netgis = netgis || { } ; netgis . Modes = Object . freeze ( { VIEW : "view" , ZOOM _BOX : "zoom-box" , MEASURE _LINE : "measure-line" , MEASURE _AREA : "measure-area" , DRAW _POINTS : "draw-points" , DRAW _LINES : "draw-lines" , DRAW _POLYGONS : "draw-polygons" , MODIFY _FEATURES : "modify-features" , DELETE _FEATURES : "delete-features" , BUFFER _FEATURES : "buffer-features" , BUFFER _FEATURES _EDIT : "buffer-features-edit" , CUT _FEATURES : "cut-features" , CUT _FEATURES _DRAW : "cut-features-draw" , SEARCH _PARCEL : "search-parcel" } ) ; netgis = netgis || { } ;
netgis . OWS = function ( ) { return { read : function ( a , b ) { b = { layers : [ ] , folders : [ ] } ; netgis . util . isDefined ( a . properties ) && ( b . bbox = a . properties . bbox ) ; a = a . features ; for ( var c = 0 ; c < a . length ; c ++ ) { var d = a [ c ] ; if ( "Feature" === d . type ) { var e = d . properties ; e = e . folder ; var f = ! 1 ; for ( d = 0 ; d < b . folders . length ; d ++ ) if ( b . folders [ d ] . id === e ) { f = ! 0 ; break } if ( ! f ) { d = e . split ( "/" ) ; e = [ ] ; for ( f = 0 ; f < d . length ; f ++ ) { var g = d [ f ] ; 0 < g . length && e . push ( g ) } var h = - 1 ; for ( f = 0 ; f < e . length ; f ++ ) { g = e [ f ] ; var k = "/" + e . slice ( 0 , f + 1 ) . join ( "/" ) , l = ! 1 ; for ( d = 0 ; d < b . folders . length ; d ++ ) if ( b . folders [ d ] . path ===
k ) { h = d ; l = ! 0 ; break } l || ( d = b . folders . length , b . folders . push ( { title : g , parent : h , path : k } ) , h = d ) } } } } for ( c = 0 ; c < a . length ; c ++ ) if ( d = a [ c ] , "Feature" === d . type ) { e = d . properties ; f = - 1 ; for ( d = 0 ; d < b . folders . length ; d ++ ) if ( b . folders [ d ] . path === e . folder ) { f = d ; break } d = e . offerings ; for ( g = 0 ; g < d . length ; g ++ ) switch ( h = d [ g ] , k = h . operations , h . code ) { case "http://www.opengis.net/spec/owc-geojson/1.0/req/wms" : b . layers . push ( { folder : f , type : netgis . LayerTypes . WMS , url : k [ 0 ] . href , title : e . title , attribution : e . rights , active : e . active } ) ; break ; case "http://www.opengis.net/spec/owc-geojson/1.0/req/xyz" : h =
k [ 0 ] ; b . layers . push ( { folder : f , type : netgis . LayerTypes . XYZ , url : h . href , title : e . title , attribution : e . rights , active : e . active } ) ; break ; case "http://www.opengis.net/spec/owc-geojson/1.0/req/osm" : h = k [ 0 ] , b . layers . push ( { folder : f , type : netgis . LayerTypes . XYZ , url : h . href , title : e . title , attribution : e . rights , active : e . active } ) } } return b } } } ( ) ; netgis = netgis || { } ; netgis . Panel = function ( a ) { this . initElements ( a ) ; this . initEvents ( ) } ; netgis . Panel . prototype . initElements = function ( a ) { var b = document . createElement ( "section" ) ; b . className = "netgis-panel netgis-resize-right netgis-color-e netgis-shadow" ; this . content = document . createElement ( "div" ) ; b . appendChild ( this . content ) ; this . header = this . addHeader ( b , a , this . onHeaderClick . bind ( this ) ) ; this . container = b } ; netgis . Panel . prototype . initEvents = function ( ) { this . resizeObserver = ( new ResizeObserver ( this . onResize . bind ( this ) ) ) . observe ( this . container ) } ;
netgis . Panel . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) } ; netgis . Panel . prototype . addHeader = function ( a , b , c ) { var d = document . createElement ( "button" ) ; d . className = "netgis-button netgis-clip-text netgis-color-c netgis-shadow" ; d . innerHTML = "<span>" + b + "</span><i class='netgis-icon fas fa-times'></i>" ; d . setAttribute ( "type" , "button" ) ; c && ( d . onpointerdown = c ) ; a && a . appendChild ( d ) ; return d } ;
netgis . Panel . prototype . show = function ( ) { this . container . classList . contains ( "netgis-show" ) || ( this . container . classList . add ( "netgis-show" ) , netgis . util . invoke ( this . container , netgis . Events . PANEL _TOGGLE , { visible : ! 0 , width : this . container . getBoundingClientRect ( ) . width } ) ) } ; netgis . Panel . prototype . hide = function ( ) { this . container . classList . contains ( "netgis-show" ) && ( this . container . classList . remove ( "netgis-show" ) , netgis . util . invoke ( this . container , netgis . Events . PANEL _TOGGLE , { visible : ! 1 } ) ) } ;
netgis . Panel . prototype . toggle = function ( ) { this . container . classList . toggle ( "netgis-show" ) ; var a = this . container . classList . contains ( "netgis-show" ) ; netgis . util . invoke ( this . container , netgis . Events . PANEL _TOGGLE , { visible : a , width : a ? this . container . getBoundingClientRect ( ) . width : void 0 } ) } ; netgis . Panel . prototype . visible = function ( ) { return this . container . classList . contains ( "netgis-show" ) } ; netgis . Panel . prototype . width = function ( ) { return this . container . getBoundingClientRect ( ) . width } ;
netgis . Panel . prototype . setTitle = function ( a ) { this . header . getElementsByTagName ( "span" ) [ 0 ] . innerHTML = a } ; netgis . Panel . prototype . onHeaderClick = function ( a ) { this . hide ( ) } ; netgis . Panel . prototype . onResize = function ( a ) { this . container . classList . contains ( "netgis-show" ) && ( a = this . container . getBoundingClientRect ( ) , netgis . util . invoke ( this . container , netgis . Events . PANEL _RESIZE , { width : a . width } ) ) } ; netgis = netgis || { } ; netgis . Popup = function ( ) { this . initElements ( ) } ;
netgis . Popup . prototype . initElements = function ( ) { document . body . addEventListener ( "pointerdown" , this . onDocumentPointerDown . bind ( this ) ) ; this . container = document . createElement ( "div" ) ; this . container . className = "netgis-popup" ; this . container . addEventListener ( "pointerdown" , this . onPointerDown . bind ( this ) ) ; this . content = document . createElement ( "div" ) ; this . content . className = "netgis-content netgis-color-e netgis-round" ; this . container . appendChild ( this . content ) ; this . arrow = document . createElement ( "div" ) ; this . arrow . className =
"netgis-arrow-down" ; this . container . appendChild ( this . arrow ) ; this . closer = document . createElement ( "button" ) ; this . closer . setAttribute ( "type" , "button" ) ; this . closer . className = "netgis-closer netgis-color-e netgis-text-a" ; this . closer . innerHTML = "<span></span><i class='fas fa-times'></i>" ; this . closer . onclick = this . onCloserClick . bind ( this ) ; this . content . appendChild ( this . closer ) ; this . loader = document . createElement ( "div" ) ; this . loader . className = "netgis-loader netgis-text-a" ; this . loader . innerHTML = "<i class='netgis-icon netgis-anim-spin fas fa-sync-alt'></i>" ;
this . wrapper = document . createElement ( "div" ) ; this . wrapper . className = "netgis-wrapper" ; this . content . appendChild ( this . wrapper ) } ; netgis . Popup . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) } ; netgis . Popup . prototype . show = function ( ) { this . container . classList . add ( "netgis-show" ) } ; netgis . Popup . prototype . hide = function ( ) { this . container . classList . remove ( "netgis-show" ) } ; netgis . Popup . prototype . showLoader = function ( ) { this . content . appendChild ( this . loader ) } ;
netgis . Popup . prototype . hideLoader = function ( ) { this . loader . parentNode === this . content && this . content . removeChild ( this . loader ) } ;
netgis . Popup . prototype . setPosition = function ( a , b ) { var c = this . container . parentNode . getBoundingClientRect ( ) , d = this . arrow . getBoundingClientRect ( ) ; a > c . width - d . width && ( a = c . width - d . width ) ; a < d . width && ( a = d . width ) ; this . container . style . left = a + "px" ; this . container . style . top = b + "px" ; this . content . style . left = "" ; a = this . content . getBoundingClientRect ( ) ; 0 > a . x ? this . content . style . left = - a . x + "px" : a . x + a . width > c . width && ( this . content . style . left = - ( a . x + a . width - c . width ) + "px" ) } ;
netgis . Popup . prototype . setHeader = function ( a ) { this . closer . getElementsByTagName ( "span" ) [ 0 ] . innerHTML = a } ; netgis . Popup . prototype . setContent = function ( a ) { this . wrapper . innerHTML = a } ; netgis . Popup . prototype . clearContent = function ( ) { this . wrapper . innerHTML = "" } ; netgis . Popup . prototype . addContent = function ( a ) { this . wrapper . innerHTML += a } ; netgis . Popup . prototype . onDocumentPointerDown = function ( a ) { } ; netgis . Popup . prototype . onPointerDown = function ( a ) { a . stopPropagation ( ) } ; netgis . Popup . prototype . onCloserClick = function ( a ) { this . hide ( ) } ; netgis = netgis || { } ; netgis . Search = function ( a ) { this . debounce = 400 ; this . initElements ( a ) ; this . initEvents ( ) } ;
netgis . Search . prototype . initElements = function ( a ) { var b = document . createElement ( "div" ) ; b . className = "netgis-search" ; this . container = b ; var c = document . createElement ( "label" ) ; b . appendChild ( c ) ; this . label = c ; var d = document . createElement ( "input" ) ; d . className = "netgis-round netgis-shadow" ; d . setAttribute ( "type" , "text" ) ; d . setAttribute ( "placeholder" , a ) ; c . appendChild ( d ) ; this . input = d ; a = document . createElement ( "button" ) ; a . setAttribute ( "type" , "button" ) ; a . innerHTML = "<i class='fas fa-search'></i>" ; c . appendChild ( a ) ; this . button =
a ; a = document . createElement ( "button" ) ; a . setAttribute ( "type" , "button" ) ; a . className = "netgis-hide" ; a . innerHTML = "<i class='fas fa-times'></i>" ; c . appendChild ( a ) ; this . closer = a ; c = document . createElement ( "ul" ) ; b . appendChild ( c ) ; this . results = c } ;
netgis . Search . prototype . initEvents = function ( ) { this . input . addEventListener ( "change" , this . onInputChange . bind ( this ) ) ; this . input . addEventListener ( "keydown" , this . onInputKeyDown . bind ( this ) ) ; this . input . addEventListener ( "keyup" , this . onInputKeyUp . bind ( this ) ) ; this . button . addEventListener ( "click" , this . onButtonClick . bind ( this ) ) ; this . closer . addEventListener ( "click" , this . onCloserClick . bind ( this ) ) } ; netgis . Search . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) } ; netgis . Search . prototype . show = function ( ) { this . container . classList . remove ( "netgis-hide" ) } ;
netgis . Search . prototype . hide = function ( ) { this . container . classList . add ( "netgis-hide" ) } ; netgis . Search . prototype . toggle = function ( ) { this . container . classList . toggle ( "netgis-hide" ) } ; netgis . Search . prototype . isVisible = function ( ) { return ! this . container . classList . contains ( "netgis-hide" ) } ; netgis . Search . prototype . minimize = function ( ) { this . container . classList . remove ( "netgis-color-e" , "netgis-shadow" ) ; this . input . classList . add ( "netgis-shadow" ) } ;
netgis . Search . prototype . maximize = function ( ) { this . container . classList . add ( "netgis-color-e" , "netgis-shadow" ) ; this . input . classList . remove ( "netgis-shadow" ) } ; netgis . Search . prototype . setTitle = function ( a ) { this . input . setAttribute ( "placeholder" , a ) } ;
netgis . Search . prototype . addResult = function ( a , b ) { var c = document . createElement ( "li" ) , d = document . createElement ( "button" ) ; d . className = "netgis-button netgis-clip-text netgis-color-e netgis-hover-a" ; d . innerHTML = a ; d . setAttribute ( "type" , "button" ) ; d . setAttribute ( "title" , d . innerText ) ; d . setAttribute ( "data-result" , b ) ; d . addEventListener ( "click" , this . onResultClick . bind ( this ) ) ; c . appendChild ( d ) ; 0 === this . results . childNodes . length && ( this . button . classList . add ( "netgis-hide" ) , this . closer . classList . remove ( "netgis-hide" ) ) ;
this . results . appendChild ( c ) ; this . maximize ( ) ; return c } ; netgis . Search . prototype . clearResults = function ( ) { this . results . innerHTML = "" ; this . minimize ( ) ; netgis . util . invoke ( this . container , netgis . Events . SEARCH _CLEAR , null ) } ; netgis . Search . prototype . clearAll = function ( ) { this . clearResults ( ) ; this . lastQuery = null ; this . input . value = "" ; this . button . classList . remove ( "netgis-hide" ) ; this . closer . classList . add ( "netgis-hide" ) } ;
netgis . Search . prototype . requestSearch = function ( a ) { this . lastQuery && this . lastQuery === a || ( this . lastQuery = a , netgis . util . invoke ( this . container , netgis . Events . SEARCH _CHANGE , { query : a } ) ) } ; netgis . Search . prototype . onInputKeyDown = function ( a ) { if ( 13 === a . keyCode ) return a . preventDefault ( ) , ! 1 } ; netgis . Search . prototype . onInputKeyUp = function ( a ) { switch ( a . keyCode ) { case 13 : a = this . results . getElementsByTagName ( "button" ) ; 0 < a . length && a [ 0 ] . click ( ) ; break ; case 27 : this . clearAll ( ) ; break ; default : this . onInputChange ( ) } } ;
netgis . Search . prototype . onInputChange = function ( a ) { this . timeout && window . clearTimeout ( this . timeout ) ; this . timeout = window . setTimeout ( this . onInputTimeout . bind ( this ) , this . debounce ) } ; netgis . Search . prototype . onInputTimeout = function ( ) { var a = this . input . value ; a = a . trim ( ) ; 0 < a . length ? this . requestSearch ( a ) : this . clearAll ( ) } ; netgis . Search . prototype . onButtonClick = function ( a ) { this . input . focus ( ) } ; netgis . Search . prototype . onCloserClick = function ( a ) { this . clearAll ( ) ; this . input . focus ( ) } ;
netgis . Search . prototype . onResultClick = function ( a ) { a = a . currentTarget ; var b = a . getAttribute ( "data-result" ) ; netgis . util . invoke ( a , netgis . Events . SEARCH _SELECT , { item : a , data : b } ) } ; netgis = netgis || { } ; netgis . SearchParcel = function ( a ) { this . config = a ; this . districtsLayerID = "searchparcel_districts" ; this . fieldsLayerID = "searchparcel_fields" ; this . parcelsLayerID = "searchparcel_parcels" ; this . parcelsAdded = [ ] ; this . initElements ( ) ; this . initEvents ( ) ; this . initConfig ( a ) } ;
netgis . SearchParcel . prototype . initElements = function ( ) { this . panel = new netgis . Panel ( "Flurst\u00fccks-Suche" ) ; this . panel . container . style . minWidth = "92mm" ; this . panel . container . addEventListener ( netgis . Events . PANEL _TOGGLE , this . onPanelToggle . bind ( this ) ) ; this . container = document . createElement ( "section" ) ; this . container . className = "netgis-search-parcel" ; this . panel . content . appendChild ( this . container ) ; var a = document . createElement ( "section" ) ; this . top = a ; this . container . appendChild ( a ) ; var b = this . createInput ( "Gemarkungsname:" ) ;
b . style . position = "relative" ; a . appendChild ( b ) ; this . nameInput = b . children [ 0 ] ; this . nameInput . setAttribute ( "title" , "ENTER: Ausw\u00e4hlen, ESCAPE: Zur\u00fccksetzen" ) ; this . nameInput . addEventListener ( "keyup" , this . onInputNameKey . bind ( this ) ) ; this . nameLoader = document . createElement ( "div" ) ; this . nameLoader . className = "netgis-loader netgis-text-primary netgis-hide" ; this . nameLoader . innerHTML = "<i class='fas fa-spinner'></i>" ; b . appendChild ( this . nameLoader ) ; this . nameList = document . createElement ( "ul" ) ; a . appendChild ( this . nameList ) ;
b = this . createInput ( "Gemarkungsnummer:" ) ; this . districtInput = b . children [ 0 ] ; a . appendChild ( b ) ; b = this . createInput ( "Flurnummer:" ) ; this . fieldInput = b . children [ 0 ] ; this . fieldInput . addEventListener ( "keyup" , this . onInputFieldKey . bind ( this ) ) ; a . appendChild ( b ) ; b = this . createInput ( "<span>Flurst\u00fccksnummer (Z\u00e4hler/Nenner):</span>" ) ; this . parcelInputA = b . children [ 1 ] ; this . parcelInputA . style . width = "48%" ; this . parcelInputB = this . parcelInputA . cloneNode ( ! 0 ) ; this . parcelInputB . style . marginLeft = "4%" ; b . appendChild ( this . parcelInputB ) ;
a . appendChild ( b ) ; b = document . createElement ( "button" ) ; b . setAttribute ( "type" , "button" ) ; b . addEventListener ( "click" , this . onParcelSearchClick . bind ( this ) ) ; b . className = "netgis-color-a netgis-hover-c" ; b . innerHTML = "Flurst\u00fccke suchen" ; b . style . marginTop = "4mm" ; a . appendChild ( b ) ; b = document . createElement ( "section" ) ; b . className = "netgis-hide" ; this . bottom = b ; this . container . appendChild ( b ) ; var c = document . createElement ( "button" ) ; c . className = "netgis-button netgis-clip-text netgis-color-c" ; c . innerHTML = "<span>Flurst\u00fccke</span> <span></span><i class='netgis-icon fas fa-times'></i>" ;
c . setAttribute ( "type" , "button" ) ; c . addEventListener ( "click" , this . onBottomHeaderClick . bind ( this ) ) ; b . appendChild ( c ) ; this . parcelCount = c . getElementsByTagName ( "span" ) [ 1 ] ; this . parcelInfo = document . createElement ( "p" ) ; this . parcelTable = this . createTable ( ";Flur;Z\u00e4hler;Nenner;FKZ;Fl\u00e4che (qm)" . split ( ";" ) ) ; this . parcelTable . classList . add ( "netgis-hide" ) ; this . parcelTable . style . position = "absolute" ; this . parcelTable . style . width = "100%" ; this . parcelTable . style . top = "12mm" ; this . parcelTable . style . bottom = "0mm" ; this . parcelTable . style . margin =
"0mm" ; this . parcelTable . style . overflow = "auto" ; b . appendChild ( this . parcelTable ) ; this . parcelList = this . parcelTable . getElementsByTagName ( "tbody" ) [ 0 ] ; this . parcelReset = document . createElement ( "button" ) ; this . parcelReset . setAttribute ( "type" , "button" ) ; this . parcelReset . addEventListener ( "click" , this . onResetClick . bind ( this ) ) ; this . parcelReset . className = "netgis-color-a netgis-hover-c" ; this . parcelReset . innerHTML = "Zur\u00fccksetzen" ; this . parcelReset . style . marginTop = "4mm" ; a . appendChild ( this . parcelReset ) } ;
netgis . SearchParcel . prototype . initEvents = function ( ) { this . resizeObserver = ( new ResizeObserver ( this . onTopResize . bind ( this ) ) ) . observe ( this . top ) } ;
netgis . SearchParcel . prototype . initConfig = function ( a ) { this . districtsLayer = a . searchparcel . districts _service ; this . districtsLayer . id = this . districtsLayerID ; this . districtsLayer . style = a . styles . parcel ; this . districtsLayer . order = 99999 ; a . layers . push ( this . districtsLayer ) ; this . fieldsLayer = { id : this . fieldsLayerID , type : netgis . LayerTypes . GEOJSON , style : a . styles . parcel , order : 99999 , data : null } ; a . layers . push ( this . fieldsLayer ) ; this . parcelsLayer = { id : this . parcelsLayerID , type : netgis . LayerTypes . WKT , style : a . styles . parcel , order : 99999 ,
data : null } ; a . layers . push ( this . parcelsLayer ) ; if ( ! 0 === a . searchparcel . open ) { var b = this ; window . setTimeout ( function ( ) { b . panel . show ( ) } , 100 ) } } ;
netgis . SearchParcel . prototype . attachTo = function ( a ) { this . panel . attachTo ( a ) ; a . addEventListener ( netgis . Events . CLIENT _SET _MODE , this . onClientSetMode . bind ( this ) ) ; a . addEventListener ( netgis . Events . SEARCHPARCEL _TOGGLE , this . onSearchParcelToggle . bind ( this ) ) ; a . addEventListener ( netgis . Events . LAYERTREE _TOGGLE , this . onLayerTreeToggle . bind ( this ) ) ; a . addEventListener ( netgis . Events . TOOLBOX _TOGGLE , this . onToolboxToggle . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _FEATURE _ENTER , this . onMapFeatureEnter . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _FEATURE _CLICK ,
this . onMapFeatureClick . bind ( this ) ) ; a . addEventListener ( netgis . Events . MAP _FEATURE _LEAVE , this . onMapFeatureLeave . bind ( this ) ) } ; netgis . SearchParcel . prototype . createInput = function ( a ) { var b = document . createElement ( "label" ) ; b . className = "netgis-hover-text-primary" ; b . innerHTML = a ; a = document . createElement ( "input" ) ; a . setAttribute ( "type" , "text" ) ; b . appendChild ( a ) ; return b } ;
netgis . SearchParcel . prototype . createNameItem = function ( a ) { var b = document . createElement ( "li" ) , c = document . createElement ( "button" ) ; c . setAttribute ( "type" , "button" ) ; c . addEventListener ( "click" , this . onNameItemClick . bind ( this ) ) ; c . className = "netgis-color-e netgis-hover-a netgis-text-a netgis-hover-text-e" ; c . innerHTML = a ; b . appendChild ( c ) ; return b } ;
netgis . SearchParcel . prototype . createTable = function ( a ) { var b = document . createElement ( "div" ) ; b . className = "netgis-table-wrapper" ; var c = document . createElement ( "table" ) ; b . appendChild ( c ) ; var d = document . createElement ( "thead" ) ; c . appendChild ( d ) ; var e = document . createElement ( "tr" ) ; e . className = "netgis-color-d netgis-shadow" ; d . appendChild ( e ) ; for ( d = 0 ; d < a . length ; d ++ ) { var f = document . createElement ( "th" ) ; f . innerHTML = a [ d ] ; e . appendChild ( f ) } a = document . createElement ( "tbody" ) ; c . appendChild ( a ) ; return b } ;
netgis . SearchParcel . prototype . createParcelItem = function ( a , b , c , d , e , f , g ) { var h = document . createElement ( "tr" ) ; h . className = "netgis-hover-d" ; h . setAttribute ( "title" , "Klicken zum zoomen" ) ; h . setAttribute ( "data-id" , d ) ; h . setAttribute ( "data-field" , a ) ; h . setAttribute ( "data-parcel-a" , b ) ; h . setAttribute ( "data-parcel-b" , c ) ; h . setAttribute ( "data-bbox" , f ) ; h . setAttribute ( "data-geom" , g ) ; h . addEventListener ( "pointerenter" , this . onParcelEnter . bind ( this ) ) ; h . addEventListener ( "pointerleave" , this . onParcelLeave . bind ( this ) ) ; h . addEventListener ( "click" ,
this . onParcelClick . bind ( this ) ) ; f = document . createElement ( "td" ) ; h . appendChild ( f ) ; g = document . createElement ( "button" ) ; g . setAttribute ( "type" , "button" ) ; g . setAttribute ( "title" , "Geometrie \u00fcbernehmen" ) ; g . addEventListener ( "click" , this . onParcelImportClick . bind ( this ) ) ; g . className = "netgis-hover-a" ; g . innerHTML = "<i class='fas fa-paste'></i>" ; f . appendChild ( g ) ; f = document . createElement ( "td" ) ; f . innerHTML = a ; h . appendChild ( f ) ; a = document . createElement ( "td" ) ; a . innerHTML = b ; h . appendChild ( a ) ; b = document . createElement ( "td" ) ;
b . innerHTML = c ; h . appendChild ( b ) ; c = document . createElement ( "td" ) ; c . innerHTML = netgis . util . trim ( d , "_" ) ; h . appendChild ( c ) ; d = document . createElement ( "td" ) ; d . innerHTML = e ; h . appendChild ( d ) ; return h } ;
netgis . SearchParcel . prototype . reset = function ( ) { this . hideBottom ( ) ; this . nameLoader . classList . add ( "netgis-hide" ) ; this . nameInput . value = "" ; this . districtInput . value = "" ; this . fieldInput . value = "" ; this . parcelInputA . value = "" ; this . parcelInputB . value = "" ; this . nameList . innerHTML = "" ; this . parcelInfo . innerHTML = "" ; this . parcelList . innerHTML = "" ; this . parcelTable . classList . add ( "netgis-hide" ) ; this . parcelReset . classList . add ( "netgis-hide" ) ; this . parcelCount . innerHTML = "" ; var a = this ; window . setTimeout ( function ( ) { a . top . scrollTop =
0 ; a . parcelTable . scrollTop = 0 } , 10 ) ; netgis . util . invoke ( this . container , netgis . Events . SEARCHPARCEL _RESET , null ) ; this . panel . visible ( ) && this . showDistricts ( ! 0 ) ; this . showFields ( ! 1 ) ; this . showParcels ( ! 1 ) } ;
netgis . SearchParcel . prototype . showDistricts = function ( a ) { a ? ( netgis . util . invoke ( this . container , netgis . Events . MAP _LAYER _TOGGLE , { id : this . districtsLayerID , on : ! 0 } ) , netgis . util . invoke ( this . container , netgis . Events . MAP _ZOOM _LEVEL , { z : this . config . searchparcel . districts _service . min _zoom } ) ) : netgis . util . invoke ( this . container , netgis . Events . MAP _LAYER _TOGGLE , { id : this . districtsLayerID , on : ! 1 } ) } ;
netgis . SearchParcel . prototype . showFields = function ( a , b ) { a ? ( b . crs = { type : "name" , properties : { name : "urn:ogc:def:crs:EPSG::25832" } } , this . fieldsLayer . data = b , netgis . util . invoke ( this . container , netgis . Events . MAP _LAYER _TOGGLE , { id : this . fieldsLayerID , on : ! 0 } ) , netgis . util . invoke ( this . container , netgis . Events . MAP _ZOOM _LAYER , { id : this . fieldsLayerID } ) ) : ( netgis . util . invoke ( this . container , netgis . Events . MAP _LAYER _TOGGLE , { id : this . fieldsLayerID , on : ! 1 } ) , this . fieldsLayer . data = null ) } ;
netgis . SearchParcel . prototype . showParcels = function ( a , b ) { if ( a ) { a = [ ] ; for ( var c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; a . push ( { id : d . fsk , geometry : d . geometry , properties : { flaeche : d . flaeche , fln : d . fln , fsk : d . fsk , fsn _nen : d . fsn _nen , fsn _zae : d . fsn _zae } } ) } this . parcelsLayer . data = a ; netgis . util . invoke ( this . container , netgis . Events . MAP _LAYER _TOGGLE , { id : this . parcelsLayerID , on : ! 0 } ) ; netgis . util . invoke ( this . container , netgis . Events . MAP _ZOOM _LAYER , { id : this . parcelsLayerID } ) } else netgis . util . invoke ( this . container , netgis . Events . MAP _LAYER _TOGGLE ,
{ id : this . parcelsLayerID , on : ! 1 } ) } ; netgis . SearchParcel . prototype . onSearchParcelToggle = function ( a ) { this . panel . toggle ( ) } ; netgis . SearchParcel . prototype . onLayerTreeToggle = function ( a ) { this . panel . hide ( ) } ; netgis . SearchParcel . prototype . onToolboxToggle = function ( a ) { this . panel . hide ( ) } ; netgis . SearchParcel . prototype . onClientSetMode = function ( a ) { a . detail . mode === netgis . Modes . SEARCH _PARCEL ? this . reset ( ) : ( this . showDistricts ( ! 1 ) , this . showFields ( ! 1 ) , this . showParcels ( ! 1 ) ) } ;
netgis . SearchParcel . prototype . onPanelToggle = function ( a ) { ! 1 === a . detail . visible ? netgis . util . invoke ( this . panel . container , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . VIEW } ) : netgis . util . invoke ( this . panel . container , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . SEARCH _PARCEL } ) } ; netgis . SearchParcel . prototype . onInputNameKey = function ( a ) { switch ( a . keyCode ) { case 13 : this . selectFirstName ( ) ; break ; case 27 : this . reset ( ) ; break ; default : this . requestName ( this . nameInput . value . trim ( ) ) } } ;
netgis . SearchParcel . prototype . requestName = function ( a ) { this . nameDebounce && window . clearTimeout ( this . nameDebounce ) ; if ( 0 !== a . length ) { var b = this . config . searchparcel . name _url ; b = netgis . util . replace ( b , "{q}" , window . encodeURIComponent ( a ) ) ; this . nameDebounce = window . setTimeout ( this . onInputNameDebounce . bind ( this , b ) , 200 ) ; this . nameLoader . classList . remove ( "netgis-hide" ) } } ; netgis . SearchParcel . prototype . onInputNameDebounce = function ( a ) { netgis . util . request ( a , this . onInputNameResponse . bind ( this ) ) } ;
netgis . SearchParcel . prototype . onInputNameResponse = function ( a ) { this . nameLoader . classList . add ( "netgis-hide" ) ; this . parcelReset . classList . remove ( "netgis-hide" ) ; this . nameList . innerHTML = "" ; if ( "{" === a . charAt ( 0 ) || "[" === a . charAt ( 0 ) ) { a = JSON . parse ( a ) ; for ( var b = 0 ; b < a . data . length ; b ++ ) { var c = a . data [ b ] , d = this . createNameItem ( c . gmk _name ) ; d . getElementsByTagName ( "button" ) [ 0 ] . setAttribute ( "data-id" , c . gmk _gmn ) ; this . nameList . appendChild ( d ) } } } ;
netgis . SearchParcel . prototype . onNameItemClick = function ( a ) { a = a . target ; var b = a . getAttribute ( "data-id" ) ; this . nameInput . value = a . innerHTML ; this . nameList . innerHTML = "" ; this . districtInput . value = b ; this . requestFields ( b ) } ;
netgis . SearchParcel . prototype . requestFields = function ( a ) { var b = this . config . searchparcel . fields _service , c = b . url ; c = c + "service=WFS&version=1.0.0&request=GetFeature&outputFormat=application/json; subtype=geojson&typename=" + b . name ; c = c + "&filter=<Filter><PropertyIsEqualTo><PropertyName>" + ( b . filter _property + "</PropertyName>" ) ; netgis . util . request ( c + ( "<Literal>" + a + "</Literal></PropertyIsEqualTo></Filter>" ) , this . onFieldsResponse . bind ( this ) ) } ;
netgis . SearchParcel . prototype . onFieldsResponse = function ( a ) { a = JSON . parse ( a ) ; this . showDistricts ( ! 1 ) ; this . showFields ( ! 0 , a ) ; this . showParcels ( ! 1 ) } ; netgis . SearchParcel . prototype . selectFirstName = function ( ) { var a = this . nameList . getElementsByTagName ( "button" ) ; 0 < a . length && a [ 0 ] . click ( ) } ; netgis . SearchParcel . prototype . setDistrict = function ( a , b ) { this . nameInput . value = a ; this . districtInput . value = b ; this . requestFields ( b ) } ; netgis . SearchParcel . prototype . setFieldNumber = function ( a ) { this . fieldInput . value = a ; this . onParcelSearchClick ( ) } ;
netgis . SearchParcel . prototype . setParcelNumber = function ( a , b ) { this . parcelInputA . value = a ; this . parcelInputB . value = b ; this . onParcelSearchClick ( ) } ; netgis . SearchParcel . prototype . showBottom = function ( ) { this . top . classList . add ( "netgis-resize-bottom" ) ; this . top . style . height = "50%" ; this . top . style . bottom = "auto" ; this . bottom . classList . remove ( "netgis-hide" ) } ; netgis . SearchParcel . prototype . hideBottom = function ( ) { this . top . classList . remove ( "netgis-resize-bottom" ) ; this . top . style . height = "auto" ; this . top . style . bottom = "0mm" ; this . bottom . classList . add ( "netgis-hide" ) } ;
netgis . SearchParcel . prototype . onInputFieldKey = function ( a ) { switch ( a . keyCode ) { case 13 : this . onParcelSearchClick ( ) } } ; netgis . SearchParcel . prototype . onParcelSearchClick = function ( a ) { this . requestParcels ( this . districtInput . value . trim ( ) , this . fieldInput . value . trim ( ) , this . parcelInputA . value . trim ( ) , this . parcelInputB . value . trim ( ) ) } ;
netgis . SearchParcel . prototype . requestParcels = function ( a , b , c , d ) { var e = this . config . searchparcel . parcel _url ; e = netgis . util . replace ( e , "{district}" , a ? a : "" ) ; e = netgis . util . replace ( e , "{field}" , b ? b : "" ) ; e = netgis . util . replace ( e , "{parcelA}" , c ? c : "" ) ; e = netgis . util . replace ( e , "{parcelB}" , d ? d : "" ) ; this . parcelTable . classList . add ( "netgis-hide" ) ; this . parcelList . innerHTML = "" ; this . parcelInfo . innerHTML = "Suche Flurst\u00fccke..." ; netgis . util . request ( e , this . onParcelsResponse . bind ( this ) ) } ;
netgis . SearchParcel . prototype . onParcelsResponse = function ( a ) { a = JSON . parse ( a ) ; this . parcelCount . innerHTML = "(" + a . count + ")" ; if ( 0 === a . count ) this . parcelInfo . innerHTML = a . Info ; else { for ( var b = 0 ; b < a . data . length ; b ++ ) { var c = a . data [ b ] ; c = this . createParcelItem ( c . fln , c . fsn _zae , c . fsn _nen , c . fsk , c . flaeche , c . bbox , c . geometry ) ; this . parcelList . appendChild ( c ) } this . parcelTable . classList . remove ( "netgis-hide" ) ; this . showBottom ( ) ; this . showDistricts ( ! 1 ) ; this . showFields ( ! 1 ) ; this . showParcels ( ! 0 , a . data ) } this . container . classList . contains ( "netgis-hide" ) ||
this . parcelTable . scrollIntoView ( ) } ; netgis . SearchParcel . prototype . onParcelEnter = function ( a ) { a = a . target ; var b = a . getAttribute ( "data-geom" ) ; a = { id : a . getAttribute ( "data-id" ) , field : a . getAttribute ( "data-field" ) , parcelA : a . getAttribute ( "data-parcel-a" ) , parcelB : a . getAttribute ( "data-parcel-b" ) , geom : b } ; netgis . util . invoke ( this . container , netgis . Events . SEARCHPARCEL _ITEM _ENTER , a ) } ; netgis . SearchParcel . prototype . onParcelLeave = function ( a ) { netgis . util . invoke ( this . container , netgis . Events . SEARCHPARCEL _ITEM _LEAVE , { id : a . target . getAttribute ( "data-id" ) } ) } ;
netgis . SearchParcel . prototype . onParcelClick = function ( a ) { netgis . util . invoke ( this . container , netgis . Events . SEARCHPARCEL _ITEM _CLICK , { id : a . currentTarget . getAttribute ( "data-id" ) } ) } ; netgis . SearchParcel . prototype . onParcelImportClick = function ( a ) { a . stopPropagation ( ) ; a = a . currentTarget . parentElement . parentElement ; var b = a . getAttribute ( "data-id" ) ; a . getAttribute ( "data-geom" ) ; netgis . util . invoke ( this . container , netgis . Events . MAP _COPY _FEATURE _TO _EDIT , { source : this . parcelsLayerID , id : b } ) } ;
netgis . SearchParcel . prototype . onResetClick = function ( a ) { this . reset ( ) } ; netgis . SearchParcel . prototype . onTopResize = function ( a ) { if ( ! this . bottom . classList . contains ( "netgis-hide" ) ) { a = this . top . getBoundingClientRect ( ) ; var b = this . top . parentNode . getBoundingClientRect ( ) ; this . bottom . style . top = a . bottom - b . top + "px" } } ; netgis . SearchParcel . prototype . onBottomHeaderClick = function ( a ) { this . reset ( ) } ;
netgis . SearchParcel . prototype . onMapFeatureEnter = function ( a ) { var b = a . target ; a = a . detail ; switch ( a . layer ) { case this . districtsLayerID : var c = a . properties . gemarkung ; b . setAttribute ( "title" , c ) ; break ; case this . fieldsLayerID : c = a . properties . flurname ; b . setAttribute ( "title" , c ) ; break ; case this . parcelsLayerID : for ( c = "Flur: " + a . properties . fln + " / Z\u00e4hler: " + a . properties . fsn _zae + " / Nenner: " + a . properties . fsn _nen , b . setAttribute ( "title" , c ) , b = a . properties . fsk , a = this . parcelList . getElementsByTagName ( "tr" ) , c = 0 ; c < a . length ; c ++ ) { var d =
a [ c ] ; if ( d . getAttribute ( "data-id" ) === b ) { d . scrollIntoView ( { behavior : "smooth" , block : "center" } ) ; d . classList . add ( "netgis-color-d" ) ; break } } } } ;
netgis . SearchParcel . prototype . onMapFeatureClick = function ( a ) { a = a . detail ; switch ( a . layer ) { case this . districtsLayerID : this . setDistrict ( a . properties . gemarkung + " (" + a . properties . ldkreis + ")" , a . properties . gmkgnr ) ; break ; case this . fieldsLayerID : this . setFieldNumber ( a . properties . flur ) ; break ; case this . parcelsLayerID : netgis . util . invoke ( this . container , netgis . Events . MAP _COPY _FEATURE _TO _EDIT , { source : this . parcelsLayerID , id : a . properties . fsk } ) } } ;
netgis . SearchParcel . prototype . onMapFeatureLeave = function ( a ) { var b = a . target ; a = a . detail ; switch ( a . layer ) { case this . districtsLayerID : case this . fieldsLayerID : b . setAttribute ( "title" , "" ) ; break ; case this . parcelsLayerID : b . setAttribute ( "title" , "" ) ; b = a . properties . fsk ; a = this . parcelList . getElementsByTagName ( "tr" ) ; for ( var c = 0 ; c < a . length ; c ++ ) { var d = a [ c ] ; if ( d . getAttribute ( "data-id" ) === b ) { d . classList . remove ( "netgis-color-d" ) ; break } } } } ; netgis = netgis || { } ; netgis . SearchPlace = function ( a ) { this . config = a ; this . initElements ( ) ; this . initEvents ( ) ; this . initConfig ( a ) } ;
netgis . SearchPlace . prototype . initElements = function ( ) { this . search = new netgis . Search ( "" ) ; this . container = this . search . container ; this . container . classList . add ( "netgis-search-place" , "netgis-responsive" ) ; this . search . container . addEventListener ( netgis . Events . SEARCH _CHANGE , this . onSearchChange . bind ( this ) ) ; this . search . container . addEventListener ( netgis . Events . SEARCH _SELECT , this . onSearchSelect . bind ( this ) ) ; this . search . container . addEventListener ( netgis . Events . SEARCH _CLEAR , this . onSearchClear . bind ( this ) ) } ;
netgis . SearchPlace . prototype . initEvents = function ( ) { } ; netgis . SearchPlace . prototype . initConfig = function ( a ) { this . search . setTitle ( a . searchplace . title ) } ; netgis . SearchPlace . prototype . attachTo = function ( a ) { this . search . attachTo ( a ) ; a . addEventListener ( netgis . Events . SEARCHPLACE _TOGGLE , this . onSearchPlaceToggle . bind ( this ) ) } ; netgis . SearchPlace . prototype . onSearchPlaceToggle = function ( a ) { this . search . toggle ( ) } ;
netgis . SearchPlace . prototype . onSearchChange = function ( a ) { var b = this . config . searchplace . url ; b = netgis . util . replace ( b , "{query}" , window . encodeURIComponent ( a . detail . query ) ) ; b = netgis . util . replace ( b , "{epsg}" , 4326 ) ; netgis . util . request ( b , this . onSearchResponse . bind ( this ) ) } ;
netgis . SearchPlace . prototype . onSearchResponse = function ( a ) { a = JSON . parse ( a ) ; this . search . clearResults ( ) ; if ( a . geonames ) { a = a . geonames ; for ( var b = 0 ; b < a . length ; b ++ ) { var c = a [ b ] , d = c . title , e = . 5 * ( Number . parseFloat ( c . minx ) + Number . parseFloat ( c . maxx ) ) , f = . 5 * ( Number . parseFloat ( c . miny ) + Number . parseFloat ( c . maxy ) ) ; c = { type : c . category , id : b , lon : e , lat : f } ; this . search . addResult ( d , JSON . stringify ( c ) ) } } else if ( a . data ) for ( a = a . data , b = 0 ; b < a . length ; b ++ ) c = a [ b ] , d = c . name , c = { type : "street" , id : c . strid , lon : Number . parseFloat ( c . wgs _x ) , lat : Number . parseFloat ( c . wgs _y ) } ,
this . search . addResult ( d , JSON . stringify ( c ) ) } ; netgis . SearchPlace . prototype . onSearchSelect = function ( a ) { a = JSON . parse ( a . detail . data ) ; netgis . util . invoke ( this . container , netgis . Events . MAP _ZOOM _LONLAT , { lon : a . lon , lat : a . lat , zoom : this . config . searchplace . zoom } ) ; if ( "street" === a . type ) { var b = this . config . searchplace . url _detail ; b && ( b = netgis . util . replace ( b , "{id}" , a . id ) , netgis . util . request ( b , this . onSearchDetailResponse . bind ( this ) ) ) } } ;
netgis . SearchPlace . prototype . onSearchDetailResponse = function ( a ) { a = JSON . parse ( a ) ; var b = a . hsnrarr ; if ( 0 !== b . length ) { this . search . clearResults ( ) ; for ( var c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] , e = a . strname + " " + d . hsnr ; d = { type : "address" , lon : Number . parseFloat ( d . wgs _x ) , lat : Number . parseFloat ( d . wgs _y ) } ; this . search . addResult ( e , JSON . stringify ( d ) ) } } } ; netgis . SearchPlace . prototype . onSearchClear = function ( a ) { } ; netgis = netgis || { } ;
2022-08-26 18:00:22 +02:00
netgis . SLD = function ( ) { return { read : function ( a , b ) { var c = { } ; a = ( new DOMParser ) . parseFromString ( a , "text/xml" ) . getElementsByTagName ( "NamedLayer" ) ; for ( var d = 0 ; d < a . length ; d ++ ) { var e = a [ d ] , f = e . getElementsByTagName ( "se:Name" ) [ 0 ] . innerHTML ; console . info ( "Layer:" , f ) ; e = e . getElementsByTagName ( "se:FeatureTypeStyle" ) ; for ( f = 0 ; f < e . length ; f ++ ) for ( var g = e [ f ] . getElementsByTagName ( "se:Rule" ) , h = 0 ; h < g . length ; h ++ ) { var k = g [ h ] , l = k . getElementsByTagName ( "se:Name" ) [ 0 ] . innerHTML ; console . info ( "Rule:" , l ) ; l = k . getElementsByTagName ( "se:PolygonSymbolizer" ) [ 0 ] ; k =
2024-10-24 15:10:58 +02:00
l . getElementsByTagName ( "se:Fill" ) [ 0 ] ; l = l . getElementsByTagName ( "se:Stroke" ) [ 0 ] ; c . polygon = { fill : k . querySelector ( "[name='fill']" ) . innerHTML , stroke : l . querySelector ( "[name='stroke']" ) . innerHTML , strokeWidth : Number . parseFloat ( l . querySelector ( "[name='stroke-width']" ) . innerHTML ) } } } console . info ( "SLD:" , c ) ; b . invoke ( netgis . Events . MAP _UPDATE _STYLE , c ) ; return c } } } ( ) ; netgis = netgis || { } ; netgis . Tabs = function ( a ) { this . initElements ( a ) ; this . setActiveTab ( 0 ) } ;
netgis . Tabs . prototype . initElements = function ( a ) { this . container = document . createElement ( "div" ) ; this . container . className = "netgis-tabs" ; this . header = document . createElement ( "div" ) ; this . header . className = "netgis-header netgis-color-d" ; this . container . appendChild ( this . header ) ; this . content = document . createElement ( "div" ) ; this . content . className = "netgis-content netgis-color-e" ; this . container . appendChild ( this . content ) ; for ( var b = 0 ; b < a . length ; b ++ ) { var c = document . createElement ( "button" ) ; c . setAttribute ( "type" , "button" ) ;
c . addEventListener ( "click" , this . onHeaderButtonClick . bind ( this ) ) ; c . className = "netgis-button netgis-color-d" ; c . innerHTML = a [ b ] ; this . header . appendChild ( c ) ; c = document . createElement ( "section" ) ; c . className = "netgis-color-e netgis-form" ; this . content . appendChild ( c ) } } ; netgis . Tabs . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) } ;
netgis . Tabs . prototype . setActiveTab = function ( a ) { for ( var b = this . header . getElementsByClassName ( "netgis-button" ) , c = this . content . getElementsByTagName ( "section" ) , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] , f = c [ d ] ; d === a ? ( e . classList . add ( "netgis-color-e" ) , e . classList . add ( "netgis-text-a" ) , e . classList . add ( "netgis-bar-a" ) , e . classList . add ( "netgis-active" ) , e . scrollIntoView ( { behavior : "smooth" } ) , f . classList . remove ( "netgis-hide" ) , f . scrollTop = 0 ) : ( e . classList . remove ( "netgis-color-e" ) , e . classList . remove ( "netgis-text-a" ) , e . classList . remove ( "netgis-bar-a" ) ,
e . classList . remove ( "netgis-active" ) , f . classList . add ( "netgis-hide" ) ) } } ; netgis . Tabs . prototype . getContentSection = function ( a ) { return this . content . getElementsByTagName ( "section" ) [ a ] } ; netgis . Tabs . prototype . appendContent = function ( a , b ) { this . content . getElementsByTagName ( "section" ) [ a ] . appendChild ( b ) } ;
netgis . Tabs . prototype . updateHeaderScroll = function ( ) { for ( var a = 0 , b = this . header . getElementsByTagName ( "button" ) , c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; a += d . getBoundingClientRect ( ) . width ; d . classList . contains ( "netgis-active" ) && d . scrollIntoView ( ) } b = this . header . getBoundingClientRect ( ) . width ; a > b ? this . container . classList . add ( "netgis-scroll" ) : this . container . classList . remove ( "netgis-scroll" ) } ;
netgis . Tabs . prototype . onHeaderButtonClick = function ( a ) { a = a . currentTarget ; for ( var b = this . header . getElementsByClassName ( "netgis-button" ) , c = 0 , d = 0 ; d < b . length ; d ++ ) if ( b [ d ] === a ) { c = d ; break } this . setActiveTab ( c ) } ; netgis = netgis || { } ; netgis . TimeSlider = function ( a ) { this . config = a ; this . insertTop = ! 0 ; this . initElements ( ) ; for ( a = 1900 ; 2E3 >= a ; a ++ ) ; console . info ( "TimeSlider:" , this ) ; var b = this ; window . setTimeout ( function ( ) { b . container . scrollLeft = 0 } , 1 ) } ;
netgis . TimeSlider . prototype . initElements = function ( ) { this . container = document . createElement ( "section" ) ; this . container . className = "netgis-timeslider netgis-footer netgis-noselect netgis-color-e netgis-hide" ; document . addEventListener ( "pointermove" , this . onPointerMove . bind ( this ) ) ; document . addEventListener ( "pointerup" , this . onPointerUp . bind ( this ) ) ; this . header = document . createElement ( "button" ) ; this . header . className = "netgis-header netgis-button netgis-clip-text netgis-color-a netgis-hover-c netgis-shadow" ; this . header . innerHTML =
"<i class='netgis-icon fas fa-clock'></i><span>TimeSlider</span><i class='netgis-icon fas fa-times'></i>" ; this . header . setAttribute ( "type" , "button" ) ; this . header . addEventListener ( "click" , this . onHeaderClick . bind ( this ) ) ; this . container . appendChild ( this . header ) ; this . wrapper = document . createElement ( "div" ) ; this . wrapper . className = "netgis-wrapper" ; this . wrapper . addEventListener ( "pointerdown" , this . onPointerDown . bind ( this ) ) ; this . container . appendChild ( this . wrapper ) ; this . table = document . createElement ( "table" ) ; this . wrapper . appendChild ( this . table ) ;
this . top = document . createElement ( "tr" ) ; this . table . appendChild ( this . top ) ; this . bottom = document . createElement ( "tr" ) } ; netgis . TimeSlider . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) ; a . addEventListener ( netgis . Events . TIMESLIDER _SHOW , this . onTimeSliderShow . bind ( this ) ) ; a . addEventListener ( netgis . Events . TIMESLIDER _HIDE , this . onTimeSliderHide . bind ( this ) ) } ;
netgis . TimeSlider . prototype . setVisible = function ( a ) { a ? ( this . container . classList . remove ( "netgis-hide" ) , this . container . parentNode . classList . add ( "netgis-footer" ) ) : ( this . container . classList . add ( "netgis-hide" ) , this . container . parentNode . classList . remove ( "netgis-footer" ) ) } ; netgis . TimeSlider . prototype . setTitle = function ( a ) { this . header . getElementsByTagName ( "span" ) [ 0 ] . innerHTML = a } ; netgis . TimeSlider . prototype . clearTimeSteps = function ( ) { this . top . innerHTML = "" } ;
netgis . TimeSlider . prototype . addTimeStep = function ( a , b ) { var c = document . createElement ( "td" ) ; c . setAttribute ( "data-id" , a ) ; a = document . createElement ( "button" ) ; a . className = "netgis-button netgis-color-e netgis-hover-d" ; a . innerHTML = "<i class='netgis-icon netgis-text-a far fa-calendar'></i><span>" + b + "</span>" ; a . setAttribute ( "type" , "button" ) ; a . addEventListener ( "click" , this . onTimeStepClick . bind ( this ) ) ; c . appendChild ( a ) ; this . top . appendChild ( c ) } ;
netgis . TimeSlider . prototype . addTimeStep _01 = function ( a , b ) { a = document . createElement ( "td" ) ; var c = document . createElement ( "td" ) ; this . insertTop ? a . innerHTML = b : c . innerHTML = b ; this . top . appendChild ( a ) ; this . bottom . appendChild ( c ) ; this . insertTop = ! this . insertTop } ;
netgis . TimeSlider . prototype . setActiveTimeStep = function ( a ) { var b = this . top . getElementsByTagName ( "td" ) , c = b [ a ] , d = c . getAttribute ( "data-id" ) ; console . info ( "Set Active Step:" , a , d ) ; for ( var e = 0 ; e < b . length ; e ++ ) { var f = b [ e ] , g = f . getElementsByClassName ( "netgis-icon" ) [ 0 ] ; e === a ? ( f . classList . add ( "netgis-active" ) , g . classList . remove ( "fa-calendar" ) , g . classList . add ( "fa-calendar-check" ) ) : ( f . classList . remove ( "netgis-active" ) , g . classList . add ( "fa-calendar" ) , g . classList . remove ( "fa-calendar-check" ) ) } c . scrollIntoView ( ) ; netgis . util . invoke ( c ,
netgis . Events . TIMESLIDER _SELECT , { layer : this . layerID , time : d } ) } ; netgis . TimeSlider . prototype . requestServiceWMST = function ( a , b ) { a = a . trim ( ) ; 1 > a . length || ( - 1 === a . indexOf ( "GetCapabilities" ) && ( a += "&REQUEST=GetCapabilities" ) , netgis . util . request ( a , this . onServiceResponseWMST . bind ( this ) , { id : b } ) ) } ;
netgis . TimeSlider . prototype . onServiceResponseWMST = function ( a , b ) { for ( var c = ( new DOMParser ) . parseFromString ( a , "text/xml" ) . documentElement . getElementsByTagName ( "Layer" ) , d , e = 0 ; e < c . length ; e ++ ) { a = c [ e ] ; var f = a . getElementsByTagName ( "Name" ) [ 0 ] . textContent ; if ( f === b . id ) { d = { name : f , title : a . getElementsByTagName ( "Title" ) [ 0 ] . textContent , abstract : a . getElementsByTagName ( "Abstract" ) [ 0 ] . textContent , queryable : "1" === a . getAttribute ( "queryable" ) , opaque : "1" === a . getAttribute ( "opaque" ) } ; e = a . getElementsByTagName ( "SRS" ) ; 0 < e . length &&
( d . projection = e [ 0 ] . textContent ) ; e = a . getElementsByTagName ( "CRS" ) ; 0 < e . length && ( d . projection = e [ 0 ] . textContent ) ; e = a . getElementsByTagName ( "BoundingBox" ) [ 0 ] ; d . bbox = [ Number . parseFloat ( e . getAttribute ( "minx" ) ) , Number . parseFloat ( e . getAttribute ( "miny" ) ) , Number . parseFloat ( e . getAttribute ( "maxx" ) ) , Number . parseFloat ( e . getAttribute ( "maxy" ) ) ] ; b = a . getElementsByTagName ( "Dimension" ) ; for ( e = 0 ; e < b . length ; e ++ ) if ( c = b [ e ] , "time" === c . getAttribute ( "name" ) ) { var g = { defaultTime : c . getAttribute ( "default" ) , extent : c . textContent . split ( "/" ) } ;
break } a = a . getElementsByTagName ( "Extent" ) ; for ( e = 0 ; e < a . length ; e ++ ) if ( b = a [ e ] , "time" === b . getAttribute ( "name" ) ) { g . defaultTime = b . getAttribute ( "default" ) ; g . extent = b . textContent . split ( "/" ) ; break } d . time = g ; break } } console . info ( "WMST Layer:" , d ) ; this . setTitle ( d . title ) ; if ( d . time . extent ) { g = new Date ( d . time . extent [ 0 ] ) ; a = new Date ( d . time . extent [ 1 ] ) ; b = d . time . extent [ 2 ] ; d = [ ] ; switch ( b ) { case "P1D" : for ( ; g <= a ; ) d . push ( new Date ( g ) ) , g . setDate ( g . getDate ( ) + 1 ) ; break ; default : console . error ( "unsupported WMST date range" , b , g , a ) } for ( e =
0 ; e < d . length ; e ++ ) b = d [ e ] , a = g = b . toISOString ( ) , a = a . replace ( "T" , ", " ) , a = a . replace ( "Z" , "" ) , this . addTimeStep ( g , a ) ; this . setActiveTimeStep ( d . length - 1 ) } } ; netgis . TimeSlider . prototype . onTimeSliderShow = function ( a ) { a = a . detail ; console . info ( "TimeSlider Show:" , a ) ; this . layerID = a . layer ; this . setTitle ( a . title ) ; this . clearTimeSteps ( ) ; this . requestServiceWMST ( a . url , a . name ) ; this . setVisible ( ! 0 ) } ; netgis . TimeSlider . prototype . onTimeSliderHide = function ( a ) { this . setVisible ( ! 1 ) } ; netgis . TimeSlider . prototype . onHeaderClick = function ( a ) { this . setVisible ( ! 1 ) } ;
netgis . TimeSlider . prototype . onPointerDown = function ( a ) { a = a . pageX - this . wrapper . offsetLeft ; this . down = ! 0 ; this . downX = a ; this . downScroll = this . wrapper . scrollLeft ; this . container . classList . add ( "netgis-active" ) } ; netgis . TimeSlider . prototype . onPointerMove = function ( a ) { this . down && ( a . preventDefault ( ) , this . wrapper . scrollLeft = this . downScroll - ( a . pageX - this . wrapper . offsetLeft - this . downX ) ) } ; netgis . TimeSlider . prototype . onPointerUp = function ( a ) { this . down && a . preventDefault ( ) ; this . down = ! 1 ; this . container . classList . remove ( "netgis-active" ) } ;
netgis . TimeSlider . prototype . onTimeStepClick = function ( a ) { a = a . currentTarget . parentNode ; a . getAttribute ( "data-id" ) ; if ( ! ( 5 < Math . abs ( this . wrapper . scrollLeft - this . downScroll ) ) ) { for ( var b = this . top . getElementsByTagName ( "td" ) , c = - 1 , d = 0 ; d < b . length ; d ++ ) if ( b [ d ] === a ) { c = d ; break } this . setActiveTimeStep ( c ) } } ; netgis = netgis || { } ; netgis . Toolbox = function ( a ) { this . config = a ; this . bottomPanels = { } ; this . initElements ( a ) ; this . initOptions ( a ) ; this . initEvents ( ) } ;
netgis . Toolbox . prototype . initElements = function ( a ) { this . panel = new netgis . Panel ( "Toolbox" ) ; this . panel . content . classList . add ( "netgis-toolbox" ) ; this . top = document . createElement ( "section" ) ; this . panel . content . appendChild ( this . top ) ; for ( var b = a . toolbox . items , c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; if ( ! 1 === this . config . tools . editable ) switch ( d . id ) { case "draw_points" : continue ; case "draw_lines" : continue ; case "draw_polygons" : continue ; case "modify_features" : continue ; case "delete_features" : continue ; case "buffer_features" : continue ;
case "cut_features" : continue } this . addButton ( this . top , d . id , d . title ) } this . bottom = document . createElement ( "section" ) ; this . bottom . className = "netgis-color-e netgis-hide" ; this . panel . content . appendChild ( this . bottom ) ; b = document . createElement ( "button" ) ; b . className = "netgis-button netgis-clip-text netgis-color-c" ; b . innerHTML = "<span>Einstellungen</span><i class='netgis-icon fas fa-times'></i>" ; b . setAttribute ( "type" , "button" ) ; b . addEventListener ( "click" , this . onBottomHeaderClick . bind ( this ) ) ; this . bottom . appendChild ( b ) ;
this . bottomTitle = b . getElementsByTagName ( "span" ) [ 0 ] ; a . toolbox && ! 0 === a . toolbox . open && this . panel . show ( ) } ;
2024-10-31 14:46:27 +01:00
netgis . Toolbox . prototype . initOptions = function ( a ) { var b = a . toolbox . options ; if ( b ) for ( var c in b ) ; b = a . tools ; a = [ ] ; b . buffer || ( b . buffer = { } ) ; this . bottomPanels . drawPoints = document . createElement ( "div" ) ; a . push ( this . addCheckbox ( this . bottomPanels . drawPoints , "Einrasten" , this . onDrawSnapToggle . bind ( this ) ) ) ; this . addCheckbox ( this . bottomPanels . drawPoints , "Puffern" , this . onDrawBufferToggle . bind ( this ) ) ; this . addInputNumber ( this . bottomPanels . drawPoints , "Radius (Meter):" , b . buffer . default _radius , this . onDrawBufferChange . bind ( this ) ) ;
this . addInputNumber ( this . bottomPanels . drawPoints , "Segmente:" , b . buffer . default _segments , this . onDrawBufferChange . bind ( this ) ) ; this . bottom . appendChild ( this . bottomPanels . drawPoints ) ; this . bottomPanels . drawLines = document . createElement ( "div" ) ; a . push ( this . addCheckbox ( this . bottomPanels . drawLines , "Einrasten" , this . onDrawSnapToggle . bind ( this ) ) ) ; this . addCheckbox ( this . bottomPanels . drawLines , "Puffern" , this . onDrawBufferToggle . bind ( this ) ) ; this . addInputNumber ( this . bottomPanels . drawLines , "Radius (Meter):" , b . buffer . default _radius ,
this . onDrawBufferChange . bind ( this ) ) ; this . addInputNumber ( this . bottomPanels . drawLines , "Segmente:" , b . buffer . default _segments , this . onDrawBufferChange . bind ( this ) ) ; this . bottom . appendChild ( this . bottomPanels . drawLines ) ; this . showDrawBufferOptions ( ! 1 ) ; this . bottomPanels . drawPolygons = document . createElement ( "div" ) ; a . push ( this . addCheckbox ( this . bottomPanels . drawPolygons , "Einrasten" , this . onDrawSnapToggle . bind ( this ) ) ) ; this . bottom . appendChild ( this . bottomPanels . drawPolygons ) ; this . bottomPanels . bufferFeatures = document . createElement ( "div" ) ;
this . addInputNumber ( this . bottomPanels . bufferFeatures , "Radius (Meter):" , b . buffer . default _radius , this . onBufferFeaturesChange . bind ( this ) ) ; this . addInputNumber ( this . bottomPanels . bufferFeatures , "Segmente:" , b . buffer . default _segments , this . onBufferFeaturesChange . bind ( this ) ) ; this . addButton ( this . bottomPanels . bufferFeatures , null , "<i class='netgis-icon netgis-text-a fas fa-arrow-circle-right'></i><span>Akzeptieren</span>" , this . onBufferFeaturesAccept . bind ( this ) ) ; this . bottom . appendChild ( this . bottomPanels . bufferFeatures ) ;
this . bottomPanels . modifyFeatures = document . createElement ( "div" ) ; a . push ( this . addCheckbox ( this . bottomPanels . modifyFeatures , "Einrasten" , this . onDrawSnapToggle . bind ( this ) ) ) ; this . bottom . appendChild ( this . bottomPanels . modifyFeatures ) ; if ( this . config . tools && this . config . tools . snapping ) { if ( ! 1 === this . config . tools . snapping . show ) for ( b = 0 ; b < a . length ; b ++ ) a [ b ] . parentNode . classList . add ( "netgis-hide" ) ; if ( ! 0 === this . config . tools . snapping . active ) { for ( b = 0 ; b < a . length ; b ++ ) a [ b ] . checked = ! 0 ; var d = this ; window . setTimeout ( function ( ) { netgis . util . invoke ( d . panel . container ,
netgis . Events . MAP _SNAP _TOGGLE , { on : ! 0 } ) } , 100 ) } } } ; netgis . Toolbox . prototype . initEvents = function ( ) { this . resizeObserver = ( new ResizeObserver ( this . onTopResize . bind ( this ) ) ) . observe ( this . top ) } ;
2024-10-24 15:10:58 +02:00
netgis . Toolbox . prototype . attachTo = function ( a ) { a . appendChild ( this . panel . container ) ; a . addEventListener ( netgis . Events . CLIENT _SET _MODE , this . onClientSetMode . bind ( this ) ) ; a . addEventListener ( netgis . Events . TOOLBOX _TOGGLE , this . onToolboxToggle . bind ( this ) ) ; a . addEventListener ( netgis . Events . LAYERTREE _TOGGLE , this . onLayerTreeToggle . bind ( this ) ) ; a . addEventListener ( netgis . Events . SEARCHPARCEL _TOGGLE , this . onSearchParcelToggle . bind ( this ) ) } ;
netgis . Toolbox . prototype . addButton = function ( a , b , c , d ) { var e = document . createElement ( "button" ) ; e . className = "netgis-button netgis-clip-text netgis-color-e netgis-hover-d" ; e . innerHTML = c ; e . setAttribute ( "type" , "button" ) ; e . setAttribute ( "data-id" , b ) ; d ? e . onclick = d : e . addEventListener ( "click" , this . onButtonClick . bind ( this ) ) ; a && a . appendChild ( e ) ; return e } ;
netgis . Toolbox . prototype . addCheckbox = function ( a , b , c ) { var d = document . createElement ( "label" ) ; d . className = "netgis-noselect netgis-hover-a" ; var e = document . createElement ( "input" ) ; e . setAttribute ( "type" , "checkbox" ) ; d . appendChild ( e ) ; var f = document . createElement ( "span" ) ; f . innerHTML = b ; d . appendChild ( f ) ; c && ( e . onchange = c ) ; a && a . appendChild ( d ) ; return e } ;
netgis . Toolbox . prototype . addInputNumber = function ( a , b , c , d ) { var e = document . createElement ( "label" ) ; e . className = "netgis-noselect netgis-hover-a" ; var f = document . createElement ( "span" ) ; f . innerHTML = b ; e . appendChild ( f ) ; b = document . createElement ( "input" ) ; b . setAttribute ( "type" , "number" ) ; b . setAttribute ( "min" , 0 ) ; b . value = c ; e . appendChild ( b ) ; d && ( b . onchange = d , b . onkeyup = d ) ; a && a . appendChild ( e ) ; return b } ;
netgis . Toolbox . prototype . showBottom = function ( a , b ) { this . top . classList . add ( "netgis-resize-bottom" ) ; this . top . style . height = "50%" ; this . top . style . bottom = "auto" ; this . bottom . classList . remove ( "netgis-hide" ) ; this . bottomTitle . innerHTML = b ; if ( a ) for ( var c in this . bottomPanels ) b = this . bottomPanels [ c ] , b === a ? b . classList . remove ( "netgis-hide" ) : b . classList . add ( "netgis-hide" ) } ;
netgis . Toolbox . prototype . hideBottom = function ( ) { this . top . classList . remove ( "netgis-resize-bottom" ) ; this . top . style . height = "auto" ; this . top . style . bottom = "0mm" ; this . bottom . classList . add ( "netgis-hide" ) } ;
netgis . Toolbox . prototype . showDrawBufferOptions = function ( a ) { var b = this . bottomPanels . drawPoints . getElementsByTagName ( "label" ) , c = this . bottomPanels . drawLines . getElementsByTagName ( "label" ) ; b [ 1 ] . getElementsByTagName ( "input" ) [ 0 ] . checked = a ; ( c [ 1 ] . getElementsByTagName ( "input" ) [ 0 ] . checked = a ) ? ( b [ 2 ] . classList . remove ( "netgis-hide" ) , b [ 3 ] . classList . remove ( "netgis-hide" ) , c [ 2 ] . classList . remove ( "netgis-hide" ) , c [ 3 ] . classList . remove ( "netgis-hide" ) ) : ( b [ 2 ] . classList . add ( "netgis-hide" ) , b [ 3 ] . classList . add ( "netgis-hide" ) ,
c [ 2 ] . classList . add ( "netgis-hide" ) , c [ 3 ] . classList . add ( "netgis-hide" ) ) } ; netgis . Toolbox . prototype . setActiveButton = function ( a ) { for ( var b = this . top . getElementsByTagName ( "button" ) , c = null , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] ; e . getAttribute ( "data-id" ) === a ? ( c = e , e . classList . add ( "netgis-active" ) ) : e . classList . remove ( "netgis-active" ) } if ( c ) { var f = this ; window . setTimeout ( function ( ) { f . top . scrollTo ( { top : c . offsetTop , behavior : "smooth" } ) } , 10 ) } } ; netgis . Toolbox . prototype . onToolboxToggle = function ( a ) { this . panel . toggle ( ) } ;
netgis . Toolbox . prototype . onLayerTreeToggle = function ( a ) { this . panel . hide ( ) } ; netgis . Toolbox . prototype . onSearchParcelToggle = function ( a ) { this . panel . hide ( ) } ;
netgis . Toolbox . prototype . onClientSetMode = function ( a ) { a = a . detail ; this . hideBottom ( ) ; switch ( a . mode ) { default : this . setActiveButton ( null ) ; break ; case netgis . Modes . VIEW : this . setActiveButton ( netgis . Commands . VIEW ) ; break ; case netgis . Modes . ZOOM _BOX : this . setActiveButton ( netgis . Commands . ZOOM _BOX ) ; break ; case netgis . Modes . MEASURE _LINE : this . setActiveButton ( netgis . Commands . MEASURE _LINE ) ; break ; case netgis . Modes . MEASURE _AREA : this . setActiveButton ( netgis . Commands . MEASURE _AREA ) ; break ; case netgis . Modes . DRAW _POINTS : this . setActiveButton ( netgis . Commands . DRAW _POINTS ) ;
this . showBottom ( this . bottomPanels . drawPoints , "Punkte zeichnen" ) ; break ; case netgis . Modes . DRAW _LINES : this . setActiveButton ( netgis . Commands . DRAW _LINES ) ; this . showBottom ( this . bottomPanels . drawLines , "Linien zeichnen" ) ; break ; case netgis . Modes . DRAW _POLYGONS : this . setActiveButton ( netgis . Commands . DRAW _POLYGONS ) ; this . showBottom ( this . bottomPanels . drawPolygons , "Polygone zeichnen" ) ; break ; case netgis . Modes . MODIFY _FEATURES : this . setActiveButton ( netgis . Commands . MODIFY _FEATURES ) ; this . showBottom ( this . bottomPanels . modifyFeatures ,
"Verschieben" ) ; break ; case netgis . Modes . DELETE _FEATURES : this . setActiveButton ( netgis . Commands . DELETE _FEATURES ) ; break ; case netgis . Modes . BUFFER _FEATURES : this . setActiveButton ( netgis . Commands . BUFFER _FEATURES ) ; this . showBottom ( this . bottomPanels . bufferFeatures , "Puffern" ) ; break ; case netgis . Modes . BUFFER _FEATURES _EDIT : this . setActiveButton ( netgis . Commands . BUFFER _FEATURES ) ; this . showBottom ( this . bottomPanels . bufferFeatures , "Puffern" ) ; this . onBufferFeaturesChange ( ) ; break ; case netgis . Modes . CUT _FEATURES : case netgis . Modes . CUT _FEATURE _DRAW : this . setActiveButton ( netgis . Commands . CUT _FEATURES ) } } ;
netgis . Toolbox . prototype . onTopResize = function ( a ) { if ( ! this . bottom . classList . contains ( "netgis-hide" ) ) { a = this . top . getBoundingClientRect ( ) ; var b = this . top . parentNode . getBoundingClientRect ( ) ; this . bottom . style . top = a . bottom - b . top + "px" } } ; netgis . Toolbox . prototype . onBottomHeaderClick = function ( a ) { netgis . util . invoke ( this . panel . container , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . VIEW } ) } ;
netgis . Toolbox . prototype . onButtonClick = function ( a ) { a = a . currentTarget ; var b = a . getAttribute ( "data-id" ) ; netgis . util . invoke ( a , netgis . Events . TOOLBOX _BUTTON _CLICK , { id : b } ) ; netgis . Client . handleCommand ( a , b ) } ;
netgis . Toolbox . prototype . onDrawSnapToggle = function ( a ) { var b = a . currentTarget , c = b . parentNode . parentNode ; a = b . checked ; netgis . util . invoke ( b , netgis . Events . MAP _SNAP _TOGGLE , { on : a } ) ; b = [ ] ; c === this . bottomPanels . drawPoints && ( b . push ( this . bottomPanels . drawLines ) , b . push ( this . bottomPanels . drawPolygons ) , b . push ( this . bottomPanels . modifyFeatures ) ) ; c === this . bottomPanels . drawLines && ( b . push ( this . bottomPanels . drawPoints ) , b . push ( this . bottomPanels . drawPolygons ) , b . push ( this . bottomPanels . modifyFeatures ) ) ; c === this . bottomPanels . drawPolygons &&
( b . push ( this . bottomPanels . drawPoints ) , b . push ( this . bottomPanels . drawLines ) , b . push ( this . bottomPanels . modifyFeatures ) ) ; c === this . bottomPanels . modifyFeatures && ( b . push ( this . bottomPanels . drawPoints ) , b . push ( this . bottomPanels . drawLines ) , b . push ( this . bottomPanels . drawPolygons ) ) ; for ( c = 0 ; c < b . length ; c ++ ) b [ c ] . getElementsByTagName ( "input" ) [ 0 ] . checked = a } ;
netgis . Toolbox . prototype . onDrawBufferToggle = function ( a ) { a = a . currentTarget ; var b = a . checked ; this . showDrawBufferOptions ( b ) ; var c = this . bottomPanels . drawPoints . getElementsByTagName ( "input" ) , d = Number . parseFloat ( c [ 2 ] . value ) ; c = Number . parseInt ( c [ 3 ] . value ) ; netgis . util . invoke ( a , netgis . Events . DRAW _BUFFER _TOGGLE , { on : b , radius : d , segments : c } ) } ;
netgis . Toolbox . prototype . onDrawBufferChange = function ( a ) { a = a . currentTarget . parentNode . parentNode ; var b = a . getElementsByTagName ( "input" ) , c = b [ 1 ] . checked , d = Number . parseFloat ( b [ 2 ] . value ) , e = Number . parseInt ( b [ 3 ] . value ) ; netgis . util . invoke ( this . bottomPanels . drawPoints , netgis . Events . DRAW _BUFFER _CHANGE , { on : c , radius : d , segments : e } ) ; if ( a === this . bottomPanels . drawPoints ) var f = this . bottomPanels . drawLines ; a === this . bottomPanels . drawLines && ( f = this . bottomPanels . drawPoints ) ; f && ( b = f . getElementsByTagName ( "input" ) , b [ 1 ] . checked =
c , b [ 2 ] . value = d , b [ 3 ] . value = e ) } ; netgis . Toolbox . prototype . onBufferFeaturesChange = function ( a ) { var b = this . bottomPanels . bufferFeatures . getElementsByTagName ( "input" ) ; a = Number . parseFloat ( b [ 0 ] . value ) ; b = Number . parseInt ( b [ 1 ] . value ) ; netgis . util . invoke ( this . bottomPanels . bufferFeatures , netgis . Events . BUFFER _CHANGE , { radius : a , segments : b } ) } ;
netgis . Toolbox . prototype . onBufferFeaturesAccept = function ( a ) { var b = this . bottomPanels . bufferFeatures . getElementsByTagName ( "input" ) ; a = Number . parseFloat ( b [ 0 ] . value ) ; b = Number . parseInt ( b [ 1 ] . value ) ; netgis . util . invoke ( this . bottomPanels . bufferFeatures , netgis . Events . BUFFER _ACCEPT , { radius : a , segments : b } ) ; netgis . util . invoke ( this . bottomPanels . bufferFeatures , netgis . Events . CLIENT _SET _MODE , { mode : netgis . Modes . VIEW } ) } ; netgis = netgis || { } ; netgis . Tree = function ( ) { this . initElements ( ) } ; netgis . Tree . prototype . initElements = function ( ) { var a = document . createElement ( "ul" ) ; a . className = "netgis-tree" ; this . container = a } ; netgis . Tree . prototype . attachTo = function ( a ) { a . appendChild ( this . container ) } ; netgis . Tree . prototype . clear = function ( ) { this . container . innerHTML = "" } ;
netgis . Tree . prototype . addFolder = function ( a , b , c , d , e ) { var f = document . createElement ( "li" ) ; f . className = "netgis-folder" ; f . setAttribute ( "data-id" , b ) ; b = document . createElement ( "details" ) ; f . appendChild ( b ) ; var g = document . createElement ( "summary" ) ; g . className = "netgis-button netgis-noselect netgis-clip-text netgis-color-e netgis-hover-d" ; g . innerHTML = "<i class='netgis-icon netgis-hide-open fas fa-folder'></i><i class='netgis-icon netgis-show-open fas fa-folder-open'></i><span>" + c + "</span>" ; b . appendChild ( g ) ; c = document . createElement ( "label" ) ;
g . appendChild ( c ) ; g = document . createElement ( "input" ) ; g . setAttribute ( "type" , "checkbox" ) ; g . onchange = this . onFolderChange . bind ( this ) ; c . appendChild ( g ) ; ! 0 === e && f . classList . add ( "netgis-nocheck" ) ; e = document . createElement ( "ul" ) ; b . appendChild ( e ) ; a = a ? a . getElementsByTagName ( "ul" ) [ 0 ] : this . container ; d ? a . insertBefore ( f , a . firstChild ) : a . appendChild ( f ) ; return f } ;
netgis . Tree . prototype . addCheckbox = function ( a , b , c , d , e , f ) { var g = document . createElement ( "li" ) ; g . className = "netgis-item" ; var h = document . createElement ( "label" ) ; h . className = "netgis-button netgis-noselect netgis-clip-text netgis-color-e netgis-hover-d" ; h . innerHTML = "<span>" + c + "</span>" ; g . appendChild ( h ) ; c = document . createElement ( "input" ) ; c . setAttribute ( "type" , "checkbox" ) ; c . setAttribute ( "data-id" , b ) ; d && ( c . checked = d ) ; c . onchange = this . onItemChange . bind ( this ) ; h . insertBefore ( c , h . firstChild ) ; f && this . addItemDetails ( g ,
b , f ) ; a = a ? a . getElementsByTagName ( "ul" ) [ 0 ] : this . container ; e ? a . insertBefore ( g , a . firstChild ) : a . appendChild ( g ) ; return g } ;
netgis . Tree . prototype . addRadioButton = function ( a , b , c , d , e ) { var f = document . createElement ( "li" ) ; f . className = "netgis-item" ; var g = document . createElement ( "label" ) ; g . className = "netgis-button netgis-noselect netgis-clip-text netgis-color-e netgis-hover-d" ; g . innerHTML = "<span>" + c + "</span>" ; f . appendChild ( g ) ; c = a ? "radio-" + a . getAttribute ( "data-id" ) : "radio-noname" ; var h = document . createElement ( "input" ) ; h . setAttribute ( "type" , "radio" ) ; h . setAttribute ( "name" , c ) ; h . setAttribute ( "value" , "radio-" + b ) ; h . setAttribute ( "data-id" ,
b ) ; d && ( h . checked = d ) ; h . onchange = this . onItemChange . bind ( this ) ; g . insertBefore ( h , g . firstChild ) ; e && this . addItemDetails ( f , b , e ) ; a ? a . getElementsByTagName ( "ul" ) [ 0 ] . appendChild ( f ) : this . container . appendChild ( f ) ; return f } ;
netgis . Tree . prototype . addButton = function ( a , b , c , d ) { var e = document . createElement ( "li" ) , f = document . createElement ( "button" ) ; f . innerHTML = c ; f . className = "netgis-button netgis-color-e netgis-hover-d netgis-clip-text" ; f . setAttribute ( "type" , "button" ) ; e . appendChild ( f ) ; b && f . setAttribute ( "data-id" , b ) ; d && ( f . onclick = d ) ; f . addEventListener ( "click" , this . onButtonClick . bind ( this ) ) ; a ? a . getElementsByTagName ( "ul" ) [ 0 ] . appendChild ( e ) : this . container . appendChild ( e ) ; return e } ;
netgis . Tree . prototype . addSpace = function ( a ) { var b = document . createElement ( "li" ) ; b . className = "netgis-space" ; a ? a . getElementsByTagName ( "ul" ) [ 0 ] . appendChild ( b ) : this . container . appendChild ( b ) ; return b } ;
netgis . Tree . prototype . addItemDetails = function ( a , b , c ) { var d = document . createElement ( "details" ) ; d . className = "netgis-noselect" ; var e = document . createElement ( "summary" ) ; e . className = "netgis-clickable netgis-hover-d" ; e . innerHTML = "<i class='fas fa-angle-down'></i>" ; d . appendChild ( e ) ; e = document . createElement ( "div" ) ; d . appendChild ( e ) ; for ( var f = 0 ; f < c . length ; f ++ ) { var g = c [ f ] , h = document . createElement ( "label" ) ; e . className = "netgis-hover-d" ; switch ( g . type ) { case "slider" : var k = document . createElement ( "span" ) ; k . className =
"netgis-clip-text" ; k . innerHTML = g . title ; h . appendChild ( k ) ; k = document . createElement ( "span" ) ; h . appendChild ( k ) ; var l = document . createElement ( "input" ) ; l . setAttribute ( "type" , "range" ) ; l . setAttribute ( "min" , 0 ) ; l . setAttribute ( "max" , 100 ) ; l . setAttribute ( "step" , 1 ) ; l . setAttribute ( "value" , g . val ) ; l . setAttribute ( "data-id" , b ) ; l . addEventListener ( "change" , this . onItemSliderChange . bind ( this ) ) ; l . addEventListener ( "input" , this . onItemSliderChange . bind ( this ) ) ; k . appendChild ( l ) } e . appendChild ( h ) } a . appendChild ( d ) } ;
netgis . Tree . prototype . getFolder = function ( a ) { for ( var b = this . container . getElementsByClassName ( "netgis-folder" ) , c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; if ( d . getAttribute ( "data-id" ) === a ) return d } return null } ; netgis . Tree . prototype . getItem = function ( a ) { for ( var b = this . container . getElementsByTagName ( "input" ) , c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; if ( d . getAttribute ( "data-id" ) === a ) return d } return null } ;
netgis . Tree . prototype . setFolderOpen = function ( a , b ) { var c = this . container . getElementsByClassName ( "netgis-folder" ) ; a = a . toString ( ) ; for ( var d = 0 ; d < c . length ; d ++ ) { var e = c [ d ] , f = e . getElementsByTagName ( "details" ) [ 0 ] ; e . getAttribute ( "data-id" ) === a && ( ! 0 === b ? f . setAttribute ( "open" , "" ) : f . removeAttribute ( "open" ) ) } } ;
netgis . Tree . prototype . setItemChecked = function ( a , b , c ) { var d = this . container . getElementsByClassName ( "netgis-item" ) ; a = a . toString ( ) ; for ( var e = 0 ; e < d . length ; e ++ ) { var f = d [ e ] , g = f . getElementsByTagName ( "input" ) [ 0 ] ; if ( g . getAttribute ( "data-id" ) === a ) { if ( "radio" === g . getAttribute ( "type" ) ) { f = f . parentNode . getElementsByTagName ( "input" ) ; for ( var h = 0 ; h < f . length ; h ++ ) { var k = f [ h ] ; k !== g && "radio" === k . getAttribute ( "type" ) && ! 1 !== k . checked && ( k . checked = ! 1 , netgis . util . invoke ( g , netgis . Events . TREE _ITEM _CHANGE , { id : k . getAttribute ( "data-id" ) ,
checked : ! 1 } ) ) } } c ? g . checked = b : g . checked !== b && g . click ( ) } } } ; netgis . Tree . prototype . setFolderParent = function ( a , b ) { var c = a . parentNode ; c && c . removeChild ( a ) ; null !== b ? b . getElementsByTagName ( "ul" ) [ 0 ] . appendChild ( a ) : this . container . appendChild ( a ) } ; netgis . Tree . prototype . updateFolderChecks = function ( ) { for ( var a = this . container . getElementsByClassName ( "netgis-folder" ) , b = 0 ; b < a . length ; b ++ ) this . updateFolderCheck ( a [ b ] ) } ;
netgis . Tree . prototype . updateFolderCheck = function ( a ) { a || ( a = this . container ) ; for ( var b = a . getElementsByClassName ( "netgis-item" ) , c = 0 , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] . getElementsByTagName ( "input" ) [ 0 ] ; e . checked && c ++ } e = a . getElementsByTagName ( "input" ) [ 0 ] ; d = 0 ; 0 < c && ( d = 1 ) ; c === b . length && ( d = 2 ) ; switch ( d ) { case 0 : e . checked = ! 1 ; e . classList . remove ( "netgis-partial" ) ; break ; case 1 : e . checked = ! 0 ; e . classList . add ( "netgis-partial" ) ; break ; case 2 : e . checked = ! 0 , e . classList . remove ( "netgis-partial" ) } ( a = a . parentElement ) && a !== this . container &&
( a = a . parentElement . parentElement ) && - 1 !== a . className . search ( "netgis-folder" ) && this . updateFolderCheck ( a ) } ; netgis . Tree . prototype . onFolderChange = function ( a ) { var b = a . currentTarget ; a = b . checked ; b = b . parentElement . parentElement . parentElement . parentElement ; for ( var c = b . getElementsByTagName ( "input" ) , d = 1 ; d < c . length ; d ++ ) { var e = c [ d ] ; e . checked !== a && e . click ( ) } this . updateFolderCheck ( b ) ; a = b . parentElement . parentElement . parentElement ; - 1 !== a . className . search ( "netgis-folder" ) && this . updateFolderCheck ( a ) } ;
netgis . Tree . prototype . onItemChange = function ( a ) { a = a . currentTarget ; var b = a . checked , c = a . getAttribute ( "data-id" ) , d = a . parentElement . parentElement . parentElement . parentElement . parentElement ; if ( "radio" === a . getAttribute ( "type" ) ) for ( var e = a . parentNode . parentNode . parentNode . parentNode . getElementsByTagName ( "input" ) , f = 0 ; f < e . length ; f ++ ) { var g = e [ f ] . getAttribute ( "data-id" ) ; g && g !== c && netgis . util . invoke ( a , netgis . Events . TREE _ITEM _CHANGE , { id : g , checked : ! 1 } ) } netgis . util . invoke ( a , netgis . Events . TREE _ITEM _CHANGE , { id : c , checked : b } ) ;
- 1 !== d . className . search ( "netgis-folder" ) && this . updateFolderCheck ( d ) } ; netgis . Tree . prototype . onRadioChange = function ( a ) { a = a . currentTarget ; var b = a . checked , c = a . getAttribute ( "data-id" ) , d = Number . parseInt ( c ) ; Number . isNaN ( d ) || ( c = d ) ; d = a . parentElement . parentElement . parentElement . parentElement . parentElement ; netgis . util . invoke ( a , netgis . Events . TREE _ITEM _CHANGE , { id : c , checked : b } ) ; - 1 !== d . className . search ( "netgis-folder" ) && this . updateFolderCheck ( d ) } ;
netgis . Tree . prototype . onButtonClick = function ( a ) { a = a . currentTarget ; var b = a . getAttribute ( "data-id" ) ; netgis . util . invoke ( a , netgis . Events . TREE _BUTTON _CLICK , { id : b } ) } ; netgis . Tree . prototype . onItemSliderChange = function ( a ) { a = a . currentTarget ; var b = a . getAttribute ( "data-id" ) ; netgis . util . invoke ( a , netgis . Events . TREE _ITEM _SLIDER _CHANGE , { id : b , val : Number . parseFloat ( a . value ) } ) } ; netgis = netgis || { } ;
2024-10-31 14:46:27 +01:00
netgis . util = function ( ) { var a = function ( a , b ) { for ( var c in a ) a . hasOwnProperty ( c ) && b ( c , a [ c ] ) } , b = function ( ) { return navigator . language || "de-DE" } ; return { isDefined : function ( a ) { return "undefined" !== typeof a } , isObject : function ( a ) { return "object" !== typeof a || Array . isArray ( a ) || null === a ? ! 1 : ! 0 } , isString : function ( a ) { return "string" === typeof a || a instanceof String } , isMobile : function ( a ) { return a ? 600 > a . getBoundingClientRect ( ) . width : 600 > document . body . getBoundingClientRect ( ) . width } , clone : function ( a ) { return JSON . parse ( JSON . stringify ( a ) ) } , stringToID : function ( a ,
b ) { b || ( b = "-" ) ; a = a . trim ( ) ; a = a . toLowerCase ( ) ; a = this . replace ( a , " " , b ) ; a = this . replace ( a , "\n" , b ) ; a = this . replace ( a , "\t" , b ) ; a = this . replace ( a , "\\." , b ) ; a = this . replace ( a , "\\," , b ) ; a = this . replace ( a , "\\!" , b ) ; a = this . replace ( a , "\\?" , b ) ; a = this . replace ( a , ":" , b ) ; a = this . replace ( a , ";" , b ) ; a = this . replace ( a , '"' , b ) ; a = this . replace ( a , "'" , b ) ; a = this . replace ( a , "\\\u00a7" , b ) ; a = this . replace ( a , "\\$" , b ) ; a = this . replace ( a , "\\%" , b ) ; a = this . replace ( a , "\\&" , b ) ; a = this . replace ( a , "\\/" , b ) ; a = this . replace ( a , "\\\\" , b ) ; a = this . replace ( a , "\\(" ,
b ) ; a = this . replace ( a , "\\)" , b ) ; a = this . replace ( a , "\\{" , b ) ; a = this . replace ( a , "\\}" , b ) ; a = this . replace ( a , "\\[" , b ) ; a = this . replace ( a , "\\]" , b ) ; a = this . replace ( a , "=" , b ) ; a = this . replace ( a , "\\+" , b ) ; a = this . replace ( a , "\\*" , b ) ; a = this . replace ( a , "\\~" , b ) ; a = this . replace ( a , "\\^" , b ) ; a = this . replace ( a , "\\\u00b0" , b ) ; a = this . replace ( a , "\u00b2" , b ) ; a = this . replace ( a , "\u00b3" , b ) ; a = this . replace ( a , "\\#" , b ) ; a = this . replace ( a , "\\<" , b ) ; a = this . replace ( a , "\\>" , b ) ; a = this . replace ( a , "\\|" , b ) ; a = this . replace ( a , "\\@" , b ) ; a = this . replace ( a , "\u20ac" ,
b ) ; a = this . replace ( a , "\u00b5" , b ) ; a = this . trim ( a , b ) ; a = this . replace ( a , "\u00e4" , "ae" ) ; a = this . replace ( a , "\u00f6" , "oe" ) ; a = this . replace ( a , "\u00fc" , "ue" ) ; a = this . replace ( a , "\u00df" , "ss" ) ; a = this . replace ( a , "\u00e1" , "a" ) ; a = this . replace ( a , "\u00e0" , "a" ) ; a = this . replace ( a , "\u00e2" , "a" ) ; a = this . replace ( a , "\u00e9" , "e" ) ; a = this . replace ( a , "\u00e8" , "e" ) ; a = this . replace ( a , "\u00ea" , "e" ) ; a = this . replace ( a , "\u00ed" , "i" ) ; a = this . replace ( a , "\u00ec" , "i" ) ; a = this . replace ( a , "\u00ee" , "i" ) ; a = this . replace ( a , "\u00f3" , "o" ) ; a = this . replace ( a ,
"\u00f2" , "o" ) ; a = this . replace ( a , "\u00f4" , "o" ) ; a = this . replace ( a , "\u00fa" , "u" ) ; a = this . replace ( a , "\u00f9" , "u" ) ; return a = this . replace ( a , "\u00fb" , "u" ) } , replace : function ( a , b , e ) { return a . replace ( new RegExp ( b , "g" ) , e ) } , trim : function ( a , b ) { a = a . replace ( new RegExp ( "^" + b + "+" ) , "" ) ; return a = a . replace ( new RegExp ( b + "+$" ) , "" ) } , foreach : a , template : function ( b , d ) { a ( d , function ( a , c ) { b = b . replace ( new RegExp ( "{" + a + "}" , "g" ) , c ) } ) ; return b } , newlines : function ( a ) { return a . replace ( /\n/g , "<br />" ) } , create : function ( a ) { var b = document . createElement ( "tbody" ) ;
b . innerHTML = a ; return b . children [ 0 ] } , size : function ( a ) { a = ( new TextEncoder ) . encode ( JSON . stringify ( a ) ) . length ; var b = a / 1024 ; return { bytes : a , kilobytes : b , megabytes : b / 1024 } } , request : function ( a , b , e ) { var c = new XMLHttpRequest ; e && ( c . _requestData = e ) ; c . onload = function ( ) { b ( this . responseText , this . _requestData , this ) } ; c . withCredentials = ! 1 ; c . open ( "GET" , a , ! 0 ) ; c . send ( ) ; return c } , downloadJSON : function ( a , b ) { a = "data:text/json;charset=utf-8," + encodeURIComponent ( JSON . stringify ( a ) ) ; var c = document . createElement ( "a" ) ; c . setAttribute ( "href" ,
a ) ; c . setAttribute ( "download" , b ) ; document . body . appendChild ( c ) ; c . click ( ) ; c . remove ( ) } , padstr : function ( a , b ) { for ( a = a . toString ( ) ; a . length < b ; ) a = "0" + a ; return a } , merge : function ( a , b ) { return Object . assign ( a , b ) } , getTimeStamp : function ( a ) { var b = new Date ; if ( ! 0 === a ) { a = b . getFullYear ( ) ; var c = b . getMonth ( ) + 1 , f = b . getDate ( ) , g = b . getHours ( ) , h = b . getMinutes ( ) ; b = b . getSeconds ( ) ; 10 > c && ( c = "0" + c ) ; 10 > f && ( f = "0" + f ) ; 10 > g && ( g = "0" + g ) ; 10 > h && ( h = "0" + h ) ; 10 > b && ( b = "0" + b ) ; a = [ a , c , f , "_" , g , h , b ] . join ( "" ) } else a = b . getDate ( ) + "." + ( b . getMonth ( ) + 1 ) +
"." + b . getFullYear ( ) , a += " " + b . getHours ( ) + ":" + b . getMinutes ( ) ; return a } , getUserLanguage : b , getFileExtension : function ( a ) { a = a . split ( "." ) ; return 1 >= a . length ? "" : a [ a . length - 1 ] } , formatDistance : function ( a ) { return 100 < a ? Math . round ( a / 1E3 * 100 ) / 100 + " km" : Math . round ( 100 * a ) / 100 + " m" } , formatLength : function ( a , b ) { var c = 1E3 < a ; a = c ? b ? Math . round ( a / 1E3 * 1E3 ) / 1E3 : Math . round ( a / 1E3 ) : b ? Math . round ( 100 * a ) / 100 : Math . round ( a ) ; 0 === a && ( c = ! 1 ) ; return a + ( c ? " km" : " m" ) } , formatArea : function ( a , d , e , f ) { a = ( e = a > ( e || 1E5 ) ) ? d ? Math . round ( a / 1E6 * 1E3 ) /
1E3 : Math . round ( a / 1E6 ) : d ? Math . round ( 100 * a ) / 100 : Math . round ( a ) ; 0 === a && ( e = ! 1 ) ; a = a . toLocaleString ( b ( ) ) ; return a + ( e ? " km\u00b2" : " m\u00b2" ) } , invoke : function ( a , b , e ) { a . dispatchEvent ( new CustomEvent ( b , { bubbles : ! 0 , detail : e } ) ) } , handler : function ( a , b ) { return function ( c ) { b || ( b = c ) ; netgis . util . invoke ( this , a , b ) } } } } ( ) ; netgis = netgis || { } ; netgis . WMC = function ( ) { } ; netgis . WMC . prototype . requestContext = function ( a , b ) { this . callback = b ; netgis . util . request ( a , this . onContextResponse . bind ( this ) ) } ; netgis . WMC . prototype . onContextResponse = function ( a ) { a = JSON . parse ( a ) ; this . fromJSON ( a ) } ; netgis . WMC . prototype . requestLayers = function ( a ) { a = "./proxy.php?https://www.geoportal.rlp.de/mapbender/php/mod_callMetadata.php?languageCode=de&resultTarget=web&maxResults=40&resourceIds=" + a . join ( "," ) ; netgis . util . request ( a , this . onLayersResponse . bind ( this ) ) } ;
2024-10-24 15:10:58 +02:00
netgis . WMC . prototype . onLayersResponse = function ( a ) { a = JSON . parse ( a ) . wms . srv ; this . services = [ ] ; for ( var b = 0 ; b < a . length ; b ++ ) { var c = a [ b ] , d = { id : c . id , title : c . title , url : c . getMapUrl } ; d . layers = this . parseLayers ( c . layer ) ; this . services . push ( d ) } var e = this . layers ; this . services . sort ( function ( a , b ) { a = Number . parseInt ( a . layers [ 0 ] . id ) ; b = Number . parseInt ( b . layers [ 0 ] . id ) ; for ( var c = null , d = null , f = 0 ; f < e . length ; f ++ ) e [ f ] . id === a && ( c = f ) , e [ f ] . id === b && ( d = f ) ; return c < d ? - 1 : c > d ? 1 : 0 } ) ; this . callback && this . callback ( { config : this . toConfig ( ) } ) } ;
netgis . WMC . prototype . parseLayers = function ( a ) { var b = [ ] ; if ( a ) for ( var c = 0 ; c < a . length ; c ++ ) { var d = a [ c ] , e = { id : d . id , title : d . title , name : d . name , legendURL : d . getLegendGraphicUrl , legendFormat : d . getLegendGraphicUrlFormat , queryable : d . layerQueryable | d . queryable , bbox : d . bbox } ; e . layers = this . parseLayers ( d . layer ) ; b . push ( e ) } this . sortLayers ( b ) ; return b } ;
netgis . WMC . prototype . sortLayers = function ( a ) { var b = this . layers ; a . sort ( function ( a , d ) { var c = null , f = null ; a = Number . parseInt ( a . id ) ; d = Number . parseInt ( d . id ) ; for ( var g = 0 ; g < b . length ; g ++ ) b [ g ] . id === a && ( c = b [ g ] . pos ) , b [ g ] . id === d && ( f = b [ g ] . pos ) ; return c < f ? 1 : c > f ? - 1 : 0 } ) } ;
netgis . WMC . prototype . fromJSON = function ( a ) { var b = a . wmc ; this . id = b . id ; this . title = b . title ; this . crs = b . crs ; var c = b . bbox ; c = c . split ( "," ) ; for ( b = 0 ; b < c . length ; b ++ ) c [ b ] = Number . parseFloat ( c [ b ] ) ; this . bbox = c ; this . layers = [ ] ; c = [ ] ; a = a . layerList ; for ( b = 0 ; b < a . length ; b ++ ) { var d = a [ b ] ; this . layers . push ( { id : d . layerId , active : d . active , opacity : d . opacity , pos : d . layerPos } ) ; c . push ( d . layerId ) } this . requestLayers ( c ) } ;
netgis . WMC . prototype . toConfig = function ( ) { for ( var a = { map : { attribution : this . title + ", GeoPortal RLP" , projection : this . crs , bbox : this . bbox } } , b = [ ] , c = [ ] , d = this . layers . length , e = 0 ; e < this . services . length ; e ++ ) { var f = this . services [ e ] , g = f . layers [ 0 ] , h = { id : g . id , title : g . title , parent : - 1 } ; b . unshift ( h ) ; h = h . id ; for ( var k = 0 ; k < g . layers . length ; k ++ ) { for ( var l = g . layers [ k ] , m = null , n = 0 ; n < this . layers . length ; n ++ ) if ( this . layers [ n ] . id === Number . parseInt ( l . id ) ) { m = this . layers [ n ] ; break } c . push ( { id : l . id , title : l . title , folder : h , active : m . active ,
type : "WMS" , url : f . url , name : l . name , order : d } ) ; -- d } } a . folders = b ; a . layers = c ; return a } ; netgis = netgis || { } ; netgis . WMC = function ( ) { } ; netgis . WMC . prototype . requestContext = function ( a , b ) { this . callback = b ; netgis . util . request ( a , this . onContextResponse . bind ( this ) ) } ; netgis . WMC . prototype . onContextResponse = function ( a ) { a = JSON . parse ( a ) ; console . info ( "Context Response:" , a ) ; this . fromJSON ( a ) } ;
netgis . WMC . prototype . requestLayers = function ( a ) { a = "./proxy.php?https://www.geoportal.rlp.de/mapbender/php/mod_callMetadata.php?languageCode=de&resultTarget=web&maxResults=40&resourceIds=" + a . join ( "," ) ; netgis . util . request ( a , this . onLayersResponse . bind ( this ) ) } ;
netgis . WMC . prototype . onLayersResponse = function ( a ) { a = JSON . parse ( a ) ; console . info ( "Layers Response:" , a ) ; a = a . wms . srv ; this . services = [ ] ; for ( var b = 0 ; b < a . length ; b ++ ) { var c = a [ b ] , d = { id : c . id , title : c . title , url : c . getMapUrl } ; d . layers = this . parseLayers ( c . layer ) ; this . services . push ( d ) } var e = this . layers ; this . services . sort ( function ( a , b ) { a = Number . parseInt ( a . layers [ 0 ] . id ) ; b = Number . parseInt ( b . layers [ 0 ] . id ) ; for ( var c = null , d = null , f = 0 ; f < e . length ; f ++ ) e [ f ] . id === a && ( c = f ) , e [ f ] . id === b && ( d = f ) ; return c < d ? - 1 : c > d ? 1 : 0 } ) ; this . callback &&
this . callback ( { config : this . toConfig ( ) } ) } ; netgis . WMC . prototype . parseLayers = function ( a ) { var b = [ ] ; if ( a ) for ( var c = 0 ; c < a . length ; c ++ ) { var d = a [ c ] , e = { id : d . id , title : d . title , name : d . name , legendURL : d . getLegendGraphicUrl , legendFormat : d . getLegendGraphicUrlFormat , queryable : d . layerQueryable | d . queryable , bbox : d . bbox } ; e . layers = this . parseLayers ( d . layer ) ; b . push ( e ) } this . sortLayers ( b ) ; return b } ;
netgis . WMC . prototype . sortLayers = function ( a ) { var b = this . layers ; a . sort ( function ( a , d ) { var c = null , f = null ; a = Number . parseInt ( a . id ) ; d = Number . parseInt ( d . id ) ; for ( var g = 0 ; g < b . length ; g ++ ) b [ g ] . id === a && ( c = b [ g ] . pos ) , b [ g ] . id === d && ( f = b [ g ] . pos ) ; return c < f ? 1 : c > f ? - 1 : 0 } ) } ;
netgis . WMC . prototype . fromJSON = function ( a ) { var b = a . wmc ; this . id = b . id ; this . title = b . title ; this . crs = b . crs ; var c = b . bbox ; c = c . split ( "," ) ; for ( b = 0 ; b < c . length ; b ++ ) c [ b ] = Number . parseFloat ( c [ b ] ) ; this . bbox = c ; this . layers = [ ] ; c = [ ] ; a = a . layerList ; for ( b = 0 ; b < a . length ; b ++ ) { var d = a [ b ] ; this . layers . push ( { id : d . layerId , active : d . active , opacity : d . opacity , pos : d . layerPos } ) ; c . push ( d . layerId ) } this . requestLayers ( c ) ; console . info ( "WMC Layers:" , this . layers ) } ;
netgis . WMC . prototype . toConfig = function ( ) { for ( var a = { title : "<b>GeoPortal</b>" , modules : { search _parcel : ! 1 } , map : { attribution : this . title + ", GeoPortal RLP" , projection : this . crs , bbox : this . bbox , scalebar : ! 0 } , search : { url : "./proxy.php?https://www.geoportal.rlp.de/mapbender/geoportal/gaz_geom_mobile.php?outputFormat=json&resultTarget=web&searchEPSG={epsg}&maxResults=5&maxRows=5&featureClass=P&style=full&searchText={q}&name_startsWith={q}" } } , b = [ ] , c = [ ] , d = this . layers . length , e = 0 ; e < this . services . length ; e ++ ) { var f =
this . services [ e ] , g = f . layers [ 0 ] ; b . push ( { id : g . id , title : g . title , parent : - 1 } ) ; for ( var h = b . length - 1 , k = 0 ; k < g . layers . length ; k ++ ) { for ( var l = g . layers [ k ] , m = null , n = 0 ; n < this . layers . length ; n ++ ) if ( this . layers [ n ] . id === Number . parseInt ( l . id ) ) { m = this . layers [ n ] ; break } c . push ( { id : l . id , title : l . title , folder : h , active : m . active , type : "WMS" , url : f . url , name : l . name , order : d } ) ; -- d } } a . folders = b ; a . layers = c ; return a } ;