EOX GitLab Instance

Skip to content
Snippets Groups Projects
Commit 91c82156 authored by Lubomir Dolezal's avatar Lubomir Dolezal
Browse files

Closes #21

See merge request !9
parents d51f5a13 c8914ab6
No related branches found
No related tags found
1 merge request!9Adds values configuration schema to client component
Pipeline #28640 passed
# Client
# VS Client
The client service of the view server
The client service of the View Server based on [library eoxc](https://github.com/eoxc/eoxc).
## Tagging
## Installation
Because package-lock.json version also needs to be updated and we are using bump2version to increase versions which does not work well with multi-line search inside package-lock.json for unknown reason, a two commit procedure to bump the version is needed.
```bash
npm version --no-git-tag-version <version> # via a postversion command does 'git add' and 'git commit'
bump2version patch --new-version <version> # a proper bumpversion
```
Usable as a [docker image](https://gitlab.eox.at/vs/client/container_registry/164) or a helm chart. Usually should be used as embedded in the [View Server chart](https://gitlab.eox.at/vs/vs-deployment).
## Configuration
For all possible configurable options of VS Client see default [Values.yaml](//gitlab.eox.at/vs/client/-/blob/main/chart/values.yaml). Shared layer configurations of cache -> client layers come from `.Values.global.layers`. Client specific configurations come from `.Values.config.<key>`.
For all possible configurable options of VS Client service see default [values.yaml](//gitlab.eox.at/vs/client/-/blob/main/chart/values.yaml). Shared layer configurations of cache -> client layers come from `.Values.global.layers`. Client specific configurations come from `.Values.config.<key>`.
Meaning of all the configuration variables in `values.yaml` can be searched in [config-schema.yaml](//gitlab.eox.at/vs/client/-/blob/main/src/config-schema.json) or as a fallback in the [index.html template](//gitlab.eox.at/vs/client/-/blob/main/chart/files/index.html).
The configuration JSON schema for the `values.yaml` validating each generated chart, which uses the client service is can be [found here](https://gitlab.eox.at/vs/client/-/tree/main/chart/values.schema.json).
## Development
......@@ -34,3 +29,16 @@ Docker compose edit:
source: locally-cloned-eoxc-repo
target: /opt/client/node_modules/eoxc
```
## Tagging
Because package-lock.json version also needs to be updated and we are using bump2version to increase versions which does not work well with multi-line search inside package-lock.json for unknown reason, a two commit procedure to bump the version is needed.
```bash
npm version --no-git-tag-version <version> # via a postversion command does 'git add' and 'git commit'
bump2version patch --new-version <version> # a proper bumpversion
```
## License
[MIT](https://choosealicense.com/licenses/mit/)
......@@ -112,7 +112,7 @@
"disableTimeSlider": {{.Values.config.disableTimeSlider }},
"enableDynamicHistogram": {{.Values.config.enableDynamicHistogram }},
"timeSliderAlternativeBrush": {{.Values.config.timeSliderAlternativeBrush }},
"searchDebounceTime": 500,
"searchDebounceTime": {{.Values.config.searchDebounceTime }},
"language": {{.Values.config.language | quote }},
"timeDomain": {{ .Values.config.timeDomain | toRawJson | replace "\"today\"" "today" | replace "\"customClientDatePast1\"" "customClientDatePast1" | replace "\"customClientDatePast2\"" "customClientDatePast2" | replace "\"customClientDatePast3\"" "customClientDatePast3" | replace "\"customClientDatePast4\"" "customClientDatePast4" | replace "\"customClientDateFuture1\"" "customClientDateFuture1" | replace "\"customClientDateFuture2\"" "customClientDateFuture2" | replace "\"customClientDateFuture3\"" "customClientDateFuture3" | replace "\"customClientDateFuture4\"" "customClientDateFuture4"}},
"constrainTimeDomain": true,
......@@ -120,7 +120,7 @@
"displayInterval": {{ .Values.config.displayInterval | quote }},
"selectedTimeDomain": {{ .Values.config.selectedTimeDomain | toRawJson | replace "\"today\"" "today" | replace "\"customClientDatePast1\"" "customClientDatePast1" | replace "\"customClientDatePast2\"" "customClientDatePast2" | replace "\"customClientDatePast3\"" "customClientDatePast3" | replace "\"customClientDatePast4\"" "customClientDatePast4" | replace "\"customClientDateFuture1\"" "customClientDateFuture1" | replace "\"customClientDateFuture2\"" "customClientDateFuture2" | replace "\"customClientDateFuture3\"" "customClientDateFuture3" | replace "\"customClientDateFuture4\"" "customClientDateFuture4"}},
"selectableInterval": {{ .Values.config.selectableInterval | quote }},
"timeSliderControls": true,
"timeSliderControls": {{ .Values.config.timeSliderControls | quote }},
"enableSingleLayerMode": {{ .Values.config.enableSingleLayerMode }},
"maxTooltips": {{ .Values.config.maxTooltips }},
"center": {{ .Values.config.center | toRawJson }},
......@@ -213,7 +213,7 @@
"values": [
{{- range $subLayer := get $subLayersMap $layer.id }}
{
"label": {{ $subLayer.title | quote }},
"label": {{ $subLayer.title | default $subLayer.id | quote }},
"value": {{ $subLayer.id | quote }}
},
{{- end }}
......@@ -269,7 +269,7 @@
"iframeUrlTemplate": {{ $layer.search.iframeUrlTemplate }},
{{- end }}
},
{{- if $.Values.config.eoxserverDownloadEnabled | default false}}
{{- if $.Values.config.eoxserverDownloadEnabled }}
"download": {
"protocol": "EO-WCS",
"url": baseUrl + "ows",
......@@ -299,7 +299,7 @@
{{- range $layer := .Values.global.overlayLayers }}
{
"id": {{ $layer.id | quote }},
"displayName": {{ $layer.title | quote }},
"displayName": {{ $layer.title | default $layer.id | quote }},
{{- if $layer.display }}
// customized display
"display": {{ ($layer.display | toRawJson) | replace "\"baseUrlsOws\"" "baseUrlsOws" | replace "\"baseUrlsWMTS\"" "baseUrlsWMTS" | replace "\"customStyles\"" "customStyles" }},
......
global:
metadata:
title: PRISM View Service developed by EOX
header: PRISM View Server Client powered by <a href="//eox.at"><img src="//eox.at/wp-content/uploads/2017/09/EOX_Logo.svg" alt="EOX" style="height:25px;margin-left:10px"/></a>
ingress:
tls: false
layers:
- id: DEM
title: DEM
displayColor: "#eb3700"
parentLayer: DEM
style: earth
grids: &defaultGrids
- name: WGS84
zoom: 16
search: &defaultSearch
parameters:
- type: "geo:uid"
title: "Product ID"
privileged: true
iframeUrlTemplate: "baseUrl+\"dem-app/#{{properties.links.find(item=>item.rel==='via').href}}\""
detailsDisplay:
id: "DEM"
visible: true
protocol: "WMS"
urls: baseUrlsOws
version: "1.3.0"
format: "image/png"
gutter: 2
projection: "EPSG:4326"
tileSize: 512
style: ""
useMilliseconds: false
maxZoom: 17
enableIframeDisplay: true
iframeVisible: true
options:
- name: "Elevation"
replace:
- target: "detailsDisplay.style"
value:
template: "{{detailsDisplay.extraParameters.STYLES}}"
- target: "detailsDisplay.extraParameters.LAYERS"
value: "DEM"
parameters:
- name: "Style"
target: "detailsDisplay.extraParameters.STYLES"
values: customStyles
- name: "Range"
target: "detailsDisplay.extraParameters.dim_range"
min: 1
max: 9000
default:
- 200
- 1000
step: 10
range: true
rangeSeparator: " "
- name: "Hillshade"
IdAttached: "__hillshade"
replace:
- target: "detailsDisplay.style"
value:
template: "{{detailsDisplay.extraParameters.STYLES}}"
- target: "detailsDisplay.extraParameters.VARIABLES"
value:
template: "{{detailsDisplay.variablesParameter}}"
parameters:
- name: "Algorithm"
target: "detailsDisplay.variablesObject"
oneToManyMapping: true
value: "alg"
values: [
{
value: "ZevenbergenThorne" },
{
value: "Horn"
}]
- name: "Azimuth"
target: "detailsDisplay.variablesObject"
oneToManyMapping: true
value: "azimuth"
min: 0
max: 360
default:
- 315
step: 1
- name: "Altitude"
target: "detailsDisplay.variablesObject"
oneToManyMapping: true
value: "altitude"
min: 0
max: 90
default:
- 45
step: 1
- name: "Z-factor"
target: "detailsDisplay.variablesObject"
oneToManyMapping: true
value: "zfactor"
min: 0
max: 50
default:
- 5
step: 1
wpsProcessing:
url: baseUrlsOws
version: "2.0.0"
processes:
- &hillShade {
title: "Hillshaded relief",
id: "DemProcessing",
description: "Creates a hillshade from a DEM tile.",
CoverageIdUsage: true,
hasBBOX: true,
additionalInputs: { identifier: "hillshade", scale: "111120" },
inputs:
[
{
type: "bbox",
description: "Draw a bounding box that intersects the DEM tile. Can be used to crop the output.",
id: "bbox",
title: "Bounding box",
box: true,
},
{
type: "selection",
description: "Processing algorithm to be performed.",
id: "algorithm",
title: "Processing algorithm",
options:
[
{ title: "Horn", id: "algorithm" },
{ title: "ZevenbergenThorne", id: "algorithm" },
],
},
{
type: "string",
description: "Azimuth of the light, in degrees. 0 if it comes from the top of the raster, 90 from the east, 315 is the default value.",
id: "azimuth",
title: "Azimuth",
},
{
type: "string",
description: "Altitude of the light, in degrees. 90 if the light comes from above the DEM, 0 if it is raking light. 45 is default.",
id: "altitude",
title: "Altitude",
},
{
type: "string",
description: "Optional vertical exaggeration used to pre-multiply the elevations. Default 1.",
id: "z_factor",
title: "Z factor",
},
],
outputs:
[
{
title: "Output Format.",
id: "result",
mime_types:
[
{ title: "PNG", id: "image/png" },
{ title: "JPG", id: "image/jpeg" },
{ title: "TIFF", id: "image/tiff" },
],
},
],
}
- &aspect {
title: "Aspect",
id: "DemProcessing",
description: "Creates `Aspect` which is the orientation of slope of a DEM tile.",
CoverageIdUsage: true,
hasBBOX: true,
additionalInputs: { identifier: "aspect" },
inputs:
[
{
type: "bbox",
description: "Draw a bounding box that intersects the DEM tile. Can be used to crop the output.",
id: "bbox",
title: "Bounding box",
box: true,
},
{
type: "selection",
description: "Processing algorithm to be performed.",
id: "algorithm",
title: "Processing algorithm",
options:
[
{ title: "Horn", id: "algorithm" },
{ title: "ZevenbergenThorne", id: "algorithm" },
],
},
],
outputs:
[
{
title: "Output Format.",
id: "result",
mime_types:
[
{ title: "PNG", id: "image/png" },
{ title: "JPG", id: "image/jpeg" },
{ title: "TIFF", id: "image/tiff" },
],
},
],
}
- &slope {
title: "Slope",
id: "DemProcessing",
description: "Creates a `Slope` which is the steepness or the degree of incline of a DEM tile surface.",
CoverageIdUsage: true,
hasBBOX: true,
additionalInputs: { identifier: "slopeshade", scale: "111120" },
inputs:
[
{
type: "bbox",
description: "Draw a bounding box that intersects the DEM tile. Can be used to crop the output.",
id: "bbox",
title: "Bounding box",
box: true,
},
{
type: "selection",
description: "Processing algorithm to be performed.",
id: "algorithm",
title: "Processing algorithm",
options:
[
{ title: "Horn", id: "algorithm" },
{ title: "ZevenbergenThorne", id: "algorithm" },
],
},
],
outputs:
[
{
title: "Output Format.",
id: "result",
mime_types:
[
{ title: "PNG", id: "image/png" },
{ title: "JPG", id: "image/jpeg" },
{ title: "TIFF", id: "image/tiff" },
],
},
],
}
- &contour {
title: "Contour",
id: "DemProcessing",
description: "Creates a contour from DEM a tile.",
CoverageIdUsage: true,
hasBBOX: true,
additionalInputs: { identifier: "contours" },
inputs:
[
{
type: "bbox",
description: "Draw a bounding box that intersects the DEM tile. Can be used to crop the output.",
id: "bbox",
title: "Bounding box",
box: true,
},
{
type: "string",
description: "Elevation interval between contours.",
title: "Interval",
id: "interval",
},
],
outputs:
[
{
title: "Output Format.",
id: "result",
mime_types:
[
{ title: "PNG", id: "image/png" },
{ title: "JPG", id: "image/jpeg" },
{ title: "TIFF", id: "image/tiff" },
{ title: "GeoJSON", id: "application/json" },
],
},
],
}
- &heightProfile {
title: "Height Profile",
id: "GetHeightProfile",
description: "Creates a height profile of a line crossing a DEM tile.",
CoverageIdUsage: true,
inputs:
[
{
type: "line",
description: "Draw a bounding box that intersects the DEM tile. Can be used to crop the output.",
id: "line",
title: "Horizontal line",
line: true,
},
{
type: "selection",
description: "interpolation method used to generate the profile output.",
id: "method",
title: "Interpolation Method",
options:
[
{ title: "near", id: "method" },
{ title: "average", id: "method" },
{ title: "max", id: "method" },
{ title: "min", id: "method" },
{ title: "med", id: "method" },
],
},
{
type: "string",
description: "steps Interval ",
id: "interval",
title: "Distance interval.",
},
],
outputs:
[
{
title: "Output Format.",
id: "profile",
mime_types:
[
{ title: "PNG", id: "image/png" },
{ title: "JPG", id: "image/jpeg" },
{ title: "TIFF", id: "image/tiff" },
{ title: "CSV", id: "text/csv" },
],
},
],
}
- &defaultGetStatistics {
title: "Get Statistics",
id: "GetStatistics",
description: "Get statistics for all coverage/s that intersects with the input bbox",
CoverageIdUsage: false,
hasBBOX: true,
additionalInputs: { collection: DEM },
inputs:
[
{
type: "bbox",
description: "bounding box that intersect with the products.",
id: "bbox",
title: "Bounding box",
box: true,
},
],
outputs:
[
{
title: "Output Format",
id: "statistics",
mime_types: [{ title: "JSON", id: "application/json" }],
},
],
}
- id: DEM__elevation_earth
title: DEM Elevation Earth Style
parentLayer: DEM
style: earth
grids: *defaultGrids
overlayLayers:
- id: DEM__outlines
title: DEM outlines
client:
config:
eoxserverDownloadEnabled: true
timeDomain:
- "2003-01-01T00:00:00Z"
- today
displayTimeDomain:
- "2011-02-01T00:00:00Z"
- "2011-05-31T23:59:59Z"
selectedTimeDomain:
- "2011-03-01T00:00:00Z"
- "2011-05-01T00:00:00Z"
selectableInterval: "P7300D"
displayInterval: "P7300D"
center:
- 14.5
- 43
zoom: 6
enable3D: true
mapMode: "2D"
heightFactor: 80000000
terrainUrl: baseUrl + "tilesets/terrain-mesh/"
footprintLabel:
size: "12px"
font: "Poppins-Medium"
color: "#d40000"
outlineWidth: 2
outline: "white"
labelTemplate: "{{properties.title}}"
labelRegex: "/_([A-Z]{1}[0-9]{2})_.*_([A-Z]{1}[0-9]{3})_/"
This diff is collapsed.
......@@ -56,12 +56,15 @@ config:
disableTimeSlider: false
enableDynamicHistogram: false
timeSliderAlternativeBrush: false
searchDebounceTime: 500
language: "en"
timeSliderControls: true
enableSingleLayerMode: false
maxTooltips: 1
disableSearchParams: false
enableGetEOCoverageSet: true
maxSocketsPerHostSearch: 6
eoxserverDownloadEnabled: false
footprintFillColor: "rgba(0, 0, 0, 0.2)"
footprintStrokeColor: "rgba(0, 0, 0, 1)"
filterFillColor: "rgba(0, 165, 255, 0)"
......@@ -259,47 +262,36 @@ ingress:
global:
metadata:
title: View Service developed by EOX
header: View Server (VS) Client powered by <a href="//eox.at"><img src="//eox.at/wp-content/uploads/2017/09/EOX_Logo.svg" alt="EOX" style="height:25px;margin-left:10px"/></a>
layers:
- id: dummy_pansharpen
title: dummyTitle
displayColor: "#eb3700"
parentLayer: dummy_pansharpen
maxZoom: 18
grids: &defaultGridOptions
- name: WGS84
zoom: 17
- id: dummy_pansharpen__TRUE_COLOR
title: dummy True Color
parentLayer: dummy_pansharpen
grids: *defaultGridOptions
- id: dummy_pansharpen__TRUE_COLOR_PANSHARPEN
title: dummy True Color Pansharpened
parentLayer: dummy_pansharpen
grids: *defaultGridOptions
- id: dummy_pansharpen__FALSE_COLOR
title: dummy False Color
parentLayer: dummy_pansharpen
grids: *defaultGridOptions
- id: dummy_pansharpen__FALSE_COLOR_PANSHARPEN
title: dummy False Color Pansharpened
parentLayer: dummy_pansharpen
grids: *defaultGridOptions
- id: dummy_pansharpen__PAN
title: dummy Panchromatic
parentLayer: dummy_pansharpen
grids: *defaultGridOptions
- id: dummy_pansharpen__NDVI
title: dummy NDVI
parentLayer: dummy_pansharpen
style: earth
grids: *defaultGridOptions
- id: dummy_sar
title: EMG SAR
displayColor: "#adfa28"
parentLayer: dummy_sar
maxZoom: 18
grids: *defaultGridOptions
overlayLayers:
- id: dummy__outlines
title: dummy combined outlines
......
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://gitlab.eox.at/esa/prism/vs/src/config-schema.json",
"$id":"https://gitlab.eox.at/vs/client/-/raw/configschema/src/config-schema.json",
"title": "Configuration",
"description": "The main configuration object.",
"type": "object",
......@@ -39,6 +39,11 @@
],
"default": "disabled"
},
"searchEnabled": {
"description": "Whether or not the 'Search' button shall be enabled.",
"type": "boolean",
"default": true
},
"searchDebounceTime": {
"description": "Sets the time in milliseconds to wait for additional user input before actually sending a search request.",
"type": "number",
......@@ -142,7 +147,7 @@
"type": "array",
"items": {
"type": "string",
"format": "date-time"
"formats": ["date-time", "string"]
},
"minItems": 2,
"maxItems": 2
......@@ -652,7 +657,10 @@
},
"displayColor": {
"description": "The color to distinguish the layer in the layer-list and the TimeSlider. Must be a valid HTML color definition.",
"type": "string"
"type": "string",
"examples":[
"#eb3700"
]
},
"noTimeSliderBorder": {
"description": "TimeSlider bins and records will not have a visible border",
......@@ -688,14 +696,12 @@
"urls": {
"description": "A list of base-URLs to retrieve tiles",
"items": {
"type": "string",
"format": "uri"
"type": "string"
}
},
"url": {
"description": "A single base-URL to retrieve tiles",
"type": "string",
"format": "uri"
"type": "string"
},
"matrixSet": {
"description": "The matrix set used to retrieve tiles. Required for WMTS.",
......@@ -1001,8 +1007,7 @@
},
"url": {
"description": "The base-URL to send search requests to.",
"type": "string",
"format": "uri"
"type": "string"
},
"format": {
"description": "The format (mime-type) to use for OpenSearch requests.",
......@@ -1018,6 +1023,11 @@
],
"default": "GET"
},
"searchEnabled": {
"description": "Initial mode of search toggle on a layer s(disabled/enabled).",
"type": "boolean",
"default": true
},
"lightweightBuckets": {
"description": "Whether or not leightweight buckets shall be used for the timeslider. Lightweight buckets only request the number of records for the given histogram bucket. When the total count is below the given histogramThreshold, then the records will be displayed directly.",
"type": "boolean",
......@@ -1056,6 +1066,22 @@
"parameters": {
"description": "Mapping the parameter type (such as eo:processingCenter) to a settings object.",
"type": "array",
"examples":[
[{
"max": 100,
"min": 0,
"step": 1,
"range": true,
"type": "eo:cloudCover",
"name": "Cloud Coverage",
"title": "Cloud Coverage in percent"
},
{
"type": "geo:uid",
"title": "Product ID",
"privileged": true
}]
],
"items": {
"type": "object",
"properties": {
......@@ -1139,45 +1165,48 @@
"default": false
}
}
},
"maxUrlLength": {
"description": "The maximum URL length of search requests to be sent. Longer URLs will not be sent, but an error will be raised directly.",
"type": "number",
"default": 4000
},
"thumbnailUrlTemplate": {
"description": "The template string to construct a thumbnail URL. Use '{{' and '}}' to select values. e.g: 'http://landsat-pds.s3.amazonaws.com/{{properties.s3Path}}/{{properties.title}}_thumb_small.jpg'.",
"type": "string"
},
"quickLookUrlTemplate": {
"description": "The template string to construct a quickLook URL. Use '{{' and '}}' to select values. e.g: 'http://landsat-pds.s3.amazonaws.com/{{properties.s3Path}}/{{properties.title}}_thumb_small.jpg'. The URL will be used in case thumbnailUrl is not available.",
"type": "string"
},
"iframeUrlTemplate": {
"description": "The template string to construct an iframe URL. Use '{{' and '}}' to select values. e.g: 'dem-app#{{properties.dataItemPath}}'. Iframe URL template can be used for a custom Details Display panel instead of default OpenLayers view.",
"type": "string",
"examples":[
"baseUrl+\"dem-app/#{{properties.links.find(item=\u003eitem.rel==='via').href}}\""
]
},
"descriptionTemplate": {
"description": "The template string to construct a record description. Use '{{' and '}}' to select values. For example {{properties.mundi.cloudCover}}",
"type": "string"
},
"extraFields": {
"description": "Extra fields to be parsed. Object keys are the JSON path where the output of the simple XPath shall be stored. Values are simple XPath expressions, always relative to a single Atom entry/RSS item.",
"type": "object"
},
"extraFieldsNamespaces": {
"description": "Namespace code to URL mapping for namespaces used in 'extraFields'.",
"type": "object"
},
"countZeroRecords": {
"description": "When this setting is set to true, the requested number of records is zero when only the count is required.",
"type": "boolean"
},
"dropEmptyParameters": {
"description": "When this setting is set to true, empty parameters (with no value set) will be dropped entirely.",
"type": "boolean"
}
},
"maxUrlLength": {
"description": "The maximum URL length of search requests to be sent. Longer URLs will not be sent, but an error will be raised directly.",
"type": "number",
"default": 4000
},
"thumbnailUrlTemplate": {
"description": "The template string to construct a thumbnail URL. Use '{{' and '}}' to select values. e.g: 'http://landsat-pds.s3.amazonaws.com/{{properties.s3Path}}/{{properties.title}}_thumb_small.jpg'.",
"type": "string"
},
"quickLookUrlTemplate": {
"description": "The template string to construct a quickLook URL. Use '{{' and '}}' to select values. e.g: 'http://landsat-pds.s3.amazonaws.com/{{properties.s3Path}}/{{properties.title}}_thumb_small.jpg'. The URL will be used in case thumbnailUrl is not available.",
"type": "string"
},
"iframeUrlTemplate": {
"description": "The template string to construct an iframe URL. Use '{{' and '}}' to select values. e.g: 'dem-app#{{properties.dataItemPath}}'. Iframe URL template can be used for a custom Details Display panel instead of default OpenLayers view.",
"type": "string"
},
"descriptionTemplate": {
"description": "The template string to construct a record description. Use '{{' and '}}' to select values. For example {{properties.mundi.cloudCover}}",
"type": "string"
},
"extraFields": {
"description": "Extra fields to be parsed. Object keys are the JSON path where the output of the simple XPath shall be stored. Values are simple XPath expressions, always relative to a single Atom entry/RSS item.",
"type": "object"
},
"extraFieldsNamespaces": {
"description": "Namespace code to URL mapping for namespaces used in 'extraFields'.",
"type": "object"
},
"countZeroRecords": {
"description": "When this setting is set to true, the requested number of records is zero when only the count is required.",
"type": "boolean"
},
"dropEmptyParameters": {
"description": "When this setting is set to true, empty parameters (with no value set) will be dropped entirely.",
"type": "boolean"
},
"required": [
"protocol",
"url"
......@@ -1200,8 +1229,7 @@
},
"url": {
"description": "The base-URL to send download requests to.",
"type": "string",
"format": "uri"
"type": "string"
},
"method": {
"description": "The preferred HTTP method to send requests.",
......@@ -1282,8 +1310,7 @@
},
"url": {
"description": "The base-URL to send full resolution download requests to.",
"type": "string",
"format": "uri"
"type": "string"
},
"cqlParameterName": {
"description": "The name of the CQL parameter name for WCS requests. When set, the CQL filtering is enabled for this layer.",
......@@ -1375,8 +1402,7 @@
"properties": {
"url": {
"description": "The URL to send processing POST requests to.",
"type": "string",
"format": "uri"
"type": "string"
},
"method": {
"description": "The method used to send processing requests. 'fetch' sends a POST request with a JSON payload in the current tab, 'form' simulates sending a form in a new tab with JSON as the value of the 'request' field.",
......@@ -1394,14 +1420,14 @@
"properties": {
"url": {
"description": "The URL to send processing requests to.",
"type": "string",
"format": "uri"
"type": "string"
},
"version": {
"description": "Version of the WPS protocol to use internally. Currently supported versions: 1.0.0.",
"type": "string",
"enum": [
"1.0.0"
"1.0.0",
"2.0.0"
]
},
"processes": {
......@@ -1473,16 +1499,16 @@
"type": "object",
"properties": {
"title": {
"description": "The displayed label of a single option. If not supplied, 'value' is used as label.",
"description": "The displayed label of a single option. If not supplied, 'id' is used as label.",
"type": "string"
},
"value": {
"id": {
"description": "The value to be passed to the WPS interface once selected.",
"type": "string"
}
},
"required": [
"value"
"id"
]
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment