Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[interoperability] add flag to source when we know it's provided by geoserver #8167

Closed
6 tasks done
landryb opened this issue May 5, 2022 · 29 comments
Closed
6 tasks done

Comments

@landryb
Copy link
Collaborator

landryb commented May 5, 2022

Description

Right now, many features in mapstore2 sadly assume that the remote is geoserver (because the feature was developed and tested only against geoserver) - and it also assumes that the remote geoserver is located at /geoserver/ which might not be the case (cf https://github.com/geosolutions-it/MapStore2/blob/master/web/client/utils/LayersUtils.js#L25)

Consequently, there are many small interoperability issues when using layers coming from non-geoserver sources (eg mapserver, mapproxy, qgis server..).

Tasks

  1. Accepted C276-CRAIG-2023-DEV Interoperability bug
    ElenaGallo allyoucanmap
    landryb
  2. Accepted C276-CRAIG-2023-DEV Interoperability bug
    ElenaGallo allyoucanmap
    landryb
  3. Accepted C276-CRAIG-2023-DEV Interoperability bug
    ElenaGallo allyoucanmap
    landryb
  4. Accepted C276-CRAIG-2023-DEV Interoperability enhancement
    ElenaGallo allyoucanmap
  5. 1 of 1
    Accepted C276-CRAIG-2023-DEV Interoperability enhancement
    ElenaGallo allyoucanmap
  6. Accepted C276-CRAIG-2023-DEV Interoperability enhancement
    ElenaGallo allyoucanmap
    landryb

all those issues could be 'easily' solved if in the catalog/layer object there was a boolean flag which said if the remote was geoserver - the corresponding printing/loading code could then be amended to behave differently depending on the remote.

What kind of improvement you want to add? (check one with "x", remove the others)

  • Minor changes to existing features

Other useful information

implementation ideas (from #7811 (comment)):

  • parse GetCapabilities and look for GEOSERVERin /Service/KeywordList/Keyword but that assumes the admin doesnt change server keywords
  • look for updateSequence attribute on the toplevel WMS_Capabilities XML element of GetCapabilities
  • have a checkbox in the UI (checked by default, with remote is geoserver label) in the advanced catalog settings, which would set the flag on the catalog js object
@allyoucanmap
Copy link
Contributor

allyoucanmap commented Mar 9, 2023

Proposal: serverType property in wms layer

We could include a new serverType property inside the layer object configuration to exclude vendor specific parameters in the WMS requests, the available values should be:

  • undefined the wms request will works as now (geoserver)
  • geoserver the wms request will works as now (geoserver)
  • no-vendor the wms request will remove vendor specific parameter (we could start initially with the removal of tiled)

The possible values should be included in the LayersUtils as constant and used instead of hardcoded strings

export const ServerTypes = {
  GEOSERVER: 'geoserver',
  NO_VENDOR: 'no-vendor'
};

Development steps:

  • [Config] Extend the layer saved configuration including the serverType property (see saveLayer utils)
  • [Config] Create a function that provides the vendor query parameters based on the serverType property inside the PrintUtils
  • [Config] Create a function that provides the vendor query parameters based on the serverType property for all the WMS layer implementations:
  • [UI] Hide the vendor options for geoserver in the display panel of wms layer settings if serverType is equal to NO_VENDOR, in particular the checkbox Use cache options
  • [WANTDO][UI] Include in the WMS layer general setting panel a select input to allow a user to select the server type of the layer. This implementation should also include an localConfig option to hide it
  • [UI] Add the server type select input in the advanced settings of the WMS catalog, adding also the options to configure the default selected server type. This change should also be applied to all the used catalog in mapstore, eg. dashboards
  • [Config] Apply the serverType to the added layer from the catalog to the created layer properties (see the recordToLayer function )

This should highlight the component and files, @offtherailz and @tdipisa please take a look to this proposal, thanks

@allyoucanmap
Copy link
Contributor

allyoucanmap commented Mar 9, 2023

and it also assumes that the remote geoserver is located at /geoserver/ which might not be the case (cf https://github.com/geosolutions-it/MapStore2/blob/master/web/client/utils/LayersUtils.js#L25)

Took a look to the use of the geoserver regex

  • getRegGeoserverRule used only inside findGeoServerName inside the same file
  • findGeoServerName is used by following components:
    • styleeditor used to initialize the rest api request for style editor. If it does not match it will fallback to a normal get capabilities without activate the style editor functionality
    • getCapabilitiesUrl used to make an optimization on the capabilities request to target the layer workspace and reduce the size of the response. If the layer does not match the regex it will fallback to a normal get capabilities

Additionally the utils allows to set the regex with setRegGeoserverRule inside a downstream project to extend the possible supported GeoServer. Here an example of use case of this property in geonode.

We saw that MapStore provides fallbacks for all the cases based on the previous investigation and it expose a utils that allows to extend the supported path in the regex.
My suggestion is to move this possible improvement to a different issue if we intend to find a different approach the geoserver url detection cc @tdipisa

@tdipisa
Copy link
Member

tdipisa commented Mar 10, 2023

@allyoucanmap

geoserver the wms request will works as now (geoserver)

I agree to include also this now.

  • [WANTDO][UI] Include in the WMS layer general setting panel a select input to allow a user to select the server type of the layer. This implementation should also include an localConfig option to hide it

I think including this option in Layer Settings is not necessary: if, for certain reasons, the server that is hosting the layer changes, the user can always add a new catalog source and add that layer again to the map.

My suggestion is to move this possible improvement to a different issue if we intend to find a different approach the geoserver url detection cc @tdipisa

I totally agree @allyoucanmap. Can you please open the new issue including the possibility to make it configurable from Catalog advanced settings? You can assign the issue to me for the moment.

@landryb
Copy link
Collaborator Author

landryb commented Mar 10, 2023

Additionally the utils allows to set the regex with setRegGeoserverRule inside a downstream project to extend the possible supported GeoServer. Here an example of use case of this property in geonode.

Oh great, nice finding ! That'll allow me to override it from ms2-geor, i'll play with that. Maybe calling setRegGeoserverRule here: https://github.com/georchestra/mapstore2-georchestra/blob/master/js/app.jsx#L165 ?

@allyoucanmap
Copy link
Contributor

Oh great, nice finding ! That'll allow me to override it from ms2-geor, i'll play with that. Maybe calling setRegGeoserverRule here: https://github.com/georchestra/mapstore2-georchestra/blob/master/js/app.jsx#L165 ?

Yes, I think that's the correct place. It should be initialized before the main application start

landryb added a commit to landryb/MapStore2 that referenced this issue Mar 10, 2023
@landryb
Copy link
Collaborator Author

landryb commented Mar 10, 2023

i've started a first crude wip in landryb@0a5e489 directly on ms2 (ie outside of ms2-georchestra project) but it blows when loading http://localhost:8080/mapstore/?debug=true.
complaining that options isnt defined. I guess so , but i have some interrogations:

Will keep digging.

EDIT: got it; i think http://localhost:8081/?debug=true is the way to have unminified frontend sources.

@landryb
Copy link
Collaborator Author

landryb commented Mar 10, 2023

still digging, i think i have a better understanding of the bits here and there at stake - the "options" object should have all the bits i need, i think. Will be able to resume work on this from next wednesday.

@landryb
Copy link
Collaborator Author

landryb commented Mar 16, 2023

@allyoucanmap what i have in master...landryb:MapStore2:wip/8167 is hacky and doesnt work so far. Some issues:

Object { type: "CATALOG:CHANGE_SERVICE_PROPERTY", property: "serverType", value: "GEOSERVER" }

more digging to come today.

@allyoucanmap
Copy link
Contributor

in master...landryb:MapStore2:wip/8167#diff-18c0efc001f84f53e277264fbd7753558f932eaca95a019d7803b0140cc664f3R78 record object doesnt have my serverType property.

@landryb I would suggest to take a look to this PR #9022 for the part concerning the RasterAdvancedSettings.js component where to correctly apply the property to the layer I used:

onChangeServiceProperty("layerOptions", { ...service.layerOptions, singleTile: e.target.checked })

in this case should be

onChangeServiceProperty("layerOptions", { ...service.layerOptions, serverType: event?.value })

If you add the property in the layerOptions property it should be directly included in the added layer

@landryb
Copy link
Collaborator Author

landryb commented Mar 16, 2023

ok, found out why serverType didnt percolate to the layer object - 3d3db6c helps and my layer object has the proper serverType value from the catalog service.

@landryb
Copy link
Collaborator Author

landryb commented Mar 16, 2023

onChangeServiceProperty("layerOptions", { ...service.layerOptions, serverType: event?.value })

thanks, i've looked at #9022 and it seems much simpler than what i'm doing, so should i put the serverType property directly inside the existing layerOptions object instead of adding it as a new layer property passing it via the server record/catalog ? or that's still needed to set its initial value ?

i guess i should also rebase on top of your branch so that all onChangeServiceProperty calls for layeroptions have the ...service.layerOptions bit ?

@allyoucanmap
Copy link
Contributor

thanks, i've looked at #9022 and it seems much simpler than what i'm doing, so should i put the serverType property directly inside the existing layerOptions object instead of adding it as a new layer property passing it via the server record/catalog ? or that's still needed to set its initial value ?

Yes, correct, you should put directly serverType inside the layerOptions object without adding a new property. While I was working in the PR I noticed that the layerOptions property was used for the tileSize layer property and then the content of the layerOptions added directly to the layer. To keep it consistent I added also the singleTile layer property and I think we should do the same for serverType.

i guess i should also rebase on top of your branch so that all onChangeServiceProperty calls for layeroptions have the ...service.layerOptions bit ?

The PR branch is not on master yet so I would simply suggest to add this line change directly on your code without rebase https://github.com/geosolutions-it/MapStore2/pull/9022/files#diff-8bb020509f0b81ce10ff349328dab6db83acad1349c3f1b58d2f48edbad3be64R179

@allyoucanmap
Copy link
Contributor

allyoucanmap commented Mar 16, 2023

@landryb it was automatically closed because the PR #7865 was merged, just reopened thanks

@landryb
Copy link
Collaborator Author

landryb commented Mar 16, 2023

i think i'm using my ServerTypes constants wrong, because such tests:

(layer?.serverType === ServerTypes.NO_VENDOR)

returns false, while printing layer?.serverType in the console shows the value is NO_VENDOR.

eg

console.log("in getWMSVendorParams, serverType is " + layer?.serverType + " returning empty: "+ (layer?.serverType === ServerTypes.NO_VENDOR));

gives in getWMSVendorParams, serverType is NO_VENDOR returning empty: false

same thing for the available values in the selectbox, by default i have geoserver in lowercase, selecting NO_VENDOR saves it properly from what i can understand, but i cant select GEOSERVER.

@allyoucanmap
Copy link
Contributor

@landryb here the options are created only with the keys master...landryb:MapStore2:wip/8167#diff-8bb020509f0b81ce10ff349328dab6db83acad1349c3f1b58d2f48edbad3be64R80. If we want to use the value we should create the options in a different way, this an example:

const getServerTypeOptions = () => {
    return Object.keys(ServerTypes).map((key) => ({ label: key, value: ServerTypes[key] }));
};

@landryb
Copy link
Collaborator Author

landryb commented Mar 16, 2023

return Object.keys(ServerTypes).map((key) => ({ label: key, value: ServerTypes[key] }));

great, with that and 734fdd5 i have something that starts working:

  • the default value for the selectbox is GEOSERVER
  • setting NO_VENDOR in the server properties is saved ( i see the CATALOG:CHANGE_SERVICE_PROPERTY action triggered) , and TILED=TRUE isnt sent to the wms server
  • having serverType: 'no-vendor' in localConfig.json correctly sets the default value for the server to NO_VENDOR
  • use cache options is properly hidden in the layer properties display pane

what doesn't work yet:

  • changing the value in the selectbox doesnt properly update the display of the selectbox ?

@landryb
Copy link
Collaborator Author

landryb commented Mar 16, 2023

  • changing the value in the selectbox doesnt properly update the display of the selectbox ?
    wrt this, using the default first csw server entry and on top of 734fdd5 i've tried:
value={ServerTypes[service.layerOptions?.serverType || ServerTypes.GEOSERVER]}

=> changing in the selectbox doesnt change the display

value={service.layerOptions?.serverType || ServerTypes.GEOSERVER}

=> if undef, the default value is GEOSERVER, i can select NO_VENDOR and the display is updated (CHANGE_SERVICE_PROPERTY is triggered with serverType:"no-vendor"), but if i try selecting GEOSERVER it doesnt update it (and doesnt trigger the CHANGE_SERVICE_PROPERTY action). reseting the value resets the display to GEOSERVER, and triggers CHANGE_SERVICE_PROPERTY with serverType:undefined

value={service.serverType || ServerTypes.GEOSERVER}

=> if undef, the default value is GEOSERVER, and no matter what i select (or try resetting the value) the display stays with GEOSERVER.

should the default value be set somewhere else ?

@landryb
Copy link
Collaborator Author

landryb commented Mar 16, 2023

  • adding also the options to configure the default selected server type.

having another look at your proposal earlier on in this issue (after having rewatched the minutes of our meeting), im not sure to understand what is expected here. Right now, i'm 'hardcoding' the default server type (eg behaviour when undefined) to GEOSERVER in master...landryb:MapStore2:wip/8167#diff-8bb020509f0b81ce10ff349328dab6db83acad1349c3f1b58d2f48edbad3be64R185, and if i understand that proposal item, there should be a global localConfig.json knob to set the default value for all servers ?

eg initialState.defaultState.catalog.default.defaultServerType settable to no-vendor or geoserver ?

@landryb
Copy link
Collaborator Author

landryb commented Mar 16, 2023

i've tried applying the logic to the layers added in map of a new dashboard, using:

--- a/web/client/plugins/widgetbuilder/enhancers/layerSelector.js
+++ b/web/client/plugins/widgetbuilder/enhancers/layerSelector.js
@@ -16,7 +16,7 @@ import API from '../../../api/catalog';
 export const toLayer = (r, service) => ["tms", "wfs"].includes(service?.type) // for tms and wfs the layer is ready
     ? r
     // the type wms is default (for csw and wms), wmts have to be passed. // TODO: improve and centralize more
-    : API[service?.type || 'wms'].getLayerFromRecord(r);
+    : API[service?.type || 'wms'].getLayerFromRecord(r, service);

 // checks for tms wmts in order to addSearch() to skip addSearch
 export const addSearchObservable = (selected, service) => ["tms", "wmts"].includes(service?.type) ? Rx.Observable.of(toLayer(selected, service)) : addSearch(toLayer(selected, service));

but that blows because i try to use service.serverType while service is undef when adding a layer to a dashboard:

TypeError: service is undefined
    recordToLayer webpack://mapstore2/./web/client/api/catalog/WMS.js?:140
    getLayerFromRecord webpack://mapstore2/./web/client/api/catalog/WMS.js?:237
    toLayer webpack://mapstore2/./web/client/plugins/widgetbuilder/enhancers/layerSelector.js?:32

i've thought a bit more about moving serverType to layerOptions completely (like singleTile ?) but i'm not 100% sure it'll be properly saved in the map when exporting it.. afaict there's no layerOptions in saveLayer while there's singleTile.. a bit confused now.

@landryb
Copy link
Collaborator Author

landryb commented Mar 16, 2023

i think i have something that works both for maps & dashboards. @allyoucanmap would love feedback on master...landryb:MapStore2:wip/8167 :)

so far i've tested:

  • adding layers to a map without vendor params from a server configured from localConfig.json (eg "layerOptions": {"serverType": "no-vendor" },)
  • adding layers to a map without vendor params from a server configured as NO_VENDOR via the UI
  • exporting and importing the map, the vendor params are not sent so serverType is properly persisted in map.json
  • adding layers to a dashboard without vendor params from a server configured as NO_VENDOR via the UI
  • exporting and importing the dashboard, the vendor params are not sent so serverType is properly persisted in dashboard.json

selecting GEOSERVER in the selector still doesn't trigger an action nor a change in the UI.

@tdipisa
Copy link
Member

tdipisa commented Mar 16, 2023

@landryb I've updated the description including a tasklist and defining missing issues MS side. I would like to assign them to you so that I've added you in the collaborators list with read permissions for the purpose. Can you please accept the invitation?
Then, you will be able to put your comments in the related issue so that it will be also better for the testing phase. We can continue using this issue as an Epic one just to collect together involved issues.

@landryb
Copy link
Collaborator Author

landryb commented Mar 20, 2023

@landryb I've updated the description including a tasklist and defining missing issues MS side. I would like to assign them to you so that I've added you in the collaborators list with read permissions for the purpose. Can you please accept the invitation? Then, you will be able to put your comments in the related issue so that it will be also better for the testing phase. We can continue using this issue as an Epic one just to collect together involved issues.

I think i was already able to add comments to those issues as a regular contributor, but thanks for adding me to the collaborators team.

Regarding the task list, i'm a little confused by the concept because sure, all those issues are 'interoperability-related', but only #7809, #7877 and #7879 will be fixed by this issue.

For the others:

@tdipisa
Copy link
Member

tdipisa commented Mar 21, 2023

@landryb

I think i was already able to add comments to those issues as a regular contributor, but thanks for adding me to the collaborators team.

I was not able to assign issues not created by you without including you in the collaborators list.

Regarding the task list, i'm a little confused by the concept because sure, all those issues are 'interoperability-related', but only #7809, #7877 and #7879 will be fixed by this issue.

The Task List I've added in description is only a way we are using to track all issue involved in a macro task that is including more than one issue (what we call an Epic indeed). When you have created this issue you linked in description all existing interoperability issues together. Generally speaking, the idea here is to have a dedicated issue for each point in Task List and a final PR connected for each. This is the procedure we usually follow for better manage code reviews and functional tests also in our board.

landryb added a commit to landryb/MapStore2 that referenced this issue Mar 21, 2023
@tdipisa tdipisa added the Epic label Mar 21, 2023
@landryb
Copy link
Collaborator Author

landryb commented Mar 21, 2023

i've rebased my branch and added some unit tests (fa787e6, 8870c0e, a06931e) for the new functions but i havent figured out how to test that a catalog entry with serverType set to something yielded layer objects with layerOptions.serverType set to the corresponding value. My guess is that it should go into https://github.com/geosolutions-it/MapStore2/blob/master/web/client/api/catalog/__tests__/WMS-test.js#L10.

Trying to run the existing tests in that file, all the Test correctness of the WMS APIs tests fail so i have probably something wrong somewhere:

  Test correctness of the WMS APIs
    � wms limited srs
      Chrome Headless 111.0.5563.64 (Linux x86_64)
    TypeError: Cannot read properties of undefined (reading 'serverType')
        at recordToLayer (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2489:25)
        at getLayerFromRecord (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2616:44)
        at Context.eval (webpack://mapstore2/./web/client/api/catalog/__tests__/WMS-test.js?:69:75)

    � wms multiple urls
      Chrome Headless 111.0.5563.64 (Linux x86_64)
    TypeError: Cannot read properties of undefined (reading 'serverType')
        at recordToLayer (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2489:25)
        at getLayerFromRecord (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2616:44)
        at Context.eval (webpack://mapstore2/./web/client/api/catalog/__tests__/WMS-test.js?:81:75)

    � wms layer options
      Chrome Headless 111.0.5563.64 (Linux x86_64)
    TypeError: Cannot read properties of undefined (reading 'serverType')
        at recordToLayer (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2489:25)
        at getLayerFromRecord (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2616:44)
        at Context.eval (webpack://mapstore2/./web/client/api/catalog/__tests__/WMS-test.js?:97:75)

    � wms layer with visibility limits
      Chrome Headless 111.0.5563.64 (Linux x86_64)
    TypeError: Cannot read properties of undefined (reading 'serverType')
        at recordToLayer (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2489:25)
        at getLayerFromRecord (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2616:44)
        at Context.eval (webpack://mapstore2/./web/client/api/catalog/__tests__/WMS-test.js?:112:75)

    � wms with no ogcServiceReference.url
      Chrome Headless 111.0.5563.64 (Linux x86_64)
    TypeError: Cannot read properties of undefined (reading 'serverType')
        at recordToLayer (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2489:25)
        at getLayerFromRecord (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2616:44)
        at Context.eval (webpack://mapstore2/./web/client/api/catalog/__tests__/WMS-test.js?:131:75)

    � wms layer with formats
      Chrome Headless 111.0.5563.64 (Linux x86_64)
    TypeError: Cannot read properties of undefined (reading 'serverType')
        at recordToLayer (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2489:25)
        at getLayerFromRecord (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2616:44)
        at Context.eval (webpack://mapstore2/./web/client/api/catalog/__tests__/WMS-test.js?:212:75)

    � wms layer with force proxy
      Chrome Headless 111.0.5563.64 (Linux x86_64)
    TypeError: Cannot read properties of undefined (reading 'serverType')
        at recordToLayer (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2489:25)
        at getLayerFromRecord (webpack://mapstore2/./web/client/api/catalog/WMS.js?:2616:44)
        at Context.eval (webpack://mapstore2/./web/client/api/catalog/__tests__/WMS-test.js?:228:75)

i have this wip to test the serverType layerOption like tileSize:

--- a/web/client/api/catalog/__tests__/WMS-test.js
+++ b/web/client/api/catalog/__tests__/WMS-test.js
@@ -90,12 +90,14 @@ describe('Test correctness of the WMS APIs', () => {
         }, {
             url: 'http://sample',
             layerOptions: {
-                tileSize: 512
+                tileSize: 512,
+                serverType: "no-vendor"
             }
         });
         expect(records.length).toBe(1);
         const layer = getLayerFromRecord(records[0]);
         expect(layer.tileSize).toBe(512);
+        expect(layer.serverType).toBe("no-vendor");
     });

maybe there should be a test for singleTile added in #9022 ?

@landryb
Copy link
Collaborator Author

landryb commented Mar 21, 2023

failing tests fixed with 29efec4, and new test added in faf6575. Can probably be improved :)

@landryb
Copy link
Collaborator Author

landryb commented Mar 22, 2023

@allyoucanmap : with 9057bca which removes the "hardcoded" default to 'GEOSERVER', in my testing with the default csw (which has no serverType set in config), the advanced options shows 'Select...' (so the value is undefined) and from that point i can only select 'NO_VENDOR', i can't select 'GEOSERVER'. Strange ?

That strange behaviour doesnt reproduce with the two WMS entries where i've pre-set serverType to either "geoserver" or "no-vendor", for both the default value is correct and i can select the other value.

testing 440f8cf shows that the option is still correctly propagated to the layerOptions member of the layer object.

landryb added a commit to landryb/MapStore2 that referenced this issue Mar 22, 2023
if undefined or set to "geoserver", the behaviour is the unchanged. If set to
"no-vendor", then TILED query parameter isnt sen't to the remote wms server, and
the "tiled" and "localizedLayerStyles" options are hidden in the layer
parameters.

more vendor options can be sent/avoided this way. Improves interoperability
when displaying and printing layers coming from mapproxy.

closes geosolutions-it#7809, geosolutions-it#7877 & geosolutions-it#7879
@allyoucanmap
Copy link
Contributor

@allyoucanmap : with 9057bca which removes the "hardcoded" default to 'GEOSERVER', in my testing with the default csw (which has no serverType set in config), the advanced options shows 'Select...' (so the value is undefined) and from that point i can only select 'NO_VENDOR', i can't select 'GEOSERVER'. Strange ?

That strange behaviour doesnt reproduce with the two WMS entries where i've pre-set serverType to either "geoserver" or "no-vendor", for both the default value is correct and i can select the other value.

@landryb this seems a conflict with the first row of the codemirror library underneat for the Static Filter field available only in CSW, also other select input have similar problem when the options position match the filter line

image

@allyoucanmap
Copy link
Contributor

@landryb to solve this #8167 (comment) we need to apply a style to the CSW filter container with the following values { position: 'relative', zIndex: 0 } to ensure the codemirror editor does not go over the select options

@landryb
Copy link
Collaborator Author

landryb commented Mar 23, 2023

@landryb to solve this #8167 (comment) we need to apply a style to the CSW filter container with the following values { position: 'relative', zIndex: 0 } to ensure the codemirror editor does not go over the select options

right - hadn't thought about it, that was indeed an issue only for CSW catalogs and not for WMS catalogs, tested with 986ea75 and that bit is now working fine. Thanks !

allyoucanmap added a commit that referenced this issue Mar 23, 2023
#7809 failure to print WMS layers coming from mapproxy 
#7877 set TILED=true only when printing layers from geoserver 
#7879 set TILED=true only when loading layers from geoserver 
---------

Co-authored-by: allyoucanmap <stefano.bovio@geosolutionsgroup.com>
allyoucanmap added a commit to allyoucanmap/MapStore2 that referenced this issue Mar 29, 2023
…ies (geosolutions-it#9048)

 geosolutions-it#7809 failure to print WMS layers coming from mapproxy
 geosolutions-it#7877 set TILED=true only when printing layers from geoserver
 geosolutions-it#7879 set TILED=true only when loading layers from geoserver
---------

Co-authored-by: allyoucanmap <stefano.bovio@geosolutionsgroup.com>
tdipisa pushed a commit that referenced this issue Mar 29, 2023
…g entries (#9048) (#9063)

* #8167 add serverType option to wms & csw catalog entries (#9048)

 #7809 failure to print WMS layers coming from mapproxy
 #7877 set TILED=true only when printing layers from geoserver
 #7879 set TILED=true only when loading layers from geoserver
---------

Co-authored-by: allyoucanmap <stefano.bovio@geosolutionsgroup.com>

* #8905 Add missing translations (#9055)

* #8905 Add missing translations

* fix failing tests

---------

Co-authored-by: Landry Breuil <landryb@users.noreply.github.com>
@tdipisa tdipisa modified the milestones: 2023.01.01, 2023.01.02, 2023.02.00 Apr 17, 2023
@tdipisa tdipisa closed this as completed Apr 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants