2023-11-21 09:01:59 +01: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 ) ;
2023-10-16 13:27:27 +02:00
$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" ) ;
2023-01-31 16:26:59 +01:00
$jscomp . polyfill ( "Array.prototype.fill" , function ( a ) { return a ? a : function ( a , c , d ) { var b = this . length || 0 ; 0 > c && ( c = Math . max ( 0 , b + c ) ) ; if ( null == d || d > b ) d = b ; d = Number ( d ) ; 0 > d && ( d = Math . max ( 0 , b + d ) ) ; for ( c = Number ( c || 0 ) ; c < d ; c ++ ) this [ c ] = a ; return this } } , "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 } ( ) ;
$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" ) ;
2023-10-16 13:27:27 +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 || { } ;
2023-01-31 16:26:59 +01:00
netgis . Attribution = function ( ) { this . layers = this . client = null ; this . items = [ ] } ;
2022-09-12 13:12:59 +02:00
netgis . Attribution . prototype . load = function ( ) { this . root = document . createElement ( "section" ) ; this . root . className = "netgis-attribution netgis-text-primary" ; netgis . util . isDefined ( this . client . config . map ) && netgis . util . isDefined ( this . client . config . map . attribution ) && this . items . push ( this . client . config . map . attribution ) ; this . update ( ) ; this . client . root . appendChild ( this . root ) ; this . client . on ( netgis . Events . CONTEXT _UPDATE , this . onContextUpdate . bind ( this ) ) ; this . client . on ( netgis . Events . LAYER _SHOW , this . onLayerShow . bind ( this ) ) ;
2023-10-16 13:27:27 +02:00
this . client . on ( netgis . Events . LAYER _HIDE , this . onLayerHide . bind ( this ) ) ; this . client . on ( netgis . Events . EDIT _FEATURES _CHANGE , this . onEditFeaturesChange . bind ( this ) ) } ; netgis . Attribution . prototype . update = function ( ) { var a = "© " + this . items . join ( ", " ) ; this . appendix && ( a += ", " + this . appendix ) ; this . root . innerHTML = a } ;
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 ( ) } } ;
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 . onEditFeaturesChange = function ( a ) { 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 . area && 0 < a . area ? "<b>Zeichnungsfl\u00e4che: " + netgis . util . formatArea ( a . area , ! 0 ) + "</b>" : null ; this . update ( ) } ; netgis = netgis || { } ;
2023-11-21 09:01:59 +01:00
netgis . Client = function ( a , b ) { this . build = "20220826" ; this . debug = ! 1 ; netgis . util . isString ( a ) && ( a = document . getElementById ( a ) ) ; this . container = a ; this . editable = ! 0 ; this . root = null ; this . modules = [ ] ; this . callbacks = { } ; this . config = this . createDefaultConfig ( ) ; this . create ( ) ; if ( netgis . util . isDefined ( b ) ) if ( netgis . util . isString ( b ) ) { var c = this ; netgis . util . request ( b , function ( a ) { a = JSON . parse ( a ) ; netgis . util . merge ( c . config , a ) ; c . applyConfig ( c . config ) } ) } else netgis . util . merge ( this . config , b ) , this . applyConfig ( this . config ) ; else this . applyConfig ( this . config ) ;
this . hideLoader ( ) } ; netgis . Client . Layers = Object . freeze ( { PARCEL _DISTRICTS : "parcel-districts" , PARCEL _FIELDS : "parcel-fields" , PARCEL _FEATURES : "parcel-features" , EDIT _LAYER : "edit-layer" , PREVIEW _LAYER : "preview-layer" } ) ; netgis . Client . prototype . applyConfig = function ( a ) { this . createModules ( ) ; this . load ( ) ; this . invoke ( netgis . Events . CONTEXT _UPDATE , a ) ; this . initModules ( a ) ; this . initConfig ( a ) ; this . initOutput ( a ) ; this . initEvents ( ) ; this . importLayers = { } ; this . setMode ( netgis . Modes . VIEW ) } ;
netgis . Client . prototype . initElements = function ( ) { } ;
2023-10-16 13:27:27 +02:00
netgis . Client . prototype . initModules = function ( a ) { this . map = new netgis . MapOpenLayers ( a ) ; this . map . attach ( this . root ) ; this . controls = new netgis . Controls ; this . controls . attach ( this . root ) ; this . layerPanel = new netgis . Panel ( "Inhalte" ) ; this . layerPanel . attach ( this . root ) ; this . layerTree = new netgis . Tree ; this . layerTree . container . style . position = "absolute" ; this . layerTree . container . style . width = "100%" ; this . layerTree . container . style . top = "12mm" ; this . layerTree . container . style . bottom = "6mm" ; this . layerTree . container . style . overflow =
2023-11-21 09:01:59 +01:00
"auto" ; this . layerTree . attach ( this . layerPanel . container ) ; this . toolboxPanel = new netgis . Panel ( "Werkzeuge" ) ; this . toolboxPanel . attach ( this . root ) ; this . toolbox = new netgis . Toolbox ( a ) ; this . toolbox . attach ( this . toolboxPanel . container ) ; this . searchPlace = new netgis . SearchPlace ( a ) ; this . searchPlace . attach ( this . root ) ; this . parcelPanel = new netgis . Panel ( "Flurst\u00fccks-Suche" ) ; this . parcelPanel . container . style . minWidth = "92mm" ; this . parcelPanel . attach ( this . root ) ; this . searchParcel = new netgis . SearchParcel ( a ) ; this . searchParcel . attach ( this . parcelPanel . container ) ;
this . importModal = new netgis . Modal ( "Ebene hinzuf\u00fcgen" ) ; this . importModal . container . classList . add ( "netgis-import" ) ; this . importModal . attach ( this . root ) ; this . importTabs = new netgis . Tabs ( [ "Datei" , "Dienst" ] ) ; this . importTabs . attach ( this . importModal . content ) ; a = this . importTabs . getContentSection ( 0 ) ; a . classList . add ( "netgis-noselect" ) ; var b = document . createElement ( "div" ) ; b . innerHTML = "<h3>Unterst\u00fctzte Koordinatensysteme:</h3><ul><li>World Geodetic System 1984 (EPSG:4326)</li><li>ETRS89 / UTM zone 32N (EPSG:25832)</li></ul>" ;
a . appendChild ( b ) ; b = document . createElement ( "label" ) ; b . innerHTML = "Datei ausw\u00e4hlen/ablegen:" ; a . appendChild ( b ) ; var c = document . createElement ( "input" ) ; c . className = "netgis-color-d" ; c . setAttribute ( "type" , "file" ) ; c . setAttribute ( "accept" , ".geojson,.gml,.gpkg,.shp.zip,.sqlite" ) ; b . appendChild ( c ) ; this . importFileInput = c ; b = document . createElement ( "button" ) ; b . setAttribute ( "type" , "button" ) ; b . className = "netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow" ; b . innerHTML = "<i class='netgis-icon fas fa-check'></i><span>Hinzuf\u00fcgen</span>" ;
b . addEventListener ( "click" , this . onImportFileClick . bind ( this ) ) ; a . appendChild ( b ) ; b = this . importTabs . getContentSection ( 1 ) ; b . classList . add ( "netgis-noselect" ) ; a = document . createElement ( "label" ) ; a . innerHTML = "WMS/WFS URL:" ; b . appendChild ( a ) ; c = document . createElement ( "input" ) ; c . setAttribute ( "type" , "text" ) ; a . appendChild ( c ) ; this . importServiceInput = c ; a = document . createElement ( "button" ) ; a . setAttribute ( "type" , "button" ) ; a . className = "netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow" ; a . innerHTML =
"<i class='netgis-icon fas fa-cloud-download-alt'></i><span>Dienst laden</span>" ; a . style . marginBottom = "6mm" ; a . addEventListener ( "click" , this . onImportServiceClick . bind ( this ) ) ; b . appendChild ( a ) ; a = document . createElement ( "div" ) ; a . className = "netgis-hide" ; b . appendChild ( a ) ; this . importServiceDetails = a ; b = document . createElement ( "label" ) ; b . innerHTML = "Bezeichnung:" ; a . appendChild ( b ) ; c = document . createElement ( "input" ) ; c . setAttribute ( "type" , "text" ) ; b . appendChild ( c ) ; this . importServiceNameInput = c ; b = document . createElement ( "label" ) ;
b . innerHTML = "Kartenebene:" ; a . appendChild ( b ) ; c = document . createElement ( "select" ) ; b . appendChild ( c ) ; this . importServiceLayerSelect = c ; b = document . createElement ( "label" ) ; b . innerHTML = "Format:" ; a . appendChild ( b ) ; c = document . createElement ( "select" ) ; b . appendChild ( c ) ; this . importServiceFormatSelect = c ; b = document . createElement ( "button" ) ; b . setAttribute ( "type" , "button" ) ; b . className = "netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow" ; b . innerHTML = "<i class='netgis-icon fas fa-check'></i><span>Hinzuf\u00fcgen</span>" ;
b . addEventListener ( "click" , this . onImportServiceAccept . bind ( this ) ) ; a . appendChild ( b ) ; this . exportModal = new netgis . Modal ( "Exportieren" ) ; this . exportModal . container . classList . add ( "netgis-export" ) ; this . exportModal . attach ( this . root ) ; a = document . createElement ( "div" ) ; a . className = "netgis-form netgis-noselect" ; a . style . position = "absolute" ; a . style . width = "100%" ; a . style . top = "12mm" ; a . style . bottom = "0mm" ; a . style . overflow = "auto" ; a . style . padding = "12mm" ; this . exportModal . content . appendChild ( a ) ; b = document . createElement ( "label" ) ;
b . innerHTML = "Format:" ; a . appendChild ( b ) ; c = document . createElement ( "select" ) ; c . innerHTML = "<option value='pdf'>PDF</option><option value='jpeg'>JPEG</option><option value='png'>PNG</option><option value='gif'>GIF</option>" ; c . addEventListener ( "change" , this . onExportFormatChange . bind ( this ) ) ; b . appendChild ( c ) ; this . exportFormatSelect = c ; b = document . createElement ( "label" ) ; b . innerHTML = "Breite (Pixel):" ; a . appendChild ( b ) ; c = document . createElement ( "input" ) ; c . setAttribute ( "type" , "number" ) ; c . setAttribute ( "min" , 0 ) ; b . appendChild ( c ) ;
this . exportWidthInput = c ; b = document . createElement ( "label" ) ; b . innerHTML = "H\u00f6he (Pixel):" ; a . appendChild ( b ) ; c = document . createElement ( "input" ) ; c . setAttribute ( "type" , "number" ) ; c . setAttribute ( "min" , 0 ) ; b . appendChild ( c ) ; this . exportHeightInput = c ; b = document . createElement ( "label" ) ; b . innerHTML = "Seitenr\u00e4nder (Millimeter):" ; a . appendChild ( b ) ; c = document . createElement ( "input" ) ; c . setAttribute ( "type" , "number" ) ; c . setAttribute ( "min" , 0 ) ; c . value = 10 ; b . appendChild ( c ) ; this . exportPaddingInput = c ; b = document . createElement ( "label" ) ;
b . innerHTML = "Querformat:" ; a . appendChild ( b ) ; c = document . createElement ( "input" ) ; c . setAttribute ( "type" , "checkbox" ) ; b . appendChild ( c ) ; this . exportLandscapeInput = c ; b = document . createElement ( "button" ) ; b . setAttribute ( "type" , "button" ) ; b . className = "netgis-button netgis-center netgis-color-a netgis-hover-c netgis-shadow" ; b . innerHTML = "<i class='netgis-icon fas fa-check'></i><span>Exportieren</span>" ; b . addEventListener ( "click" , this . onExportButtonClick . bind ( this ) ) ; a . appendChild ( b ) } ;
netgis . Client . prototype . initConfig = function ( a ) { var b = [ ] , c = a . folders ; if ( c ) { for ( var d = 0 ; d < c . length ; d ++ ) { var e = 1E3 + d , f = this . layerTree . addFolder ( null , e , c [ d ] . title ) ; b . push ( f ) } for ( d = 0 ; d < c . length ; d ++ ) e = c [ d ] . parent , - 1 < e && this . layerTree . setFolderParent ( b [ d ] , b [ e ] ) } if ( c = a . layers ) for ( d = 0 ; d < c . length ; d ++ ) { var g = c [ d ] ; f = - 1 < g . folder ? b [ g . folder ] : null ; e = g . id ; e || ( e = 1E3 + d , g . id = e ) ; this . layerTree . addCheckbox ( f , e , g . title ) ; g . active && ( this . map . addLayer ( e , this . map . createLayer ( g ) ) , this . layerTree . setItemChecked ( e , ! 0 ) ) } this . importFolder =
this . layerTree . addFolder ( null , "import" , "Importierte Ebenen" , ! 0 ) ; this . importFolder . classList . add ( "netgis-hide" ) ; this . editFolder = this . layerTree . addFolder ( null , "edit-folder" , "Zeichnung" , ! 0 ) ; this . editFolder . classList . add ( "netgis-hide" ) ; this . layerTree . addCheckbox ( this . editFolder , "edit-layer" , "Zeichnung" ) ; this . layerTree . setItemChecked ( "edit-layer" , ! 0 ) ; this . importButton = this . layerTree . addButton ( null , "<i class='netgis-icon fas fa-plus' style='font-size: 1em;'></i><span>Ebene hinzuf\u00fcgen...</span>" , this . onLayerTreeImportClick . bind ( this ) ) ;
2023-11-21 12:53:27 +01:00
this . attribution . onContextUpdate ( a ) } ;
netgis . Client . prototype . initOutput = function ( a ) { netgis . util . isDefined ( a . output ) ? netgis . util . isDefined ( a . output . id ) && ( this . output = document . getElementById ( a . output . id ) , this . output . value && 0 < this . output . value . length && ( a = JSON . parse ( this . output . value ) , this . map . addEditFeaturesGeoJSON ( a , ! 1 ) , this . map . map . updateSize ( ) , this . map . zoomGeoJSON ( a ) , this . editFolder . classList . remove ( "netgis-hide" ) ) ) : ( this . output = document . createElement ( "input" ) , this . output . setAttribute ( "type" , "hidden" ) , this . output . className = "netgis-edit-output" ,
this . root . appendChild ( this . output ) ) } ;
2023-10-16 13:27:27 +02:00
netgis . Client . prototype . initEvents = function ( ) { this . container . addEventListener ( netgis . Events . SET _MODE , this . onSetMode . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . PANEL _TOGGLE , this . onPanelToggle . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . PANEL _RESIZE , this . onPanelResize . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . LAYERS _TOGGLE , this . onLayersToggle . bind ( this ) ) ; this . container . addEventListener ( netgis . SearchPlace . Events . TOGGLE , this . onSearchPlaceToggle . bind ( this ) ) ;
this . container . addEventListener ( netgis . SearchParcel . Events . TOGGLE , this . onSearchParcelToggle . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . CONTROLS _ZOOM , this . onControlsZoom . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . CONTROLS _ZOOM _ALL , this . onControlsZoomAll . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . TOOLBOX _TOGGLE , this . onToolboxToggle . bind ( this ) ) ; this . parcelPanel . container . addEventListener ( netgis . Events . PANEL _TOGGLE , this . onParcelsPanelToggle . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . PARCELS _RESET ,
this . onParcelsReset . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . PARCELS _FIELDS _RESPONSE , this . onParcelsFieldsResponse . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . PARCELS _RESPONSE , this . onParcelsResponse . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . PARCELS _ITEM _ENTER , this . onParcelsItemEnter . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . PARCELS _ITEM _LEAVE , this . onParcelsItemLeave . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . PARCELS _ITEM _CLICK ,
this . onParcelsItemClick . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . PARCELS _ITEM _IMPORT _CLICK , this . onParcelsImportClick . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . MAP _FEATURE _ENTER , this . onMapFeatureEnter . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . MAP _FEATURE _CLICK , this . onMapFeatureClick . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . MAP _FEATURE _LEAVE , this . onMapFeatureLeave . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . LAYER _CREATED ,
this . onLayerCreated . bind ( this ) ) ; this . layerTree . container . addEventListener ( netgis . Tree . Events . ITEM _CHANGE , this . onLayerTreeItemChange . bind ( this ) ) ; this . searchPlace . container . addEventListener ( netgis . SearchPlace . Events . SELECT , this . onSearchPlaceSelect . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . SNAP _TOGGLE , this . onSnapToggle . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . TRACING _TOGGLE , this . onTracingToggle . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . BUFFER _TOGGLE , this . onBufferToggle . bind ( this ) ) ;
this . container . addEventListener ( netgis . Events . DRAW _BUFFER _RADIUS _CHANGE , this . onBufferRadiusChange . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . DRAW _BUFFER _SEGMENTS _CHANGE , this . onBufferSegmentsChange . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . BUFFER _CHANGE , this . onBufferFeatureChange . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . BUFFER _ACCEPT , this . onBufferFeatureAccept . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . IMPORT _SHAPEFILE _SHOW , this . onImportShapefileShow . bind ( this ) ) ;
this . container . addEventListener ( netgis . Events . IMPORT _GEOJSON _SHOW , this . onImportGeoJSONShow . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . IMPORT _GML _SHOW , this . onImportGMLShow . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . IMPORT _SPATIALITE _SHOW , this . onImportSpatialiteShow . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . IMPORT _GEOPACKAGE _SHOW , this . onImportGeopackageShow . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . EXPORT _PDF _SHOW , this . onExportPDFShow . bind ( this ) ) ;
this . container . addEventListener ( netgis . Events . EXPORT _PNG _SHOW , this . onExportPNGShow . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . EXPORT _JPEG _SHOW , this . onExportJPEGShow . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . EXPORT _GIF _SHOW , this . onExportGIFShow . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . EXPORT _PDF , this . onExportPDF . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . EXPORT _PNG , this . onExportPNG . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . EXPORT _JPEG ,
2023-11-21 09:01:59 +01:00
this . onExportJPEG . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . EXPORT _GIF , this . onExportGIF . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . EDIT _FEATURES _CHANGE , this . onEditFeaturesChange . bind ( this ) ) ; this . container . addEventListener ( netgis . Events . EXPORT _SHOW , this . onExportShow . bind ( this ) ) } ;
2022-09-12 13:12:59 +02:00
netgis . Client . prototype . createDefaultConfig = function ( ) { return { map : { projection : "EPSG:3857" , center : [ 1113194 , 6621293 ] , minZoom : 0 , maxZoom : 20 , zoom : 6 , attribution : "NetGIS" } , projections : [ ] , layers : [ { folder : 0 , type : netgis . LayerTypes . OSM , title : "Open Street Map" , attribution : "OSM Contributors" , active : ! 0 } ] , folders : [ { title : "Hintergrund" , parent : - 1 } ] , styles : { editLayer : { fill : "rgba( 255, 0, 0, 0.5 )" , stroke : "#ff0000" , strokeWidth : 3 , pointRadius : 6 } , select : { fill : "rgba( 0, 127, 255, 0.5 )" , stroke : "#007fff" , strokeWidth : 3 , pointRadius : 6 } ,
sketch : { fill : "rgba( 0, 127, 0, 0.5 )" , stroke : "#007f00" , strokeWidth : 3 , pointRadius : 6 } , modify : { fill : "rgba( 0, 127, 0, 0.5 )" , stroke : "#007f00" , strokeWidth : 3 , pointRadius : 6 } , parcel : { fill : "rgba( 127, 255, 255, 0.5 )" , stroke : "#7fffff" , strokeWidth : 3 } } } } ;
netgis . Client . prototype . create = function ( ) { this . root = document . createElement ( "section" ) ; this . root . className = "netgis-client" ; this . loader = document . createElement ( "div" ) ; this . loader . className = "netgis-loader netgis-dialog netgis-text-primary" ; this . loader . innerHTML = "<i class='fas fa-spinner'></i>" ; this . root . appendChild ( this . loader ) ; this . container . appendChild ( this . root ) } ;
2023-11-21 09:01:59 +01:00
netgis . Client . prototype . createModules = function ( ) { this . editable = ! 0 ; this . container . hasAttribute ( "contenteditable" ) && "false" === this . container . getAttribute ( "contenteditable" ) && ( this . editable = ! 1 ) ; this . container . hasAttribute ( "data-editable" ) && ( this . editable = "true" === this . container . getAttribute ( "data-editable" ) ? ! 0 : ! 1 ) ; this . add ( this . attribution = new netgis . Attribution ) ; this . add ( new netgis . Toolbar ) ; this . add ( new netgis . Menu ) } ;
netgis . Client . prototype . load = function ( ) { for ( var a = 0 ; a < this . modules . length ; a ++ ) this . modules [ a ] . load ( ) ; this . invoke ( netgis . Events . SET _MODE , netgis . Modes . VIEW ) ; this . on ( netgis . Events . EXPORT _BEGIN , this . onMapExportBegin . bind ( this ) ) ; this . on ( netgis . Events . EXPORT _END , this . onMapExportEnd . bind ( this ) ) ; this . on ( netgis . Events . EDIT _FEATURES _CHANGE , this . onEditFeaturesChange . bind ( this ) ) } ; netgis . Client . prototype . add = function ( a ) { a . client = this ; this . modules . push ( a ) } ;
netgis . Client . prototype . on = function ( a , b ) { netgis . util . isDefined ( this . callbacks [ a ] ) || ( this . callbacks [ a ] = [ ] ) ; this . callbacks [ a ] . push ( b ) } ; netgis . Client . prototype . off = function ( a , b ) { if ( netgis . util . isDefined ( this . callbacks [ a ] ) ) if ( netgis . util . isDefined ( b ) ) { for ( var c = 0 ; c < this . callbacks [ a ] . length ; c ++ ) if ( this . callbacks [ a ] [ c ] === b ) { this . callbacks [ a ] . splice ( c , 1 ) ; break } 1 > this . callbacks [ a ] . length && delete this . callbacks [ a ] } else delete this . callbacks [ a ] } ;
netgis . Client . prototype . invoke = function ( a , b ) { this . debug && console . info ( "EVENT:" , a , b ) ; if ( netgis . util . isDefined ( this . callbacks [ a ] ) ) for ( var c = 0 ; c < this . callbacks [ a ] . length ; c ++ ) this . callbacks [ a ] [ c ] ( b ) } ; netgis . Client . prototype . showLoader = function ( ) { this . loader . classList . remove ( "netgis-hide" ) } ; netgis . Client . prototype . hideLoader = function ( ) { this . loader . classList . add ( "netgis-hide" ) } ; netgis . Client . prototype . onHtmlResponse = function ( a ) { this . root = netgis . util . create ( a ) ; this . container . appendChild ( this . root ) } ;
netgis . Client . prototype . onEditFeaturesChange = function ( a ) { var b = JSON . stringify ( a . detail ) ; this . output . value = b ; this . attribution . onEditFeaturesChange ( a . detail ) } ; netgis . Client . prototype . onMapExportBegin = function ( a ) { this . showLoader ( ) } ; netgis . Client . prototype . onMapExportEnd = function ( a ) { this . hideLoader ( ) } ; netgis . Client . prototype . setMode = function ( a ) { this . map . setMode ( a ) ; this . toolbox . setMode ( a ) } ;
netgis . Client . prototype . onPanelToggle = function ( a ) { a = a . detail ; a . visible ? this . map . setPadding ( 0 , 0 , 0 , a . panel . width ( ) ) : ( a = ! 1 , this . layerPanel . visible ( ) && ( a = ! 0 ) , this . toolboxPanel . visible ( ) && ( a = ! 0 ) , this . parcelPanel . visible ( ) && ( a = ! 0 ) , a || this . map . setPadding ( 0 , 0 , 0 , 0 ) ) } ; netgis . Client . prototype . onPanelResize = function ( a ) { this . map . setPadding ( 0 , 0 , 0 , a . detail . width ) } ; netgis . Client . prototype . onLayerCreated = function ( a ) { a . detail . id === this . map . editLayerID && this . editFolder . classList . remove ( "netgis-hide" ) } ;
netgis . Client . prototype . onLayersToggle = function ( a ) { this . layerPanel . toggle ( ) ; this . layerPanel . visible ( ) && ( this . toolboxPanel . hide ( ) , this . parcelPanel . hide ( ) ) } ;
netgis . Client . prototype . onLayerTreeItemChange = function ( a ) { var b = a . detail . id ; a = a . detail . checked ; switch ( b ) { default : for ( var c = this . config . layers , d = ! 1 , e = null , f = 0 ; f < c . length ; f ++ ) { var g = c [ f ] , h = g . id ; if ( h === b ) { e = this . map . createLayer ( g ) ; d = ! 0 ; break } } if ( ! d ) for ( h in this . importLayers ) if ( h === b ) { e = this . importLayers [ b ] ; d = ! 0 ; break } d && ( a ? ( this . map . addLayer ( b , e ) , this . attribution . onLayerShow ( { id : b } ) ) : ( this . map . removeLayer ( b ) , this . attribution . onLayerHide ( { id : b } ) ) ) ; break ; case "edit-layer" : a ? this . map . addLayer ( netgis . Client . Layers . EDIT _LAYER ,
this . map . editLayer ) : this . map . removeLayer ( netgis . Client . Layers . EDIT _LAYER ) } } ; netgis . Client . prototype . onToolboxToggle = function ( a ) { this . toolboxPanel . toggle ( ) ; this . toolboxPanel . visible ( ) && ( this . layerPanel . hide ( ) , this . parcelPanel . hide ( ) ) } ; netgis . Client . prototype . onSearchPlaceToggle = function ( a ) { this . searchPlace . toggle ( ) } ; netgis . Client . prototype . onSearchPlaceSelect = function ( a ) { a = a . detail ; this . map . zoomExtent ( a . minx , a . miny , a . maxx , a . maxy ) } ;
netgis . Client . prototype . onSearchParcelToggle = function ( a ) { this . parcelPanel . toggle ( ) ; this . parcelPanel . visible ( ) && ( this . layerPanel . hide ( ) , this . toolboxPanel . hide ( ) ) } ; netgis . Client . prototype . onControlsZoom = function ( a ) { this . map . zoom ( a . detail ) } ; netgis . Client . prototype . onControlsZoomAll = function ( a ) { this . map . zoomAll ( ) } ; netgis . Client . prototype . onParcelsPanelToggle = function ( a ) { this . searchParcel . reset ( ) } ;
netgis . Client . prototype . onParcelsReset = function ( a ) { this . map . removeLayer ( netgis . Client . Layers . PARCEL _DISTRICTS ) ; this . map . removeLayer ( netgis . Client . Layers . PARCEL _FIELDS ) ; this . map . removeLayer ( netgis . Client . Layers . PARCEL _FEATURES ) ; if ( this . parcelPanel . visible ( ) ) { this . parcelsAdded = [ ] ; var b = this . config . searchParcel . districts _service ; a = this . map . createLayer ( b ) ; var c = this . config . styles . parcel ; this . map . setLayerStyleSimple ( a , c . fill , c . stroke , c . width ) ; this . map . addLayer ( netgis . Client . Layers . PARCEL _DISTRICTS , a ) ;
if ( b . minZoom ) { var d = this ; window . setTimeout ( function ( ) { d . map . zoomLevel ( b . minZoom + 1 ) } , 50 ) } this . setMode ( netgis . Modes . PARCEL _SELECT ) } else this . setMode ( netgis . Modes . VIEW ) } ;
netgis . Client . prototype . onParcelsFieldsResponse = function ( a ) { var b = a . detail ; this . map . zoomGeoJSON ( b . geojson ) ; this . map . removeLayer ( netgis . Client . Layers . PARCEL _DISTRICTS ) ; a = this . config . styles . parcel ; b = this . map . createLayerGeoJSON ( b . geojson ) ; this . map . setLayerStyleSimple ( b , a . fill , a . stroke , a . width ) ; this . map . setLayerOrder ( b , 4E4 ) ; this . map . addLayer ( netgis . Client . Layers . PARCEL _FIELDS , b ) } ;
2023-10-16 13:27:27 +02:00
netgis . Client . prototype . onParcelsResponse = function ( a ) { a = this . map . createLayerWKT ( a . detail . parcels ) ; var b = this . config . styles . parcel ; this . map . removeLayer ( netgis . Client . Layers . PARCEL _DISTRICTS ) ; this . map . removeLayer ( netgis . Client . Layers . PARCEL _FIELDS ) ; this . map . removeLayer ( netgis . Client . Layers . PARCEL _FEATURES ) ; this . map . setLayerStyleSimple ( a , b . fill , b . stroke , b . width ) ; this . map . addLayer ( netgis . Client . Layers . PARCEL _FEATURES , a ) ; this . map . zoomLayer ( netgis . Client . Layers . PARCEL _FEATURES ) } ;
netgis . Client . prototype . onMapFeatureEnter = function ( a ) { a = a . detail ; switch ( a . layer ) { case netgis . Client . Layers . PARCEL _DISTRICTS : a = a . properties . gemarkung ; this . map . container . setAttribute ( "title" , a ) ; break ; case netgis . Client . Layers . PARCEL _FIELDS : a = a . properties . flurname ; this . map . container . setAttribute ( "title" , a ) ; break ; case netgis . Client . Layers . PARCEL _FEATURES : a = "Flur: " + a . properties . fln + " / Z\u00e4hler: " + a . properties . fsn _zae + " / Nenner: " + a . properties . fsn _nen , this . map . container . setAttribute ( "title" , a + " (Klicken zum \u00dcbernehmen der Geometrie)" ) } } ;
2023-11-21 09:01:59 +01:00
netgis . Client . prototype . onMapFeatureClick = function ( a ) { a = a . detail ; switch ( a . layer ) { default : console . info ( "Feature Click:" , a ) ; break ; case netgis . Client . Layers . PARCEL _DISTRICTS : this . searchParcel . setDistrict ( a . properties . gemarkung + " (" + a . properties . ldkreis + ")" , a . properties . gmkgnr ) ; break ; case netgis . Client . Layers . PARCEL _FIELDS : this . searchParcel . setFieldNumber ( a . properties . flur ) ; break ; case netgis . Client . Layers . PARCEL _FEATURES : var b = a . properties . fsk ; - 1 === this . parcelsAdded . indexOf ( b ) && ( this . map . addEditFeature ( this . map . createFeatureJSON ( a . properties ) ) ,
this . map . updateSnapFeatures ( ) , this . parcelsAdded . push ( b ) ) } } ; netgis . Client . prototype . onMapFeatureLeave = function ( a ) { this . map . container . setAttribute ( "title" , "" ) } ; netgis . Client . prototype . onParcelsItemEnter = function ( a ) { this . map . setFeatureHover ( this . map . findFeature ( netgis . Client . Layers . PARCEL _FEATURES , "fsk" , a . detail . id ) , ! 0 ) } ; netgis . Client . prototype . onParcelsItemLeave = function ( a ) { this . map . setFeatureHover ( this . map . findFeature ( netgis . Client . Layers . PARCEL _FEATURES , "fsk" , a . detail . id ) , ! 1 ) } ;
2023-10-16 13:27:27 +02:00
netgis . Client . prototype . onParcelsItemClick = function ( a ) { this . map . zoomFeature ( this . map . findFeature ( netgis . Client . Layers . PARCEL _FEATURES , "fsk" , a . detail . id ) ) } ; netgis . Client . prototype . onParcelsImportClick = function ( a ) { a = a . detail ; this . map . addEditFeature ( this . map . createFeatureWKT ( a . geom , { id : a . id } ) ) ; this . map . updateSnapFeatures ( ) } ; netgis . Client . prototype . onSetMode = function ( a ) { this . setMode ( a . detail ) } ;
netgis . Client . prototype . onSnapToggle = function ( a ) { ( a = a . detail . target . checked ) ? ( this . map . updateSnapFeatures ( ) , this . map . setSnapOn ( ) ) : this . map . setSnapOff ( ) ; this . toolbox . setSnap ( a ) } ; netgis . Client . prototype . onTracingToggle = function ( a ) { a . detail . target . checked ? ( this . map . updateSnapFeatures ( ) , this . map . setSnapOn ( ) , this . map . setTracingOn ( ) , this . toolbox . setSnap ( ! 0 ) ) : this . map . setTracingOff ( ) } ;
netgis . Client . prototype . onBufferToggle = function ( a ) { if ( a = a . detail . target . checked ) this . map . onDrawBufferOn ( ) ; else this . map . onDrawBufferOff ( ) ; this . toolbox . setBuffer ( a ) } ; netgis . Client . prototype . onBufferRadiusChange = function ( a ) { a = Number . parseFloat ( a . detail . target . value ) ; this . map . onDrawBufferRadiusChange ( a ) ; this . toolbox . setBufferRadius ( a ) } ; netgis . Client . prototype . onBufferSegmentsChange = function ( a ) { a = Number . parseInt ( a . detail . target . value ) ; this . map . onDrawBufferSegmentsChange ( a ) ; this . toolbox . setBufferSegments ( a ) } ;
netgis . Client . prototype . onBufferFeatureChange = function ( a ) { this . map . onBufferChange ( a . detail ) } ; netgis . Client . prototype . onBufferFeatureAccept = function ( a ) { this . map . onBufferAccept ( ) } ; netgis . Client . prototype . onImportShapefileShow = function ( a ) { this . modal . onImportShapefileShow ( a ) } ; netgis . Client . prototype . onImportGeoJSONShow = function ( a ) { this . modal . onImportGeoJSONShow ( a ) } ; netgis . Client . prototype . onImportGMLShow = function ( a ) { this . modal . onImportGMLShow ( a ) } ; netgis . Client . prototype . onImportSpatialiteShow = function ( a ) { this . modal . onImportSpatialiteShow ( a ) } ;
netgis . Client . prototype . onImportGeopackageShow = function ( a ) { this . modal . onImportGeopackageShow ( a ) } ; netgis . Client . prototype . onExportPDFShow = function ( a ) { this . modal . onExportPDFShow ( a ) } ; netgis . Client . prototype . onExportPNGShow = function ( a ) { this . modal . onExportPNGShow ( a ) } ; netgis . Client . prototype . onExportJPEGShow = function ( a ) { this . modal . onExportJPEGShow ( a ) } ; netgis . Client . prototype . onExportGIFShow = function ( a ) { this . modal . onExportGIFShow ( a ) } ; netgis . Client . prototype . onExportPDF = function ( a ) { this . map . onExportPDF ( a ) } ;
2023-11-21 09:01:59 +01:00
netgis . Client . prototype . onExportPNG = function ( a ) { this . map . onExportPNG ( a ) } ; netgis . Client . prototype . onExportJPEG = function ( a ) { this . map . onExportJPEG ( a ) } ; netgis . Client . prototype . onExportGIF = function ( a ) { this . map . onExportGIF ( a ) } ; netgis . Client . prototype . onLayerTreeImportClick = function ( a ) { this . importModal . show ( ) } ;
netgis . Client . prototype . onImportFileClick = function ( a ) { if ( a = this . importFileInput . files [ 0 ] ) { var b = a . name , c = this ; switch ( netgis . util . getFileExtension ( a . name ) . toLowerCase ( ) ) { case "geojson" : console . info ( "GeoJSON detected:" , a . name ) ; var d = new FileReader ; d . onload = function ( a ) { a = JSON . parse ( a . target . result ) ; c . addImportLayer ( b , c . map . createLayerGeoJSON ( a , ! 0 ) ) } ; d . readAsText ( a ) ; break ; case "zip" : console . info ( "Shapefile Zip detected:" , a . name ) ; d = new FileReader ; d . onload = function ( a ) { c . addImportLayer ( b , c . map . createLayerShapefile ( a . target . result ) ) } ;
d . readAsArrayBuffer ( a ) ; break ; case "gml" : console . info ( "GML detected:" , a . name ) ; d = new FileReader ; d . onload = function ( a ) { c . addImportLayer ( b , c . map . createLayerGML ( a . target . result ) ) } ; d . readAsText ( a ) ; break ; case "sqlite" : console . info ( "Spatialite detected:" , a . name ) ; d = new FileReader ; d . onload = function ( a ) { c . addImportLayer ( b , c . map . createLayerSpatialite ( a . target . result ) ) } ; d . readAsArrayBuffer ( a ) ; break ; case "gpkg" : console . info ( "GeoPackage detected:" , a . name ) , d = new FileReader , d . onload = function ( a ) { c . addImportLayer ( b , c . map . createLayerGeopackage ( a . target . result ) ) } ,
d . readAsArrayBuffer ( a ) } } else alert ( "No file selected!" ) } ;
2023-11-21 12:53:27 +01:00
netgis . Client . prototype . addImportLayer = function ( a , b ) { this . importCounter || ( this . importCounter = 0 ) ; var c = this . importCounter + 1 ; c = "import-" + c ; this . importCounter += 1 ; this . layerTree . addCheckbox ( this . importFolder , c , a ) ; this . importFolder . classList . remove ( "netgis-hide" ) ; this . importLayers [ c ] = b ; this . map . setLayerOrder ( b , this . map . importLayerID ) ; a = this . config . styles [ "import" ] ; this . map . setLayerStyleSimple ( b , a . fill , a . stroke , a . width ) ; this . map . addLayer ( c , b ) ; this . layerTree . setItemChecked ( c , ! 0 ) ; this . map . zoomLayer ( c ) ; this . importModal . hide ( ) } ;
2023-11-21 09:01:59 +01:00
netgis . Client . prototype . onImportServiceClick = function ( a ) { this . importServiceDetails . classList . add ( "netgis-hide" ) ; var b = this . importServiceInput . value ; b = b . trim ( ) ; if ( ! ( 1 > b . length ) ) { var c = b . indexOf ( "?" ) ; this . importServiceBaseURL = 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 ) } a = a + "?" + d . join ( "&" ) ; - 1 === a . search ( "service=" ) ? ( netgis . util . request ( a +
"&service=WMS" , this . onImportServiceCapsResponse . bind ( this ) ) , netgis . util . request ( a + "&service=WFS" , this . onImportServiceCapsResponse . bind ( this ) ) ) : netgis . util . request ( a , this . onImportServiceCapsResponse . bind ( this ) ) } } ;
netgis . Client . prototype . onImportServiceCapsResponse = function ( a ) { var b = ( new DOMParser ) . parseFromString ( a , "text/xml" ) . documentElement , c = this . importServiceLayerSelect ; a = this . importServiceFormatSelect ; for ( var d = c . options . length - 1 ; 0 <= d ; d -- ) c . options . remove ( d ) ; for ( d = a . options . length - 1 ; 0 <= d ; d -- ) a . options . remove ( d ) ; switch ( b . nodeName ) { default : case "HTML" : this . importServiceType = null ; console . warn ( "could not detect wms or wfs service" , b ) ; break ; case "WMS_Capabilities" : case "WMT_MS_Capabilities" : this . importServiceType =
"wms" ; b . getAttribute ( "version" ) ; d = b . getElementsByTagName ( "Service" ) [ 0 ] ; d = d . getElementsByTagName ( "Title" ) [ 0 ] . textContent ; this . importServiceNameInput . value = d ; for ( var e = b . getElementsByTagName ( "Layer" ) , f = [ ] , g = 0 ; g < e . length ; g ++ ) { d = e [ g ] ; var h = d . getElementsByTagName ( "Name" ) [ 0 ] . textContent , k = d . getElementsByTagName ( "Title" ) [ 0 ] . textContent ; f . push ( { name : h , title : k } ) ; d = document . createElement ( "option" ) ; d . text = k ; d . value = h ; c . options . add ( d ) } c = b . getElementsByTagName ( "GetMap" ) [ 0 ] . getElementsByTagName ( "Format" ) ; b = [ ] ;
for ( g = 0 ; g < c . length ; g ++ ) d = c [ g ] , e = d . textContent , b . push ( e ) , d = document . createElement ( "option" ) , d . text = e , d . value = e , a . options . add ( d ) ; break ; case "WFS_Capabilities" : case "wfs:WFS_Capabilities" : this . importServiceType = "wfs" ; b . getAttribute ( "version" ) ; d = b . getElementsByTagName ( "ows:ServiceIdentification" ) [ 0 ] ; d = d . getElementsByTagName ( "ows:Title" ) [ 0 ] . textContent ; this . importServiceNameInput . value = d ; e = b . getElementsByTagName ( "FeatureType" ) ; f = [ ] ; for ( g = 0 ; g < e . length ; g ++ ) d = e [ g ] , h = d . getElementsByTagName ( "Name" ) [ 0 ] . textContent ,
k = d . getElementsByTagName ( "Title" ) [ 0 ] . textContent , f . push ( { name : h , title : k } ) , d = document . createElement ( "option" ) , d . text = k , d . value = h , c . options . add ( d ) ; b = b . getElementsByTagName ( "ows:Operation" ) ; d = null ; for ( c = 0 ; c < b . length ; c ++ ) if ( "GetFeature" === b [ c ] . getAttribute ( "name" ) ) { d = b [ c ] ; break } b = null ; if ( d ) for ( d = d . getElementsByTagName ( "ows:Parameter" ) , c = 0 ; c < d . length ; c ++ ) if ( g = d [ c ] , "outputFormat" === g . getAttribute ( "name" ) ) { c = g . getElementsByTagName ( "ows:Value" ) ; for ( g = 0 ; g < c . length ; g ++ ) d = c [ g ] , e = d . textContent , d = document . createElement ( "option" ) ,
d . text = e , d . value = e , a . options . add ( d ) , - 1 < e . search ( "json" ) && ( b = e ) ; break } b && ( a . value = b ) } this . importServiceDetails . classList . remove ( "netgis-hide" ) } ;
netgis . Client . prototype . onImportServiceAccept = function ( a ) { a = this . importServiceBaseURL ; var b = this . importServiceNameInput . value , c = this . importServiceLayerSelect . value , d = this . importServiceFormatSelect . value ; switch ( this . importServiceType ) { case "wms" : this . addImportLayer ( b , this . map . createLayerWMS ( a , c , d , ! 1 ) ) ; break ; case "wfs" : this . addImportLayer ( b , this . map . createLayerWFS ( a + "?" , c , null , d ) ) } } ;
netgis . Client . prototype . onExportShow = function ( a ) { this . exportWidthInput . value = this . map . getWidth ( ) ; this . exportHeightInput . value = this . map . getHeight ( ) ; this . exportLandscapeInput . checked = this . exportWidthInput . value > this . exportHeightInput . value ; this . toolboxPanel . hide ( ) ; this . exportModal . show ( ) } ;
netgis . Client . prototype . onExportFormatChange = function ( a ) { "pdf" === this . exportFormatSelect . value ? ( this . exportPaddingInput . parentNode . classList . remove ( "netgis-hide" ) , this . exportLandscapeInput . parentNode . classList . remove ( "netgis-hide" ) ) : ( this . exportPaddingInput . parentNode . classList . add ( "netgis-hide" ) , this . exportLandscapeInput . parentNode . classList . add ( "netgis-hide" ) ) } ;
netgis . Client . prototype . onExportButtonClick = function ( a ) { a = this . exportFormatSelect . value ; var b = Number . parseInt ( this . exportWidthInput . value ) , c = Number . parseInt ( this . exportHeightInput . value ) , d = Number . parseInt ( this . exportPaddingInput . value ) ; this . map . exportImage ( a , b , c , this . exportLandscapeInput . checked , d ) } ; netgis = netgis || { } ; netgis . Controls = function ( ) { this . initElements ( ) } ;
2023-10-16 13:27:27 +02:00
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" ; this . zoomIn = this . createButton ( "<i class='fas fa-plus'></i>" , "Zoom +" ) ; this . zoomIn . addEventListener ( "click" , this . onZoomInClick . bind ( this ) ) ; this . container . appendChild ( this . zoomIn ) ; this . zoomOut = this . createButton ( "<i class='fas fa-minus'></i>" , "Zoom -" ) ; this . zoomOut . addEventListener ( "click" , this . onZoomOutClick . bind ( this ) ) ;
this . container . appendChild ( this . zoomOut ) ; this . zoomAll = this . createButton ( "<i class='fas fa-home'></i>" , "Zoom auf Anfangsausdehung" ) ; this . zoomAll . addEventListener ( "click" , this . onZoomAllClick . bind ( this ) ) ; this . container . appendChild ( this . zoomAll ) } ; netgis . Controls . prototype . attach = function ( a ) { a . appendChild ( this . container ) } ; netgis . Controls . prototype . createButton = function ( a , b ) { var c = document . createElement ( "button" ) ; c . setAttribute ( "type" , "button" ) ; c . innerHTML = a ; c . title = b ; c . className = "netgis-hover-a" ; return c } ;
netgis . Controls . prototype . load = function ( ) { this . root = document . createElement ( "section" ) ; this . root . className = "netgis-controls netgis-color-e netgis-text-a netgis-hover-a netgis-shadow netgis-round" ; var a = document . createElement ( "button" ) ; a . setAttribute ( "type" , "button" ) ; a . innerHTML = "<i class='fas fa-search-plus'></i>" ; a . title = "Hineinzoomen" ; a . addEventListener ( "click" , this . onZoomInClick . bind ( this ) ) ; this . root . appendChild ( a ) ; a = document . createElement ( "button" ) ; a . setAttribute ( "type" , "button" ) ; a . innerHTML = "<i class='fas fa-search-minus'></i>" ;
a . title = "Herauszoomen" ; a . addEventListener ( "click" , this . onZoomOutClick . bind ( this ) ) ; this . root . appendChild ( a ) ; this . client . root . appendChild ( this . root ) } ; netgis . Controls . prototype . onZoomInClick = function ( a ) { netgis . util . invoke ( this . container , netgis . Events . CONTROLS _ZOOM , 1 ) } ; netgis . Controls . prototype . onZoomOutClick = function ( a ) { netgis . util . invoke ( this . container , netgis . Events . CONTROLS _ZOOM , - 1 ) } ;
netgis . Controls . prototype . onZoomAllClick = function ( a ) { netgis . util . invoke ( this . container , netgis . Events . CONTROLS _ZOOM _ALL , null ) } ; netgis . Controls . prototype . onSettings = function ( a ) { alert ( "TODO: settings dialog" ) } ; netgis = netgis || { } ;
netgis . Events = Object . freeze ( { PANEL _RESIZE : "panel-resize" , PANEL _TOGGLE : "panel-toggle" , LAYERS _TOGGLE : "layers-toggle" , TOOLBOX _TOGGLE : "toolbox-toggle" , CONTROLS _ZOOM : "controls-zoom" , CONTROLS _ZOOM _ALL : "controls-zoom-all" , MAP _FEATURE _ENTER : "map-feature-enter" , MAP _FEATURE _HOVER : "map-feature-hover" , MAP _FEATURE _CLICK : "map-feature-click" , MAP _FEATURE _LEAVE : "map-feature-leave" , PARCELS _RESET : "parcels-reset" , PARCELS _FIELDS _RESPONSE : "parcels-fields-response" , PARCELS _RESPONSE : "parcels-response" , PARCELS _ITEM _ENTER : "parcels-item-enter" ,
2023-11-21 09:01:59 +01:00
PARCELS _ITEM _LEAVE : "parcels-item-leave" , PARCELS _ITEM _CLICK : "parcels-item-click" , PARCELS _ITEM _IMPORT _CLICK : "parcels-item-import-click" , SNAP _TOGGLE : "snap-toggle" , BUFFER _TOGGLE : "buffer-toggle" , TRACING _TOGGLE : "tracing-toggle" , EXPORT _SHOW : "export-show" , CONTEXT _UPDATE : "CONTEXT_UPDATE" , SET _MODE : "SET_MODE" , LAYER _LIST _TOGGLE : "LAYER_LIST_TOGGLE" , PANEL _SHOW : "PANEL_SHOW" , PANEL _HIDE : "PANEL_HIDE" , LAYER _SHOW : "LAYER_SHOW" , LAYER _HIDE : "LAYER_HIDE" , LAYER _CREATED : "LAYER_CREATED" , MAP _ZOOM _WKT : "MAP_ZOOM_WKT" , MAP _SET _EXTENT : "MAP_SET_EXTENT" ,
MAP _CHANGE _ZOOM : "MAP_CHANGE_ZOOM" , MAP _UPDATE _STYLE : "MAP_UPDATE_STYLE" , MAP _MODE _POINTS : "MAP_MODE_POINTS" , MAP _MODE _LINES : "MAP_MODE_LINES" , MAP _MODE _POLYGONS : "MAP_MODE_POLYGONS" , EDIT _FEATURES _LOADED : "EDIT_FEATURES_LOADED" , EDIT _FEATURES _CHANGE : "EDIT_FEATURES_CHANGE" , SEARCH _PLACE _REQUEST : "SEARCH_PLACE_REQUEST" , SEARCH _PLACE _RESPONSE : "SEARCH_PLACE_RESPONSE" , PARCEL _SHOW _PREVIEW : "PARCEL_SHOW_PREVIEW" , PARCEL _HIDE _PREVIEW : "PARCEL_HIDE_PREVIEW" , BUFFER _CHANGE : "BUFFER_CHANGE" , BUFFER _ACCEPT : "BUFFER_ACCEPT" , BUFFER _CANCEL : "BUFFER_CANCEL" ,
DRAW _BUFFER _ON : "DRAW_BUFFER_ON" , DRAW _BUFFER _OFF : "DRAW_BUFFER_OFF" , DRAW _BUFFER _RADIUS _CHANGE : "DRAW_BUFFER_RADIUS_CHANGE" , DRAW _BUFFER _SEGMENTS _CHANGE : "DRAW_BUFFER_SEGMENTS_CHANGE" , SNAP _ON : "SNAP_ON" , SNAP _OFF : "SNAP_OFF" , TRACING _ON : "TRACING_ON" , TRACING _OFF : "TRACING_OFF" , IMPORT _SHAPEFILE _SHOW : "IMPORT_SHAPEFILE_SHOW" , IMPORT _GEOJSON _SHOW : "IMPORT_GEOJSON_SHOW" , IMPORT _GML _SHOW : "IMPORT_GML_SHOW" , IMPORT _SPATIALITE _SHOW : "IMPORT_SPATIALITE_SHOW" , IMPORT _GEOPACKAGE _SHOW : "IMPORT_GEOPACKAGE_SHOW" , IMPORT _SHAPEFILE : "IMPORT_SHAPEFILE" ,
IMPORT _GEOJSON : "IMPORT_GEOJSON" , IMPORT _GML : "IMPORT_GML" , IMPORT _WKT : "IMPORT_WKT" , IMPORT _SPATIALITE : "IMPORT_SPATIALITE" , IMPORT _GEOPACKAGE : "IMPORT_GEOPACKAGE" , EXPORT _PDF _SHOW : "EXPORT_PDF_SHOW" , EXPORT _JPEG _SHOW : "EXPORT_JPEG_SHOW" , EXPORT _PNG _SHOW : "EXPORT_PNG_SHOW" , EXPORT _GIF _SHOW : "EXPORT_GIF_SHOW" , EXPORT _PDF : "EXPORT_PDF" , EXPORT _JPEG : "EXPORT_JPEG" , EXPORT _PNG : "EXPORT_PNG" , EXPORT _GIF : "EXPORT_GIF" , EXPORT _BEGIN : "EXPORT_BEGIN" , EXPORT _END : "EXPORT_END" , ADD _SERVICE _SHOW : "ADD_SERVICE_SHOW" , ADD _SERVICE _WMS : "ADD_SERVICE_WMS" ,
ADD _SERVICE _WFS : "ADD_SERVICE_WFS" } ) ; netgis = netgis || { } ; netgis . LayerTypes = Object . freeze ( { XYZ : "XYZ" , OSM : "OSM" , WMS : "WMS" , WFS : "WFS" , KML : "KML" } ) ; netgis = netgis || { } ; netgis . Map = function ( ) { this . attribution = this . root = this . client = null } ; netgis . Map . prototype . load = function ( ) { this . root = document . createElement ( "section" ) ; this . root . className = "netgis-map" ; this . client . root . appendChild ( this . root ) } ; netgis = netgis || { } ;
netgis . MapOpenLayers = function ( a ) { this . activeLayers = { } ; this . projection = a . map . projection ; this . geopackageLibURL = a [ "import" ] . geopackageLibURL ; this . config = a ; this . mode = null ; this . toolbars = { } ; this . map = this . view = null ; this . layers = [ ] ; this . interactions = { } ; this . sketch = this . selected = this . hoverLayer = this . hoverFeature = this . parcelLayer = this . editLayer = this . snapFeatures = this . snap = null ; this . editEventsSilent = ! 1 ; this . importLayerID = 2E4 ; this . editLayerID = 3E4 ; this . labelFont = "4mm Verdana, sans-serif" ; this . drawBufferRadius = 100 ;
this . drawBufferSegments = 3 ; this . initElements ( ) ; this . initMap ( a ) ; this . initStyles ( a ) ; this . initDefaultLayers ( ) ; this . initInteractions ( ) ; this . initEvents ( ) } ; netgis . MapOpenLayers . prototype . initElements = function ( ) { this . container = document . createElement ( "section" ) ; this . container . className = "netgis-map" } ; netgis . MapOpenLayers . prototype . attach = function ( a ) { a . appendChild ( this . container ) } ; netgis . MapOpenLayers . prototype . initEvents = function ( ) { this . container . addEventListener ( "pointerleave" , this . onPointerLeave . bind ( this ) ) } ;
2023-10-16 13:27:27 +02:00
netgis . MapOpenLayers . prototype . load = function ( ) { netgis . Map . prototype . load . call ( this ) ; this . dropTarget = document . createElement ( "div" ) ; this . dropTarget . className = "netgis-drop-target netgis-hide" ; this . dropTarget . innerHTML = "Datei hier ablegen!" ; this . container . appendChild ( this . dropTarget ) ; this . container . addEventListener ( "dragenter" , this . onDragEnter . bind ( this ) ) ; this . container . addEventListener ( "dragover" , this . onDragEnter . bind ( this ) ) ; this . container . addEventListener ( "dragend" , this . onDragLeave . bind ( this ) ) ; this . container . addEventListener ( "dragleave" ,
this . onDragLeave . bind ( this ) ) ; this . container . addEventListener ( "drop" , this . onDragDrop . bind ( this ) ) ; this . initMap ( ) ; this . initDefaultLayers ( ) ; this . initInteractions ( ) ; this . client . on ( netgis . Events . CONTEXT _UPDATE , this . onContextUpdate . bind ( this ) ) ; this . client . on ( netgis . Events . MAP _UPDATE _STYLE , this . onUpdateStyle . bind ( this ) ) ; this . client . on ( netgis . Events . EDIT _FEATURES _LOADED , this . onEditFeaturesLoaded . bind ( this ) ) ; this . client . on ( netgis . Events . SET _MODE , this . onSetMode . bind ( this ) ) ; this . client . on ( netgis . Events . SNAP _ON ,
this . onSnapOn . bind ( this ) ) ; this . client . on ( netgis . Events . SNAP _OFF , this . onSnapOff . bind ( this ) ) ; this . client . on ( netgis . Events . TRACING _ON , this . onTracingOn . bind ( this ) ) ; this . client . on ( netgis . Events . TRACING _OFF , this . onTracingOff . bind ( this ) ) ; this . client . on ( netgis . Events . LAYER _SHOW , this . onLayerShow . bind ( this ) ) ; this . client . on ( netgis . Events . LAYER _HIDE , this . onLayerHide . bind ( this ) ) ; this . client . on ( netgis . Events . MAP _ZOOM _WKT , this . onZoomWKT . bind ( this ) ) ; this . client . on ( netgis . Events . MAP _SET _EXTENT , this . onSetExtent . bind ( this ) ) ;
this . client . on ( netgis . Events . MAP _CHANGE _ZOOM , this . onChangeZoom . bind ( this ) ) ; this . client . on ( netgis . Events . BUFFER _CHANGE , this . onBufferChange . bind ( this ) ) ; this . client . on ( netgis . Events . BUFFER _ACCEPT , this . onBufferAccept . bind ( this ) ) ; this . client . on ( netgis . Events . BUFFER _CANCEL , this . onBufferCancel . bind ( this ) ) ; this . client . on ( netgis . Events . IMPORT _GEOJSON , this . onImportGeoJSON . bind ( this ) ) ; this . client . on ( netgis . Events . IMPORT _GML , this . onImportGML . bind ( this ) ) ; this . client . on ( netgis . Events . IMPORT _SHAPEFILE , this . onImportShapefile . bind ( this ) ) ;
this . client . on ( netgis . Events . IMPORT _WKT , this . onImportWKT . bind ( this ) ) ; this . client . on ( netgis . Events . IMPORT _SPATIALITE , this . onImportSpatialite . bind ( this ) ) ; this . client . on ( netgis . Events . IMPORT _GEOPACKAGE , this . onImportGeopackage . bind ( this ) ) ; this . client . on ( netgis . Events . EXPORT _PDF , this . onExportPDF . bind ( this ) ) ; this . client . on ( netgis . Events . EXPORT _JPEG , this . onExportJPEG . bind ( this ) ) ; this . client . on ( netgis . Events . EXPORT _PNG , this . onExportPNG . bind ( this ) ) ; this . client . on ( netgis . Events . EXPORT _GIF , this . onExportGIF . bind ( this ) ) ;
this . client . on ( netgis . Events . PARCEL _SHOW _PREVIEW , this . onParcelShowPreview . bind ( this ) ) ; this . client . on ( netgis . Events . PARCEL _HIDE _PREVIEW , this . onParcelHidePreview . bind ( this ) ) ; this . client . on ( netgis . Events . ADD _SERVICE _WMS , this . onAddServiceWMS . bind ( this ) ) ; this . client . on ( netgis . Events . ADD _SERVICE _WFS , this . onAddServiceWFS . bind ( this ) ) ; this . client . on ( netgis . Events . DRAW _BUFFER _ON , this . onDrawBufferOn . bind ( this ) ) ; this . client . on ( netgis . Events . DRAW _BUFFER _OFF , this . onDrawBufferOff . bind ( this ) ) ; this . client . on ( netgis . Events . DRAW _BUFFER _RADIUS _CHANGE ,
this . onDrawBufferRadiusChange . bind ( this ) ) ; this . client . on ( netgis . Events . DRAW _BUFFER _SEGMENTS _CHANGE , this . onDrawBufferSegmentsChange . bind ( this ) ) } ;
netgis . MapOpenLayers . prototype . initMap = function ( a ) { "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 ) ) ; this . view = new ol . View ( { projection : a . map . projection , center : a . map . center , minZoom : a . map . minZoom , maxZoom : a . map . maxZoom , zoom : a . map . zoom } ) ; this . setPadding ( 0 , 0 , 0 , 0 ) ; this . map = new ol . Map ( { target : this . container , view : this . view , pixelRatio : 1 , moveTolerance : 5 , controls : [ ] } ) ; a . map . scalebar && ( this . scalebar = new ol . control . ScaleLine ( { bar : ! 0 } ) ,
this . map . addControl ( this . scalebar ) ) ; this . map . on ( "pointermove" , this . onPointerMove . bind ( this ) ) ; this . map . on ( "click" , this . onSingleClick . bind ( this ) ) ; this . map . on ( "movestart" , this . onMoveStart . bind ( this ) ) ; this . map . on ( "moveend" , this . onMoveEnd . bind ( this ) ) ; this . view . on ( "change:resolution" , this . onChangeResolution . bind ( this ) ) } ; netgis . MapOpenLayers . prototype . initStyles = function ( a ) { a = a . styles . select ; this . hoverStyle = this . createStyle ( a . fill , a . stroke , a . width ) ; this . hoverStyle . setZIndex ( 1 ) } ;
netgis . MapOpenLayers . prototype . initDefaultLayers = function ( ) { this . editLayer = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) , style : this . styleEdit . bind ( this ) , zIndex : this . editLayerID } ) ; this . addLayer ( netgis . Client . Layers . EDIT _LAYER , this . editLayer ) ; this . previewLayer = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) , style : this . styleSketch . bind ( this ) , zIndex : this . editLayerID + 10 } ) ; this . addLayer ( netgis . Client . Layers . PREVIEW _LAYER , this . previewLayer ) ; this . parcelLayer = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) ,
style : this . styleParcel . bind ( this ) , zIndex : this . editLayerID + 20 } ) ; this . map . addLayer ( this . parcelLayer ) ; this . editEventsOn ( ) } ; netgis . MapOpenLayers . prototype . editEventsOn = function ( ) { this . editLayer . getSource ( ) . on ( "addfeature" , this . onEditLayerAdd . bind ( this ) ) ; this . editLayer . getSource ( ) . on ( "removefeature" , this . onEditLayerRemove . bind ( this ) ) } ; netgis . MapOpenLayers . prototype . editEventsOff = function ( ) { } ;
2023-01-31 16:26:59 +01:00
netgis . MapOpenLayers . prototype . initInteractions = function ( ) { this . interactions [ netgis . Modes . VIEW ] = [ new ol . interaction . DragPan , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . PANNING ] = this . interactions [ netgis . Modes . VIEW ] ; this . interactions [ netgis . Modes . ZOOMING _IN ] = this . interactions [ netgis . Modes . VIEW ] ; this . interactions [ netgis . Modes . ZOOMING _OUT ] = this . interactions [ netgis . Modes . VIEW ] ; this . interactions [ netgis . Modes . DRAW _POINTS ] = [ new ol . interaction . Draw ( { type : "Point" , source : this . editLayer . getSource ( ) ,
style : this . styleSketch . bind ( this ) } ) , new ol . interaction . DragPan , new ol . interaction . MouseWheelZoom ] ; 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 ) } ) , new ol . interaction . DragPan , new ol . interaction . MouseWheelZoom ] ; 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 ) } ) , new ol . interaction . DragPan , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . CUT _FEATURE _BEGIN ] = [ new ol . interaction . DragPan , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . CUT _FEATURE _DRAW ] = [ new ol . interaction . Draw ( { type : "Polygon" , style : this . styleSketch . bind ( this ) } ) , new ol . interaction . DragPan , new ol . interaction . MouseWheelZoom ] ;
2023-11-21 12:53:27 +01:00
this . interactions [ netgis . Modes . CUT _FEATURE _DRAW ] [ 0 ] . on ( "drawend" , this . onCutFeatureDrawEnd . 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 . MouseWheelZoom ] ; this . interactions [ netgis . Modes . MODIFY _FEATURES ] [ 0 ] . on ( "modifyend" , this . onModifyFeaturesEnd . bind ( this ) ) ; this . interactions [ netgis . Modes . DELETE _FEATURES ] =
[ new ol . interaction . DragPan , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . BUFFER _FEATURE _BEGIN ] = [ new ol . interaction . DragPan , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . BUFFER _FEATURE _EDIT ] = [ new ol . interaction . DragPan , new ol . interaction . MouseWheelZoom ] ; this . snapFeatures = new ol . Collection ; this . interactions [ netgis . Modes . SEARCH _PLACE ] = [ new ol . interaction . DragPan , new ol . interaction . MouseWheelZoom ] ; this . interactions [ netgis . Modes . SEARCH _PARCEL ] = this . interactions [ netgis . Modes . VIEW ] } ;
netgis . MapOpenLayers . prototype . addLayer = function ( a , b ) { b && ( b . set ( "id" , a ) , this . map . addLayer ( b ) , this . activeLayers [ a ] = b ) } ; netgis . MapOpenLayers . prototype . removeLayer = function ( a ) { var b = this . activeLayers [ a ] ; b && ( this . map . removeLayer ( b ) , delete this . activeLayers [ a ] ) } ; netgis . MapOpenLayers . prototype . createStyle = function ( a , b , c ) { var d = { } ; a && ( d . fill = new ol . style . Fill ( { color : a } ) ) ; b && ( d . stroke = new ol . style . Stroke ( { color : b , width : c ? c : 3 } ) ) ; return new ol . style . Style ( d ) } ;
2023-11-21 09:01:59 +01:00
netgis . MapOpenLayers . prototype . setLayerStyle = function ( a , b ) { a . setStyle ( b ) } ; netgis . MapOpenLayers . prototype . setLayerStyleSimple = function ( a , b , c , d ) { this . setLayerStyle ( a , this . createStyle ( b , c , d ) ) } ; netgis . MapOpenLayers . prototype . setLayerStyleEdit = function ( a ) { a . setStyle ( this . styleEdit . bind ( this ) ) } ; netgis . MapOpenLayers . prototype . setLayerOrder = function ( a , b ) { a . setZIndex ( Number . parseInt ( b ) ) } ;
2023-10-30 09:40:35 +01:00
netgis . MapOpenLayers . prototype . createLayer = function ( a ) { var b = null ; switch ( a . type ) { case netgis . LayerTypes . XYZ : b = this . createLayerXYZ ( a . url ) ; break ; case netgis . LayerTypes . OSM : b = this . createLayerOSM ( ) ; break ; case netgis . LayerTypes . WMS : b = this . createLayerWMS ( a . url , a . name , a . format , a . tiled , a . username , a . password ) ; break ; case netgis . LayerTypes . WFS : b = this . createLayerWFS ( a . url , a . name , this . projection , a . format , a . username , a . password ) , ( a . fill || a . stroke || a . width ) && b . setStyle ( this . createStyle ( a . fill , a . stroke , a . width ) ) } b &&
2023-10-16 13:27:27 +02:00
( a . minZoom && b . setMinZoom ( Number . parseFloat ( a . minZoom ) ) , a . maxZoom && b . setMaxZoom ( Number . parseFloat ( a . maxZoom ) ) , a . order && b . setZIndex ( Number . parseInt ( a . order ) ) ) ; return b } ; netgis . MapOpenLayers . prototype . createLayerXYZ = function ( a ) { return new ol . layer . Tile ( { source : new ol . source . XYZ ( { url : a , crossOrigin : "anonymous" } ) } ) } ; netgis . MapOpenLayers . prototype . createLayerOSM = function ( ) { return new ol . layer . Tile ( { source : new ol . source . OSM } ) } ;
netgis . MapOpenLayers . 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" } , serverType : "mapserver" , crossOrigin : "anonymous" , 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 } ;
2023-11-21 09:01:59 +01:00
netgis . MapOpenLayers . prototype . createLayerWFS = function ( a , b , c , d , e , f ) { a += "service=WFS&version=1.1.0&request=GetFeature" ; c || ( c = this . projection ) ; d = d ? netgis . util . replace ( d , " " , "+" ) : "application/json; subtype=geojson" ; 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 ) { var a = g . getFormat ( ) . readFeatures ( l . responseText ) ; g . clear ( ) ; 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 . MapOpenLayers . prototype . clearAll = function ( ) { for ( var a = 0 ; a < this . layers . length ; a ++ ) this . map . removeLayer ( this . layers [ a ] ) ; this . layers = [ ] ; this . snapFeatures . clear ( ) } ; netgis . MapOpenLayers . prototype . addFeature = function ( a , b ) { a . getSource ( ) . addFeature ( b ) } ; netgis . MapOpenLayers . prototype . addEditFeature = function ( a ) { this . editLayer . getSource ( ) . addFeature ( a ) } ;
2023-11-21 12:53:27 +01:00
netgis . MapOpenLayers . prototype . addEditFeaturesGeoJSON = function ( a , b ) { var c = new ol . format . GeoJSON ; c . readProjection ( a ) ; a = b ? c . readFeatures ( a , { featureProjection : this . projection } ) : c . readFeatures ( a ) ; this . editLayer . getSource ( ) . addFeatures ( a ) ; this . updateSnapFeatures ( ) } ; netgis . MapOpenLayers . prototype . createFeatureWKT = function ( a , b ) { a = ( new ol . format . WKT ) . readGeometry ( a ) ; b . geometry = a ; return new ol . Feature ( b ) } ; netgis . MapOpenLayers . prototype . createFeatureJSON = function ( a ) { return new ol . Feature ( a ) } ;
2023-11-21 09:01:59 +01:00
netgis . MapOpenLayers . prototype . onUpdateStyle = function ( a ) { a = new ol . style . Style ( { fill : new ol . style . Fill ( { color : a . polygon . fill } ) , stroke : new ol . style . Stroke ( { color : a . polygon . stroke , width : a . polygon . strokeWidth } ) } ) ; this . editLayer . setStyle ( a ) } ;
2023-10-16 13:27:27 +02:00
netgis . MapOpenLayers . prototype . styleEdit = function ( a ) { var b = a . getGeometry ( ) , c = this . hoverFeature === a , d = c ? this . config . styles . select . fill : this . config . styles . editLayer . fill ; a = c ? this . config . styles . select . stroke : this . config . styles . editLayer . stroke ; d = new ol . style . Style ( { image : new ol . style . Circle ( { radius : c ? this . config . styles . select . pointRadius : this . config . styles . editLayer . pointRadius , fill : new ol . style . Fill ( { color : a } ) } ) , fill : new ol . style . Fill ( { color : d } ) , stroke : new ol . style . Stroke ( { color : a , width : this . config . styles . editLayer . strokeWidth } ) } ) ;
c && d . setZIndex ( 1 ) ; b instanceof ol . geom . Polygon && ( b = b . getArea ( ) , d . setText ( new ol . style . Text ( { text : [ netgis . util . formatArea ( b , ! 0 ) , "4mm sans-serif" ] , font : this . labelFont , 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 d } ;
2023-01-31 16:26:59 +01:00
netgis . MapOpenLayers . prototype . styleSelect = function ( a ) { var b = a . getGeometry ( ) ; a = new ol . style . Style ( { image : new ol . style . Circle ( { radius : this . client . config . styles . select . pointRadius , fill : new ol . style . Fill ( { color : this . client . config . styles . select . stroke } ) } ) , fill : new ol . style . Fill ( { color : this . client . config . styles . select . fill } ) , stroke : new ol . style . Stroke ( { color : this . client . config . styles . select . stroke , width : this . client . config . styles . select . strokeWidth } ) } ) ; b instanceof ol . geom . Polygon && ( b = b . getArea ( ) , a . setText ( new ol . style . Text ( { text : [ netgis . util . formatArea ( b ,
! 0 ) , "4mm sans-serif" ] , font : this . labelFont , fill : new ol . style . Fill ( { color : this . client . config . styles . select . stroke } ) , backgroundFill : new ol . style . Fill ( { color : "rgba( 255, 255, 255, 0.5 )" } ) , padding : [ 2 , 4 , 2 , 4 ] } ) ) ) ; return a } ;
2023-10-16 13:27:27 +02:00
netgis . MapOpenLayers . prototype . styleModify = function ( a ) { var b = new ol . style . Style ( { image : new ol . style . Circle ( { radius : this . config . styles . modify . pointRadius , fill : new ol . style . Fill ( { color : this . config . styles . modify . stroke } ) } ) , fill : new ol . style . Fill ( { color : this . config . styles . modify . fill } ) , stroke : new ol . style . Stroke ( { color : this . config . styles . modify . stroke , width : this . config . styles . modify . strokeWidth } ) } ) , c = new ol . style . Style ( { image : new ol . style . Circle ( { radius : this . config . styles . modify . pointRadius , fill : new ol . style . Fill ( { color : this . config . styles . modify . stroke } ) } ) ,
geometry : this . getGeometryPoints ( a ) } ) ; a = a . getGeometry ( ) ; a instanceof ol . geom . Polygon && ( a = a . getArea ( ) , b . setText ( new ol . style . Text ( { text : [ netgis . util . formatArea ( a , ! 0 ) , "4mm sans-serif" ] , font : this . labelFont , fill : new ol . style . Fill ( { color : this . config . styles . modify . stroke } ) , backgroundFill : new ol . style . Fill ( { color : "rgba( 255, 255, 255, 0.5 )" } ) , padding : [ 2 , 4 , 2 , 4 ] } ) ) ) ; return [ b , c ] } ;
netgis . MapOpenLayers . prototype . styleSketch = function ( a ) { var b = a . getGeometry ( ) , c = new ol . style . Style ( { image : new ol . style . Circle ( { radius : this . config . styles . sketch . pointRadius , fill : new ol . style . Fill ( { color : this . config . styles . sketch . stroke } ) } ) , fill : new ol . style . Fill ( { color : this . config . styles . sketch . fill } ) , stroke : new ol . style . Stroke ( { color : this . config . styles . sketch . stroke , width : this . config . styles . sketch . strokeWidth } ) } ) ; b instanceof ol . geom . Polygon && ( b = b . getArea ( ) , c . setText ( new ol . style . Text ( { text : [ netgis . util . formatArea ( b ,
! 0 ) , "4mm sans-serif" ] , font : this . labelFont , fill : new ol . style . Fill ( { color : this . config . styles . sketch . 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 : this . config . styles . sketch . pointRadius , fill : new ol . style . Fill ( { color : this . config . styles . sketch . stroke } ) } ) , geometry : this . getGeometryPoints ( a ) } ) ; return [ c , a ] } ;
netgis . MapOpenLayers . prototype . styleParcel = function ( ) { return new ol . style . Style ( { fill : new ol . style . Fill ( { color : this . client . config . styles . parcel . fill } ) , stroke : new ol . style . Stroke ( { color : this . client . config . styles . parcel . stroke , width : this . client . config . styles . parcel . strokeWidth } ) } ) } ; netgis . MapOpenLayers . prototype . redrawVectorLayers = function ( ) { this . map . getLayers ( ) . forEach ( function ( a , b , c ) { a instanceof ol . layer . Vector && a . setStyle ( a . getStyle ( ) ) } ) } ;
2022-04-04 12:27:45 +02:00
netgis . MapOpenLayers . 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 . MapOpenLayers . prototype . getActiveVectorLayers = function ( ) { for ( var a = [ ] , b = this . map . getLayers ( ) . getArray ( ) , c = this . layers , d = 0 ; d < c . length ; d ++ ) { var e = c [ d ] ; e instanceof ol . layer . Vector && - 1 < b . indexOf ( e ) && a . push ( e ) } return a } ;
2023-10-16 13:27:27 +02:00
netgis . MapOpenLayers . prototype . setMode = function ( a ) { switch ( this . mode ) { case netgis . Modes . BUFFER _FEATURE _EDIT : this . onBufferCancel ( null ) ; break ; case netgis . Modes . DRAW _POINTS : case netgis . Modes . DRAW _LINES : var b = this . drawBufferOn ; this . onDrawBufferOff ( null ) ; this . drawBufferOn = b ; break ; case netgis . Modes . MODIFY _FEATURES : this . editLayer . setStyle ( this . styleEdit . bind ( this ) ) } this . container . classList . remove ( "netgis-cursor-draw" ) ; this . container . classList . remove ( "netgis-clickable" ) ; switch ( a ) { case netgis . Modes . DRAW _POINTS : this . container . classList . add ( "netgis-cursor-draw" ) ;
this . updateSnapFeatures ( ) ; if ( this . drawBufferOn ) this . onDrawBufferOn ( ) ; break ; case netgis . Modes . DRAW _LINES : this . container . classList . add ( "netgis-cursor-draw" ) ; this . updateSnapFeatures ( ) ; if ( this . drawBufferOn ) this . onDrawBufferOn ( ) ; break ; case netgis . Modes . DRAW _POLYGONS : this . container . classList . add ( "netgis-cursor-draw" ) ; this . updateSnapFeatures ( ) ; break ; case netgis . Modes . MODIFY _FEATURES : this . editLayer . setStyle ( this . styleModify . bind ( this ) ) } this . map . getInteractions ( ) . clear ( ) ; ( b = this . interactions [ a ] ) || ( b = this . interactions [ netgis . Modes . VIEW ] ) ;
2023-11-21 09:01:59 +01:00
for ( var c = 0 ; c < b . length ; c ++ ) this . map . addInteraction ( b [ c ] ) ; this . snap && ( a === netgis . Modes . DRAW _POINTS || a === netgis . Modes . DRAW _LINES || a === netgis . Modes . DRAW _POLYGONS ) && this . map . addInteraction ( this . snap ) ; this . mode = a } ; netgis . MapOpenLayers . prototype . getModeClassName = function ( a ) { a = a . toLowerCase ( ) ; a = netgis . util . replace ( a , "_" , "-" ) ; return "netgis-mode-" + a } ; netgis . MapOpenLayers . prototype . setSnapOn = function ( ) { this . snap = new ol . interaction . Snap ( { features : this . snapFeatures } ) ; this . map . addInteraction ( this . snap ) ; this . snapFeatures . changed ( ) } ;
netgis . MapOpenLayers . prototype . setSnapOff = function ( ) { this . snap && ( this . map . removeInteraction ( this . snap ) , this . snap = null ) } ; netgis . MapOpenLayers . prototype . setTracingOn = function ( ) { var a = new ol . source . Vector ( { features : this . snapFeatures } ) ; this . tracing = new ol . interaction . Draw ( { type : "Polygon" , source : this . editLayer . getSource ( ) , style : this . styleSketch . bind ( this ) , trace : ! 0 , traceSource : a } ) ; a = this . interactions [ netgis . Modes . DRAW _POLYGONS ] ; a [ 0 ] . setActive ( ! 1 ) ; a . push ( this . tracing ) ; this . setMode ( this . mode ) } ;
2023-01-31 16:26:59 +01:00
netgis . MapOpenLayers . prototype . setTracingOff = function ( ) { var a = this . interactions [ netgis . Modes . DRAW _POLYGONS ] ; a [ 0 ] . setActive ( ! 0 ) ; a . splice ( a . indexOf ( this . tracing ) , 1 ) ; this . setMode ( this . mode ) } ; netgis . MapOpenLayers . prototype . addSnapLayer = function ( a ) { a = a . getSource ( ) . getFeatures ( ) ; for ( var b = 0 ; b < a . length ; b ++ ) this . snapFeatures . push ( a [ b ] ) } ; netgis . MapOpenLayers . prototype . removeSnapLayer = function ( a ) { a = a . getSource ( ) . getFeatures ( ) ; for ( var b = 0 ; b < a . length ; b ++ ) this . snapFeatures . remove ( a [ b ] ) } ;
2023-10-16 13:27:27 +02:00
netgis . MapOpenLayers . 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 . MapOpenLayers . prototype . zoomExtent = function ( a , b , c , d ) { a = ol . proj . fromLonLat ( [ a , b ] , this . projection ) ; c = ol . proj . fromLonLat ( [ c , d ] , this . projection ) ; this . view . fit ( [ a [ 0 ] , a [ 1 ] , c [ 0 ] , c [ 1 ] ] ) } ; netgis . MapOpenLayers . prototype . zoomWKT = function ( a ) { a = ( new ol . format . WKT ) . readGeometry ( a ) ; this . view . fit ( a , { duration : 300 } ) } ;
netgis . MapOpenLayers . prototype . zoomGeoJSON = function ( a ) { a = ( new ol . format . GeoJSON ) . readFeatures ( a ) ; for ( var b = a [ 0 ] . getGeometry ( ) . getExtent ( ) , c = 1 ; c < a . length ; c ++ ) ol . extent . extend ( b , a [ c ] . getGeometry ( ) . getExtent ( ) ) ; this . view . fit ( b , { duration : 300 } ) } ; netgis . MapOpenLayers . prototype . zoomLayer = function ( a ) { a = this . activeLayers [ a ] . getSource ( ) . getExtent ( ) ; this . view . fit ( a , { duration : 300 } ) } ; netgis . MapOpenLayers . prototype . zoomFeature = function ( a ) { this . view . fit ( a . getGeometry ( ) , { duration : 300 } ) } ;
netgis . MapOpenLayers . prototype . zoom = function ( a ) { this . view . animate ( { zoom : this . view . getZoom ( ) + a , duration : 200 } ) } ; netgis . MapOpenLayers . prototype . zoomLevel = function ( a ) { this . view . animate ( { zoom : a , center : this . view . getCenter ( ) , duration : 300 } ) } ; netgis . MapOpenLayers . prototype . zoomAll = function ( ) { var a = this . config . map ; this . view . animate ( { zoom : a . zoom , center : a . center , duration : 500 } ) } ; netgis . MapOpenLayers . prototype . setPadding = function ( a , b , c , d ) { this . view . padding = [ a + 40 , b + 40 , c + 40 , d + 40 ] } ;
2023-01-31 16:26:59 +01:00
netgis . MapOpenLayers . prototype . onSnapOn = function ( a ) { this . setSnapOn ( ) } ; netgis . MapOpenLayers . prototype . onSnapOff = function ( a ) { this . setSnapOff ( ) } ; netgis . MapOpenLayers . prototype . onTracingOn = function ( a ) { this . setTracingOn ( ) } ; netgis . MapOpenLayers . prototype . onTracingOff = function ( a ) { this . setTracingOff ( ) } ; netgis . MapOpenLayers . prototype . onLayerShow = function ( a ) { if ( a = this . layers [ a . id ] ) this . map . addLayer ( a ) , a instanceof ol . layer . Vector && this . addSnapLayer ( a ) } ;
netgis . MapOpenLayers . prototype . onLayerHide = function ( a ) { if ( a = this . layers [ a . id ] ) this . map . removeLayer ( a ) , a instanceof ol . layer . Vector && this . removeSnapLayer ( a ) } ;
2023-10-16 13:27:27 +02:00
netgis . MapOpenLayers . prototype . onContextUpdate = function ( a ) { this . clearAll ( ) ; if ( a = a . bbox ) { if ( netgis . util . isDefined ( this . client . config . map ) && netgis . util . isDefined ( this . client . config . map . projection ) ) { var b = ol . proj . fromLonLat ( [ a [ 0 ] , a [ 1 ] ] , this . client . config . map . projection ) ; var c = ol . proj . fromLonLat ( [ a [ 2 ] , a [ 3 ] ] , this . client . config . map . projection ) } else b = ol . proj . fromLonLat ( [ a [ 0 ] , a [ 1 ] ] ) , c = ol . proj . fromLonLat ( [ a [ 2 ] , a [ 3 ] ] ) ; a [ 0 ] = b [ 0 ] ; a [ 1 ] = b [ 1 ] ; a [ 2 ] = c [ 0 ] ; a [ 3 ] = c [ 1 ] ; this . view . fit ( a ) } } ;
netgis . MapOpenLayers . prototype . onAddServiceWMS = function ( a ) { var b = this . createLayerWMS ( a . url , a . name , a . format ) ; b . setZIndex ( a . id ) ; this . layers [ a . id ] = b } ; netgis . MapOpenLayers . prototype . onAddServiceWFS = function ( a ) { var b = this . createLayerWFS ( a . url , a . name , this . client . config . map . projection , a . format ) ; b . setZIndex ( a . id ) ; this . layers [ a . id ] = b } ; netgis . MapOpenLayers . prototype . onSetMode = function ( a ) { this . setMode ( a ) } ;
2023-01-31 16:26:59 +01:00
netgis . MapOpenLayers . prototype . onSetExtent = function ( a ) { var b = ol . proj . fromLonLat ( [ a . minx , a . miny ] , this . client . config . map . projection ) ; a = ol . proj . fromLonLat ( [ a . maxx , a . maxy ] , this . client . config . map . projection ) ; this . view . fit ( [ b [ 0 ] , b [ 1 ] , a [ 0 ] , a [ 1 ] ] ) } ; netgis . MapOpenLayers . prototype . onChangeZoom = function ( a ) { this . view . animate ( { zoom : this . view . getZoom ( ) + a , duration : 200 } ) } ; netgis . MapOpenLayers . prototype . onZoomWKT = function ( a ) { a = ( new ol . format . WKT ) . readGeometry ( a ) ; this . view . fit ( a , { duration : 300 , padding : [ 40 , 40 , 40 , 40 ] } ) } ;
2023-11-21 09:01:59 +01:00
netgis . MapOpenLayers . prototype . onPointerMove = function ( a ) { var b = a . pixel ; a = a . coordinate ; var c = null , d = null ; this . map . forEachFeatureAtPixel ( b , function ( a , b ) { if ( b ) { if ( - 1 !== b . get ( "id" ) . search ( "import-" ) ) return ! 1 ; c = a ; d = b ; return ! 0 } } ) ; switch ( this . mode ) { default : return ! 0 ; case netgis . Modes . PARCEL _SELECT : case netgis . Modes . DELETE _FEATURES : case netgis . Modes . CUT _FEATURE _BEGIN : case netgis . Modes . BUFFER _FEATURE _BEGIN : break ; case netgis . Modes . DRAW _POINTS : case netgis . Modes . DRAW _LINES : return this . updateDrawBufferPreview ( ) ,
! 0 } c !== this . hoverFeature && ( this . hoverFeature && this . featureLeave ( this . hoverFeature , this . hoverLayer , b , a ) , c && this . featureEnter ( c , d , b , a ) , this . redrawVectorLayers ( ) , this . hoverFeature = c , this . hoverLayer = d ) ; c && this . featureHover ( c , d , b , a ) } ; netgis . MapOpenLayers . prototype . onPointerLeave = function ( a ) { this . hoverFeature && ( this . featureLeave ( this . hoverFeature , this . hoverLayer , [ a . offsetX , a . offsetY ] , null ) , this . hoverLayer = this . hoverFeature = null ) } ;
netgis . MapOpenLayers . prototype . featureEnter = function ( a , b , c , d ) { b && ( this . container . classList . add ( "netgis-clickable" ) , b . get ( "id" ) !== netgis . Client . Layers . EDIT _LAYER && - 1 === b . get ( "id" ) . search ( "import-" ) && a . setStyle ( this . hoverStyle ) , netgis . util . invoke ( this . container , netgis . Events . MAP _FEATURE _ENTER , { pixel : c , coords : d , layer : b . get ( "id" ) , properties : a . getProperties ( ) } ) ) } ; netgis . MapOpenLayers . prototype . featureHover = function ( a , b , c , d ) { } ;
2023-10-16 13:27:27 +02:00
netgis . MapOpenLayers . prototype . featureLeave = function ( a , b , c , d ) { b && ( this . container . classList . remove ( "netgis-clickable" ) , b . get ( "id" ) !== netgis . Client . Layers . EDIT _LAYER && a . setStyle ( null ) , netgis . util . invoke ( this . container , netgis . Events . MAP _FEATURE _LEAVE , { pixel : c , coords : d , layer : b . get ( "id" ) , properties : a . getProperties ( ) } ) ) } ; netgis . MapOpenLayers . prototype . findFeature = function ( a , b , c ) { if ( a = this . activeLayers [ a ] ) { a = a . getSource ( ) . getFeatures ( ) ; for ( var d = null , e = 0 ; e < a . length ; e ++ ) { var f = a [ e ] ; if ( f . get ( b ) === c ) { d = f ; break } } return d } } ;
netgis . MapOpenLayers . prototype . setFeatureHover = function ( a , b ) { a . setStyle ( b ? this . hoverStyle : null ) } ; netgis . MapOpenLayers . prototype . onPointerMove _01 = function ( a ) { a = a . pixel ; var b = this . hoverFeature , c = this ; switch ( this . mode ) { case netgis . Modes . DRAW _POINTS : case netgis . Modes . DRAW _LINES : this . updateDrawBufferPreview ( ) } b = null ; this . map . forEachFeatureAtPixel ( a , function ( a , e ) { e === c . editLayer && ( b = a ) ; return ! 0 } ) ; b !== this . hoverFeature && this . redrawVectorLayers ( ) ; this . hoverFeature = b } ;
2023-11-21 09:01:59 +01:00
netgis . MapOpenLayers . prototype . onSingleClick = function ( a ) { switch ( this . mode ) { default : this . hoverFeature && this . hoverLayer && ( a = { pixel : a . pixel , coords : a . coordinate , layer : this . hoverLayer . get ( "id" ) , id : this . hoverFeature . getId ( ) , properties : this . hoverFeature . getProperties ( ) } , netgis . util . invoke ( this . container , netgis . Events . MAP _FEATURE _CLICK , a ) ) ; break ; case netgis . Modes . DELETE _FEATURES : this . hoverFeature && ( this . editLayer . getSource ( ) . removeFeature ( this . hoverFeature ) , this . featureLeave ( this . hoverFeature , this . editLayer ) ,
this . hoverFeature = null , netgis . util . invoke ( this . container , netgis . Events . SET _MODE , netgis . Modes . VIEW ) ) ; break ; case netgis . Modes . CUT _FEATURE _BEGIN : this . hoverFeature && ( this . selected = this . hoverFeature , netgis . util . invoke ( this . container , netgis . Events . SET _MODE , netgis . Modes . CUT _FEATURE _DRAW ) ) ; break ; case netgis . Modes . BUFFER _FEATURE _BEGIN : this . hoverFeature && ( this . selected = this . hoverFeature , netgis . util . invoke ( this . container , netgis . Events . SET _MODE , netgis . Modes . BUFFER _FEATURE _EDIT ) ) } } ;
netgis . MapOpenLayers . prototype . onMoveStart = function ( a ) { } ; netgis . MapOpenLayers . prototype . onMoveEnd = function ( a ) { } ; netgis . MapOpenLayers . prototype . onChangeResolution = function ( a ) { } ;
2023-10-16 13:27:27 +02:00
netgis . MapOpenLayers . prototype . onCutFeatureDrawEnd = function ( a ) { var b = a . feature ; if ( a = this . selected ) { var c = new jsts . io . OL3Parser , d = c . read ( a . getGeometry ( ) ) ; b = c . read ( b . getGeometry ( ) ) ; d = d . difference ( b ) ; c = c . write ( d ) ; c = new ol . Feature ( { geometry : c } ) ; d = this . editLayer . getSource ( ) ; d . removeFeature ( a ) ; d . addFeature ( c ) ; this . selected = c } this . editEventsSilent = ! 0 ; this . splitMultiPolygons ( this . editLayer ) ; this . editEventsSilent = ! 1 ; this . updateEditOutput ( ) ; netgis . util . invoke ( this . container , netgis . Events . SET _MODE , netgis . Modes . VIEW ) } ;
2023-01-31 16:26:59 +01:00
netgis . MapOpenLayers . prototype . onModifyFeaturesEnd = function ( a ) { this . updateEditOutput ( ) ; this . updateEditArea ( ) } ; netgis . MapOpenLayers . prototype . createBufferFeature = function ( a , b , c ) { a = this . createBufferGeometry ( a , b , c ) ; return new ol . Feature ( { geometry : a } ) } ; netgis . MapOpenLayers . prototype . createBufferGeometry = function ( a , b , c ) { var d = new jsts . io . OL3Parser ; a = d . read ( a ) . buffer ( b , c ) ; return d . write ( a ) } ;
netgis . MapOpenLayers . prototype . onBufferChange = function ( a ) { var b = this . editLayer . getSource ( ) , c = this . selected ; this . sketch && b . removeFeature ( this . sketch ) ; c && ( a = this . createBufferFeature ( c . getGeometry ( ) , a . radius , a . segments ) , b . addFeature ( a ) , this . sketch = a ) } ; netgis . MapOpenLayers . prototype . onBufferAccept = function ( a ) { this . selected && this . sketch && this . editLayer . getSource ( ) . removeFeature ( this . selected ) ; this . selected = this . sketch = null } ;
2023-10-16 13:27:27 +02:00
netgis . MapOpenLayers . prototype . onBufferCancel = function ( a ) { this . sketch && ( this . editLayer . getSource ( ) . removeFeature ( this . sketch ) , this . sketch = null ) ; this . selected = null } ; netgis . MapOpenLayers . prototype . onDrawPointsEnd = function ( a ) { var b = this . previewLayer . getSource ( ) . getFeatures ( ) [ 0 ] ; if ( b ) { var c = this . editLayer . getSource ( ) ; c . addFeature ( b . clone ( ) ) ; window . setTimeout ( function ( ) { c . removeFeature ( a . feature ) } , 10 ) } } ;
netgis . MapOpenLayers . prototype . onDrawLinesEnd = function ( a ) { var b = this . previewLayer . getSource ( ) . getFeatures ( ) [ 0 ] ; if ( b ) { var c = this . editLayer . getSource ( ) ; c . addFeature ( b . clone ( ) ) ; window . setTimeout ( function ( ) { c . removeFeature ( a . feature ) } , 10 ) } } ; netgis . MapOpenLayers . prototype . onDrawBufferOn = function ( a ) { a = this . createBufferFeature ( new ol . geom . Point ( this . config . map . center ) , this . drawBufferRadius , this . drawBufferSegments ) ; this . previewLayer . getSource ( ) . addFeature ( a ) ; this . drawBufferOn = ! 0 } ;
netgis . MapOpenLayers . prototype . onDrawBufferOff = function ( a ) { this . previewLayer . getSource ( ) . clear ( ) ; this . drawBufferOn = ! 1 } ; netgis . MapOpenLayers . prototype . onDrawBufferRadiusChange = function ( a ) { this . drawBufferRadius = a ; this . updateDrawBufferPreview ( ) } ; netgis . MapOpenLayers . prototype . onDrawBufferSegmentsChange = function ( a ) { this . drawBufferSegments = a ; this . updateDrawBufferPreview ( ) } ;
netgis . MapOpenLayers . prototype . updateDrawBufferPreview = function ( ) { 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 . MapOpenLayers . prototype . onEditLayerAdd = function ( a ) { this . updateEditLayerItem ( ) ; this . updateEditOutput ( ) ; this . snapFeatures . push ( a . feature ) } ;
netgis . MapOpenLayers . prototype . onEditLayerRemove = function ( a ) { this . updateEditOutput ( ) ; this . snapFeatures . remove ( a . feature ) } ; netgis . MapOpenLayers . prototype . onEditLayerChange = function ( a ) { this . updateEditOutput ( ) } ;
netgis . MapOpenLayers . prototype . updateEditOutput = function ( ) { var a = this . editLayer . getSource ( ) . getFeatures ( ) , b = this . projection , 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 ; this . editEventsSilent || netgis . util . invoke ( this . container , netgis . Events . EDIT _FEATURES _CHANGE , c ) } ;
2023-11-21 09:01:59 +01:00
netgis . MapOpenLayers . prototype . updateEditLayerItem = function ( ) { var a = this . editLayerID ; this . activeLayers [ a ] || ( this . activeLayers [ a ] = this . editLayer , netgis . util . invoke ( this . container , netgis . Events . LAYER _CREATED , { id : a , title : "Zeichnung" , checked : ! 0 , folder : "draw" } ) ) } ; netgis . MapOpenLayers . prototype . updateEditArea = function ( ) { } ;
netgis . MapOpenLayers . prototype . onEditFeaturesLoaded = function ( a ) { var b = this ; console . info ( "Edit Features Loaded:" , a ) ; window . setTimeout ( function ( ) { b . addLayer ( "import" , b . createLayerGeoJSON ( a , ! 0 ) ) } , 10 ) } ; netgis . MapOpenLayers . prototype . onDragEnter = function ( a ) { a . preventDefault ( ) ; this . dropTarget . classList . remove ( "netgis-hide" ) ; return ! 1 } ; netgis . MapOpenLayers . prototype . onDragLeave = function ( a ) { this . dropTarget . classList . add ( "netgis-hide" ) ; return ! 1 } ;
2022-04-04 12:27:45 +02:00
netgis . MapOpenLayers . prototype . onDragDrop = function ( a ) { console . info ( "Drag Drop" ) ; this . dropTarget . classList . add ( "netgis-hide" ) ; a . preventDefault ( ) ; a = a . dataTransfer . files [ 0 ] ; var b = new FileReader ; b . onload = this . onDragLoad . bind ( this ) ; console . log ( "File:" , a ) ; b . readAsArrayBuffer ( a ) ; return ! 1 } ; netgis . MapOpenLayers . prototype . onDragLoad = function ( a ) { console . log ( "On Load:" , a . target ) ; this . loadShape ( a . target . result ) } ; netgis . MapOpenLayers . prototype . loadShape = function ( a ) { var b = this ; shp ( a ) . then ( function ( a ) { b . onShapeLoad ( a ) } ) } ;
netgis . MapOpenLayers . prototype . onShapeLoad = function ( a ) { console . info ( "Shapefile To Geojson:" , a ) ; a = ( new ol . format . GeoJSON ( { dataProjection : "EPSG:4326" , featureProjection : "EPSG:3857" } ) ) . readFeatures ( a ) ; this . importLayer . getSource ( ) . addFeatures ( a ) ; this . view . fit ( this . importLayer . getSource ( ) . getExtent ( ) , { } ) } ; netgis . MapOpenLayers . prototype . onImportGeoJSON = function ( a ) { var b = a . name , c = this , d = new FileReader ; d . onload = function ( a ) { c . createLayerGeoJSON ( b , a . target . result ) } ; d . readAsText ( a ) } ;
netgis . MapOpenLayers . prototype . onImportGML = function ( a ) { var b = a . name , c = this , d = new FileReader ; d . onload = function ( a ) { c . createLayerGML ( b , a . target . result ) } ; d . readAsText ( a ) } ; netgis . MapOpenLayers . prototype . onImportShapefile = function ( a ) { var b = a . name , c = this , d = new FileReader ; d . onload = function ( a ) { c . createLayerShapefile ( b , a . target . result ) } ; d . readAsArrayBuffer ( a ) } ;
2023-01-31 16:26:59 +01:00
netgis . MapOpenLayers . prototype . onImportSpatialite = function ( a ) { var b = a . name , c = this , d = new FileReader ; d . onload = function ( a ) { c . createLayerSpatialite ( b , a . target . result ) } ; d . readAsArrayBuffer ( a ) } ; netgis . MapOpenLayers . prototype . onImportGeopackage = function ( a ) { var b = a . name , c = this , d = new FileReader ; d . onload = function ( a ) { c . createLayerGeopackage ( b , a . target . result ) } ; d . readAsArrayBuffer ( a ) } ;
2023-11-21 09:01:59 +01:00
netgis . MapOpenLayers . prototype . createLayerGeoJSON = function ( a , b ) { var c = new ol . format . GeoJSON , d = c . readProjection ( a ) ; a = b ? c . readFeatures ( a , { featureProjection : this . projection } ) : c . readFeatures ( a ) ; d = d . getCode ( ) ; switch ( d ) { case "EPSG:3857" : case "EPSG:4326" : case this . projection : break ; default : console . warn ( "Unsupported Import Projection:" , d ) } return new ol . layer . Vector ( { source : new ol . source . Vector ( { features : a } ) } ) } ;
2023-10-16 13:27:27 +02:00
netgis . MapOpenLayers . 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 ) ; e . geometry = f ; f = new ol . Feature ( e ) ; c . push ( f ) } return new ol . layer . Vector ( { source : new ol . source . Vector ( { features : c } ) } ) } ; netgis . MapOpenLayers . prototype . createLayerVector = function ( a ) { var b = new ol . layer . Vector ( { source : new ol . source . Vector ( { features : [ ] } ) } ) ; a && b . setZIndex ( a ) ; return b } ;
2023-11-21 09:01:59 +01:00
netgis . MapOpenLayers . 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 } ) } ) } ;
2023-01-31 16:26:59 +01:00
netgis . MapOpenLayers . 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 ) } ;
2023-11-21 09:01:59 +01:00
netgis . MapOpenLayers . 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 . MapOpenLayers . 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 . projection ) ) } return a } ;
netgis . MapOpenLayers . 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 . projection } ) ; b . getSource ( ) . addFeatures ( a ) } ) ; return b } ;
netgis . MapOpenLayers . 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 '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 } } k = k . values ; for ( 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 . projection } ) ; e . push ( new ol . Feature ( { geometry : m } ) ) } } b . getSource ( ) . addFeatures ( e ) } ) ;
return b } ;
netgis . MapOpenLayers . 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 . geopackageLibURL + 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 . projection } ) ; m =
new ol . Feature ( { geometry : m } ) ; d . push ( m ) } b . getSource ( ) . addFeatures ( d ) } ) ; return b } ; netgis . MapOpenLayers . prototype . addImportedFeatures = function ( a ) { this . editEventsSilent = ! 0 ; this . editLayer . getSource ( ) . addFeatures ( a ) ; this . editEventsSilent = ! 1 ; this . updateEditOutput ( ) } ; netgis . MapOpenLayers . prototype . onImportWKT = function ( a ) { a = ( new ol . format . WKT ) . readGeometry ( a ) ; a = new ol . Feature ( { geometry : a } ) ; this . addImportedFeatures ( [ a ] ) } ;
netgis . MapOpenLayers . prototype . onExportPDF = function ( a ) { this . exportImage ( "pdf" , a . resx , a . resy , a . mode , a . margin ) } ; netgis . MapOpenLayers . prototype . onExportJPEG = function ( a ) { this . exportImage ( "jpeg" , a . resx , a . resy ) } ; netgis . MapOpenLayers . prototype . onExportPNG = function ( a ) { this . exportImage ( "png" , a . resx , a . resy ) } ; netgis . MapOpenLayers . prototype . onExportGIF = function ( a ) { this . exportImage ( "gif" , a . resx , a . resy ) } ;
netgis . MapOpenLayers . prototype . onParcelShowPreview = function ( a ) { a = ( new ol . format . WKT ) . readGeometry ( a . geom ) ; a = new ol . Feature ( { geometry : a } ) ; this . parcelLayer . getSource ( ) . clear ( ) ; this . parcelLayer . getSource ( ) . addFeature ( a ) } ; netgis . MapOpenLayers . prototype . onParcelHidePreview = function ( a ) { this . parcelLayer . getSource ( ) . clear ( ) } ; netgis . MapOpenLayers . prototype . getWidth = function ( ) { return this . map . getSize ( ) [ 0 ] } ; netgis . MapOpenLayers . prototype . getHeight = function ( ) { return this . map . getSize ( ) [ 1 ] } ;
2023-10-16 13:27:27 +02:00
netgis . MapOpenLayers . prototype . exportImage = function ( a , b , c , d , e ) { netgis . util . invoke ( this . container , netgis . Events . EXPORT _BEGIN , null ) ; var f = this , g = this . container , h = this . map , k = this . config , 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 . export . defaultFilename + ".pdf" } ) ; window . open ( n , "_blank" ) ; break ; case "jpeg" : window . navigator . msSaveBlob ? window . navigator . msSaveBlob ( n . msToBlob ( ) , k . export . defaultFilename + ".jpg" ) : ( p . setAttribute ( "download" , k . export . defaultFilename + ".jpg" ) , p . setAttribute ( "href" , n . toDataURL ( "image/jpeg" , 1 ) ) , p . click ( ) ) ;
break ; case "png" : window . navigator . msSaveBlob ? window . navigator . msSaveBlob ( n . msToBlob ( ) , k . export . defaultFilename + ".png" ) : ( p . setAttribute ( "download" , k . export . defaultFilename + ".png" ) , p . setAttribute ( "href" , n . toDataURL ( "image/png" , 1 ) ) , p . click ( ) ) ; break ; case "gif" : p . setAttribute ( "download" , k . export . defaultFilename + ".gif" ) , v = new GIF ( { workerScript : k . export . gifWebWorker , 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 . export . logo } ; netgis . MapOpenLayers . 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 = netgis || { } ; netgis . Menu = function ( ) { this . root = this . client = null ; this . sections = [ ] } ;
netgis . Menu . prototype . load = function ( ) { this . root = document . createElement ( "header" ) ; this . root . className = "netgis-menu netgis-color-a netgis-shadow" ; var a = document . createElement ( "div" ) ; this . root . appendChild ( a ) ; var b = this . createButton ( '<i class="fab fa-buffer"></i><span>Inhalte</span>' , ! 0 ) ; b . addEventListener ( "click" , this . onToggleClick . bind ( this ) ) ; a . appendChild ( b ) ; b = this . createButton ( '<i class="fas fa-tools"></i><span>Werkzeuge</span>' , ! 0 ) ; b . addEventListener ( "click" , this . onToolboxClick . bind ( this ) ) ; a . appendChild ( b ) ;
b = this . createButton ( '<i class="fas fa-vector-square"></i><span>Flurst\u00fccke</span>' , ! 0 ) ; b . addEventListener ( "click" , this . onSearchParcelClick . bind ( this ) ) ; a . appendChild ( b ) ; b = this . createButton ( '<i class="fas fa-search"></i><span>Suche</span>' , ! 0 ) ; b . addEventListener ( "click" , this . onSearchPlaceClick . bind ( this ) ) ; a . appendChild ( b ) ; this . client . editable && ( a = this . createMenu ( '<i class="fas fa-caret-down"></i>Zeichnen' ) . getElementsByTagName ( "ul" ) [ 0 ] , a . appendChild ( this . createMenuItem ( '<i class="fas fa-map-marker-alt"></i>Punkte' ,
this . onDrawPointClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="fas fa-minus"></i>Linien' , this . onDrawLineClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="fas fa-vector-square"></i>Polygone' , this . onDrawPolygonClick . bind ( this ) ) ) , a = this . createMenu ( '<i class="fas fa-caret-down"></i>Bearbeiten' ) . getElementsByTagName ( "ul" ) [ 0 ] , a . appendChild ( this . createMenuItem ( '<i class="fas fa-cut"></i>Ausschneiden' , this . onCutFeatureClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="fas fa-arrows-alt"></i>Verschieben' ,
this . onModifyFeaturesClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="fas fa-eraser"></i>L\u00f6schen' , this . onDeleteFeaturesClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="far fa-dot-circle"></i>Puffern' , this . onBufferFeatureClick . bind ( this ) ) ) , a = this . createMenu ( '<i class="fas fa-caret-down"></i>Import' ) . getElementsByTagName ( "ul" ) [ 0 ] , a . appendChild ( this . createMenuItem ( '<i class="fas fa-file"></i>GeoJSON' , this . onImportGeoJSONClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="fas fa-file"></i>GML' ,
this . onImportGMLClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="fas fa-file"></i>Shapefile' , this . onImportShapefileClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="fas fa-file"></i>Spatialite' , this . onImportSpatialiteClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="fas fa-file"></i>GeoPackage' , this . onImportGeopackageClick . bind ( this ) ) ) , a = this . createMenu ( '<i class="fas fa-caret-down"></i>Export' ) . getElementsByTagName ( "ul" ) [ 0 ] , a . appendChild ( this . createMenuItem ( '<i class="fas fa-file"></i>PDF' ,
this . onExportPDFClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="fas fa-file"></i>JPEG' , this . onExportJPEGClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="fas fa-file"></i>PNG' , this . onExportPNGClick . bind ( this ) ) ) , a . appendChild ( this . createMenuItem ( '<i class="fas fa-file"></i>GIF' , this . onExportGIFClick . bind ( this ) ) ) ) ; this . client . root . appendChild ( this . root ) } ;
netgis . Menu . prototype . createButton = function ( a , b ) { var c = document . createElement ( "button" ) ; c . setAttribute ( "type" , "button" ) ; c . className = "netgis-color-a netgis-hover-c" ; b && ( c . className += " netgis-right" ) ; c . innerHTML = a ; return c } ;
2022-05-12 13:22:46 +02:00
netgis . Menu . prototype . createMenu = function ( a ) { var b = document . createElement ( "div" ) ; b . className = "netgis-dropdown" ; var c = document . createElement ( "button" ) ; c . setAttribute ( "type" , "button" ) ; c . className = "netgis-primary netgis-hover-primary" ; c . innerHTML = a ; b . appendChild ( c ) ; a = document . createElement ( "ul" ) ; a . className = "netgis-dropdown-content netgis-dialog netgis-shadow" ; b . appendChild ( a ) ; return b } ;
2023-10-16 13:27:27 +02:00
netgis . Menu . prototype . createMenuItem = function ( a , b ) { var c = document . createElement ( "li" ) ; c . className = "netgis-hover-light" ; var d = document . createElement ( "button" ) ; d . setAttribute ( "type" , "button" ) ; d . innerHTML = a ; d . addEventListener ( "click" , b ) ; c . appendChild ( d ) ; return c } ; netgis . Menu . prototype . onToggleClick = function ( a ) { netgis . util . invoke ( this . root , netgis . Events . LAYERS _TOGGLE ) } ; netgis . Menu . prototype . onDrawPointClick = function ( a ) { this . client . invoke ( netgis . Events . SET _MODE , netgis . Modes . DRAW _POINTS ) } ;
2022-05-12 13:22:46 +02:00
netgis . Menu . prototype . onDrawLineClick = function ( a ) { this . client . invoke ( netgis . Events . SET _MODE , netgis . Modes . DRAW _LINES ) } ; netgis . Menu . prototype . onDrawPolygonClick = function ( a ) { this . client . invoke ( netgis . Events . SET _MODE , netgis . Modes . DRAW _POLYGONS ) } ; netgis . Menu . prototype . onCutFeatureClick = function ( a ) { this . client . invoke ( netgis . Events . SET _MODE , netgis . Modes . CUT _FEATURE _BEGIN ) } ; netgis . Menu . prototype . onModifyFeaturesClick = function ( a ) { this . client . invoke ( netgis . Events . SET _MODE , netgis . Modes . MODIFY _FEATURES ) } ;
2023-10-16 13:27:27 +02:00
netgis . Menu . prototype . onDeleteFeaturesClick = function ( a ) { this . client . invoke ( netgis . Events . SET _MODE , netgis . Modes . DELETE _FEATURES ) } ; netgis . Menu . prototype . onBufferFeatureClick = function ( a ) { this . client . invoke ( netgis . Events . SET _MODE , netgis . Modes . BUFFER _FEATURE _BEGIN ) } ; netgis . Menu . prototype . onSearchPlaceClick = function ( a ) { netgis . util . invoke ( this . root , netgis . SearchPlace . Events . TOGGLE ) } ; netgis . Menu . prototype . onSearchParcelClick = function ( a ) { netgis . util . invoke ( this . root , netgis . SearchParcel . Events . TOGGLE ) } ;
netgis . Menu . prototype . onToolboxClick = function ( a ) { netgis . util . invoke ( this . root , netgis . Events . TOOLBOX _TOGGLE ) } ; netgis . Menu . prototype . onSearchDataClick = function ( a ) { alert ( "TODO: data search interface" ) } ; netgis . Menu . prototype . onImportOWSClick = function ( a ) { alert ( "TODO: ows import interface, try setting url parameter '?ows=<url>'" ) } ; netgis . Menu . prototype . onImportShapefileClick = function ( a ) { this . client . invoke ( netgis . Events . IMPORT _SHAPEFILE _SHOW , null ) } ;
netgis . Menu . prototype . onImportGeoJSONClick = function ( a ) { this . client . invoke ( netgis . Events . IMPORT _GEOJSON _SHOW , null ) } ; netgis . Menu . prototype . onImportKMLClick = function ( a ) { alert ( "TODO: kml import interface" ) } ; netgis . Menu . prototype . onImportGMLClick = function ( a ) { this . client . invoke ( netgis . Events . IMPORT _GML _SHOW , null ) } ; netgis . Menu . prototype . onImportSpatialiteClick = function ( a ) { this . client . invoke ( netgis . Events . IMPORT _SPATIALITE _SHOW , null ) } ;
netgis . Menu . prototype . onImportGeopackageClick = function ( a ) { this . client . invoke ( netgis . Events . IMPORT _GEOPACKAGE _SHOW , null ) } ; netgis . Menu . prototype . onExportPDFClick = function ( a ) { this . client . invoke ( netgis . Events . EXPORT _PDF _SHOW , null ) } ; netgis . Menu . prototype . onExportJPEGClick = function ( a ) { this . client . invoke ( netgis . Events . EXPORT _JPEG _SHOW , null ) } ; netgis . Menu . prototype . onExportPNGClick = function ( a ) { this . client . invoke ( netgis . Events . EXPORT _PNG _SHOW , null ) } ;
2023-11-21 09:01:59 +01:00
netgis . Menu . prototype . onExportGIFClick = function ( a ) { this . client . invoke ( netgis . Events . EXPORT _GIF _SHOW , null ) } ; 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 . attach = 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 || { } ;
2023-10-16 13:27:27 +02:00
netgis . Modes = Object . freeze ( { VIEW : "VIEW" , PANNING : "PANNING" , ZOOMING _IN : "ZOOMING_IN" , ZOOMING _OUT : "ZOOMING_OUT" , DRAW _POINTS : "DRAW_POINTS" , DRAW _LINES : "DRAW_LINES" , DRAW _POLYGONS : "DRAW_POLYGONS" , CUT _FEATURE _BEGIN : "CUT_FEATURE_BEGIN" , CUT _FEATURE _DRAW : "CUT_FEATURE_DRAW" , MODIFY _FEATURES : "MODIFY_FEATURES" , DELETE _FEATURES : "DELETE_FEATURES" , BUFFER _FEATURE _BEGIN : "BUFFER_FEATURE_BEGIN" , BUFFER _FEATURE _EDIT : "BUFFER_FEATURE_EDIT" , SEARCH _PLACE : "SEARCH_PLACE" , SEARCH _PARCEL : "SEARCH_PARCEL" , PARCEL _SELECT : "PARCEL_SELECT" , IMPORT : "IMPORT" ,
EXPORT : "EXPORT" } ) ; netgis = netgis || { } ;
2022-09-12 13:12:59 +02:00
netgis . OWS = function ( ) { return { read : function ( a , b ) { var c = { layers : [ ] , folders : [ ] } ; netgis . util . isDefined ( a . properties ) && ( c . bbox = a . properties . bbox ) ; a = a . features ; for ( var d = 0 ; d < a . length ; d ++ ) { var e = a [ d ] ; if ( "Feature" === e . type ) { var f = e . properties ; f = f . folder ; var g = ! 1 ; for ( e = 0 ; e < c . folders . length ; e ++ ) if ( c . folders [ e ] . id === f ) { g = ! 0 ; break } if ( ! g ) { e = f . split ( "/" ) ; f = [ ] ; for ( g = 0 ; g < e . length ; g ++ ) { var h = e [ g ] ; 0 < h . length && f . push ( h ) } var k = - 1 ; for ( g = 0 ; g < f . length ; g ++ ) { h = f [ g ] ; var l = "/" + f . slice ( 0 , g + 1 ) . join ( "/" ) , m = ! 1 ; for ( e = 0 ; e < c . folders . length ; e ++ ) if ( c . folders [ e ] . path ===
l ) { k = e ; m = ! 0 ; break } m || ( e = c . folders . length , c . folders . push ( { title : h , parent : k , path : l } ) , k = e ) } } } } for ( d = 0 ; d < a . length ; d ++ ) if ( e = a [ d ] , "Feature" === e . type ) { f = e . properties ; g = - 1 ; for ( e = 0 ; e < c . folders . length ; e ++ ) if ( c . folders [ e ] . path === f . folder ) { g = e ; break } e = f . offerings ; for ( h = 0 ; h < e . length ; h ++ ) switch ( k = e [ h ] , l = k . operations , k . code ) { case "http://www.opengis.net/spec/owc-geojson/1.0/req/wms" : c . layers . push ( { folder : g , type : netgis . LayerTypes . WMS , url : l [ 0 ] . href , title : f . title , attribution : f . rights , active : f . active } ) ; break ; case "http://www.opengis.net/spec/owc-geojson/1.0/req/xyz" : k =
2023-10-16 13:27:27 +02:00
l [ 0 ] ; c . layers . push ( { folder : g , type : netgis . LayerTypes . XYZ , url : k . href , title : f . title , attribution : f . rights , active : f . active } ) ; break ; case "http://www.opengis.net/spec/owc-geojson/1.0/req/osm" : k = l [ 0 ] , c . layers . push ( { folder : g , type : netgis . LayerTypes . XYZ , url : k . href , title : f . title , attribution : f . rights , active : f . active } ) } } b . invoke ( netgis . Events . CONTEXT _UPDATE , c ) } } } ( ) ; 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 . 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 . attach = 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" ; 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 . Panel . prototype . show = function ( ) { this . container . classList . add ( "netgis-show" ) ; netgis . util . invoke ( this . container , netgis . Events . PANEL _TOGGLE , { panel : this , visible : ! 0 } ) } ;
netgis . Panel . prototype . hide = function ( ) { this . container . classList . remove ( "netgis-show" ) ; netgis . util . invoke ( this . container , netgis . Events . PANEL _TOGGLE , { panel : this , visible : ! 1 } ) } ; netgis . Panel . prototype . toggle = function ( ) { this . container . classList . toggle ( "netgis-show" ) ; netgis . util . invoke ( this . container , netgis . Events . PANEL _TOGGLE , { panel : this , visible : this . container . classList . contains ( "netgis-show" ) } ) } ; 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 . 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 . SearchParcel = function ( a ) { this . config = a ; this . initElements ( ) ; this . initEvents ( ) } ; netgis . SearchParcel . Events = Object . freeze ( { TOGGLE : "search-parcel-toggle" } ) ;
netgis . SearchParcel . prototype . initElements = function ( ) { this . container = document . createElement ( "section" ) ; this . container . className = "netgis-search-parcel" ; 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 . onParcelResetClick . 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 ) ; var d = this ; window . setTimeout ( function ( ) { d . reset ( ) } , 50 ) } ; netgis . SearchParcel . prototype . initEvents = function ( ) { this . resizeObserver = ( new ResizeObserver ( this . onTopResize . bind ( this ) ) ) . observe ( this . top ) } ;
netgis . SearchParcel . prototype . attach = function ( a ) { a . appendChild ( this . container ) } ; 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-light netgis-hover-text-primary" ; 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-text-primary netgis-hover-primary" ; 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 = 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 . PARCELS _RESET , null ) } ; 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 . nameURL ; 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 ) ) } ;
2022-09-12 13:12:59 +02:00
netgis . SearchParcel . prototype . onInputNameResponse = function ( a ) { this . nameLoader . classList . add ( "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 ) } } } ;
2023-10-16 13:27:27 +02:00
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 . requestFieldsGeom ( b ) } ;
netgis . SearchParcel . prototype . requestFieldsGeom = 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 . onFieldsGeomResponse . bind ( this ) ) } ;
netgis . SearchParcel . prototype . onFieldsGeomResponse = function ( a ) { a = JSON . parse ( a ) ; netgis . util . invoke ( this . container , netgis . Events . PARCELS _FIELDS _RESPONSE , { geojson : a } ) } ; 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 . requestFieldsGeom ( 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 . requestParcel ( this . districtInput . value . trim ( ) , this . fieldInput . value . trim ( ) , this . parcelInputA . value . trim ( ) , this . parcelInputB . value . trim ( ) ) } ;
netgis . SearchParcel . prototype . requestParcel = function ( a , b , c , d ) { var e = this . config . searchParcel . parcelURL ; 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 . onParcelResponse . bind ( this ) ) } ;
netgis . SearchParcel . prototype . onParcelResponse = 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 ( ) ; netgis . util . invoke ( this . container , netgis . Events . PARCELS _RESPONSE , { parcels : a . data } ) } this . parcelReset . classList . remove ( "netgis-hide" ) ;
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 . PARCELS _ITEM _ENTER , a ) } ;
netgis . SearchParcel . prototype . onParcelLeave = function ( a ) { netgis . util . invoke ( this . container , netgis . Events . PARCELS _ITEM _LEAVE , { id : a . target . getAttribute ( "data-id" ) } ) } ; netgis . SearchParcel . prototype . onParcelClick = function ( a ) { netgis . util . invoke ( this . container , netgis . Events . PARCELS _ITEM _CLICK , { id : a . currentTarget . getAttribute ( "data-id" ) } ) } ;
netgis . SearchParcel . prototype . onParcelImportClick = function ( a ) { a . stopPropagation ( ) ; var b = a . currentTarget . parentElement . parentElement ; a = b . getAttribute ( "data-id" ) ; b = b . getAttribute ( "data-geom" ) ; netgis . util . invoke ( this . container , netgis . Events . PARCELS _ITEM _IMPORT _CLICK , { id : a , geom : b } ) } ; netgis . SearchParcel . prototype . onParcelResetClick = function ( a ) { this . reset ( ) } ;
netgis . SearchParcel . prototype . onSetMode = function ( a ) { a === netgis . Modes . SEARCH _PARCEL && this . container . classList . contains ( "netgis-hide" ) ? this . container . classList . remove ( "netgis-hide" ) : this . container . classList . add ( "netgis-hide" ) } ; netgis . SearchParcel . prototype . onLayerListToggle = function ( a ) { this . container . classList . add ( "netgis-hide" ) } ;
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 = netgis || { } ; "use strict" ; netgis = netgis || { } ; netgis . SearchPlace = function ( a ) { this . config = a ; this . debounce = 400 ; this . initElements ( ) ; this . initEvents ( ) } ; netgis . SearchPlace . Events = Object . freeze ( { TOGGLE : "toggle" , SELECT : "select" } ) ;
netgis . SearchPlace . prototype . initElements = function ( ) { var a = document . createElement ( "div" ) ; a . className = "netgis-search-place netgis-color-e netgis-shadow" ; this . input = document . createElement ( "input" ) ; this . input . setAttribute ( "type" , "text" ) ; this . input . setAttribute ( "placeholder" , "Suche..." ) ; a . appendChild ( this . input ) ; this . list = document . createElement ( "ul" ) ; a . appendChild ( this . list ) ; this . closer = document . createElement ( "button" ) ; this . closer . setAttribute ( "type" , "button" ) ; this . closer . className = "netgis-button" ; this . closer . innerHTML =
"<i class='fas fa-times'></i>" ; this . closer . addEventListener ( "click" , this . onCloserClick . bind ( this ) ) ; a . appendChild ( this . closer ) ; this . container = a } ;
netgis . SearchPlace . 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 . input . addEventListener ( "click" , this . onInputClick . bind ( this ) ) ; this . container . addEventListener ( "focusout" , this . onFocusOut . bind ( this ) ) } ; netgis . SearchPlace . prototype . attach = function ( a ) { a . appendChild ( this . container ) } ;
netgis . SearchPlace . prototype . toggle = function ( ) { this . container . classList . toggle ( "netgis-show" ) ; this . container . classList . contains ( "netgis-show" ) ? this . input . focus ( ) : this . list . classList . add ( "netgis-hide" ) } ;
netgis . SearchPlace . prototype . requestSearch = function ( a ) { if ( ! this . lastQuery || this . lastQuery !== a ) { this . lastQuery = a ; var b = this . config . search . url ; b = netgis . util . replace ( b , "{q}" , window . encodeURIComponent ( a ) ) ; b = netgis . util . replace ( b , "{epsg}" , 4326 ) ; b = window . encodeURI ( b ) ; this . lastRequest = netgis . util . request ( b , this . onSearchResponse . bind ( this ) ) } } ;
netgis . SearchPlace . prototype . createResult = function ( a , b , c , d , e ) { var f = document . createElement ( "li" ) , g = document . createElement ( "button" ) ; g . className = "netgis-button netgis-clip-text netgis-color-e netgis-hover-a" ; g . innerHTML = a ; g . setAttribute ( "type" , "button" ) ; g . setAttribute ( "title" , a ) ; g . setAttribute ( "data-minx" , b ) ; g . setAttribute ( "data-miny" , c ) ; g . setAttribute ( "data-maxx" , d ) ; g . setAttribute ( "data-maxy" , e ) ; g . addEventListener ( "click" , this . onResultClick . bind ( this ) ) ; f . appendChild ( g ) ; return f } ;
netgis . SearchPlace . prototype . onSearchResponse = function ( a ) { a = JSON . parse ( a ) ; console . info ( "Search Response:" , a ) ; this . list . innerHTML = "" ; this . list . classList . remove ( "netgis-hide" ) ; if ( a . geonames ) { a = a . geonames ; for ( var b = 0 ; b < a . length ; b ++ ) { var c = a [ b ] , d = this . createResult ( c . title , Number . parseFloat ( c . minx ) , Number . parseFloat ( c . miny ) , Number . parseFloat ( c . maxx ) , Number . parseFloat ( c . maxy ) ) ; d . children [ 0 ] . setAttribute ( "data-title" , c . title ) ; this . list . appendChild ( d ) } } } ;
netgis . SearchPlace . prototype . onInputKeyDown = function ( a ) { if ( 13 === a . keyCode ) return this . list . classList . remove ( "netgis-hide" ) , a . preventDefault ( ) , ! 1 } ; netgis . SearchPlace . prototype . onInputKeyUp = function ( a ) { switch ( a . keyCode ) { case 13 : break ; case 27 : this . toggle ( ) ; break ; default : this . onInputChange ( ) } } ; netgis . SearchPlace . prototype . onInputChange = function ( a ) { this . timeout && window . clearTimeout ( this . timeout ) ; this . timeout = window . setTimeout ( this . onInputTimeout . bind ( this ) , this . debounce ) } ;
netgis . SearchPlace . prototype . onInputTimeout = function ( ) { var a = this . input . value ; a = a . trim ( ) ; 0 < a . length && this . requestSearch ( a ) } ; netgis . SearchPlace . prototype . onInputClick = function ( a ) { this . list . classList . toggle ( "netgis-hide" ) } ; netgis . SearchPlace . prototype . onFocusOut = function ( a ) { a = a . relatedTarget ; a !== this . input && a !== this . list && ( a && a . parentNode === this . list || a && a . parentNode . parentNode === this . list || this . list . classList . add ( "netgis-hide" ) ) } ;
netgis . SearchPlace . prototype . onResultClick = function ( a ) { a = a . currentTarget ; var b = Number . parseFloat ( a . getAttribute ( "data-minx" ) ) , c = Number . parseFloat ( a . getAttribute ( "data-miny" ) ) , d = Number . parseFloat ( a . getAttribute ( "data-maxx" ) ) , e = Number . parseFloat ( a . getAttribute ( "data-maxy" ) ) , f = a . getAttribute ( "data-title" ) ; netgis . util . invoke ( a , netgis . SearchPlace . Events . SELECT , { minx : b , miny : c , maxx : d , maxy : e , title : f } ) } ;
netgis . SearchPlace . prototype . onCloserClick = function ( a ) { this . toggle ( ) ; this . list . innerHTML = "" ; this . input . value = "" } ; netgis = netgis || { } ;
2022-09-12 13:12:59 +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 =
2023-11-21 09:01:59 +01: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 . initEvents ( ) ; 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" ; this . header . style . background = "orange" ; this . container . appendChild ( this . header ) ; this . content = document . createElement ( "div" ) ; this . content . className = "netgis-content" ; 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 . initEvents = function ( ) { } ; netgis . Tabs . prototype . attach = 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" ) , f . classList . remove ( "netgis-hide" ) ) : ( e . classList . remove ( "netgis-color-e" ) , e . classList . remove ( "netgis-text-a" ) , e . classList . remove ( "netgis-bar-a" ) , 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 . 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 . Toolbar = function ( ) { this . client = null ; this . toolbars = { } ; this . searchValue = "" } ;
2023-01-31 16:26:59 +01:00
netgis . Toolbar . prototype . load = function ( ) { var a = this . client . config ; this . root = document . createElement ( "section" ) ; this . root . className = "netgis-toolbars" ; if ( this . client . editable ) { var b = 1E3 , c = 3 ; netgis . util . isDefined ( a . tools ) && ( netgis . util . isDefined ( a . tools . buffer . defaultRadius ) && ( b = a . tools . buffer . defaultRadius ) , netgis . util . isDefined ( a . tools . buffer . defaultSegments ) && ( c = a . tools . buffer . defaultSegments ) ) ; this . toolbars [ netgis . Modes . DRAW _POINTS ] = this . createToolbar ( ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _POINTS ] ,
this . createToolbarButton ( '<i class="fas fa-times"></i><span>Punkte zeichnen:</span>' , this . onToolbarClose . bind ( this ) ) ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _POINTS ] , this . createToolbarCheckbox ( "Einrasten" , this . onSnapChange . bind ( this ) ) ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _POINTS ] , this . createToolbarCheckbox ( "Puffern" , this . onDrawBufferChange . bind ( this ) ) ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _POINTS ] , this . createToolbarInput ( "Radius (Meter):" , b , this . onDrawBufferRadiusChange . bind ( this ) ) ) ;
this . append ( this . toolbars [ netgis . Modes . DRAW _POINTS ] , this . createToolbarInput ( "Segmente:" , c , this . onDrawBufferSegmentsChange . bind ( this ) ) ) ; this . root . appendChild ( this . toolbars [ netgis . Modes . DRAW _POINTS ] ) ; this . toolbars [ netgis . Modes . DRAW _LINES ] = this . createToolbar ( ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _LINES ] , this . createToolbarButton ( '<i class="fas fa-times"></i><span>Linien zeichnen:</span>' , this . onToolbarClose . bind ( this ) ) ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _LINES ] , this . createToolbarCheckbox ( "Einrasten" ,
this . onSnapChange . bind ( this ) ) ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _LINES ] , this . createToolbarCheckbox ( "Puffern" , this . onDrawBufferChange . bind ( this ) ) ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _LINES ] , this . createToolbarInput ( "Radius (Meter):" , b , this . onDrawBufferRadiusChange . bind ( this ) ) ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _LINES ] , this . createToolbarInput ( "Segmente:" , c , this . onDrawBufferSegmentsChange . bind ( this ) ) ) ; this . root . appendChild ( this . toolbars [ netgis . Modes . DRAW _LINES ] ) ; this . showDrawBufferOptions ( ! 1 ) ;
this . toolbars [ netgis . Modes . DRAW _POLYGONS ] = this . createToolbar ( ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _POLYGONS ] , this . createToolbarButton ( '<i class="fas fa-times"></i><span>Polygone zeichnen:</span>' , this . onToolbarClose . bind ( this ) ) ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _POLYGONS ] , this . createToolbarCheckbox ( "Einrasten" , this . onSnapChange . bind ( this ) ) ) ; this . append ( this . toolbars [ netgis . Modes . DRAW _POLYGONS ] , this . createToolbarCheckbox ( "Tracing" , this . onTracingChange . bind ( this ) ) ) ; this . root . appendChild ( this . toolbars [ netgis . Modes . DRAW _POLYGONS ] ) ;
this . toolbars [ netgis . Modes . CUT _FEATURE _BEGIN ] = this . createToolbar ( ) ; this . append ( this . toolbars [ netgis . Modes . CUT _FEATURE _BEGIN ] , this . createToolbarButton ( '<i class="fas fa-times"></i><span>Feature zum Ausschneiden w\u00e4hlen:</span>' , this . onToolbarClose . bind ( this ) ) ) ; this . root . appendChild ( this . toolbars [ netgis . Modes . CUT _FEATURE _BEGIN ] ) ; this . toolbars [ netgis . Modes . CUT _FEATURE _DRAW ] = this . createToolbar ( ) ; this . append ( this . toolbars [ netgis . Modes . CUT _FEATURE _DRAW ] , this . createToolbarButton ( '<i class="fas fa-times"></i><span>Fl\u00e4che zum Ausschneiden zeichnen:</span>' ,
2023-10-16 13:27:27 +02:00
this . onToolbarClose . bind ( this ) ) ) ; this . root . appendChild ( this . toolbars [ netgis . Modes . CUT _FEATURE _DRAW ] ) ; this . toolbars [ netgis . Modes . MODIFY _FEATURES ] = this . createToolbar ( ) ; this . append ( this . toolbars [ netgis . Modes . MODIFY _FEATURES ] , this . createToolbarButton ( '<i class="fas fa-times"></i><span>Feature-Eckpunkte verschieben:</span>' , this . onToolbarClose . bind ( this ) ) ) ; this . root . appendChild ( this . toolbars [ netgis . Modes . MODIFY _FEATURES ] ) ; this . toolbars [ netgis . Modes . DELETE _FEATURES ] = this . createToolbar ( ) ; this . append ( this . toolbars [ netgis . Modes . DELETE _FEATURES ] ,
2023-01-31 16:26:59 +01:00
this . createToolbarButton ( '<i class="fas fa-times"></i><span>Features l\u00f6schen:</span>' , this . onToolbarClose . bind ( this ) ) ) ; this . root . appendChild ( this . toolbars [ netgis . Modes . DELETE _FEATURES ] ) ; this . toolbars [ netgis . Modes . BUFFER _FEATURE _BEGIN ] = this . createToolbar ( ) ; this . append ( this . toolbars [ netgis . Modes . BUFFER _FEATURE _BEGIN ] , this . createToolbarButton ( '<i class="fas fa-times"></i><span>Feature zum Puffern w\u00e4hlen:</span>' , this . onToolbarClose . bind ( this ) ) ) ; this . root . appendChild ( this . toolbars [ netgis . Modes . BUFFER _FEATURE _BEGIN ] ) ;
this . toolbars [ netgis . Modes . BUFFER _FEATURE _EDIT ] = this . createToolbar ( ) ; this . append ( this . toolbars [ netgis . Modes . BUFFER _FEATURE _EDIT ] , this . createToolbarButton ( '<i class="fas fa-times"></i><span>Feature puffern:</span>' , this . onBufferCancel . bind ( this ) ) ) ; this . append ( this . toolbars [ netgis . Modes . BUFFER _FEATURE _EDIT ] , this . createToolbarInput ( "Radius (Meter):" , b , this . onBufferChange . bind ( this ) ) ) ; this . append ( this . toolbars [ netgis . Modes . BUFFER _FEATURE _EDIT ] , this . createToolbarInput ( "Segmente:" , c , this . onBufferChange . bind ( this ) ) ) ;
this . append ( this . toolbars [ netgis . Modes . BUFFER _FEATURE _EDIT ] , this . createToolbarButton ( '<i class="fas fa-check"></i><span>OK</span>' , this . onBufferAccept . bind ( this ) ) ) ; a = this . toolbars [ netgis . Modes . BUFFER _FEATURE _EDIT ] . getElementsByTagName ( "input" ) ; a [ 0 ] . addEventListener ( "keyup" , this . onBufferKeyUp . bind ( this ) ) ; a [ 1 ] . addEventListener ( "keyup" , this . onBufferKeyUp . bind ( this ) ) ; a [ 1 ] . setAttribute ( "min" , 1 ) ; this . root . appendChild ( this . toolbars [ netgis . Modes . BUFFER _FEATURE _EDIT ] ) } this . toolbars [ netgis . Modes . SEARCH _PLACE ] =
this . createToolbar ( ) ; this . append ( this . toolbars [ netgis . Modes . SEARCH _PLACE ] , this . createToolbarButton ( '<i class="fas fa-times"></i><span>Suche:</span>' , this . onToolbarClose . bind ( this ) ) ) ; a = this . createToolbarInputText ( "Adresse..." , "" , null ) ; a . style . position = "relative" ; this . searchInput = a . getElementsByTagName ( "input" ) [ 0 ] ; this . searchInput . addEventListener ( "keyup" , this . onSearchKeyUp . bind ( this ) ) ; this . searchInput . addEventListener ( "focus" , this . onSearchFocus . bind ( this ) ) ; this . searchInput . addEventListener ( "blur" ,
this . onSearchBlur . bind ( this ) ) ; this . append ( this . toolbars [ netgis . Modes . SEARCH _PLACE ] , a ) ; this . searchList = document . createElement ( "ul" ) ; this . searchList . className = "netgis-dropdown-content netgis-search-list netgis-dialog netgis-shadow netgis-hide" ; a . appendChild ( this . searchList ) ; this . append ( this . toolbars [ netgis . Modes . SEARCH _PLACE ] , this . createToolbarButton ( '<i class="fas fa-undo"></i>' , this . onSearchClear . bind ( this ) ) ) ; this . root . appendChild ( this . toolbars [ netgis . Modes . SEARCH _PLACE ] ) ; this . client . root . appendChild ( this . root ) ;
this . client . on ( netgis . Events . SET _MODE , this . onSetMode . bind ( this ) ) ; this . client . on ( netgis . Events . SEARCH _PLACE _RESPONSE , this . onSearchPlaceResponse . bind ( this ) ) } ; netgis . Toolbar . prototype . createToolbar = function ( ) { var a = document . createElement ( "div" ) ; a . className = "netgis-toolbar netgis-dialog netgis-shadow netgis-hide" ; var b = document . createElement ( "div" ) ; a . appendChild ( b ) ; return a } ; netgis . Toolbar . prototype . append = function ( a , b ) { a . getElementsByTagName ( "div" ) [ 0 ] . appendChild ( b ) } ;
netgis . Toolbar . prototype . createToolbarButton = function ( a , b ) { var c = document . createElement ( "button" ) ; c . setAttribute ( "type" , "button" ) ; c . className = "netgis-hover-light" ; c . innerHTML = a ; c . addEventListener ( "click" , b ) ; return c } ;
2022-04-04 12:27:45 +02:00
netgis . Toolbar . prototype . createToolbarCheckbox = function ( a , b ) { var c = document . createElement ( "label" ) ; c . className = "netgis-hover-light" ; var d = document . createElement ( "input" ) ; d . setAttribute ( "type" , "checkbox" ) ; d . addEventListener ( "change" , b ) ; c . appendChild ( d ) ; a = document . createTextNode ( a ) ; c . appendChild ( a ) ; return c } ;
2023-10-16 13:27:27 +02:00
netgis . Toolbar . prototype . createToolbarInput = function ( a , b , c ) { var d = document . createElement ( "label" ) ; d . className = "netgis-hover-light" ; a = document . createTextNode ( a ) ; d . appendChild ( a ) ; a = document . createElement ( "input" ) ; a . setAttribute ( "type" , "number" ) ; a . setAttribute ( "min" , 0 ) ; a . value = b ; a . addEventListener ( "change" , c ) ; a . addEventListener ( "keyup" , c ) ; d . appendChild ( a ) ; return d } ;
2022-04-04 12:27:45 +02:00
netgis . Toolbar . prototype . createToolbarInputText = function ( a , b , c ) { var d = document . createElement ( "label" ) ; d . className = "netgis-hover-light" ; var e = document . createElement ( "input" ) ; e . setAttribute ( "type" , "text" ) ; e . setAttribute ( "placeholder" , a ) ; e . value = b ; c && e . addEventListener ( "change" , c ) ; d . appendChild ( e ) ; return d } ;
2023-01-31 16:26:59 +01:00
netgis . Toolbar . prototype . onSetMode = function ( a ) { var b = ! this . toolbars [ netgis . Modes . SEARCH _PLACE ] . classList . contains ( "netgis-hide" ) ; netgis . util . foreach ( this . toolbars , function ( b , d ) { b === a ? d . classList . remove ( "netgis-hide" ) : d . classList . add ( "netgis-hide" ) } ) ; switch ( a ) { case netgis . Modes . SEARCH _PLACE : b ? this . client . invoke ( netgis . Events . SET _MODE , netgis . Modes . VIEW ) : this . searchInput . focus ( ) ; break ; case netgis . Modes . BUFFER _FEATURE _EDIT : this . updateBuffer ( ) ; break ; case netgis . Modes . DRAW _POINTS : case netgis . Modes . DRAW _LINES : this . toolbars [ netgis . Modes . DRAW _POINTS ] . getElementsByTagName ( "input" ) [ 1 ] . checked &&
this . client . invoke ( netgis . Events . DRAW _BUFFER _ON , null ) } } ; netgis . Toolbar . prototype . onToolbarClose = function ( a ) { this . client . invoke ( netgis . Events . SET _MODE , netgis . Modes . VIEW ) } ; netgis . Toolbar . prototype . searchRequest = function ( a ) { a = a . trim ( ) ; a !== this . searchValue && ( this . searchValue = a , 0 < a . length && this . client . invoke ( netgis . Events . SEARCH _PLACE _REQUEST , { query : a } ) ) } ; netgis . Toolbar . prototype . searchClear = function ( ) { this . searchInput . value = "" ; this . searchList . innerHTML = "" } ;
2022-04-04 12:27:45 +02:00
netgis . Toolbar . prototype . searchSelectFirst = function ( ) { var a = this . searchList . getElementsByTagName ( "button" ) ; if ( 0 < a . length ) this . onSearchItemClick ( { target : a [ 0 ] } ) } ; netgis . Toolbar . prototype . onSearchKeyUp = function ( a ) { var b = a . target ; switch ( a . keyCode ) { case 13 : this . searchSelectFirst ( ) ; this . searchList . classList . add ( "netgis-hide" ) ; break ; case 27 : this . searchClear ( ) ; break ; default : this . searchRequest ( b . value ) } } ; netgis . Toolbar . prototype . onSearchChange = function ( a ) { this . searchRequest ( a . target . value ) } ;
netgis . Toolbar . prototype . onSearchClear = function ( a ) { this . searchClear ( ) ; this . searchInput . focus ( ) } ; netgis . Toolbar . prototype . onSearchFocus = function ( a ) { this . searchList . classList . remove ( "netgis-hide" ) } ; netgis . Toolbar . prototype . onSearchBlur = function ( a ) { this . searchList . classList . add ( "netgis-hide" ) } ;
2022-04-19 17:22:06 +02:00
netgis . Toolbar . prototype . onSearchPlaceResponse = function ( a ) { this . searchList . innerHTML = "" ; a = a . geonames ; for ( var b = 0 ; b < a . length ; b ++ ) { var c = a [ b ] , d = document . createElement ( "li" ) ; d . className = "netgis-hover-light" ; var e = document . createElement ( "button" ) ; e . setAttribute ( "type" , "button" ) ; e . innerHTML = c . title ; e . dataset . title = c . title ; e . dataset . minx = c . minx ; e . dataset . miny = c . miny ; e . dataset . maxx = c . maxx ; e . dataset . maxy = c . maxy ; e . addEventListener ( "mousedown" , this . onSearchItemClick . bind ( this ) ) ; d . appendChild ( e ) ; this . searchList . appendChild ( d ) } } ;
2022-04-04 12:27:45 +02:00
netgis . Toolbar . prototype . onSearchItemClick = function ( a ) { var b = a . target ; a = b . dataset . title ; var c = Number . parseFloat ( b . dataset . minx ) , d = Number . parseFloat ( b . dataset . miny ) , e = Number . parseFloat ( b . dataset . maxx ) ; b = Number . parseFloat ( b . dataset . maxy ) ; this . client . invoke ( netgis . Events . MAP _SET _EXTENT , { minx : c , miny : d , maxx : e , maxy : b } ) ; this . searchValue = a } ;
2022-04-19 17:22:06 +02:00
netgis . Toolbar . prototype . updateBuffer = function ( ) { var a = this . toolbars [ netgis . Modes . BUFFER _FEATURE _EDIT ] . getElementsByTagName ( "input" ) , b = Number . parseFloat ( a [ 0 ] . value ) ; a = Number . parseInt ( a [ 1 ] . value ) ; this . client . invoke ( netgis . Events . BUFFER _CHANGE , { radius : b , segments : a } ) } ; netgis . Toolbar . prototype . onBufferChange = function ( a ) { this . updateBuffer ( ) } ; netgis . Toolbar . prototype . onBufferKeyUp = function ( a ) { this . updateBuffer ( ) } ;
2022-04-04 12:27:45 +02:00
netgis . Toolbar . prototype . onBufferAccept = function ( a ) { this . client . invoke ( netgis . Events . BUFFER _ACCEPT , null ) ; this . client . invoke ( netgis . Events . SET _MODE , netgis . Modes . VIEW ) } ; netgis . Toolbar . prototype . onBufferCancel = function ( a ) { this . client . invoke ( netgis . Events . BUFFER _CANCEL , null ) ; this . client . invoke ( netgis . Events . SET _MODE , netgis . Modes . VIEW ) } ;
2023-01-31 16:26:59 +01:00
netgis . Toolbar . prototype . onSnapChange = function ( a ) { a = a . target . checked ; this . toolbars [ netgis . Modes . DRAW _POINTS ] . getElementsByTagName ( "input" ) [ 0 ] . checked = a ; this . toolbars [ netgis . Modes . DRAW _LINES ] . getElementsByTagName ( "input" ) [ 0 ] . checked = a ; this . toolbars [ netgis . Modes . DRAW _POLYGONS ] . getElementsByTagName ( "input" ) [ 0 ] . checked = a ; this . client . invoke ( a ? netgis . Events . SNAP _ON : netgis . Events . SNAP _OFF , null ) } ;
netgis . Toolbar . prototype . onTracingChange = function ( a ) { a = a . target . checked ; var b = this . toolbars [ netgis . Modes . DRAW _POLYGONS ] . getElementsByTagName ( "input" ) [ 0 ] , c = b . checked ; a && ! c && ( b . checked = a , this . client . invoke ( netgis . Events . SNAP _ON , null ) ) ; this . client . invoke ( a ? netgis . Events . TRACING _ON : netgis . Events . TRACING _OFF , null ) } ;
2023-10-16 13:27:27 +02:00
netgis . Toolbar . prototype . onDrawBufferChange = function ( a ) { a = a . target . checked ; this . toolbars [ netgis . Modes . DRAW _POINTS ] . getElementsByTagName ( "input" ) [ 1 ] . checked = a ; this . toolbars [ netgis . Modes . DRAW _LINES ] . getElementsByTagName ( "input" ) [ 1 ] . checked = a ; this . client . invoke ( a ? netgis . Events . DRAW _BUFFER _ON : netgis . Events . DRAW _BUFFER _OFF , null ) ; this . showDrawBufferOptions ( a ) ; if ( a ) { a = ! 0 ; this . toolbars [ netgis . Modes . DRAW _LINES ] . classList . contains ( "netgis-hide" ) || ( a = ! 1 ) ; var b = this . toolbars [ a ? netgis . Modes . DRAW _POINTS : netgis . Modes . DRAW _LINES ] . getElementsByTagName ( "input" ) ;
a = Number . parseInt ( b [ 2 ] . value ) ; b = Number . parseInt ( b [ 3 ] . value ) ; this . client . invoke ( netgis . Events . DRAW _BUFFER _RADIUS _CHANGE , a ) ; this . client . invoke ( netgis . Events . DRAW _BUFFER _SEGMENTS _CHANGE , b ) } } ;
2023-01-31 16:26:59 +01:00
netgis . Toolbar . prototype . onDrawBufferRadiusChange = function ( a ) { a = a . target ; var b = Number . parseFloat ( a . value ) ; this . client . invoke ( netgis . Events . DRAW _BUFFER _RADIUS _CHANGE , b ) ; var c = this . toolbars [ netgis . Modes . DRAW _POINTS ] . getElementsByTagName ( "input" ) [ 2 ] ; a !== c && ( c . value = b ) ; c = this . toolbars [ netgis . Modes . DRAW _LINES ] . getElementsByTagName ( "input" ) [ 2 ] ; a !== c && ( c . value = b ) } ;
netgis . Toolbar . prototype . onDrawBufferSegmentsChange = function ( a ) { a = a . target ; var b = Number . parseInt ( a . value ) ; this . client . invoke ( netgis . Events . DRAW _BUFFER _SEGMENTS _CHANGE , b ) ; var c = this . toolbars [ netgis . Modes . DRAW _POINTS ] . getElementsByTagName ( "input" ) [ 3 ] ; a !== c && ( c . value = b ) ; c = this . toolbars [ netgis . Modes . DRAW _LINES ] . getElementsByTagName ( "input" ) [ 3 ] ; a !== c && ( c . value = b ) } ;
2023-10-16 13:27:27 +02:00
netgis . Toolbar . prototype . showDrawBufferOptions = function ( a ) { var b = this . toolbars [ netgis . Modes . DRAW _POINTS ] . children [ 0 ] . children , c = this . toolbars [ netgis . Modes . DRAW _LINES ] . children [ 0 ] . children ; a ? ( b [ 3 ] . classList . remove ( "netgis-hide" ) , b [ 4 ] . classList . remove ( "netgis-hide" ) , c [ 3 ] . classList . remove ( "netgis-hide" ) , c [ 4 ] . classList . remove ( "netgis-hide" ) ) : ( b [ 3 ] . classList . add ( "netgis-hide" ) , b [ 4 ] . classList . add ( "netgis-hide" ) , c [ 3 ] . classList . add ( "netgis-hide" ) , c [ 4 ] . classList . add ( "netgis-hide" ) ) } ; netgis = netgis || { } ; netgis . Toolbox = function ( a ) { this . initElements ( a ) ; this . initEvents ( ) } ;
netgis . Toolbox . prototype . initElements = function ( a ) { this . container = document . createElement ( "section" ) ; this . container . className = "netgis-toolbox" ; var b = document . createElement ( "section" ) ; this . container . appendChild ( b ) ; this . top = b ; this . addButton ( this . top , "<i class='netgis-icon netgis-text-a fas fa-hand-paper'></i><span>Betrachten</span>" , netgis . util . handler ( netgis . Events . SET _MODE , netgis . Modes . VIEW ) ) ; this . addButton ( this . top , "<i class='netgis-icon netgis-text-a fas fa-map-marker-alt'></i><span>Punkte</span>" ,
netgis . util . handler ( netgis . Events . SET _MODE , netgis . Modes . DRAW _POINTS ) ) ; this . addButton ( this . top , "<i class='netgis-icon netgis-text-a fas fa-minus'></i><span>Linien</span>" , netgis . util . handler ( netgis . Events . SET _MODE , netgis . Modes . DRAW _LINES ) ) ; this . addButton ( this . top , "<i class='netgis-icon netgis-text-a fas fa-vector-square'></i><span>Polygone</span>" , netgis . util . handler ( netgis . Events . SET _MODE , netgis . Modes . DRAW _POLYGONS ) ) ; this . addButton ( this . top , "<i class='netgis-icon netgis-text-a fas fa-cut'></i><span>Ausschneiden</span>" ,
netgis . util . handler ( netgis . Events . SET _MODE , netgis . Modes . CUT _FEATURE _BEGIN ) ) ; this . addButton ( this . top , "<i class='netgis-icon netgis-text-a fas fa-arrows-alt'></i><span>Verschieben</span>" , netgis . util . handler ( netgis . Events . SET _MODE , netgis . Modes . MODIFY _FEATURES ) ) ; this . addButton ( this . top , "<i class='netgis-icon netgis-text-a fas fa-eraser'></i><span>L\u00f6schen</span>" , netgis . util . handler ( netgis . Events . SET _MODE , netgis . Modes . DELETE _FEATURES ) ) ; this . addButton ( this . top , "<i class='netgis-icon netgis-text-a far fa-dot-circle'></i><span>Puffern</span>" ,
2023-11-21 09:01:59 +01:00
netgis . util . handler ( netgis . Events . SET _MODE , netgis . Modes . BUFFER _FEATURE _BEGIN ) ) ; this . addButton ( this . top , "<i class='netgis-icon netgis-text-a fas fa-file-download'></i><span>Exportieren</span>" , netgis . util . handler ( netgis . Events . EXPORT _SHOW ) ) ; b = document . createElement ( "section" ) ; b . className = "netgis-hide" ; this . container . appendChild ( b ) ; this . bottom = b ; var c = document . createElement ( "button" ) ; c . className = "netgis-button netgis-clip-text netgis-color-c" ; c . innerHTML = "<span>Einstellungen</span><i class='netgis-icon fas fa-times'></i>" ;
c . setAttribute ( "type" , "button" ) ; c . addEventListener ( "click" , this . onBottomHeaderClick . bind ( this ) ) ; b . appendChild ( c ) ; this . bottomTitle = c . getElementsByTagName ( "span" ) [ 0 ] ; this . bottomPanels = { } ; b = a . tools . buffer . defaultRadius ; a = a . tools . buffer . defaultSegments ; c = document . createElement ( "div" ) ; this . addCheckbox ( c , "Einrasten" , netgis . util . handler ( netgis . Events . SNAP _TOGGLE ) ) ; this . addCheckbox ( c , "Puffern" , netgis . util . handler ( netgis . Events . BUFFER _TOGGLE ) ) ; this . addInputNumber ( c , "Radius (Meter):" , b , netgis . util . handler ( netgis . Events . DRAW _BUFFER _RADIUS _CHANGE ) ) ;
this . addInputNumber ( c , "Segmente:" , a , netgis . util . handler ( netgis . Events . DRAW _BUFFER _SEGMENTS _CHANGE ) ) ; this . bottomPanels [ netgis . Modes . DRAW _POINTS ] = c ; c = document . createElement ( "div" ) ; this . addCheckbox ( c , "Einrasten" , netgis . util . handler ( netgis . Events . SNAP _TOGGLE ) ) ; this . addCheckbox ( c , "Puffern" , netgis . util . handler ( netgis . Events . BUFFER _TOGGLE ) ) ; this . addInputNumber ( c , "Radius (Meter):" , b , netgis . util . handler ( netgis . Events . DRAW _BUFFER _RADIUS _CHANGE ) ) ; this . addInputNumber ( c , "Segmente:" , a , netgis . util . handler ( netgis . Events . DRAW _BUFFER _SEGMENTS _CHANGE ) ) ;
this . bottomPanels [ netgis . Modes . DRAW _LINES ] = c ; c = document . createElement ( "div" ) ; this . addCheckbox ( c , "Einrasten" , netgis . util . handler ( netgis . Events . SNAP _TOGGLE ) ) ; this . addCheckbox ( c , "Tracing" , netgis . util . handler ( netgis . Events . TRACING _TOGGLE ) ) ; this . bottomPanels [ netgis . Modes . DRAW _POLYGONS ] = c ; c = document . createElement ( "div" ) ; this . addInputNumber ( c , "Radius (Meter):" , b , this . onBufferFeatureChange . bind ( this ) ) ; this . addInputNumber ( c , "Segmente:" , a , this . onBufferFeatureChange . bind ( this ) ) ; this . addButton ( c , "<i class='netgis-icon netgis-text-a fas fa-arrow-circle-right'></i><span>Akzeptieren</span>" ,
this . onBufferFeatureAccept . bind ( this ) ) ; this . bottomPanels [ netgis . Modes . BUFFER _FEATURE _EDIT ] = c ; b = document . createElement ( "div" ) ; this . addButton ( b , "<i class='netgis-icon netgis-text-a fas fa-file-upload'></i><span>Shapefile</span>" , netgis . util . handler ( netgis . Events . IMPORT _SHAPEFILE _SHOW ) ) ; this . addButton ( b , "<i class='netgis-icon netgis-text-a fas fa-file-upload'></i><span>GeoJSON</span>" , netgis . util . handler ( netgis . Events . IMPORT _GEOJSON _SHOW ) ) ; this . addButton ( b , "<i class='netgis-icon netgis-text-a fas fa-file-upload'></i><span>GML</span>" ,
netgis . util . handler ( netgis . Events . IMPORT _GML _SHOW ) ) ; this . addButton ( b , "<i class='netgis-icon netgis-text-a fas fa-file-upload'></i><span>Spatialite</span>" , netgis . util . handler ( netgis . Events . IMPORT _SPATIALITE _SHOW ) ) ; this . addButton ( b , "<i class='netgis-icon netgis-text-a fas fa-file-upload'></i><span>Geopackage</span>" , netgis . util . handler ( netgis . Events . IMPORT _GEOPACKAGE _SHOW ) ) ; this . bottomPanels [ netgis . Modes . IMPORT ] = b ; b = document . createElement ( "div" ) ; this . addButton ( b , "<i class='netgis-icon netgis-text-a fas fa-file-download'></i><span>PDF</span>" ,
netgis . util . handler ( netgis . Events . EXPORT _PDF _SHOW ) ) ; this . addButton ( b , "<i class='netgis-icon netgis-text-a fas fa-file-download'></i><span>JPEG</span>" , netgis . util . handler ( netgis . Events . EXPORT _JPEG _SHOW ) ) ; this . addButton ( b , "<i class='netgis-icon netgis-text-a fas fa-file-download'></i><span>PNG</span>" , netgis . util . handler ( netgis . Events . EXPORT _PNG _SHOW ) ) ; this . addButton ( b , "<i class='netgis-icon netgis-text-a fas fa-file-download'></i><span>GIF</span>" , netgis . util . handler ( netgis . Events . EXPORT _GIF _SHOW ) ) ;
this . bottomPanels [ netgis . Modes . EXPORT ] = b ; this . setBuffer ( ! 1 ) } ; netgis . Toolbox . prototype . initEvents = function ( ) { this . resizeObserver = ( new ResizeObserver ( this . onTopResize . bind ( this ) ) ) . observe ( this . top ) } ; netgis . Toolbox . prototype . attach = function ( a ) { a . appendChild ( this . container ) } ;
netgis . Toolbox . prototype . addButton = function ( a , b , c ) { var d = document . createElement ( "button" ) ; d . className = "netgis-button netgis-clip-text netgis-color-e netgis-hover-a" ; d . innerHTML = b ; d . setAttribute ( "type" , "button" ) ; c && ( d . onclick = c ) ; a && a . appendChild ( d ) ; return d } ;
2023-10-16 13:27:27 +02:00
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 . setMode = function ( a ) { for ( var b = this . top . getElementsByTagName ( "button" ) , c = 0 ; c < b . length ; c ++ ) b [ c ] . classList . remove ( "netgis-bold" ) ; for ( var d in this . bottomPanels ) c = this . bottomPanels [ d ] , c . parentNode === this . bottom && this . bottom . removeChild ( c ) ; switch ( a ) { case netgis . Modes . VIEW : b [ 0 ] . classList . add ( "netgis-bold" ) ; this . bottomTitle . innerHTML = "" ; break ; case netgis . Modes . DRAW _POINTS : b [ 1 ] . classList . add ( "netgis-bold" ) ; this . bottomTitle . innerHTML = "Punkte" ; break ; case netgis . Modes . DRAW _LINES : b [ 2 ] . classList . add ( "netgis-bold" ) ;
this . bottomTitle . innerHTML = "Linien" ; break ; case netgis . Modes . DRAW _POLYGONS : b [ 3 ] . classList . add ( "netgis-bold" ) ; this . bottomTitle . innerHTML = "Polygone" ; break ; case netgis . Modes . CUT _FEATURE _BEGIN : case netgis . Modes . CUT _FEATURE _DRAW : b [ 4 ] . classList . add ( "netgis-bold" ) ; this . bottomTitle . innerHTML = "Ausschneiden" ; break ; case netgis . Modes . MODIFY _FEATURES : b [ 5 ] . classList . add ( "netgis-bold" ) ; this . bottomTitle . innerHTML = "Verschieben" ; break ; case netgis . Modes . DELETE _FEATURES : b [ 6 ] . classList . add ( "netgis-bold" ) ; this . bottomTitle . innerHTML =
"L\u00f6schen" ; break ; case netgis . Modes . BUFFER _FEATURE _BEGIN : case netgis . Modes . BUFFER _FEATURE _EDIT : b [ 7 ] . classList . add ( "netgis-bold" ) ; this . bottomTitle . innerHTML = "Puffern" ; break ; case netgis . Modes . IMPORT : b [ 8 ] . classList . add ( "netgis-bold" ) ; this . bottomTitle . innerHTML = "Importieren" ; break ; case netgis . Modes . EXPORT : b [ 9 ] . classList . add ( "netgis-bold" ) , this . bottomTitle . innerHTML = "Exportieren" } ( c = this . bottomPanels [ a ] ) ? ( this . bottom . appendChild ( c ) , this . showBottom ( ) ) : this . hideBottom ( ) } ;
netgis . Toolbox . prototype . setSnap = function ( a ) { this . bottomPanels [ netgis . Modes . DRAW _POINTS ] . getElementsByTagName ( "input" ) [ 0 ] . checked = a ; this . bottomPanels [ netgis . Modes . DRAW _LINES ] . getElementsByTagName ( "input" ) [ 0 ] . checked = a ; this . bottomPanels [ netgis . Modes . DRAW _POLYGONS ] . getElementsByTagName ( "input" ) [ 0 ] . checked = a } ;
netgis . Toolbox . prototype . setBuffer = function ( a ) { var b = this . bottomPanels [ netgis . Modes . DRAW _POINTS ] . getElementsByTagName ( "label" ) , c = this . bottomPanels [ netgis . Modes . DRAW _LINES ] . 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 . setBufferRadius = function ( a ) { var b = this . bottomPanels [ netgis . Modes . DRAW _POINTS ] . getElementsByTagName ( "input" ) , c = this . bottomPanels [ netgis . Modes . DRAW _LINES ] . getElementsByTagName ( "input" ) ; b [ 2 ] . value = a ; c [ 2 ] . value = a } ;
netgis . Toolbox . prototype . setBufferSegments = function ( a ) { var b = this . bottomPanels [ netgis . Modes . DRAW _POINTS ] . getElementsByTagName ( "input" ) , c = this . bottomPanels [ netgis . Modes . DRAW _LINES ] . getElementsByTagName ( "input" ) ; b [ 3 ] . value = a ; c [ 3 ] . value = a } ; netgis . Toolbox . 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 . 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 . 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 . container , netgis . Events . SET _MODE , netgis . Modes . VIEW ) } ; netgis . Toolbox . prototype . onBufferFeatureChange = function ( a ) { var b = this . bottomPanels [ netgis . Modes . BUFFER _FEATURE _EDIT ] . getElementsByTagName ( "input" ) ; a = Number . parseFloat ( b [ 0 ] . value ) ; b = Number . parseInt ( b [ 1 ] . value ) ; netgis . util . invoke ( this . container , netgis . Events . BUFFER _CHANGE , { radius : a , segments : b } ) } ;
netgis . Toolbox . prototype . onBufferFeatureAccept = function ( a ) { netgis . util . invoke ( this . container , netgis . Events . BUFFER _ACCEPT , null ) ; netgis . util . invoke ( this . container , netgis . Events . SET _MODE , netgis . Modes . VIEW ) } ; netgis = netgis || { } ; netgis . Tree = function ( ) { this . initElements ( ) } ; netgis . Tree . Events = Object . freeze ( { ITEM _CHANGE : "item-change" } ) ; netgis . Tree . prototype . initElements = function ( ) { var a = document . createElement ( "ul" ) ; a . className = "netgis-tree" ; this . container = a } ; netgis . Tree . prototype . attach = function ( a ) { a . appendChild ( this . container ) } ;
netgis . Tree . prototype . addFolder = function ( a , b , c , d ) { var e = document . createElement ( "li" ) ; e . className = "netgis-folder" ; e . setAttribute ( "data-id" , b ) ; b = document . createElement ( "details" ) ; e . appendChild ( b ) ; var f = document . createElement ( "summary" ) ; f . className = "netgis-button netgis-noselect netgis-clip-text netgis-color-e netgis-hover-a" ; f . 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 ( f ) ; c = document . createElement ( "label" ) ;
f . appendChild ( c ) ; f = document . createElement ( "input" ) ; f . setAttribute ( "type" , "checkbox" ) ; f . onchange = this . onFolderChange . bind ( this ) ; c . appendChild ( f ) ; c = document . createElement ( "ul" ) ; b . appendChild ( c ) ; a = a ? a . getElementsByTagName ( "ul" ) [ 0 ] : this . container ; d ? a . insertBefore ( e , a . firstChild ) : a . appendChild ( e ) ; return e } ;
netgis . Tree . prototype . addCheckbox = function ( a , b , c ) { var d = document . createElement ( "li" ) ; d . className = "netgis-item" ; var e = document . createElement ( "label" ) ; e . className = "netgis-button netgis-noselect netgis-clip-text netgis-color-e netgis-hover-a" ; e . innerHTML = "<span>" + c + "</span>" ; d . appendChild ( e ) ; c = document . createElement ( "input" ) ; c . setAttribute ( "type" , "checkbox" ) ; c . setAttribute ( "data-id" , b ) ; c . onchange = this . onItemChange . bind ( this ) ; e . insertBefore ( c , e . firstChild ) ; a ? a . getElementsByTagName ( "ul" ) [ 0 ] . appendChild ( d ) :
2023-11-21 09:01:59 +01:00
this . container . appendChild ( d ) ; return d } ; netgis . Tree . prototype . addButton = function ( a , b , c ) { var d = document . createElement ( "li" ) , e = document . createElement ( "button" ) ; e . innerHTML = b ; e . className = "netgis-button netgis-color-e netgis-text-a netgis-hover-a netgis-clip-text" ; e . setAttribute ( "type" , "button" ) ; d . appendChild ( e ) ; c && ( e . onclick = c ) ; a ? a . getElementsByTagName ( "ul" ) [ 0 ] . appendChild ( d ) : this . container . appendChild ( d ) ; return d } ;
netgis . Tree . prototype . setItemChecked = function ( a , b ) { var c = this . container . getElementsByClassName ( "netgis-item" ) ; a = a . toString ( ) ; for ( var d = 0 ; d < c . length ; d ++ ) { var e = c [ d ] . getElementsByTagName ( "input" ) [ 0 ] ; e . getAttribute ( "data-id" ) === a && e . checked !== b && e . 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 ) } ;
2023-10-16 13:27:27 +02:00
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 = Number . parseInt ( c ) ; Number . isNaN ( d ) || ( c = d ) ; d = a . parentElement . parentElement . parentElement . parentElement . parentElement ; netgis . util . invoke ( a , netgis . Tree . Events . ITEM _CHANGE , { id : c , checked : b } ) ; - 1 !== d . className . search ( "netgis-folder" ) && this . updateFolderCheck ( d ) } ; netgis = netgis || { } ;
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 } , isString : function ( a ) { return "string" === typeof a || a instanceof String } , replace : function ( a , b , e ) { return a . replace ( new RegExp ( b , "g" ) , e ) } , 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 =
2023-11-21 09:01:59 +01:00
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 ) { var c = new XMLHttpRequest ; c . onload = function ( ) { b ( this . responseText ) } ; c . open ( "GET" , a , ! 0 ) ; c . send ( ) } , 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 ] } , 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 ) } } } } ( ) ;