Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion geonode_mapstore_client/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ def run_setup_hooks(*args, **kwargs):
from geonode.api.urls import router
from geonode.security.permissions import VIEW_PERMISSIONS, OWNER_PERMISSIONS
from geonode.groups.conf import settings as groups_settings
from geonode_mapstore_client.utils import get_default_resource_page_config

LOCAL_ROOT = os.path.abspath(os.path.dirname(__file__))
settings.TEMPLATES[0]["DIRS"].insert(0, os.path.join(LOCAL_ROOT, "templates"))
Expand Down Expand Up @@ -85,7 +86,7 @@ def run_setup_hooks(*args, **kwargs):
),
re_path(r"^metadata/(?P<pk>[^/]*)$", views.metadata, name='metadata'),
re_path(r"^metadata/(?P<pk>[^/]*)/embed$", views.metadata_embed, name='metadata'),
re_path(r"^(?P<resource_type>[^/]*)$", views.resource_type_catalog, name='resource_type_catalog'),
re_path(r"^(?P<page_id>[^/]*)$", views.resource_page_catalog, name='page_id'),
# required, otherwise will raise no-lookup errors to be analysed
re_path(r"^api/v2/", include(router.urls)),
]
Expand Down Expand Up @@ -295,6 +296,9 @@ def run_setup_hooks(*args, **kwargs):
setattr(settings, "MAPSTORE_DASHBOARD_CATALOGUE_SELECTED_SERVICE", MAPSTORE_DASHBOARD_CATALOGUE_SELECTED_SERVICE)
setattr(settings, "MAPSTORE_DASHBOARD_CATALOGUE_SERVICES", MAPSTORE_DASHBOARD_CATALOGUE_SERVICES)

RESOURCES_PAGE_CONFIG = getattr(settings, "RESOURCE_PAGE_CONFIG", get_default_resource_page_config())
setattr(settings, "RESOURCES_PAGE_CONFIG", RESOURCES_PAGE_CONFIG)


def connect_geoserver_style_visual_mode_signal():
from geonode.geoserver.signals import geoserver_automatic_default_style_set
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3181,9 +3181,6 @@
"href": "/services/?limit=5"
}
]
},
{
"type": "divider"
}
]
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{% extends "page.html" %} {% block container %}

<script>
window.addEventListener("mapstore:ready", function (event) {
const catalogPagePath =
window.__GEONODE_CONFIG__.localConfig.geoNodeSettings.catalogPagePath;
const pagePath = catalogPagePath ? catalogPagePath : "/catalogue/";
const msAPI = event.detail;
msAPI.setPluginsConfig((localConfig) => {
return (localConfig?.plugins?.catalogue || []).map((plugin) => {
const resourcePageConfig = JSON.parse("{{ resource_page_config|escapejs|safe }}");
const { titleId, defaultQuery, menuItems, filterFormFields } = resourcePageConfig;
if (plugin.name === "ResourcesGrid") {
return {
...plugin,
cfg: {
...plugin?.cfg,
...(titleId && {titleId}),
...(defaultQuery && {defaultQuery}),
...(menuItems && {menuItems}),
}
}
}
if (plugin.name === "ResourcesFiltersForm") {
return {
...plugin,
cfg: {
...plugin?.cfg,
...(filterFormFields && {fields: filterFormFields})
}
}
}
return plugin;
});
});
});
</script>

{% endblock %}

This file was deleted.

220 changes: 220 additions & 0 deletions geonode_mapstore_client/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,223 @@ def set_default_style_to_open_in_visual_mode(instance, **kwargs):
style.name, resp.status_code, resp.text
)
)

def get_page_filter_form(group_filter_form = None):
if group_filter_form is None:
group_filter_form = []

page_filter_form = [
{
"type": "search"
},
{
"type": "group",
"labelId": "gnhome.customFiltersTitle",
"items": [
{
"id": "my-resources",
"labelId": "gnhome.myResources",
"type": "filter",
"disableIf": "{!state('user')}"
},
{
"id": "favorite",
"labelId": "gnhome.favorites",
"type": "filter",
"disableIf": "{!state('user')}"
},
{
"id": "featured",
"labelId": "gnhome.featuredList",
"type": "filter"
},
{
"id": "unpublished",
"labelId": "gnhome.unpublished",
"type": "filter",
"disableIf": "{!state('user')}"
},
{
"id": "pending-approval",
"labelId": "gnhome.pendingApproval",
"type": "filter",
"disableIf": "{!state('user')}"
},
*group_filter_form,
]
},
{
"type": "divider",
"disableIf": "{!state('user')}"
},
{
"type": "select",
"facet": "category"
},
{
"type": "select",
"facet": "keyword"
},
{
"type": "select",
"facet": "place"
},
{
"type": "select",
"facet": "user"
},
{
"type": "select",
"facet": "group"
},
{
"type": "accordion",
"style": "facet",
"facet": "thesaurus"
},
{
"type": "date-range",
"filterKey": "date",
"labelId": "gnviewer.dateFilter"
},
{
"labelId": "gnviewer.extent",
"type": "extent"
}
]
return page_filter_form

