Skip to content

Commit b9579ba

Browse files
committed
Add option to show "Upload geometry" and "Draw geometry" buttons instead of "Create geometry" button
1 parent b229ed0 commit b9579ba

3 files changed

Lines changed: 40 additions & 12 deletions

File tree

l10n/custom-data-type-nfis-geometry.csv

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ custom.data.type.nfis.geometry.multiSelect.no,Keine Mehrfachauswahl,No multi sel
55
custom.data.type.nfis.geometry.edit.no_data,Keine Daten vorhanden,No data present
66
custom.data.type.nfis.geometry.search.placeholder,Geometrie-ID,Geometry ID
77
custom.data.type.nfis.geometry.createNewGeometry,Neue Geometrie anlegen,Create new geometry
8+
custom.data.type.nfis.geometry.drawNewGeometry,Neue Geometrie zeichnen,Draw new geometry
9+
custom.data.type.nfis.geometry.uploadNewGeometry,Neue Geometrie hochladen,Upload new geometry
810
custom.data.type.nfis.geometry.linkExistingGeometry,Existierende Geometrie verknüpfen,Link existing geometry
911
custom.data.type.nfis.geometry.editGeometry,Bearbeiten,Edit
1012
custom.data.type.nfis.geometry.deleteGeometry,Geometrie löschen,Delete geometry
@@ -33,6 +35,8 @@ server.config.parameter.system.nfisGeoservices.geoserver_read_password.label,Geo
3335
server.config.parameter.system.nfisGeoservices.geoserver_write_username.label,Geoserver-Account (Schreibrechte): Username,Geoserver account (write permissions): User name
3436
server.config.parameter.system.nfisGeoservices.geoserver_write_password.label,Geoserver-Account (Schreibrechte): Passwort,Geoserver account (write permissions): Password
3537
server.config.parameter.system.nfisGeoservices.wfs_geometry_id_field_name.label,Name des Geometrie-ID-Feldes im WFS,Name of the geometry ID field in the WFS
38+
server.config.parameter.system.nfisGeoservices.show_upload_button.label,Hochladen von Geometrien im Masterportal,Upload geometries in Masterportal
39+
server.config.parameter.system.nfisGeoservices.show_upload_button.checkbox,Button anzeigen,Show button
3640
server.config.parameter.system.nfisGeoservices.wfs_configuration.label,Objekttypen,Object types
3741
server.config.parameter.system.nfisGeoservices.wfs_configuration.object_type.label,Name des Objekttyps,Object type name
3842
server.config.parameter.system.nfisGeoservices.wfs_configuration.geometry_fields.label,Geometrie-Felder,Geometry fields

manifest.master.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ base_config:
5656
wfs_geometry_id_field_name:
5757
type: text
5858
position: 6
59+
show_upload_button:
60+
type: bool
61+
position: 7
5962
wfs_configuration:
6063
type: table
6164
fields:
@@ -139,7 +142,7 @@ base_config:
139142
position: 0
140143
position: 14
141144
position: 1
142-
position: 7
145+
position: 8
143146
linked_objects:
144147
type: table
145148
fields:
@@ -149,7 +152,7 @@ base_config:
149152
- name: link_field_name
150153
type: text
151154
position: 1
152-
position: 8
155+
position: 9
153156
masterportal_configurations:
154157
type: table
155158
fields:
@@ -162,7 +165,7 @@ base_config:
162165
- name: file_name
163166
type: text
164167
position: 2
165-
position: 9
168+
position: 10
166169

167170
callbacks:
168171
db_pre_save:

