Giter Site home page Giter Site logo

mapstore2-georchestra's Introduction

geOrchestra

MapStore Project for geOrchestra

Documentation: https://docs.georchestra.geo-solutions.it/ (domain will change)

See https://georchestra.geo-solutions.it/ (work in progress)

Building and install the project

Prerequisite

1. Requirements

You need to read the relevant requirements documentation according to your installation :

https://docs.mapstore.geosolutionsgroup.com/en/latest/developer-guide/requirements/

To read the appropriate requirements page, open the previous link and select the corresponding MapStore2 release in the bottom right corner.

2. Clone the repository

git clone --recursive https://github.com/georchestra/mapstore2-georchestra.git

3. Install NodeJS

⚠️ For minimal you may need to increase used memory limits.

To get more informations about nodejs install :

  • Instructions to install Nodejs from package manager : here
  • Download source : here
  • Download a specific version : here (v16 is required)

4. Install Java SDK

If needed you can download Java here :

5. Install Maven

Install latest Maven, if needed, from here.

Build

Build the deployable war :

cd mapstore2-georchestra
./build.sh [version_identifier]

Where version_identifier is an optional identifier of the generated war that will be shown in the settings panel of the application.

Publish

Deploy the generated mapstore.war file (in web/target) to your favorite J2EE container (e.g. Tomcat).

Tomcat versions 7.x, 8.x and 9.x are supported. The latest of each can be donwloaded from:

Building the documentation

To build the documentation you need sphinx and some extensions (sphinx_rtd_theme and recommonmark), you can install using pip :

pip install sphinx_rtd_theme
pip install recommonmark

Now, you can build html documentation using :

cd docs # enter in the docs folder
make html # create html documentation

Versioning

MapStore2-geOrchestra and MapStore2 versions(stable branch name) are added to version.txt one below the other (order is strictly followed)

Example:

version-mp2-georchestra
version-mp2

Release procedure

All developments land in master branch first and releases will be created from a stable branch. As soon as a new major version is ready to be released (developments on master are completed and tested) a new stable branch will be created from master (YYYY.MM.xx, eg. 2022.02.xx). That naming convention has been agreed because typically a stable branch in mapstore2-georchestra refers to the corresponding one in MapStore.

As well as for the master branch, each stable branch should always report inside the version.txt file its name and the name of the corresponding stable MapStore branch: the first line of the file indicate the name of the project branch while the second the corresponding MapStore stable branch name used as dependency.

Given a stable branch in mapstore2-georchestra, further minor releases of the same series (e.g. 2022.02) are delivered from it (e.g. 2022.02.01-geOrchestra). Before each release or release candidate and in order to benefit from other bugfixes and feature backports, the MapStore submodule should be updated to the latest commit in the MapStore stable branch tracked by mapstore2-georchestra. At each release or release candidate the first line of the version.txt is updated with the tag name and restored to the previous version after the tag generation.

All the releases are first delivered as release candidates, turned into release after acceptance.

Creating release candidate:

  • Given a stable branch in mapstore2-georchestra, update the first line of the version.txt file reporting the version (tag name) that is going to be released using the following naming convention: YYYY.MM.xx-RCX-geOrchestra (e.g. 2022.02.00-RC1-geOrchestra), where YYYY.MM corresponds to the major version and xx is the number of the minor release of the same series; RCX is the number of release candidate for the same version;
  • create a new pre-release and tag for it at Release creation page using the same name specified in version.txt
  • Add exhaustive description of the pre-release and attach all the needed assets:
    • *.war file for mapstore2-georchestra build
    • Link to the docker image in GeoSolutions Docker Hub
    • Link to the corresponding release page in MapStore as soon as available
    • Relevant configuration steps expected for the new version
  • Restore the first line of the version.txt file to the previous version in the stable branch

Creating release

  • Given a RC already available and accepted
  • From the current stable branch corresponding to the series version to be released, update the first line of the version.txt file reporting the version (tag name) that is going to be released using the following naming convention: YYYY.MM.xx-geOrchestra, where YYYY.MM corresponds to the major version and xx is the number of the minor release of the same series (e.g. 2022.02.00-geOrchestra)
  • create a new release and tag for it at Release creation page using the same name specified in version.txt
  • Add exhaustive description of the release (including descriptions from all release candidates) and attach all the needed assets:
    • *.war file for mapstore2-georchestra build
    • Link to the docker image in GeoSolutions Docker Hub
    • Link to the corresponding release page in MapStore as soon as available
    • Relevant configuration steps expected for the new version
  • Restore the first line of the version.txt file to the previous version in the stable branch

