From 15aa97137726b6de77cfe729357c2004eb2ea762 Mon Sep 17 00:00:00 2001 From: frauch Date: Tue, 6 Jun 2023 11:56:43 +0200 Subject: [PATCH 1/7] update SchemaFilter to use FeatureType Name as Key instead of SchemaName --- Component/SchemaFilter.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Component/SchemaFilter.php b/Component/SchemaFilter.php index 4221026..08126f9 100644 --- a/Component/SchemaFilter.php +++ b/Component/SchemaFilter.php @@ -143,7 +143,8 @@ public function getDataStoreConfig(Element $element, $schemaName) $elementConfig = $element->getConfiguration(); $schemaConfigs = $elementConfig['schemes']; $storeConfigs = DataStoreUtil::configsFromSchemaConfigs($this->registry, $schemaConfigs); - return $storeConfigs[$schemaName]; + $schemaConfig = $schemaConfigs[$schemaName]; + return $storeConfigs[$schemaConfig["featureType"]]; } /** From 36a569aafcd83629affd0ff4863e0ebdfc955fd2 Mon Sep 17 00:00:00 2001 From: frauch Date: Fri, 9 Jun 2023 12:38:57 +0200 Subject: [PATCH 2/7] refactor form renderer creation --- Resources/public/FormRenderer.js | 11 ++++++++++- Resources/public/dataManager.element.js | 11 ++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Resources/public/FormRenderer.js b/Resources/public/FormRenderer.js index 9d0a7bb..7789c80 100644 --- a/Resources/public/FormRenderer.js +++ b/Resources/public/FormRenderer.js @@ -41,7 +41,16 @@ } } - Mapbender.DataManager.FormRenderer = function FormRenderer() { + Mapbender.DataManager.FormRenderer = function FormRenderer(owner,schemes) { + var schemaNames = Object.keys(schemes); + for (var s = 0; s < schemaNames.length; ++s) { + var schemaName = schemaNames[s]; + var schema = schemes[schemaName]; + var fileConfigs = owner._getDataStoreFromSchema(schema).files || []; + var schemaBaseUrl = [owner.elementUrl, schemaName, '/'].join(''); + this.prepareItems(schema.formItems || [], schemaBaseUrl, fileConfigs); + } + }; Object.assign(Mapbender.DataManager.FormRenderer.prototype, { diff --git a/Resources/public/dataManager.element.js b/Resources/public/dataManager.element.js index 63c2b1d..1e40caf 100644 --- a/Resources/public/dataManager.element.js +++ b/Resources/public/dataManager.element.js @@ -59,20 +59,13 @@ this.selector = $(this._renderSchemaSelector(this.element)); this.formRenderer_ = this._createFormRenderer(); this.dialogFactory_ = Mapbender.DataManager.DialogFactory; - var schemaNames = Object.keys(this.options.schemes); - for (var s = 0; s < schemaNames.length; ++s) { - var schemaName = schemaNames[s]; - var schema = this.options.schemes[schemaName]; - var fileConfigs = this._getDataStoreFromSchema(schema).files || []; - var schemaBaseUrl = [this.elementUrl, schemaName, '/'].join(''); - this.formRenderer_.prepareItems(schema.formItems || [], schemaBaseUrl, fileConfigs); - } this.tableRenderer = this._createTableRenderer(); this._initializeEvents(); this._afterCreate(); }, + _createFormRenderer: function() { - return new Mapbender.DataManager.FormRenderer(); + return new Mapbender.DataManager.FormRenderer(this, this.options.schemes); }, _createTableRenderer: function() { return new Mapbender.DataManager.TableRenderer(this); From 0d8c4c1bb3c683b901442147f8990067513e26ae Mon Sep 17 00:00:00 2001 From: frauch Date: Wed, 14 Jun 2023 16:46:06 +0200 Subject: [PATCH 3/7] remove bug that creates featuretype based on schema name instead of featureType Name --- Component/SchemaFilter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Component/SchemaFilter.php b/Component/SchemaFilter.php index 08126f9..ed8f8a7 100644 --- a/Component/SchemaFilter.php +++ b/Component/SchemaFilter.php @@ -68,7 +68,7 @@ public function prepareConfigs($schemaConfigs) $haveDs = false; foreach (array('dataStore', 'featureType') as $dsKey) { if (\array_key_exists($dsKey, $schemaConfig)) { - $schemaConfig[$dsKey] = $storeConfigs[$schemaName]; + $schemaConfig[$dsKey] = $storeConfigs[$schemaConfig[$dsKey]]; $haveDs = true; } } From a2110bb4ff74aac18a9491e850eb2fa2e23c5863 Mon Sep 17 00:00:00 2001 From: frauch Date: Thu, 15 Jun 2023 13:54:32 +0200 Subject: [PATCH 4/7] extract method for overriding --- Component/SchemaFilter.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Component/SchemaFilter.php b/Component/SchemaFilter.php index ed8f8a7..67a295b 100644 --- a/Component/SchemaFilter.php +++ b/Component/SchemaFilter.php @@ -76,7 +76,7 @@ public function prepareConfigs($schemaConfigs) throw new ConfigurationErrorException("No dataStore / featureType in schema {$schemaName}"); } if (!empty($schemaConfig['formItems'])) { - $schemaConfig['formItems'] = $this->formItemFilter->prepareItems($schemaConfig['formItems']); + $schemaConfig['formItems'] = $this->prepareFormItems($schemaConfig); } else { @trigger_error("WARNING: no formItems in schema {$schemaName}. Object detail view will not work", E_USER_DEPRECATED); $schemaConfig['formItems'] = array(); @@ -86,6 +86,11 @@ public function prepareConfigs($schemaConfigs) return $schemaConfigs; } + + protected function prepareFormItems($schemaConfig) { + return $this->formItemFilter->prepareItems($schemaConfig['formItems']); + } + /** * @param Element $element * @param string $schemaName From c76789fca7612917a2d8b3c79fac550b7cefb4c0 Mon Sep 17 00:00:00 2001 From: frauch Date: Thu, 15 Jun 2023 16:22:58 +0200 Subject: [PATCH 5/7] extract method for overriding purpose --- Resources/public/dataManager.element.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Resources/public/dataManager.element.js b/Resources/public/dataManager.element.js index 1e40caf..8e29de9 100644 --- a/Resources/public/dataManager.element.js +++ b/Resources/public/dataManager.element.js @@ -98,8 +98,10 @@ this.hasOnlyOneScheme = (nSchemes === 1); $container.append(selector); + let visibleSchemes = this._filterVisibleSchemes(); + // build select options - _.each(this.options.schemes, function(schemaConfig) { + _.each(visibleSchemes, function(schemaConfig) { var option = $("