Skip to content

Commit 29cce1b

Browse files
authored
Merge pull request #153 from mviewer/develop
Release 3.2
2 parents 66f6deb + ba6fbaa commit 29cce1b

File tree

126 files changed

+19485
-1597
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

126 files changed

+19485
-1597
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ __pycache__/
2424
srv/python/mviewerstudio_backend/static
2525

2626
# pyenv
27-
.python-version
27+
.python-version
28+
?venv/

README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# mviewerstudio
22

3-
mviewer studio est une application web dont le but est de faciliter la création d'une configuration pour [mviewer](https://github.com/geobretagne/mviewer) à l'aide d'une interface graphique ergonomique et simple.
3+
mviewer studio est une application web dont le but est de faciliter la création d'une configuration pour [mviewer](https://github.com/mviewer/mviewer) à l'aide d'une interface graphique ergonomique et simple.
44

55
Application écrite en Javascript pour le front.
66
2 backends disponibles : écrits en Python pour l'un et en PHP pour l'autre.
77

88
Référez-vous à la documentation pour plus d'information :
99

10-
* [Documentation utilisateur](doc/user.md)
11-
* [Documentation d'installation](doc/install.md)
12-
* [Documentation administrateur](doc/admin.md)
10+
* [Documentation utilisateur](https://mviewerstudio.readthedocs.io/fr/stable/doc_user/accueil.html)
11+
* [Documentation d'installation](https://mviewerstudio.readthedocs.io/fr/stable/doc_tech/install.html)
12+
* [Documentation administrateur](https://mviewerstudio.readthedocs.io/fr/stable/doc_tech/config.html)

config-python-sample.json

+182
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
{
2+
"app_conf": {
3+
"studio_title": "Mviewer STudio Megalis",
4+
"upload_service": "srv/store",
5+
"delete_service": "srv/delete",
6+
"list_service": "srv/list",
7+
"store_style_service": "srv/store/style",
8+
"mviewer_instance": "/mviewer/",
9+
"conf_path_from_mviewer": "apps/store/",
10+
"mviewer_short_url": {
11+
"used": true,
12+
"apps_folder": "store"
13+
},
14+
"external_themes": {
15+
"used": true,
16+
"url": "https://geobretagne.fr/minicatalog/csv"
17+
},
18+
"user_info": "srv/user_info",
19+
"export_conf_folder": "/home/debian/mviewer/apps/store/",
20+
"proxy": "",
21+
"user_info_visible": false,
22+
"app_form_placeholders": {
23+
"app_title": "Kartenn",
24+
"logo_url": "https://geobretagne.fr/pub/logo/region-bretagne.jpg",
25+
"help_file": "mviewer_help.html"
26+
},
27+
"map": {
28+
"center": [-307903.74898791354, 6141345.088741366],
29+
"zoom": 7
30+
},
31+
"baselayers": {
32+
"positron": {
33+
"id": "positron",
34+
"thumbgallery": "img/basemap/positron.png",
35+
"title": "CartoDb",
36+
"label": "Positron",
37+
"type": "OSM",
38+
"url": "https://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
39+
"attribution": "Map tiles by <a href=\"https://cartodb.com/attributions\">CartoDb</a>, under <a href=\"https://creativecommons.org/licenses/by/3.0/\">CC BY 3.0 </a>"
40+
},
41+
"ortho_ign": {
42+
"id": "ortho_ign",
43+
"thumbgallery": "img/basemap/ortho.jpg",
44+
"title": "IGN",
45+
"label": "Photographies aériennes IGN",
46+
"type": "WMTS",
47+
"url": "https://wxs.ign.fr/choisirgeoportail/geoportail/wmts?",
48+
"layers": "ORTHOIMAGERY.ORTHOPHOTOS",
49+
"format": "image/jpeg",
50+
"fromcapacity": "false",
51+
"attribution": "<a href='https://geoservices.ign.fr' target='_blank'><img src='https://geoservices.ign.fr/images/logoIGN.png'></a>",
52+
"style": "normal",
53+
"matrixset": "PM",
54+
"maxzoom": "22"
55+
},
56+
"darkmatter": {
57+
"id": "darkmatter",
58+
"thumbgallery": "img/basemap/darkmatter.png",
59+
"title": "CartoDb",
60+
"label": "Dark Matter",
61+
"type": "OSM",
62+
"url": "https://{a-c}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png",
63+
"maxzoom": "20",
64+
"attribution": "Map tiles by <a href=\"https://cartodb.com/attributions\">CartoDb</a>, under <a href=\"https://creativecommons.org/licenses/by/3.0/\">CC BY 3.0 </a>"
65+
},
66+
"esriworldimagery": {
67+
"id": "esriworldimagery",
68+
"thumbgallery": "img/basemap/esriworldwide.jpg",
69+
"title": "Esri",
70+
"label": "Esri world imagery",
71+
"type": "OSM",
72+
"url": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
73+
"attribution": "<a href=\"https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9\" target=\"_blank\" >Esri world imagery</a>"
74+
},
75+
"ortho1": {
76+
"id": "ortho1",
77+
"thumbgallery": "img/basemap/ortho.jpg",
78+
"title": "GéoBretagne",
79+
"label": "Photo aérienne actuelle GéoBretagne",
80+
"type": "WMTS",
81+
"url": "https://tile.geobretagne.fr/gwc02/service/wmts",
82+
"layers": "satellite",
83+
"format": "image/png",
84+
"style": "_null",
85+
"matrixset": "EPSG:3857",
86+
"fromcapacity": "false",
87+
"attribution": "<a href=\"https://geobretagne.fr/geonetwork/srv/fre/catalog.search#/metadata/3a0ac2e3-7af1-4dec-9f36-dae6b5a8c731\" target=\"_blank\" >partenaires GéoBretagne - Megalis Bretagne - IGN - PlanetObserver</a>"
88+
},
89+
"ortho_ir": {
90+
"id": "ortho_ir",
91+
"thumbgallery": "img/basemap/ir.jpg",
92+
"title": "GéoBretagne",
93+
"label": "Photo aérienne infra rouge GéoBretagne",
94+
"type": "WMTS",
95+
"url": "https://geobretagne.fr/geoserver/gwc/service/wmts",
96+
"layers": "photo:ir-composite",
97+
"format": "image/jpeg",
98+
"style": "_null",
99+
"matrixset": "EPSG:3857",
100+
"fromcapacity": "false",
101+
"attribution": "<a href=\"https://geobretagne.fr/geonetwork/srv/fre/catalog.search#/metadata/434b82a8-8d3c-4d9f-9eb3-0485f1a63eb6\" target=\"_blank\" >partenaires GéoBretagne - Megalis Bretagne - IGN</a>"
102+
},
103+
"osm_google": {
104+
"id": "osm_google",
105+
"thumbgallery": "img/basemap/osm_google.png",
106+
"title": "GéoBretagne",
107+
"label": "OpenStreetMap GéoBretagne",
108+
"type": "WMS",
109+
"url": "https://osm.geobretagne.fr/gwc01/service/wms",
110+
"layers": "osm:google",
111+
"format": "image/png",
112+
"attribution": "GéoBretagne. Données : les contributeurs d'<a href=\"https://www.openstreetmap.org/\" target=\"_blank\">OpenStreetMap </a>, <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">ODbL </a>"
113+
},
114+
"osm": {
115+
"id": "osm",
116+
"thumbgallery": "img/basemap/osm.png",
117+
"title": "OSM",
118+
"label": "OpenStreetMap",
119+
"type": "OSM",
120+
"url": "https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",
121+
"attribution": "Données : les contributeurs d'<a href=\"https://www.openstreetmap.org/\" target=\"_blank\">OpenStreetMap </a><a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">ODbL </a>"
122+
},
123+
"osm_bzh": {
124+
"id": "osm_bzh",
125+
"thumbgallery": "img/basemap/osm.png",
126+
"title": "OSM BZH",
127+
"label": "OpenStreetMap en breton",
128+
"type": "OSM",
129+
"maxzoom": "20",
130+
"url": "https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png",
131+
"attribution": "Kendaolerien <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">OpenStreetMap</a>"
132+
},
133+
"plan_ign": {
134+
"id": "plan_ign",
135+
"thumbgallery": "img/basemap/scan-express.jpg",
136+
"title": "IGN",
137+
"label": "Plan IGN v2",
138+
"type": "WMTS",
139+
"url": "https://wxs.ign.fr/choisirgeoportail/geoportail/wmts?",
140+
"layers": "GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2",
141+
"format": "image/png",
142+
"fromcapacity": "false",
143+
"attribution": "<a href='https://geoservices.ign.fr' target='_blank'><img src='https://geoservices.ign.fr/images/logoIGN.png'></a>",
144+
"style": "normal",
145+
"matrixset": "PM",
146+
"maxzoom": "22"
147+
}
148+
},
149+
"data_providers": {
150+
"csw": [{
151+
"title": "Catalogue GéoBretagne",
152+
"url": "https://geobretagne.fr/geonetwork/srv/fre/csw",
153+
"baseref": "https://geobretagne.fr/geonetwork/srv/eng/catalog.search?node=srv#/metadata/"
154+
},
155+
{
156+
"title": "Catalogue Région Bretagne",
157+
"url": "https://kartenn.region-bretagne.fr/geonetwork/srv/fre/csw",
158+
"baseref": "https://kartenn.region-bretagne.fr/geonetwork/srv/fre/catalog.search#/metadata/"
159+
},
160+
{
161+
"title": "Catalogue de la Région Grand Est",
162+
"url": "https://www.geograndest.fr/geonetwork/srv/fre/csw",
163+
"baseref": "https://www.geograndest.fr/geonetwork/srv/eng/catalog.search?node=srv#/metadata/"
164+
},
165+
{
166+
"title": "Catalogue de la Région Pays de la Loire",
167+
"url": "https://www.geopal.org/geonetwork/srv/fre/csw",
168+
"baseref": "https://www.geopal.org/geonetwork/srv/eng/catalog.search?node=srv#/metadata/"
169+
}
170+
],
171+
"wms": [{
172+
"title": "Serveur WMS de la Région",
173+
"url": "https://ows.region-bretagne.fr/geoserver/rb/wms"
174+
}]
175+
},
176+
"default_params": {
177+
"layer": {
178+
"info_format": "text/html"
179+
}
180+
}
181+
}
182+
}

config-sample.json

+26-26
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,20 @@
3838
"url": "https://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
3939
"attribution": "Map tiles by <a href=\"https://cartodb.com/attributions\">CartoDb</a>, under <a href=\"https://creativecommons.org/licenses/by/3.0/\">CC BY 3.0 </a>"
4040
},
41-
"esriworldimagery": {
42-
"id": "esriworldimagery",
43-
"thumbgallery": "img/basemap/esriworldwide.jpg",
44-
"title": "Esri",
45-
"label": "Esri world imagery",
46-
"type": "OSM",
47-
"url": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
48-
"attribution": "<a href=\"https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9\" target=\"_blank\" >Esri world imagery</a>"
41+
"ortho_ign": {
42+
"id": "ortho_ign",
43+
"thumbgallery": "img/basemap/ortho.jpg",
44+
"title": "IGN",
45+
"label": "Photographies aériennes IGN",
46+
"type": "WMTS",
47+
"url": "https://wxs.ign.fr/choisirgeoportail/geoportail/wmts?",
48+
"layers": "ORTHOIMAGERY.ORTHOPHOTOS",
49+
"format": "image/jpeg",
50+
"fromcapacity": "false",
51+
"attribution": "<a href='https://geoservices.ign.fr' target='_blank'><img src='https://geoservices.ign.fr/images/logoIGN.png'></a>",
52+
"style": "normal",
53+
"matrixset": "PM",
54+
"maxzoom": "22"
4955
},
5056
"darkmatter": {
5157
"id": "darkmatter",
@@ -57,11 +63,20 @@
5763
"maxzoom": "20",
5864
"attribution": "Map tiles by <a href=\"https://cartodb.com/attributions\">CartoDb</a>, under <a href=\"https://creativecommons.org/licenses/by/3.0/\">CC BY 3.0 </a>"
5965
},
66+
"esriworldimagery": {
67+
"id": "esriworldimagery",
68+
"thumbgallery": "img/basemap/esriworldwide.jpg",
69+
"title": "Esri",
70+
"label": "Esri world imagery",
71+
"type": "OSM",
72+
"url": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
73+
"attribution": "<a href=\"https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9\" target=\"_blank\" >Esri world imagery</a>"
74+
},
6075
"ortho1": {
6176
"id": "ortho1",
6277
"thumbgallery": "img/basemap/ortho.jpg",
6378
"title": "GéoBretagne",
64-
"label": "Photo aérienne actuelle",
79+
"label": "Photo aérienne actuelle GéoBretagne",
6580
"type": "WMTS",
6681
"url": "https://tile.geobretagne.fr/gwc02/service/wmts",
6782
"layers": "satellite",
@@ -75,7 +90,7 @@
7590
"id": "ortho_ir",
7691
"thumbgallery": "img/basemap/ir.jpg",
7792
"title": "GéoBretagne",
78-
"label": "Photo aérienne infra rouge",
93+
"label": "Photo aérienne infra rouge GéoBretagne",
7994
"type": "WMTS",
8095
"url": "https://geobretagne.fr/geoserver/gwc/service/wmts",
8196
"layers": "photo:ir-composite",
@@ -89,7 +104,7 @@
89104
"id": "osm_google",
90105
"thumbgallery": "img/basemap/osm_google.png",
91106
"title": "GéoBretagne",
92-
"label": "OpenStreetMap",
107+
"label": "OpenStreetMap GéoBretagne",
93108
"type": "WMS",
94109
"url": "https://osm.geobretagne.fr/gwc01/service/wms",
95110
"layers": "osm:google",
@@ -129,21 +144,6 @@
129144
"style": "normal",
130145
"matrixset": "PM",
131146
"maxzoom": "22"
132-
},
133-
"ortho_ign": {
134-
"id": "ortho_ign",
135-
"thumbgallery": "img/basemap/ortho.jpg",
136-
"title": "IGN",
137-
"label": "Photographies aériennes IGN",
138-
"type": "WMTS",
139-
"url": "https://wxs.ign.fr/choisirgeoportail/geoportail/wmts?",
140-
"layers": "ORTHOIMAGERY.ORTHOPHOTOS",
141-
"format": "image/jpeg",
142-
"fromcapacity": "false",
143-
"attribution": "<a href='https://geoservices.ign.fr' target='_blank'><img src='https://geoservices.ign.fr/images/logoIGN.png'></a>",
144-
"style": "normal",
145-
"matrixset": "PM",
146-
"maxzoom": "22"
147147
}
148148
},
149149
"data_providers": {

css/_variables.scss

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
2+
$font-family-sans-serif: Poppins, sans-serif;
3+
$font-size-base: 0.9rem;
4+
$primary: rgb(44, 44, 82);
5+
$gray-200: #eaeaea;
6+
$secondary: $gray-200;
7+
$warning: #f5ae54;
8+
$danger: #ff9085;
9+
$success: #2ed2c5;
10+
$info: #934ae4;
11+
$gray-100: #f5f5f5;
12+
$gray-300: #DFDFDF;
13+
$gray-400: #D1D1D1;
14+
$gray-500: #BDBDBD;
15+
$gray-600: rgb(146, 146, 146);
16+
$gray-700: rgb(78, 78, 78);
17+
$gray-900: rgb(34, 36, 36);
18+
$body-color: $gray-700;
19+
$paragraph-margin-bottom: 0.5rem;
20+
$border-radius: 0.6rem;
21+
$border-radius-sm: 0.5rem;
22+
$border-radius-lg: 0.6rem;
23+
$caret-vertical-align: $caret-width * .8;
24+
$input-btn-padding-y: 0.5rem;
25+
$input-btn-focus-width: 0rem;
26+
$badge-font-weight: $font-weight-normal;
27+
$badge-padding-y: 0.4em;
28+
$badge-padding-x: 0.7em;
29+
$close-font-weight: $font-weight-light;
30+
$code-font-size: 88.5%;
31+
$close-font-size: $font-size-base * 2;
32+
$close-color: $gray-700;
33+
$list-group-item-padding-y: 0.9rem;
34+
$badge-pill-padding-x: 0.8em;
35+
$badge-pill-border-radius: 5rem;
36+
$modal-content-border-color: rgba($black, .1);
37+
$navbar-nav-link-padding-x: 0.5rem;
38+
$navbar-padding-y: $spacer / 1;
39+
$component-active-bg: theme-color("info");
40+
$link-color: theme-color("info");
41+
$input-focus-border-color: $gray-100;
42+
$input-focus-bg: $gray-100;
43+
$modal-inner-padding: 1.7rem;
44+
$modal-header-padding-y: 1.7rem;
45+
$modal-header-padding-x: 1.7rem;
46+
$custom-control-indicator-size: 1.2rem;
47+
$custom-control-spacer-x: 1.2rem;
48+
$btn-border-radius: 0.8rem;
49+
$custom-control-gutter: 0.5rem;
50+
$modal-footer-margin-between: 0.5rem;
51+
$input-btn-padding-y-sm: 0.5rem;
52+
$input-btn-padding-x: 1rem;
53+
$input-btn-padding-x-lg: 0.8rem;

0 commit comments

Comments
 (0)