src/webfrontend/js/customDataType/contentLoader.js

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,12 @@ function renderEditorButtons(contentElement, cdata, settings, wfsData, selectedG
101101

102102
if (!selectedGeometryId) {
103103
if (isAddingGeometriesAllowed(cdata, settings)) {
104-
buttons.push(createCreateGeometryButton(contentElement, cdata, settings, wfsData, extent));
104+
if (getBaseConfiguration().show_upload_button) {
105+
buttons.push(createUploadGeometryButton(contentElement, cdata, settings, wfsData, extent));
106+
buttons.push(createCreateGeometryButton(contentElement, cdata, settings, wfsData, extent, true));
107+
} else {
108+
buttons.push(createCreateGeometryButton(contentElement, cdata, settings, wfsData, extent));
109+
}
105110
buttons.push(createLinkExistingGeometryButton(contentElement, cdata, settings));
106111
}
107112
} else {
@@ -148,14 +153,24 @@ function createDeleteGeometryButton(contentElement, cdata, settings, uuid) {
148153
});
149154
}
150155

151-
function createCreateGeometryButton(contentElement, cdata, settings, wfsData, extent) {
156+
function createCreateGeometryButton(contentElement, cdata, settings, wfsData, extent, showDrawLabel = false) {
152157
return new CUI.Button({
153-
text: $$('custom.data.type.nfis.geometry.createNewGeometry'),
158+
text: showDrawLabel
159+
? $$('custom.data.type.nfis.geometry.drawNewGeometry')
160+
: $$('custom.data.type.nfis.geometry.createNewGeometry'),
154161
icon_left: new CUI.Icon({ class: 'fa-plus' }),
155162
onClick: () => createGeometry(contentElement, cdata, settings, wfsData, extent)
156163
});
157164
}
158165

166+
function createUploadGeometryButton(contentElement, cdata, settings, wfsData, extent) {
167+
return new CUI.Button({
168+
text: $$('custom.data.type.nfis.geometry.uploadNewGeometry'),
169+
icon_left: new CUI.Icon({ class: 'fa-upload' }),
170+
onClick: () => createGeometry(contentElement, cdata, settings, wfsData, extent, true)
171+
});
172+
}
173+
159174
function createLinkExistingGeometryButton(contentElement, cdata, settings) {
160175
const label = $$('custom.data.type.nfis.geometry.linkExistingGeometry');
161176
return new CUI.Button({
@@ -176,12 +191,12 @@ function editGeometry(contentElement, cdata, settings, wfsData, uuid) {
176191
openEditGeometryModal(contentElement, cdata, settings, wfsData);
177192
}
178193

179-
function createGeometry(contentElement, cdata, settings, wfsData, extent) {
194+
function createGeometry(contentElement, cdata, settings, wfsData, extent, upload = false) {
180195
const newGeometryId = window.crypto.randomUUID();
181196
navigator.clipboard.writeText(newGeometryId);
182-
window.open(getEditGeometryUrl(settings, wfsData, extent), '_blank');
197+
window.open(getEditGeometryUrl(settings, wfsData, extent, upload), '_blank');
183198
openCreateGeometryModal(contentElement, cdata, settings, newGeometryId);
184-
};
199+
}
185200

186201
function openEditGeometryModal(contentElement, cdata, settings) {
187202
const modalDialog = new CUI.ConfirmationDialog({
@@ -529,13 +544,19 @@ function getViewGeometriesUrl(extent) {
529544
return url + 'zoomToExtent=' + extent.join(',');
530545
}
531546

532-
function getEditGeometryUrl(settings, wfsData, extent) {
547+
function getEditGeometryUrl(settings, wfsData, extent, upload = false) {
533548
let url = getMasterportalUrl();
534549
const layerIds = getMasterportalLayerIds(settings.fieldConfiguration, wfsData);
535-
if (!url || !layerIds.length) return '';
550+
if (!url) return '';
536551

537552
if (extent) url += 'zoomToExtent=' + extent.join(',') + '&';
538-
return url + 'isinitopen=wfst&layerids=' + layerIds.join(',');
553+
url += upload
554+
? 'menu={%22secondary%22:{%22currentComponent%22:%22wfstUploader%22}}'
555+
: 'isinitopen=wfst';
556+
557+
if (layerIds?.length) url += '&layerids=' + layerIds.join(',');
558+
559+
return url;
539560
}
540561

541562
function getMasterportalLayerIds(fieldConfiguration, wfsData) {

0 commit comments

Comments
 (0)