mapstore2-georchestra's People

Contributors

alex-fko avatar alexander-fedorenko avatar catmorales avatar dependabot[bot] avatar dsuren1 avatar f-necas avatar fvanderbiest avatar gaetanbrl avatar gnafu avatar isanchez-c2c avatar jusabatier avatar landryb avatar lpasquali avatar maelreboux avatar mbarto avatar mv88 avatar offtherailz avatar pierrejego avatar pmauduit avatar randomorder avatar taba90 avatar tdipisa avatar tkohr avatar vlt1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mapstore2-georchestra's Issues

Feature Attribute Form - Identify tool

This extension provides the Identify functionality and it allows to click on the map to show the information related to a layer previously selected in the TOC:

  • The attributes information corresponding to the clicked point are reported in a fixed panel that opens after the click on map (the standard Identify tool of MapStore)
  • All the objects identified by the clicked point need to be navigated by scrolling the content in the panel (functionality already available in MspStore Identify tool)
  • The attribute information are reported according to the format of layer data: a GetFeatureInfo request will be performed to presente the layer's information to the user according the GetFeatureInfo output format selected in MapStore (functionality already available in MspStore Identify tool)

What we need to implement within this issue is to improve the MS's Identify tool to allow also Identify request only for the selected layer in TOC. Therefore there will be to cases:

  1. If no layer is selected in TOC, the Identify request will be performed for all layers in the map as it is now
  2. Is one or more layers are selected in the TOC, the Identify request will be performed as usual but only for the selected layers

Layer List (TOC)

This issue collects all the requirements related to the TOC functionalities.

Feature Attribute Form - Identify tool - Edit mode