def get_default_resource_page_config():
DEFAULT_PAGE_FILTER_FORM = get_page_filter_form()
default_menu_item = {
"labelId": "gnhome.new",
"disableIf": "{(state('settings') && state('settings').isMobile) || !(state('user') && state('user').perms && state('user').perms.includes('add_resource'))}",
"type": "button",
"variant": "primary",
}
page_resource_config = {
"maps": {
"titleId": "gnhome.map",
"defaultQuery": {
"f": "map"
},
"menuItems": [
{
**default_menu_item,
"value": "map",
"href": "{context.getCataloguePath('/catalogue/#/map/new')}"
}
],
"filterFormFields" : DEFAULT_PAGE_FILTER_FORM
},
"datasets": {
"titleId": "gnhome.dataset",
"defaultQuery": {
"f": "dataset"
},
"menuItems": [
{
**default_menu_item,
"type": "dropdown",
"noCaret": True,
"items": [
{
"labelId": "gnhome.uploadDataset",
"value": "layer",
"type": "link",
"href": "{context.getCataloguePath('/catalogue/#/upload/dataset')}"
},
{
"labelId": "gnhome.createDataset",
"value": "layer",
"type": "link",
"href": "/createlayer/",
"disableIf": "{(state('settings') && state('settings').createLayer) ? false : true}"
},
{
"labelId": "gnhome.remoteServices",
"value": "remote",
"type": "link",
"href": "/services/?limit=5"
}
]
}
],
"filterFormFields": get_page_filter_form([
{
"id": "remote",
"labelId": "gnhome.remote",
"type": "filter"
},
{
"id": "store-vector",
"labelId": "gnhome.vector",
"type": "filter"
},
{
"id": "store-raster",
"labelId": "gnhome.raster",
"type": "filter"
},
{
"id": "store-time-series",
"labelId": "gnhome.timeSeries",
"type": "filter"
},
{
"id": "3dtiles",
"labelId": "gnhome.3dtiles",
"type": "filter"
}
])
},
"documents": {
"titleId": "gnhome.document",
"defaultQuery": {
"f": "document"
},
"menuItems": [
{
**default_menu_item,
"value": "document",
"href": "{context.getCataloguePath('/catalogue/#/upload/document')}"
}
],
"filterFormFields": get_page_filter_form([
{
"id": "remote",
"labelId": "gnhome.remote",
"type": "filter"
}
])
},
"dashboards": {
"titleId": "gnhome.dashboard",
"defaultQuery": {
"f": "dashboard"
},
"menuItems": [
{

"value": "dashboard",
"href": "{context.getCataloguePath('/catalogue/#/dashboard/new')}"
}
],
"filterFormFields": DEFAULT_PAGE_FILTER_FORM
},
"geostories": {
"titleId": "gnhome.geostory",
"defaultQuery": {
"f": "geostory"
},
"menuItems": [
{
**default_menu_item,
"value": "geostory",
"href": "{context.getCataloguePath('/catalogue/#/geostory/new')}"
}
],
"filterFormFields": DEFAULT_PAGE_FILTER_FORM
}
}
return page_resource_config
17 changes: 7 additions & 10 deletions geonode_mapstore_client/views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@

import json
from django.shortcuts import render
from django.utils.translation.trans_real import get_language_from_request
from dateutil import parser
Expand Down Expand Up @@ -71,13 +72,9 @@ def metadata(request, pk, template="geonode-mapstore-client/metadata.html"):
def metadata_embed(request, pk):
return metadata(request, pk, template="geonode-mapstore-client/metadata_embed.html")

def resource_type_catalog(request, resource_type):
# TODO: improve mapping method maybe externalize it and improve it
resource_type_map = {
'datasets': 'dataset',
'documents': 'document',
'maps': 'map',
'dashboards': 'dashboard',
'geostories': 'geostory'
}
return render(request, "geonode-mapstore-client/resource_type_catalog.html", context={ "title": resource_type, "resource_type": resource_type_map.get(resource_type) })
def resource_page_catalog(request, page_id):
from django.conf import settings

RESOURCES_PAGE_CONFIG = getattr(settings, "RESOURCES_PAGE_CONFIG", {})
context = { "resource_page_config": json.dumps(RESOURCES_PAGE_CONFIG.get(page_id)) }
return render(request, "geonode-mapstore-client/resource_page_catalog.html", context=context)