# WIP: Netgis Client Update
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
object-assign
|
||||
(c) Sindre Sorhus
|
||||
@license MIT
|
||||
*/
|
||||
|
||||
/*!
|
||||
* The buffer module from node.js, for the browser.
|
||||
*
|
||||
* @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
/*!
|
||||
* The buffer module from node.js, for the browser.
|
||||
*
|
||||
* @author Feross Aboukhadijeh <https://feross.org>
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
/*! https://mths.be/punycode v1.3.2 by @mathias */
|
||||
|
||||
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
|
||||
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
|
||||
/**
|
||||
* splaytree v3.1.0
|
||||
* Fast Splay tree for Node and browser
|
||||
*
|
||||
* @author Alexander Milevski <info@w8r.name>
|
||||
* @license MIT
|
||||
* @preserve
|
||||
*/
|
||||
Binary file not shown.
@@ -191,6 +191,7 @@ netgis.Client.prototype.load = function()
|
||||
|
||||
if ( this.output.value && this.output.value.length > 0 )
|
||||
{
|
||||
//console.info( "INPUT:", this.output.value );
|
||||
var json = JSON.parse( this.output.value );
|
||||
this.invoke( netgis.Events.EDIT_FEATURES_LOADED, json );
|
||||
}
|
||||
@@ -288,6 +289,7 @@ netgis.Client.prototype.onHtmlResponse = function( data )
|
||||
netgis.Client.prototype.onEditFeaturesChange = function( e )
|
||||
{
|
||||
var geojson = JSON.stringify( e );
|
||||
//console.info( "OUTPUT:", geojson );
|
||||
this.output.value = geojson;
|
||||
};
|
||||
|
||||
|
||||
@@ -40,18 +40,27 @@ netgis.Events = Object.freeze
|
||||
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",
|
||||
@@ -63,6 +72,10 @@ netgis.Events = Object.freeze
|
||||
EXPORT_PNG: "EXPORT_PNG",
|
||||
EXPORT_GIF: "EXPORT_GIF",
|
||||
EXPORT_BEGIN: "EXPORT_BEGIN",
|
||||
EXPORT_END: "EXPORT_END"
|
||||
EXPORT_END: "EXPORT_END",
|
||||
|
||||
ADD_SERVICE_SHOW: "ADD_SERVICE_SHOW",
|
||||
ADD_SERVICE_WMS: "ADD_SERVICE_WMS",
|
||||
ADD_SERVICE_WFS: "ADD_SERVICE_WFS"
|
||||
}
|
||||
);
|
||||
|
||||
@@ -157,3 +157,27 @@
|
||||
{
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.netgis-layer-tools
|
||||
{
|
||||
padding: 4mm;
|
||||
padding-top: 0mm;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.netgis-layer-tools hr
|
||||
{
|
||||
margin: 4mm 0mm;
|
||||
color: #eee;
|
||||
border-color: #eee;
|
||||
}
|
||||
|
||||
.netgis-layer-tools button
|
||||
{
|
||||
padding: 2mm 4mm;
|
||||
}
|
||||
|
||||
.netgis-layer-tools button i
|
||||
{
|
||||
margin-right: 1mm;
|
||||
}
|
||||
|
||||
@@ -24,20 +24,56 @@ netgis.LayerTree.prototype.load = function()
|
||||
this.list.className = "root";
|
||||
this.root.appendChild( this.list );
|
||||
|
||||
this.initDefaultFolders();
|
||||
|
||||
this.tools = document.createElement( "div" );
|
||||
this.tools.className = "netgis-layer-tools";
|
||||
this.tools.innerHTML = "<hr/>";
|
||||
this.root.appendChild( this.tools );
|
||||
|
||||
this.buttonAddService = document.createElement( "button" );
|
||||
this.buttonAddService.setAttribute( "type", "button" );
|
||||
//this.buttonAddService.className = "netgis-primary netgis-hover-primary netgis-shadow";
|
||||
this.buttonAddService.className = "netgis-text-primary netgis-hover-primary";
|
||||
//this.buttonAddService.innerHTML = "<i class='fas fa-plus' style='color: #000'></i> Dienst hinzufügen";
|
||||
this.buttonAddService.innerHTML = "<i class='fas fa-folder-plus'></i> Dienst hinzufügen";
|
||||
//this.buttonAddService.innerHTML = "<i class='fas fa-cloud-upload-alt'></i> Dienst hinzufügen";
|
||||
this.buttonAddService.addEventListener( "click", this.onAddServiceClick.bind( this ) );
|
||||
this.tools.appendChild( this.buttonAddService );
|
||||
|
||||
this.client.root.appendChild( this.root );
|
||||
|
||||
this.client.on( netgis.Events.CONTEXT_UPDATE, this.onContextUpdate.bind( this ) );
|
||||
this.client.on( netgis.Events.LAYER_LIST_TOGGLE, this.onLayerListToggle.bind( this ) );
|
||||
this.client.on( netgis.Events.LAYER_CREATED, this.onLayerCreated.bind( this ) );
|
||||
this.client.on( netgis.Events.EDIT_FEATURES_CHANGE, this.onEditFeaturesChange.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 ) );
|
||||
|
||||
//TODO: kind of hack to hide if parcel search open
|
||||
this.client.on( netgis.Events.SET_MODE, this.onSetMode.bind( this ) );
|
||||
};
|
||||
|
||||
netgis.LayerTree.prototype.initDefaultFolders = function()
|
||||
{
|
||||
this.folderDraw = this.createFolder( "Zeichnung" );
|
||||
this.folderDraw.classList.add( "netgis-hide" );
|
||||
this.list.appendChild( this.folderDraw );
|
||||
|
||||
this.folderImport = this.createFolder( "Importierte Ebenen" );
|
||||
this.folderImport.classList.add( "netgis-hide" );
|
||||
this.list.appendChild( this.folderImport );
|
||||
|
||||
this.folderServices = this.createFolder( "Eigene Dienste" );
|
||||
this.folderServices.classList.add( "netgis-hide" );
|
||||
this.list.appendChild( this.folderServices );
|
||||
};
|
||||
|
||||
netgis.LayerTree.prototype.clearAll = function()
|
||||
{
|
||||
this.list.innerHTML = "";
|
||||
|
||||
this.initDefaultFolders();
|
||||
};
|
||||
|
||||
netgis.LayerTree.prototype.createFolder = function( title )
|
||||
@@ -102,6 +138,9 @@ netgis.LayerTree.prototype.createLayer = function( id, title, checked )
|
||||
var text = document.createTextNode( title );
|
||||
label.appendChild( text );
|
||||
|
||||
var appendix = document.createElement( "span" );
|
||||
label.appendChild( appendix );
|
||||
|
||||
return item;
|
||||
};
|
||||
|
||||
@@ -342,21 +381,26 @@ netgis.LayerTree.prototype.onLayerCreated = function( e )
|
||||
//TODO: this is a hack to get special folders working
|
||||
if ( e.folder === "import" )
|
||||
{
|
||||
if ( ! this.folderImport )
|
||||
/*if ( ! this.folderImport )
|
||||
{
|
||||
this.folderImport = this.createFolder( "Importierte Ebenen" );
|
||||
this.list.insertBefore( this.folderImport, this.folderDraw ? this.folderDraw.nextSibling : this.list.firstChild );
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
this.folderImport.classList.remove( "netgis-hide" );
|
||||
|
||||
folder = this.folderImport;
|
||||
}
|
||||
else if ( e.folder === "draw" )
|
||||
{
|
||||
if ( ! this.folderDraw )
|
||||
/*if ( ! this.folderDraw )
|
||||
{
|
||||
this.folderDraw = this.createFolder( "Zeichnung" );
|
||||
this.list.insertBefore( this.folderDraw, this.list.firstChild );
|
||||
}
|
||||
}*/
|
||||
|
||||
this.folderDraw.classList.remove( "netgis-hide" );
|
||||
|
||||
folder = this.folderDraw;
|
||||
}
|
||||
@@ -382,13 +426,54 @@ netgis.LayerTree.prototype.onEditFeaturesChange = function( e )
|
||||
this.updateFolderChecks( this.folderDraw );
|
||||
this.client.invoke( netgis.Events.LAYER_SHOW, { id: id } );
|
||||
}
|
||||
|
||||
// Update Area
|
||||
var label = list.getElementsByTagName( "label" )[ 0 ];
|
||||
var spans = label.getElementsByTagName( "span" );
|
||||
var appendix = spans[ spans.length - 1 ];
|
||||
|
||||
if ( e.area && e.area > 0.0 )
|
||||
{
|
||||
appendix.innerText = " (Fläche: " + netgis.util.formatArea( e.area, true ) + ")";
|
||||
}
|
||||
else
|
||||
{
|
||||
appendix.innerText = "";
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
netgis.LayerTree.prototype.onAddServiceWMS = function( e )
|
||||
{
|
||||
var item = this.createLayer( e.id, e.title, true );
|
||||
|
||||
this.folderServices.classList.remove( "netgis-hide" );
|
||||
this.addToFolder( this.folderServices, item, true );
|
||||
this.updateFolderChecks( this.folderServices );
|
||||
|
||||
this.client.invoke( netgis.Events.LAYER_SHOW, { id: e.id } );
|
||||
};
|
||||
|
||||
netgis.LayerTree.prototype.onAddServiceWFS = function( e )
|
||||
{
|
||||
var item = this.createLayer( e.id, e.title, true );
|
||||
|
||||
this.folderServices.classList.remove( "netgis-hide" );
|
||||
this.addToFolder( this.folderServices, item, true );
|
||||
this.updateFolderChecks( this.folderServices );
|
||||
|
||||
this.client.invoke( netgis.Events.LAYER_SHOW, { id: e.id } );
|
||||
};
|
||||
|
||||
netgis.LayerTree.prototype.onSetMode = function( e )
|
||||
{
|
||||
if ( e === netgis.Modes.SEARCH_PARCEL )
|
||||
{
|
||||
this.root.classList.add( "netgis-hide" );
|
||||
}
|
||||
};
|
||||
|
||||
netgis.LayerTree.prototype.onAddServiceClick = function( e )
|
||||
{
|
||||
this.client.invoke( netgis.Events.ADD_SERVICE_SHOW, null );
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
@@ -72,6 +72,8 @@ netgis.Menu.prototype.load = function()
|
||||
//fileItems.appendChild( this.createMenuItem( '<i class="fas fa-file"></i>KML', this.onImportKMLClick.bind( this ) ) );
|
||||
importItem.appendChild( this.createMenuItem( '<i class="fas fa-file"></i>GML', this.onImportGMLClick.bind( this ) ) );
|
||||
importItem.appendChild( this.createMenuItem( '<i class="fas fa-file"></i>Shapefile', this.onImportShapefileClick.bind( this ) ) );
|
||||
importItem.appendChild( this.createMenuItem( '<i class="fas fa-file"></i>Spatialite', this.onImportSpatialiteClick.bind( this ) ) );
|
||||
importItem.appendChild( this.createMenuItem( '<i class="fas fa-file"></i>GeoPackage', this.onImportGeopackageClick.bind( this ) ) );
|
||||
|
||||
// Export
|
||||
var exportMenu = this.createMenu( '<i class="fas fa-caret-down"></i>Export' );
|
||||
@@ -228,6 +230,16 @@ netgis.Menu.prototype.onImportGMLClick = function( e )
|
||||
this.client.invoke( netgis.Events.IMPORT_GML_SHOW, null );
|
||||
};
|
||||
|
||||
netgis.Menu.prototype.onImportSpatialiteClick = function( e )
|
||||
{
|
||||
this.client.invoke( netgis.Events.IMPORT_SPATIALITE_SHOW, null );
|
||||
};
|
||||
|
||||
netgis.Menu.prototype.onImportGeopackageClick = function( e )
|
||||
{
|
||||
this.client.invoke( netgis.Events.IMPORT_GEOPACKAGE_SHOW, null );
|
||||
};
|
||||
|
||||
netgis.Menu.prototype.onExportPDFClick = function( e )
|
||||
{
|
||||
this.client.invoke( netgis.Events.EXPORT_PDF_SHOW, null );
|
||||
|
||||
@@ -131,7 +131,8 @@
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.netgis-modal-content input
|
||||
.netgis-modal-content input,
|
||||
.netgis-modal-content select
|
||||
{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,9 @@ netgis.Modal = function()
|
||||
this.exportJPEG = null;
|
||||
this.exportPNG = null;
|
||||
this.exportGIF = null;
|
||||
this.addService = null;
|
||||
|
||||
this.addServiceID = 10000;
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.load = function()
|
||||
@@ -39,6 +42,12 @@ netgis.Modal.prototype.load = function()
|
||||
this.importShapefile = this.createImportShapefile();
|
||||
this.root.appendChild( this.importShapefile );
|
||||
|
||||
this.importSpatialite = this.createImportSpatialite();
|
||||
this.root.appendChild( this.importSpatialite );
|
||||
|
||||
this.importGeopackage = this.createImportGeopackage();
|
||||
this.root.appendChild( this.importGeopackage );
|
||||
|
||||
// Export
|
||||
this.exportPDF = this.createExportPDF();
|
||||
this.root.appendChild( this.exportPDF );
|
||||
@@ -52,6 +61,10 @@ netgis.Modal.prototype.load = function()
|
||||
this.exportGIF = this.createExportGIF();
|
||||
this.root.appendChild( this.exportGIF );
|
||||
|
||||
// Layers
|
||||
this.addService = this.createAddService();
|
||||
this.root.appendChild( this.addService );
|
||||
|
||||
// Done
|
||||
this.client.root.appendChild( this.root );
|
||||
|
||||
@@ -59,11 +72,15 @@ netgis.Modal.prototype.load = function()
|
||||
this.client.on( netgis.Events.IMPORT_GEOJSON_SHOW, this.onImportGeoJSONShow.bind( this ) );
|
||||
this.client.on( netgis.Events.IMPORT_GML_SHOW, this.onImportGMLShow.bind( this ) );
|
||||
this.client.on( netgis.Events.IMPORT_SHAPEFILE_SHOW, this.onImportShapefileShow.bind( this ) );
|
||||
this.client.on( netgis.Events.IMPORT_SPATIALITE_SHOW, this.onImportSpatialiteShow.bind( this ) );
|
||||
this.client.on( netgis.Events.IMPORT_GEOPACKAGE_SHOW, this.onImportGeopackageShow.bind( this ) );
|
||||
|
||||
this.client.on( netgis.Events.EXPORT_PDF_SHOW, this.onExportPDFShow.bind( this ) );
|
||||
this.client.on( netgis.Events.EXPORT_JPEG_SHOW, this.onExportJPEGShow.bind( this ) );
|
||||
this.client.on( netgis.Events.EXPORT_PNG_SHOW, this.onExportPNGShow.bind( this ) );
|
||||
this.client.on( netgis.Events.EXPORT_GIF_SHOW, this.onExportGIFShow.bind( this ) );
|
||||
|
||||
this.client.on( netgis.Events.ADD_SERVICE_SHOW, this.onAddServiceShow.bind( this ) );
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.createImportGeoJSON = function()
|
||||
@@ -102,6 +119,30 @@ netgis.Modal.prototype.createImportShapefile = function()
|
||||
return container;
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.createImportSpatialite = function()
|
||||
{
|
||||
var container = this.createContainer( "Import Spatialite" );
|
||||
|
||||
this.createText( container, "Unterstützte Koordinatensysteme:", "<ul><li>World Geodetic System 1984 (EPSG:4326)</li><li>ETRS89 / UTM zone 32N (EPSG:25832)</li></ul>" );
|
||||
this.createInputFile( container, "Datei auswählen / ablegen:", ".sqlite", this.onImportSpatialiteChange.bind( this ) );
|
||||
this.createSpace( container );
|
||||
this.createButton( container, "<i class='fas fa-check'></i>Importieren", this.onImportSpatialiteAccept.bind( this ) );
|
||||
|
||||
return container;
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.createImportGeopackage = function()
|
||||
{
|
||||
var container = this.createContainer( "Import GeoPackage" );
|
||||
|
||||
this.createText( container, "Unterstützte Koordinatensysteme:", "<ul><li>World Geodetic System 1984 (EPSG:4326)</li><li>ETRS89 / UTM zone 32N (EPSG:25832)</li></ul>" );
|
||||
this.createInputFile( container, "Datei auswählen / ablegen:", ".gpkg", this.onImportGeopackageChange.bind( this ) );
|
||||
this.createSpace( container );
|
||||
this.createButton( container, "<i class='fas fa-check'></i>Importieren", this.onImportGeopackageAccept.bind( this ) );
|
||||
|
||||
return container;
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.createExportPDF = function()
|
||||
{
|
||||
var container = this.createContainer( "Export PDF" );
|
||||
@@ -152,6 +193,29 @@ netgis.Modal.prototype.createExportGIF = function()
|
||||
return container;
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.createAddService = function()
|
||||
{
|
||||
var container = this.createContainer( "Dienst hinzufügen" );
|
||||
|
||||
this.createInputText( container, "WMS/WFS URL:" );
|
||||
this.createSpace( container );
|
||||
this.createButton( container, "<i class='fas fa-cloud-download-alt'></i>Dienst laden", this.onAddServiceLoad.bind( this ) );
|
||||
|
||||
/*var details = document.createElement( "div" );
|
||||
details.className = "netgis-hide";
|
||||
container.appendChild( details );*/
|
||||
|
||||
this.createSpace( container );
|
||||
this.createInputHidden( container );
|
||||
this.createText( container, "Bezeichnung:", "" );
|
||||
this.createInputSelect( container, "Kartenebene:", [] );
|
||||
this.createInputSelect( container, "Format:", [] );
|
||||
this.createSpace( container );
|
||||
this.createButton( container, "<i class='fas fa-check'></i>Dienst hinzufügen", this.onAddServiceAccept.bind( this ) );
|
||||
|
||||
return container;
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.show = function( container )
|
||||
{
|
||||
this.root.classList.add( "netgis-show" );
|
||||
@@ -243,6 +307,25 @@ netgis.Modal.prototype.createButton = function( container, title, callback )
|
||||
return button;
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.createInputHidden = function( container )
|
||||
{
|
||||
var row = document.createElement( "tr" );
|
||||
row.className = "netgis-hidden";
|
||||
|
||||
var cell = document.createElement( "td" );
|
||||
row.appendChild( cell );
|
||||
|
||||
var input = document.createElement( "input" );
|
||||
input.setAttribute( "type", "hidden" );
|
||||
cell.appendChild( input );
|
||||
|
||||
var content = container.getElementsByClassName( "netgis-modal-content" )[ 0 ];
|
||||
var table = content.getElementsByTagName( "table" )[ 0 ];
|
||||
table.appendChild( row );
|
||||
|
||||
return input;
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.createInputText = function( container, title )
|
||||
{
|
||||
var row = document.createElement( "tr" );
|
||||
@@ -258,12 +341,41 @@ netgis.Modal.prototype.createInputText = function( container, title )
|
||||
|
||||
var cell = document.createElement( "td" );
|
||||
cell.className = "netgis-padding";
|
||||
row.appendChild( cell );
|
||||
|
||||
var input = document.createElement( "input" );
|
||||
input.setAttribute( "type", "text" );
|
||||
cell.appendChild( input );
|
||||
|
||||
label.htmlFor = input;
|
||||
|
||||
var content = container.getElementsByClassName( "netgis-modal-content" )[ 0 ];
|
||||
var table = content.getElementsByTagName( "table" )[ 0 ];
|
||||
table.appendChild( row );
|
||||
|
||||
return input;
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.createInputSelect = function( container, title, keyValues )
|
||||
{
|
||||
var row = document.createElement( "tr" );
|
||||
//row.className = "netgis-hover-light";
|
||||
|
||||
var head = document.createElement( "th" );
|
||||
head.className = "netgis-padding";
|
||||
|
||||
var label = document.createElement( "label" );
|
||||
label.innerHTML = title;
|
||||
head.appendChild( label );
|
||||
row.appendChild( head );
|
||||
|
||||
var cell = document.createElement( "td" );
|
||||
cell.className = "netgis-padding";
|
||||
row.appendChild( cell );
|
||||
|
||||
var input = document.createElement( "select" );
|
||||
cell.appendChild( input );
|
||||
|
||||
label.htmlFor = input;
|
||||
|
||||
var content = container.getElementsByClassName( "netgis-modal-content" )[ 0 ];
|
||||
@@ -503,6 +615,74 @@ netgis.Modal.prototype.onImportShapefileAccept = function( e )
|
||||
this.hide();
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.onImportSpatialiteShow = function( e )
|
||||
{
|
||||
var input = this.importShapefile.getElementsByTagName( "input" )[ 0 ];
|
||||
var button = this.importShapefile.getElementsByTagName( "button" )[ 1 ];
|
||||
input.value = "";
|
||||
button.disabled = true;
|
||||
|
||||
this.show( this.importSpatialite );
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.onImportSpatialiteChange = function( e )
|
||||
{
|
||||
var input = this.importSpatialite.getElementsByTagName( "input" )[ 0 ];
|
||||
var button = this.importSpatialite.getElementsByTagName( "button" )[ 1 ];
|
||||
|
||||
if ( input.value && input.value.length > 0 )
|
||||
{
|
||||
button.disabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
button.disabled = true;
|
||||
}
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.onImportSpatialiteAccept = function( e )
|
||||
{
|
||||
var input = this.importSpatialite.getElementsByTagName( "input" )[ 0 ];
|
||||
var file = input.files[ 0 ];
|
||||
this.client.invoke( netgis.Events.IMPORT_SPATIALITE, file );
|
||||
|
||||
this.hide();
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.onImportGeopackageShow = function( e )
|
||||
{
|
||||
var input = this.importGeopackage.getElementsByTagName( "input" )[ 0 ];
|
||||
var button = this.importGeopackage.getElementsByTagName( "button" )[ 1 ];
|
||||
input.value = "";
|
||||
button.disabled = true;
|
||||
|
||||
this.show( this.importGeopackage );
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.onImportGeopackageChange = function( e )
|
||||
{
|
||||
var input = this.importGeopackage.getElementsByTagName( "input" )[ 0 ];
|
||||
var button = this.importGeopackage.getElementsByTagName( "button" )[ 1 ];
|
||||
|
||||
if ( input.value && input.value.length > 0 )
|
||||
{
|
||||
button.disabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
button.disabled = true;
|
||||
}
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.onImportGeopackageAccept = function( e )
|
||||
{
|
||||
var input = this.importGeopackage.getElementsByTagName( "input" )[ 0 ];
|
||||
var file = input.files[ 0 ];
|
||||
this.client.invoke( netgis.Events.IMPORT_GEOPACKAGE, file );
|
||||
|
||||
this.hide();
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.onExportPDFShow = function( e )
|
||||
{
|
||||
var inputs = this.exportPDF.getElementsByTagName( "input" );
|
||||
@@ -588,5 +768,237 @@ netgis.Modal.prototype.onExportGIFAccept = function( e )
|
||||
var resy = Number.parseInt( inputs[ 1 ].value );
|
||||
this.client.invoke( netgis.Events.EXPORT_GIF, { resx: resx, resy: resy } );
|
||||
|
||||
this.hide();
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.onAddServiceShow = function( e )
|
||||
{
|
||||
//this.addService.getElementsByTagName( "input" )[ 0 ].value = "";
|
||||
|
||||
this.show( this.addService );
|
||||
|
||||
// Hide Details
|
||||
var rows = this.addService.getElementsByTagName( "tr" );
|
||||
|
||||
for ( var r = 3; r < rows.length; r++ )
|
||||
{
|
||||
rows[ r ].classList.add( "netgis-hide" );
|
||||
}
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.onAddServiceLoad = function( e )
|
||||
{
|
||||
var inputs = this.addService.getElementsByTagName( "input" );
|
||||
var url = inputs[ 0 ].value;
|
||||
|
||||
// Get Base URL
|
||||
var qmark = url.indexOf( "?" );
|
||||
if ( qmark > -1 ) url = url.substr( 0, qmark );
|
||||
|
||||
var getCaps = url + "?request=GetCapabilities";
|
||||
|
||||
netgis.util.request( getCaps, this.onAddServiceCapsResponse.bind( this ) );
|
||||
|
||||
console.info( "Add Service Load:", url );
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.onAddServiceCapsResponse = function( e )
|
||||
{
|
||||
var parser = new DOMParser();
|
||||
var xml = parser.parseFromString( e, "text/xml" );
|
||||
var caps = xml.documentElement;
|
||||
|
||||
var rows = this.addService.getElementsByTagName( "tr" );
|
||||
var rowTitle = rows[ 5 ];
|
||||
|
||||
var inputs = this.addService.getElementsByTagName( "input" );
|
||||
var inputType = inputs[ 1 ];
|
||||
|
||||
var selects = this.addService.getElementsByTagName( "select" );
|
||||
var selectLayer = selects[ 0 ];
|
||||
var selectFormat = selects[ 1 ];
|
||||
|
||||
for ( var i = selectLayer.options.length - 1; i >= 0; i-- ) selectLayer.options.remove( i );
|
||||
for ( var i = selectFormat.options.length - 1; i >= 0; i-- ) selectFormat.options.remove( i );
|
||||
|
||||
switch ( caps.nodeName )
|
||||
{
|
||||
// WMS
|
||||
case "WMS_Capabilities":
|
||||
{
|
||||
inputType.value = "wms";
|
||||
|
||||
var version = caps.getAttribute( "version" );
|
||||
var service = caps.getElementsByTagName( "Service" )[ 0 ];
|
||||
var title = service.getElementsByTagName( "Title" )[ 0 ].textContent;
|
||||
rowTitle.children[ 1 ].innerHTML = title;
|
||||
|
||||
var layerItems = caps.getElementsByTagName( "Layer" );
|
||||
var layers = [];
|
||||
|
||||
for ( var l = 0; l < layerItems.length; l++ )
|
||||
{
|
||||
var item = layerItems[ l ];
|
||||
var layerName = item.getElementsByTagName( "Name" )[ 0 ].textContent;
|
||||
var layerTitle = item.getElementsByTagName( "Title" )[ 0 ].textContent;
|
||||
|
||||
layers.push( { name: layerName, title: layerTitle } );
|
||||
|
||||
var option = document.createElement( "option" );
|
||||
option.text = layerTitle;
|
||||
option.value = layerName;
|
||||
selectLayer.options.add( option );
|
||||
}
|
||||
|
||||
var getMap = caps.getElementsByTagName( "GetMap" )[ 0 ];
|
||||
var formatItems = getMap.getElementsByTagName( "Format" );
|
||||
var formats = [];
|
||||
|
||||
for ( var f = 0; f < formatItems.length; f++ )
|
||||
{
|
||||
var item = formatItems[ f ];
|
||||
var format = item.textContent;
|
||||
|
||||
formats.push( format );
|
||||
|
||||
var option = document.createElement( "option" );
|
||||
option.text = format;
|
||||
option.value = format;
|
||||
selectFormat.options.add( option );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// WFS
|
||||
case "WFS_Capabilities":
|
||||
case "wfs:WFS_Capabilities":
|
||||
{
|
||||
inputType.value = "wfs";
|
||||
|
||||
var version = caps.getAttribute( "version" );
|
||||
var service = caps.getElementsByTagName( "ows:ServiceIdentification" )[ 0 ];
|
||||
var title = service.getElementsByTagName( "ows:Title" )[ 0 ].textContent;
|
||||
rowTitle.children[ 1 ].innerHTML = title;
|
||||
|
||||
var featureTypeItems = caps.getElementsByTagName( "FeatureType" );
|
||||
var types = [];
|
||||
|
||||
for ( var l = 0; l < featureTypeItems.length; l++ )
|
||||
{
|
||||
var item = featureTypeItems[ l ];
|
||||
var typeName = item.getElementsByTagName( "Name" )[ 0 ].textContent;
|
||||
var typeTitle = item.getElementsByTagName( "Title" )[ 0 ].textContent;
|
||||
|
||||
types.push( { name: typeName, title: typeTitle } );
|
||||
|
||||
var option = document.createElement( "option" );
|
||||
option.text = typeTitle;
|
||||
option.value = typeName;
|
||||
selectLayer.options.add( option );
|
||||
}
|
||||
|
||||
var operations = caps.getElementsByTagName( "ows:Operation" );
|
||||
var getFeature = null;
|
||||
|
||||
for ( var o = 0; o < operations.length; o++ )
|
||||
{
|
||||
if ( operations[ o ].getAttribute( "name" ) === "GetFeature" )
|
||||
{
|
||||
getFeature = operations[ o ];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( getFeature )
|
||||
{
|
||||
var parameters = getFeature.getElementsByTagName( "ows:Parameter" );
|
||||
|
||||
for ( var p = 0; p < parameters.length; p++ )
|
||||
{
|
||||
var parameter = parameters[ p ];
|
||||
|
||||
if ( parameter.getAttribute( "name" ) === "outputFormat" )
|
||||
{
|
||||
var formatItems = parameter.getElementsByTagName( "ows:Value" );
|
||||
|
||||
for ( var f = 0; f < formatItems.length; f++ )
|
||||
{
|
||||
var item = formatItems[ f ];
|
||||
var format = item.textContent;
|
||||
|
||||
var option = document.createElement( "option" );
|
||||
option.text = format;
|
||||
option.value = format;
|
||||
selectFormat.options.add( option );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
selectFormat.value = "application/json";
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Show Details
|
||||
var rows = this.addService.getElementsByTagName( "tr" );
|
||||
|
||||
for ( var r = 3; r < rows.length; r++ )
|
||||
{
|
||||
rows[ r ].classList.remove( "netgis-hide" );
|
||||
}
|
||||
};
|
||||
|
||||
netgis.Modal.prototype.onAddServiceAccept = function( e )
|
||||
{
|
||||
/*var inputs = this.exportPDF.getElementsByTagName( "input" );
|
||||
var resx = Number.parseInt( inputs[ 0 ].value );
|
||||
var resy = Number.parseInt( inputs[ 1 ].value );
|
||||
var margin = Number.parseInt( inputs[ 2 ].value );
|
||||
var mode = inputs[ 3 ].checked;
|
||||
this.client.invoke( netgis.Events.EXPORT_PDF, { resx: resx, resy: resy, mode: mode, margin: margin } );*/
|
||||
|
||||
var inputs = this.addService.getElementsByTagName( "input" );
|
||||
var selects = this.addService.getElementsByTagName( "select" );
|
||||
|
||||
var url = inputs[ 0 ].value;
|
||||
var type = inputs[ 1 ].value;
|
||||
|
||||
var selectLayer = selects[ 0 ];
|
||||
var selectFormat = selects[ 1 ];
|
||||
|
||||
var layerOption = selectLayer.options.item( selectLayer.options.selectedIndex );
|
||||
var formatOption = selectFormat.options.item( selectFormat.options.selectedIndex );
|
||||
|
||||
var id = this.addServiceID++;
|
||||
|
||||
var params =
|
||||
{
|
||||
id: id,
|
||||
url: url,
|
||||
title: layerOption.text,
|
||||
name: layerOption.value,
|
||||
format: formatOption.value
|
||||
};
|
||||
|
||||
switch ( type )
|
||||
{
|
||||
case "wms":
|
||||
{
|
||||
this.client.invoke( netgis.Events.ADD_SERVICE_WMS, params );
|
||||
break;
|
||||
}
|
||||
|
||||
case "wfs":
|
||||
{
|
||||
this.client.invoke( netgis.Events.ADD_SERVICE_WFS, params );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
this.hide();
|
||||
};
|
||||
@@ -18,20 +18,38 @@ netgis.Toolbar.prototype.load = function()
|
||||
|
||||
if ( this.client.editable )
|
||||
{
|
||||
var bufferDefaultRadius = 1000;
|
||||
var bufferDefaultSegments = 3;
|
||||
|
||||
if ( netgis.util.isDefined( config.tools ) )
|
||||
{
|
||||
if ( netgis.util.isDefined( config.tools.buffer.defaultRadius ) ) bufferDefaultRadius = config.tools.buffer.defaultRadius;
|
||||
if ( netgis.util.isDefined( config.tools.buffer.defaultSegments ) ) bufferDefaultSegments = config.tools.buffer.defaultSegments;
|
||||
}
|
||||
|
||||
// Draw
|
||||
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):", bufferDefaultRadius, this.onDrawBufferRadiusChange.bind( this ) ) );
|
||||
this.append( this.toolbars[ netgis.Modes.DRAW_POINTS ], this.createToolbarInput( "Segmente:", bufferDefaultSegments, 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):", bufferDefaultRadius, this.onDrawBufferRadiusChange.bind( this ) ) );
|
||||
this.append( this.toolbars[ netgis.Modes.DRAW_LINES ], this.createToolbarInput( "Segmente:", bufferDefaultSegments, this.onDrawBufferSegmentsChange.bind( this ) ) );
|
||||
this.root.appendChild( this.toolbars[ netgis.Modes.DRAW_LINES ] );
|
||||
|
||||
this.showDrawBufferOptions( false );
|
||||
|
||||
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 ] );
|
||||
|
||||
// Edit
|
||||
@@ -60,17 +78,8 @@ netgis.Toolbar.prototype.load = function()
|
||||
//var wrapper = document.createElement( "div" );
|
||||
//this.toolbars[ netgis.Modes.BUFFER_FEATURE_EDIT ].appendChild( wrapper );
|
||||
|
||||
var bufferDefaultRadius = 1000;
|
||||
var bufferDefaultSegments = 3;
|
||||
|
||||
if ( netgis.util.isDefined( config.tools ) )
|
||||
{
|
||||
if ( netgis.util.isDefined( config.tools.buffer.defaultRadius ) ) bufferDefaultRadius = config.tools.buffer.defaultRadius;
|
||||
if ( netgis.util.isDefined( config.tools.buffer.defaultSegments ) ) bufferDefaultSegments = config.tools.buffer.defaultSegments;
|
||||
}
|
||||
|
||||
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 in Meter:", bufferDefaultRadius, this.onBufferChange.bind( this ) ) );
|
||||
this.append( this.toolbars[ netgis.Modes.BUFFER_FEATURE_EDIT ], this.createToolbarInput( "Radius (Meter):", bufferDefaultRadius, this.onBufferChange.bind( this ) ) );
|
||||
this.append( this.toolbars[ netgis.Modes.BUFFER_FEATURE_EDIT ], this.createToolbarInput( "Segmente:", bufferDefaultSegments, 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 ) ) );
|
||||
|
||||
@@ -252,6 +261,19 @@ netgis.Toolbar.prototype.onSetMode = function( e )
|
||||
this.updateBuffer();
|
||||
break;
|
||||
}
|
||||
|
||||
case netgis.Modes.DRAW_POINTS:
|
||||
case netgis.Modes.DRAW_LINES:
|
||||
{
|
||||
var checkbox = this.toolbars[ netgis.Modes.DRAW_POINTS ].getElementsByTagName( "input" )[ 1 ];
|
||||
|
||||
if ( checkbox.checked )
|
||||
{
|
||||
this.client.invoke( netgis.Events.DRAW_BUFFER_ON, null );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -444,4 +466,83 @@ netgis.Toolbar.prototype.onSnapChange = function( e )
|
||||
this.toolbars[ netgis.Modes.DRAW_POLYGONS ].getElementsByTagName( "input" )[ 0 ].checked = on;
|
||||
|
||||
this.client.invoke( on ? netgis.Events.SNAP_ON : netgis.Events.SNAP_OFF, null );
|
||||
};
|
||||
|
||||
netgis.Toolbar.prototype.onTracingChange = function( e )
|
||||
{
|
||||
var input = e.target;
|
||||
var on = input.checked;
|
||||
|
||||
var snapInput = this.toolbars[ netgis.Modes.DRAW_POLYGONS ].getElementsByTagName( "input" )[ 0 ];
|
||||
var snap = snapInput.checked;
|
||||
|
||||
if ( on && !snap )
|
||||
{
|
||||
snapInput.checked = on;
|
||||
this.client.invoke( netgis.Events.SNAP_ON, null );
|
||||
}
|
||||
|
||||
this.client.invoke( on ? netgis.Events.TRACING_ON : netgis.Events.TRACING_OFF, null );
|
||||
};
|
||||
|
||||
netgis.Toolbar.prototype.onDrawBufferChange = function( e )
|
||||
{
|
||||
var input = e.target;
|
||||
var on = input.checked;
|
||||
|
||||
this.toolbars[ netgis.Modes.DRAW_POINTS ].getElementsByTagName( "input" )[ 1 ].checked = on;
|
||||
this.toolbars[ netgis.Modes.DRAW_LINES ].getElementsByTagName( "input" )[ 1 ].checked = on;
|
||||
|
||||
this.client.invoke( on ? netgis.Events.DRAW_BUFFER_ON : netgis.Events.DRAW_BUFFER_OFF, null );
|
||||
|
||||
this.showDrawBufferOptions( on );
|
||||
};
|
||||
|
||||
netgis.Toolbar.prototype.onDrawBufferRadiusChange = function( e )
|
||||
{
|
||||
var input = e.target;
|
||||
var radius = Number.parseFloat( input.value );
|
||||
|
||||
this.client.invoke( netgis.Events.DRAW_BUFFER_RADIUS_CHANGE, radius );
|
||||
|
||||
var pointsInput = this.toolbars[ netgis.Modes.DRAW_POINTS ].getElementsByTagName( "input" )[ 2 ];
|
||||
if ( input !== pointsInput ) pointsInput.value = radius;
|
||||
|
||||
var linesInput = this.toolbars[ netgis.Modes.DRAW_LINES ].getElementsByTagName( "input" )[ 2 ];
|
||||
if ( input !== linesInput ) linesInput.value = radius;
|
||||
};
|
||||
|
||||
netgis.Toolbar.prototype.onDrawBufferSegmentsChange = function( e )
|
||||
{
|
||||
var input = e.target;
|
||||
var segs = Number.parseInt( input.value );
|
||||
|
||||
this.client.invoke( netgis.Events.DRAW_BUFFER_SEGMENTS_CHANGE, segs );
|
||||
|
||||
var pointsInput = this.toolbars[ netgis.Modes.DRAW_POINTS ].getElementsByTagName( "input" )[ 3 ];
|
||||
if ( input !== pointsInput ) pointsInput.value = segs;
|
||||
|
||||
var linesInput = this.toolbars[ netgis.Modes.DRAW_LINES ].getElementsByTagName( "input" )[ 3 ];
|
||||
if ( input !== linesInput ) linesInput.value = segs;
|
||||
};
|
||||
|
||||
netgis.Toolbar.prototype.showDrawBufferOptions = function( on )
|
||||
{
|
||||
var pointsItems = this.toolbars[ netgis.Modes.DRAW_POINTS ].children[ 0 ].children;
|
||||
var linesItems = this.toolbars[ netgis.Modes.DRAW_LINES ].children[ 0 ].children;
|
||||
|
||||
if ( on )
|
||||
{
|
||||
pointsItems[ 3 ].classList.remove( "netgis-hide" );
|
||||
pointsItems[ 4 ].classList.remove( "netgis-hide" );
|
||||
linesItems[ 3 ].classList.remove( "netgis-hide" );
|
||||
linesItems[ 4 ].classList.remove( "netgis-hide" );
|
||||
}
|
||||
else
|
||||
{
|
||||
pointsItems[ 3 ].classList.add( "netgis-hide" );
|
||||
pointsItems[ 4 ].classList.add( "netgis-hide" );
|
||||
linesItems[ 3 ].classList.add( "netgis-hide" );
|
||||
linesItems[ 4 ].classList.add( "netgis-hide" );
|
||||
}
|
||||
};
|
||||
@@ -139,6 +139,59 @@ netgis.util =
|
||||
{
|
||||
return Object.assign( target, other );
|
||||
};
|
||||
|
||||
/**
|
||||
* @returns {String} Formatted Date Time String (German Locale)
|
||||
*/
|
||||
var getTimeStamp = function()
|
||||
{
|
||||
var date = new Date();
|
||||
|
||||
var timestamp = date.getDate() + "." + ( date.getMonth() + 1 ) + "." + date.getFullYear();
|
||||
timestamp += " " + date.getHours() + ":" + date.getMinutes();
|
||||
|
||||
return timestamp;
|
||||
};
|
||||
|
||||
/*
|
||||
* @param {Number} area Raw Area in Square Meters
|
||||
* @param {Boolean} decimals Output Rounded Decimals
|
||||
* @returns {String} Formatted Area String (Square Meters/Square Kilometers)
|
||||
*/
|
||||
var formatArea = function( area, decimals )
|
||||
{
|
||||
var output;
|
||||
|
||||
// Normal / Large Value
|
||||
var large = ( area > 10000 );
|
||||
|
||||
// Round Value
|
||||
var i = 0;
|
||||
|
||||
if ( large )
|
||||
{
|
||||
if ( decimals )
|
||||
i = Math.round( area / 1000000 * 1000 ) / 1000;
|
||||
else
|
||||
i = Math.round( area / 1000000 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( decimals )
|
||||
i = Math.round( area * 100 ) / 100;
|
||||
else
|
||||
i = Math.round( area );
|
||||
}
|
||||
|
||||
if ( i === 0 ) large = false;
|
||||
|
||||
// Build String
|
||||
output = i + ( large ? " qkm" : " qm" );
|
||||
|
||||
//NOTE: HTML Superscript / Unicode (² etc.) not supported in OL Labels
|
||||
|
||||
return output;
|
||||
};
|
||||
|
||||
// Public Interface
|
||||
var iface =
|
||||
@@ -153,7 +206,9 @@ netgis.util =
|
||||
size: size,
|
||||
request: request,
|
||||
padstr: padstr,
|
||||
merge: merge
|
||||
merge: merge,
|
||||
getTimeStamp: getTimeStamp,
|
||||
formatArea: formatArea
|
||||
};
|
||||
|
||||
return iface;
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid #b3c5db;background-color:rgba(255,255,255,.4)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:12px;z-index:11;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-text{position:absolute;font-size:14px;text-align:center;bottom:25px;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid #000}.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:rgba(255,255,255,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:rgba(0,60,136,.7);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:#000;text-shadow:0 0 2px #fff;font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:2px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}
|
||||
/*# sourceMappingURL=ol.css.map */
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["src/ol/ol.css"],"names":[],"mappings":"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"}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,3 +0,0 @@
|
||||
/*! https://mths.be/punycode v1.3.2 by @mathias */
|
||||
|
||||
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,25 @@
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright 2005-present, OpenLayers Contributors
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@@ -0,0 +1,345 @@
|
||||
:root,
|
||||
:host {
|
||||
--ol-background-color: white;
|
||||
--ol-accent-background-color: #F5F5F5;
|
||||
--ol-subtle-background-color: rgba(128, 128, 128, 0.25);
|
||||
--ol-partial-background-color: rgba(255, 255, 255, 0.75);
|
||||
--ol-foreground-color: #333333;
|
||||
--ol-subtle-foreground-color: #666666;
|
||||
--ol-brand-color: #00AAFF;
|
||||
}
|
||||
|
||||
.ol-box {
|
||||
box-sizing: border-box;
|
||||
border-radius: 2px;
|
||||
border: 1.5px solid var(--ol-background-color);
|
||||
background-color: var(--ol-partial-background-color);
|
||||
}
|
||||
|
||||
.ol-mouse-position {
|
||||
top: 8px;
|
||||
right: 8px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.ol-scale-line {
|
||||
background: var(--ol-partial-background-color);
|
||||
border-radius: 4px;
|
||||
bottom: 8px;
|
||||
left: 8px;
|
||||
padding: 2px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.ol-scale-line-inner {
|
||||
border: 1px solid var(--ol-subtle-foreground-color);
|
||||
border-top: none;
|
||||
color: var(--ol-foreground-color);
|
||||
font-size: 10px;
|
||||
text-align: center;
|
||||
margin: 1px;
|
||||
will-change: contents, width;
|
||||
transition: all 0.25s;
|
||||
}
|
||||
|
||||
.ol-scale-bar {
|
||||
position: absolute;
|
||||
bottom: 8px;
|
||||
left: 8px;
|
||||
}
|
||||
|
||||
.ol-scale-bar-inner {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.ol-scale-step-marker {
|
||||
width: 1px;
|
||||
height: 15px;
|
||||
background-color: var(--ol-foreground-color);
|
||||
float: right;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.ol-scale-step-text {
|
||||
position: absolute;
|
||||
bottom: -5px;
|
||||
font-size: 10px;
|
||||
z-index: 11;
|
||||
color: var(--ol-foreground-color);
|
||||
text-shadow: -1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);
|
||||
}
|
||||
|
||||
.ol-scale-text {
|
||||
position: absolute;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
bottom: 25px;
|
||||
color: var(--ol-foreground-color);
|
||||
text-shadow: -1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);
|
||||
}
|
||||
|
||||
.ol-scale-singlebar {
|
||||
position: relative;
|
||||
height: 10px;
|
||||
z-index: 9;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid var(--ol-foreground-color);
|
||||
}
|
||||
|
||||
.ol-scale-singlebar-even {
|
||||
background-color: var(--ol-subtle-foreground-color);
|
||||
}
|
||||
|
||||
.ol-scale-singlebar-odd {
|
||||
background-color: var(--ol-background-color);
|
||||
}
|
||||
|
||||
.ol-unsupported {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ol-viewport,
|
||||
.ol-unselectable {
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.ol-viewport canvas {
|
||||
all: unset;
|
||||
}
|
||||
|
||||
.ol-selectable {
|
||||
-webkit-touch-callout: default;
|
||||
-webkit-user-select: text;
|
||||
-moz-user-select: text;
|
||||
user-select: text;
|
||||
}
|
||||
|
||||
.ol-grabbing {
|
||||
cursor: -webkit-grabbing;
|
||||
cursor: -moz-grabbing;
|
||||
cursor: grabbing;
|
||||
}
|
||||
|
||||
.ol-grab {
|
||||
cursor: move;
|
||||
cursor: -webkit-grab;
|
||||
cursor: -moz-grab;
|
||||
cursor: grab;
|
||||
}
|
||||
|
||||
.ol-control {
|
||||
position: absolute;
|
||||
background-color: var(--ol-subtle-background-color);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.ol-zoom {
|
||||
top: .5em;
|
||||
left: .5em;
|
||||
}
|
||||
|
||||
.ol-rotate {
|
||||
top: .5em;
|
||||
right: .5em;
|
||||
transition: opacity .25s linear, visibility 0s linear;
|
||||
}
|
||||
|
||||
.ol-rotate.ol-hidden {
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
transition: opacity .25s linear, visibility 0s linear .25s;
|
||||
}
|
||||
|
||||
.ol-zoom-extent {
|
||||
top: 4.643em;
|
||||
left: .5em;
|
||||
}
|
||||
|
||||
.ol-full-screen {
|
||||
right: .5em;
|
||||
top: .5em;
|
||||
}
|
||||
|
||||
.ol-control button {
|
||||
display: block;
|
||||
margin: 1px;
|
||||
padding: 0;
|
||||
color: var(--ol-subtle-foreground-color);
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
font-size: inherit;
|
||||
text-align: center;
|
||||
height: 1.375em;
|
||||
width: 1.375em;
|
||||
line-height: .4em;
|
||||
background-color: var(--ol-background-color);
|
||||
border: none;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.ol-control button::-moz-focus-inner {
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.ol-zoom-extent button {
|
||||
line-height: 1.4em;
|
||||
}
|
||||
|
||||
.ol-compass {
|
||||
display: block;
|
||||
font-weight: normal;
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
.ol-touch .ol-control button {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
.ol-touch .ol-zoom-extent {
|
||||
top: 5.5em;
|
||||
}
|
||||
|
||||
.ol-control button:hover,
|
||||
.ol-control button:focus {
|
||||
text-decoration: none;
|
||||
outline: 1px solid var(--ol-subtle-foreground-color);
|
||||
color: var(--ol-foreground-color);
|
||||
}
|
||||
|
||||
.ol-zoom .ol-zoom-in {
|
||||
border-radius: 2px 2px 0 0;
|
||||
}
|
||||
|
||||
.ol-zoom .ol-zoom-out {
|
||||
border-radius: 0 0 2px 2px;
|
||||
}
|
||||
|
||||
.ol-attribution {
|
||||
text-align: right;
|
||||
bottom: .5em;
|
||||
right: .5em;
|
||||
max-width: calc(100% - 1.3em);
|
||||
display: flex;
|
||||
flex-flow: row-reverse;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.ol-attribution a {
|
||||
color: var(--ol-subtle-foreground-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.ol-attribution ul {
|
||||
margin: 0;
|
||||
padding: 1px .5em;
|
||||
color: var(--ol-foreground-color);
|
||||
text-shadow: 0 0 2px var(--ol-background-color);
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.ol-attribution li {
|
||||
display: inline;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.ol-attribution li:not(:last-child):after {
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.ol-attribution img {
|
||||
max-height: 2em;
|
||||
max-width: inherit;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.ol-attribution button {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.ol-attribution.ol-collapsed ul {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ol-attribution:not(.ol-collapsed) {
|
||||
background: var(--ol-partial-background-color);
|
||||
}
|
||||
|
||||
.ol-attribution.ol-uncollapsible {
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
border-radius: 4px 0 0;
|
||||
}
|
||||
|
||||
.ol-attribution.ol-uncollapsible img {
|
||||
margin-top: -.2em;
|
||||
max-height: 1.6em;
|
||||
}
|
||||
|
||||
.ol-attribution.ol-uncollapsible button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ol-zoomslider {
|
||||
top: 4.5em;
|
||||
left: .5em;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
.ol-zoomslider button {
|
||||
position: relative;
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
.ol-touch .ol-zoomslider {
|
||||
top: 5.5em;
|
||||
}
|
||||
|
||||
.ol-overviewmap {
|
||||
left: 0.5em;
|
||||
bottom: 0.5em;
|
||||
}
|
||||
|
||||
.ol-overviewmap.ol-uncollapsible {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
border-radius: 0 4px 0 0;
|
||||
}
|
||||
|
||||
.ol-overviewmap .ol-overviewmap-map,
|
||||
.ol-overviewmap button {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.ol-overviewmap .ol-overviewmap-map {
|
||||
border: 1px solid var(--ol-subtle-foreground-color);
|
||||
height: 150px;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
.ol-overviewmap:not(.ol-collapsed) button {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.ol-overviewmap.ol-collapsed .ol-overviewmap-map,
|
||||
.ol-overviewmap.ol-uncollapsible button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ol-overviewmap:not(.ol-collapsed) {
|
||||
background: var(--ol-subtle-background-color);
|
||||
}
|
||||
|
||||
.ol-overviewmap-box {
|
||||
border: 1.5px dotted var(--ol-subtle-foreground-color);
|
||||
}
|
||||
|
||||
.ol-overviewmap .ol-overviewmap-box:hover {
|
||||
cursor: move;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user