The Identify tools (#44) can switch in edit mode to:

  • Allow the user to edit the object attributes
  • Allow the user to edit the corresponding object geometry on map

An edit button can be enabled by the administrator for the Identify tool (with a specific configuration property) in order to automatically open the Attribute Table:

  1. According to the Identify output format, an edit button can be provided for each retrieved feature in the Identify response (eg. the JSON output format) instead of having a generic edit button (eg. HTML or Text format)
  2. The Attribute Table opens in edit mode by clicking on the edit button and a record inside the table (the layer's feature) will be automatically selected if possible (depending on the output format, see point 1)
  3. Once the Attribute Table opens the Identify tool can close

Related issue in MapStore : geosolutions-it/MapStore2#5185

Layer Style - Style selection

The style extension allows the user to choose a predefined layer style (the available styles are associated to the layer WMS and they are usually configured in GeoServer). The extension must provide the following functionalities:

  • List the available styles associated to the layer each style is identified by a name and a description
  • The style currently set for the layer is highlighted in the list
  • The user has the possibility to select a different style from the list

Extension Library - List of available extensions

This extension provide to the user the list of extensions ready to be activated for the viewer.

The list of available extensions is configured by the administrator in backoffice from configuration (using the Extension manager): they have been configured by the administrator in #22. This extension must provide the following:

  • The list of extensions will be available in a right side panel corresponding to a specific menu option.
  • This extension will be available inside the viewer if at least one extension has been configured for this in the step n° 2 of the context wizard (see #22).
  • A list of extensions identified by name, description and a proper symbology (i.e. an icon)
  • The user can activate an extension with a simple click on a list element, more than one extension in the provided list can be activated by the user
  • The status of an extension (loaded/activated) must be included within the application state and so persisted when the map context is saved

The mockup is available here, open the Ms option menu and click on Extensions:

image

Follow work on epic geosolutions-it/MapStore2#4722

Layer Style - Style editor

As an advanced functionality, the extension allows to edit an existing style or create a new one in order to provide to the user the possibility to customize the thematism. The following style properties can be edited by the user: stroke, fill, color, opacity, point cartographic symbols or fill patterns ( hatches, tiles, etc.), label configuration.

Layer Editing

This issue collects all the requirements related to the layer editing functionalities.

Map Zone - Map navigation

Standard mouse controls must be provided for the map navigation:

  • Map zoom in/out using the scroll wheel
  • Map pan by clicking the left mouse button and dragging

Layer List (TOC) - TOC utilities

The TOC must provide the possibility to manage layers and groups of layers. The following capabilities must be available for the TOC extension:

  • Add/Remove a layer
  • Add/Remove a group of layers (groups of layers can be nested within other groups with a max depth of three levels, if a group is removed also layers within it are removed)
  • Allow to sort layers within a group and move them between different groups (drag and drop) - #3781
  • Allow to show/hide layers/groups of layers in map with a simple click
  • Each layer added to the TOC must be placed on top
  • A group of layers can be collapsed/expanded to hide/show belonging layers in the TOC

Add Layer From Data Catalog - Catalog extension

This extension must provide to the user the possibility to add layers to the TOC. Below the list of catalogs type that need to be supported:

  • WFS
  • WMS
  • WMTS
  • TMS
  • GeoJSON (to clarify)

Below the needed functionalities for this tool:

  • The viewer administrator can define the list of available catalogs in backoffice via configuration
  • A free text search field must be provided to the user to search within the selected catalog
  • The results must be listed and each of them identified by name, description and preview (thumbnail)
  • Each layer belonging to the result list can be individually added to the TOC to be visible in map

Application Context - Share URL

Allow the possibility to automatically generate a short URL for sharing purposes.
Reuse the MS share tool for the purpose of this task.

image

The MS share tool must be improved to recognize the application context, so it should be aware of the context path if needed (i.e for all maps belonging to a context).

note: for the Embed, if the Share tool is opened from a context the iframe part should be managed to directly use the context URL (eventually inclulding the map Id in case of context maps) without using the embedded.html. The API section must be hidden since the list of plugins here depends by the MS API build.

Connected to geosolutions-it/MapStore2#4533

Application Context

This issue collects all the requirements related to the application context functionalities.

Map Zone

This issue collects all the requirements related to the base map functionalities.

Map viewer

The map viewer is the main part of the WebGIS application. It needs to be well structured to host different extensions and utilities. According to the required functionalities the viewer must support the possibility manage and configure the layout in order to present data/information to the final user. In terms of capabilities must support the following possibilities:

  • Possibility to define resizable zones/panels
  • Possibility to reuse sections (defined viewer zones)
  • Possibility to collapse sections
  • Possibility to set sections position (in pixels) within the viewer
  • Possibility to define sections/panels in fixed, dockable or floating position
  • Different zones/sections can be part of other sections/zones of the viewer
  • The viewer can be integrated in a web page through an iframe and can be easily embedded
  • The viewer must fit the responsive design patterns, it must be adaptive to be compatible with diffrent kind of screen (desktop, mobiles devices)

Layer List (TOC) - TOC state support

A Table Of Contents can be provided inside a viewer in order to manage map layers. The TOC is considered as an extension and for this reason can be loaded/activated within a viewer in the same way of other extensions.

Within this issue, we need to take into account that some plugins are connected to the TOC, therefore they need to be properly managed: all extensions connected to the TOC are well organized in the UI within the same UI block/card (see the image below) so they can be identified.

image

Once the administrator add the TOC to the list of enabled plugins, all sub-plugins are enabled too:

image

The administrator can configure sub-plugins in the same way of the other extensions (see #22) or exclude some of them through a checkbox (in that case the extension will not be included and the related button in the TOC toolbar not present).

image

Map Zone - Multiple CRS support

The Map must work with the following Coordinates Reference Systems:

EPSG:3857 (Web Mercator)
EPSG:4326 (WGS84)
EPSG:2154 (Lambert 93)
EPSG:39XX (RGF93 / Conique Conforme XX)

mention build dependencies in README.md ? [npm build failure]

Dunno what's the minimal nodejs/npm version needed, but on debian stretch (yeah i know oldstable) i installed them from stretch-backports so got npm (5.8.0+ds6-2~bpo9+1) and nodejs (8.11.1~dfsg-2~bpo9+1) and after it installed the complete earth in ~/.npm i had it failing to build:

[16/09 15:42] [email protected]:/data/src/georchestra/mapstore2-georchestra $bash ./build.sh
... some npm warnings, of course..
> [email protected] postinstall /data/src/georchestra/mapstore2-georchestra
> node checkCesium.js
> [email protected] compile /data/src/georchestra/mapstore2-georchestra
> npm run clean && mkdirp ./dist && webpack --config prod-webpack.config.js --env.production
> [email protected] clean /data/src/georchestra/mapstore2-georchestra
> rimraf dist
....
Hash: 511b45ed6120fd9825bc
Version: webpack 2.2.1
Time: 171723ms
  [22] ./~/style-loader/addStyles.js 6.09 kB {10} {11} {12} [built]
 [825] ./MapStore2/web/client/actions/version.js 1.61 kB {10} {11} {12} [built]
[5211] ./MapStore2/web/client/themes/console/theme.less 41 bytes {19} [built]
[5212] ./MapStore2/web/client/themes/dark/theme.less 41 bytes {18} [built]
[5213] ./MapStore2/web/client/themes/default/theme.less 41 bytes {17} [built]
[5214] ./MapStore2/web/client/themes/geosolutions/theme.less 41 bytes {16} [built]
[5215] ./MapStore2/web/client/themes/wasabi/theme.less 41 bytes {15} [built]
[5216] ./MapStore2/web/client/product/api.jsx 2.12 kB {11} [built]
[5217] ./MapStore2/web/client/product/embedded.jsx 2.06 kB {12} [built]
[5218] ./js/app.jsx 2.8 kB {10} [built]
[5219] (webpack)-dev-server/client?http://0.0.0.0:8081 5.28 kB {13} [built]
[5220] (webpack)/hot/only-dev-server.js 2.29 kB {14} [built]
[5441] ./~/css-loader!./~/postcss-loader!./~/less-loader!./MapStore2/web/client/themes/console/theme.less 442 kB [built]
[5443] ./~/css-loader!./~/postcss-loader!./~/less-loader!./MapStore2/web/client/themes/default/theme.less 441 kB [built]
[5444] ./~/css-loader!./~/postcss-loader!./~/less-loader!./MapStore2/web/client/themes/geosolutions/theme.less 442 kB [built]
    + 5569 hidden modules

ERROR in minifying GeOrchestra-api.js
Unexpected token: operator (>)

ERROR in minifying GeOrchestra-embedded.js
Unexpected token: operator (>)

ERROR in minifying GeOrchestra.js
Unexpected token: operator (>)
Child html-webpack-plugin for "index.html":
       [0] ./~/html-webpack-plugin/lib/loader.js!./indexTemplate.html 4.11 kB {0} [built]
...
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! [email protected] compile: `npm run clean && mkdirp ./dist && webpack --config prod-webpack.config.js --env.production`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the [email protected] compile script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.


   ╭──────────────────────────────────────╮
   │                                      │
   │   Update available 5.8.0 → 6.11.3    │
   │       Run npm i npm to update        │
   │                                      │
   ╰──────────────────────────────────────╯


npm ERR! A complete log of this run can be found in:
npm ERR!     /home/landry/.npm/_logs/2019-09-16T13_47_41_270Z-debug.log

the content of the debug log is below:

0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'compile' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'precompile', 'compile', 'postcompile' ]
5 info lifecycle [email protected]~precompile: [email protected]
6 info lifecycle [email protected]~compile: [email protected]
7 verbose lifecycle [email protected]~compile: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]~compile: PATH: /usr/share/npm/node_modules/npm-lifecycle/node-gyp-bin:/data/src/georchestra/mapstore2-georchestra/node_modules/.bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin/:/usr/sbin/
9 verbose lifecycle [email protected]~compile: CWD: /data/src/georchestra/mapstore2-georchestra
10 silly lifecycle [email protected]~compile: Args: [ '-c',
10 silly lifecycle   'npm run clean && mkdirp ./dist && webpack --config prod-webpack.config.js --env.production' ]
11 silly lifecycle [email protected]~compile: Returned: code: 2  signal: null
12 info lifecycle [email protected]~compile: Failed to exec compile script
13 verbose stack Error: [email protected] compile: `npm run clean && mkdirp ./dist && webpack --config prod-webpack.config.js --env.production`
13 verbose stack Exit status 2
13 verbose stack     at EventEmitter.<anonymous> (/usr/share/npm/node_modules/npm-lifecycle/index.js:283:16)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at EventEmitter.emit (events.js:214:7)
13 verbose stack     at ChildProcess.<anonymous> (/usr/share/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at ChildProcess.emit (events.js:214:7)
13 verbose stack     at maybeClose (internal/child_process.js:925:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid [email protected]
15 verbose cwd /data/src/georchestra/mapstore2-georchestra
16 verbose Linux 4.9.0-9-amd64
17 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "compile"
18 verbose node v8.11.1
19 verbose npm  v5.8.0
20 error code ELIFECYCLE
21 error errno 2
22 error [email protected] compile: `npm run clean && mkdirp ./dist && webpack --config prod-webpack.config.js --env.production`
22 error Exit status 2
23 error Failed at the [email protected] compile script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 2, true ]

if there are specific versions of npm/nodejs newer than this, it should be specified ..

On an unrelated note, it seems the console in georchestra uses a bundled version of npm to build, since i had no need for npm/nodejs installed systemwide to build the console...

geOrchestra with a lowercased "g"

Hi guys,
First we'd like to wish you a warm welcome in the geOrchestra community.
Next thing is, we have to mention that geOrchestra is written with a lowercased first letter ;-) eg in the README.
Thanks !

Show Layer Metadata - Layer metadata

As part of the TOC utilities, this tool can be activated for the selected layer. A modal is shown containing the following metadata information retrieved by the CSW catalog configured by the administrator for the layer:

  • title
  • abstract
  • preview
  • scope (? to clarify)
  • genealogy (lineage)
  • creation date
  • revision date
  • link to the catalog to access the detailed sheet

Application Context - Parametric viewers - Basic support

Allow the possibility to define multiple parametric viewers, a viewer defines an application context and must be accessible with its own URL:

mondomaine.fr/visualiseur/urbanisme
mondomaine.fr/visualiseur/transports
...

Each application context must be identified by the following elements:

  • Name of the viewer

Viewer contexts are persisted in a dedicated category inside the MS backend.
Only the configurations related to the viewer parameters in the above list changes between different application contexts and need to be managed

Application Context - Parametric viewers - Advanced - Plugins

The base support to define/manage multiple parametric viewers has been defined. Each application context must be identified also by the following elements:

1 - List of extensions that can be activated by the administartor within the viewers: this represents the set of MS plugins that must be present in the final context's viewer and ready for the use, something like now happens in MS through localConfig

2 - List of available extensions that can be activated by the user: these extensions will not directly available in the viewer, but can be activated on the fly by the final user of the context (they will appear in the Extension Library tool, see #39)

The configurations related to the viewer parameters in the above list changes between different application contexts and need to be properly managed, these means that the lists of extensions of activated/available extensions (point 1 and 2 above) need to be persisted in the context configuration.

This issue involve the step n° 2, the mockup here.

Whithin this issue only the support needed for the MS code base must be implemented, that mainly means the management of the base configuration model of the context (See the format in #15 ). The UI part will be part of #22.

User Map Management - User's map catalog

This extension allows to manage, import and share map contexts created by the user:

  • The user can create a new map context and save it giving a name and a description (the creation date can be automatically managed and must be reported as metadata in the same way of title and description)
  • The user can load/open an existing map context choosing it from a list of maps previously created (each map in the list must provide the map title, description and creation date)
  • The user can delete an existing map context
  • The user must be able to share the map with a permalink
  • Within a map context the user must be able to import a map in OWSContext format (see #5 for WMC samples)
  • Within a map context the user must be able to export the current map in WMC, OWSContext (see #5 for WMC samples)
  • The exported map context must also include user profile information related to the viewer (i.e. the list of activated extensions)

Feature Attribute Popup - Floating Identify tool

The basic Identify functionalities required for the Identify tool must be allowed also using a floating panel (popup):

  • Once the tool is activated, a floating panel appears automatically (after some delay) when the mouse hover over a map object. The floating panel disappears automatically as soon as the mouse moves
  • The size of the floating panel should not entirely cover the map so its dimension should significantly less than the size of the map

For this issue we can re-use the Identify popup provided with this PR in MapStore as it is including additional enhancements for the mouse hover functionality. In the same way of #44 the Identify popup tool must be available also for only layers selected in TOC.

To confirm
@offtherailz, for the Identify popup component we can consider on having enabled both interactions at the same time but making them mutually exclusive:

  1. Click on map: immediatelly perform an Identify request (mouse hover interaction automatically disabled in that case until the popup is closed or something similar)
  2. Mouse hover over a map object: performs an Identify request after a certain delay (configurable by plugin configuration)

Layer Style

This issue collects all the requirements related to the layer style functionalities.

Extension Manager - Extension state

The extensions need to be managed across three different states:

  • Installed: the source code is installed but not available for a viewer
  • Loaded: the installed extension is available inside the viewer and ready to be activated
  • Activated: the extension is active inside the viewer and ready to be used by the final user

Current context should be saved like this:

{
plugins: {
   desktop: [...] // all the plugins not selectable by the user, already implemented
}
},
userPlugins: // list of plugins that can be enabled by the user [ 
{
   "name": "BackgroundSelector", 
   "active": true // this inidcates that the plugin should be added on startup or not
}, ...
templates: [{id: 1, /* other options of the template */}, {id: 2}] // list of available template

NOTE: active is not present in the mock-up. We should add a checkbox in the UI, when the plugin is checked as user plugin.
Original functionality in mapsfish allows to enable by default some of them before the user selects, so this have to be ported in mapstore

Documentation - Updates and French translation

The MapStore documentation (both user and developer guides) must be kept updated during the development of the new core functionalities.

  • All the MapStore documentation (dev/user guide) needs to be translated in french
  • Documentations related to custom extension/functionalities should be provided too

Opacity Tool - Layer opacity

The opacity of a layer in TOC can be changed by the user with a slider. The administrator must have the possibility to set the initial opacity of a layer in backoffice via configuration (i.e. when he configure the initial set of layers available in TOC for the viewer).

Layer Editing - Attribute Editor

In edit mode within the attribute panel, each attribute field must provide the following if configured:

  • Support of coded values (i.e. in a form of drop-down lists)
  • Validation of attribute values (format, min / max)

Coded values, validation format and min/max limits can be defined by the administrator inside the plugin configuration during the viewer context creation.

These kind of support is layer dependent, this means that inside the attribute table configuration the administrator must include specific configuration properties for each layer for which he wants to provide the above (coded values and validations).

Issue in MapStore:
geosolutions-it/MapStore2#5230

Background Selection - Background layers management

This extension is indipendent from the TOC and allows to the user to select a different background layer for the current map. Below the mandatory functionalities for this tool:

  • The background layer can be simply selected (by clicking on a small preview element) from a list of available backgrounds
  • The z-order of a background layer is lower then the one of the other layers in TOC
  • The list of the available backgrounds can be defined by the administrator of the viewer via configuration in backoffice

Extension Manager

This issue collects all the requirements related to the extension manager functionalities.

Application Context - Parametric viewers - Advanced UI - Plugins

A basic administration UI has been provided for the administrator to create and configure the application context that is now identified by its name and its URL.

Within the admin UI (context wizard) also the following settings must be available:

  • Implement the UI to configure the list of activated extensions (the context viewer configuration)
  • Implement the UI to configure the additional extensions that can be activated on the fly by the user using the viewer

This involve the UI implementation of #20 and it is related to the step n° 2 of the mockup here.

The mockup specifies how the above settings need to be managed by the administrator:

1 - The administrator can choose which extension must be present in the viewer simply moving the related plugin item from the list on the left (available plugins ready to be activated and configured) to the list on the right (activated and configured plugins)

2 - For each item moved in the right list, the administrator can establish if the related extension must be already activated or only present in the extension library (see #39): the administrator can do that simply clicking on a specific button present in the plugin item, if clicked the extension will be only available to the final user in the Extension library tool, ready to be activated on the fly. The mockup illustrates this.

3 - There will be also the possibility to configure each extension managed within this context wizard step: the administrator should have the possibility to interact with a text area to specify the plugin configuration to override the default one (this detail has been illustrated in the mockup). Each extension moved in the right list can be configured (the plugin configuration specified here by the administrator will override the default one).

The edited JSON must be validated: the admin cannot move forward to the step 3 if there are validation error. Validation errors should be notified in some way within the text area to properly identify and fix them.

4 - For each plugin card in the right list an additional icon must be included with a link to the online plugin's documentation (the link is specified in configuration) where the user can see the available configuration options:

info_doc_plugin

This additional button is not included in the mockup.

5 - Each plugin configuration specified in the step 2 of the wizard must be stored within the context configuration using the configuration model chosen in #20.

Other useful information:

We must consider to have a way to choose the viewer map type here (OL/Leaflet/Cesium), it could be accomplished with a Map item always activated and so presnt in the right list by default where the admin can manage the map plugin configuration (@mbarto @offtherailz what is your opinion?)

Note:

This issue should also consider the following problem, identified in here:

  • Opening the share tool from burger menu in contexts, the Show TOC option is still present

Application Context - Parametric viewers - Viewer

The base support to manage multiple parametric viewers has been defined along with the related UI.
The final step of the context creation/edit is related to the viewer settings; the webgis is opened and the administrator can set the initial state of the application context in terms of:

  • Catalogs
  • Layers/groups in TOC
  • TOC settings
  • Map initial extent/center
  • Background layers
  • Map CRS

This issue involve the step n° 3, the mockup here

This issue is related to geosolutions-it/MapStore2#4550

Extension Manager - Upload of an extension

The framework must provide to the administrator the support to upload an extension as a package and install it. Therefore the uploaded extension can be managed by the administrator.

Security - Security extension

The viewer must be integrated in the geOrchestra security tier with this extension (for this reason it can be activated/deactivated by the administrator in backoffice in the same way of other extensions)

  • The authentication of an user by the geOrchestra security context that involves: Security proxy, CAS and LDAP
  • The viewer only retrieves the information related to the user rights on extensions, layers and other protected information
  • User rights are managed in backoffice by the administrator and are mapped to user roles

We need to implement this:

  • backend authentication filter using security proxy headers
  • backend authorization using user / roles data from authentication and ignoring on-db user and groups
  • backend integration with LDAP to retrieve roles list
  • frontend automatic login from backend authentication filter

Template Map Management - Map templates

This extension provides a list of map templates configured by the administrator (see issue #131).

A new option in the MS menu will be included to open a right side panel containing the list of templates (part of the UI of this tool could be similar to the one used for the catalog tool, at least for what concerns the template list).

The user can select a map template from a list of available templates so that the template is loaded in the current map.

The tool must provide the needed UI to show to the user the list of available map templates, below are reported the other required utilities:

  • Each map template is identified by name, description, type and preview (thumbnail)
  • The user can search map templates in the list with a free test search field: the map template list is filtered accordingly
  • The user can set a template as favourite, all favourite map templates are presented on top of the list to be quickly identified
  • Once a map template is selected to be loaded in the map, the user can have the possibility to entirelly replace the current map content or simply add the map template content to the current map

The mockup is available here, open the Ms option menu and click on Map Templates:

image

Layer List (TOC) - TOC administration

The viewer's administrator must have the possibility to:

  • Configure the initial set of layers/groups in TOC
  • Allow/Deny Add/Remove of layers by the user
  • Configure the initial order of layers/groups in TOC
  • Allow/Deny sorting of layers in TOC by the user (drag and drop)
  • Allow/Deny Add/Remove of layer groups by the user

New TOC settings properties must be introduced to accomplish the above points.

Connected to #4348

Layer Zoom Tool - Zoom to layer

This extension can be included as part of the TOC utilities and allow to zoom the map to the extent of the selected layer in TOC.

Feature Attribute Form

This issue collects all the requirements related to the feature attribute form functionalities.

Extension Manager - Extension upload UI

The MapStore UI needs to provide an utility that allows the administrator the possibility to upload an extension package.

  • A simple UI must be provided with the possibility to select a local archive (the extension package) and provide feedbacks during the upload process: a spinner inform the user that the upload is in progress. Evaluate the possibility to have a progress bar to check the state of the upload process
  • Only one extension package at time can be uploaded

User Context - User session

The user session includes:

  • the active map (the map currently visualized and its status)
  • the activated extensions
  • favourites map templates (see #34)

The session needs to be automatically persisted to be restored for a next user session.

We will save one session per application context.

An utility to reset the user context must be provided to restore the initial application context

Layer Editing - Editing tool

This extension allows to edit features on the map through the WFST protocol. Different utilities of this extension allow to create, edit and delete features in the map when the corresponding layer in TOC is selected:

  • Create: if activated allows to create a new geometry by drawing it on the map (a specific drawer is activated according to the layer geometry type). Once the geometry is drawn, a panel appears to fill the feature attribute values (the available attributes correspond to the feature type schema) and then the user can save the new feature
  • Edit: if activated allows to select a geometry on the map. The panel containing the feature attributes appear to edit related values and also the geometry on map can be edited in the same way of the above point
  • Delete: if activated allows to select a feature on map to delete it

For this issue we can improve the existing Attribute Table tool in MapStore. What is currently missing there, is the capability to select a feature (and the corresponding record/s in table) directly clicking on map.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.