Compare commits
60 commits
dd1e0ee63c
...
72a447d7f6
Author | SHA1 | Date | |
---|---|---|---|
![]() |
72a447d7f6 | ||
![]() |
246aedaeb9 | ||
![]() |
ec7c85db3a | ||
![]() |
827fd39925 | ||
![]() |
d8e73121cf | ||
![]() |
43f3701a6f | ||
![]() |
c42bbf2b7b | ||
![]() |
d0156bc7a6 | ||
![]() |
a7b714c887 | ||
![]() |
f3c95bd13d | ||
![]() |
bf2ed185db | ||
![]() |
4070da392a | ||
![]() |
ec23f09e5b | ||
![]() |
b10dadd453 | ||
![]() |
42f74e1554 | ||
![]() |
97ff26b6e8 | ||
![]() |
b7649a5e47 | ||
![]() |
92431d3b83 | ||
![]() |
20b2290d00 | ||
![]() |
f4814797d7 | ||
![]() |
0b818e8b75 | ||
![]() |
b692cb0cd1 | ||
![]() |
1f13c6ef00 | ||
![]() |
a9b13c709d | ||
![]() |
50efbc25be | ||
![]() |
d99fe70e36 | ||
![]() |
d64cdae987 | ||
![]() |
da86020a0b | ||
![]() |
7f3726ddd1 | ||
![]() |
2c601e483d | ||
![]() |
171aba6676 | ||
![]() |
b7c77b9c9f | ||
![]() |
82853f7ade | ||
![]() |
acbdfda581 | ||
![]() |
e012d57e5c | ||
![]() |
6a0bc9443b | ||
![]() |
4949fcb4a4 | ||
![]() |
430dede0dd | ||
![]() |
d9c04c7d0a | ||
![]() |
8f7e5c7252 | ||
![]() |
c9d532508d | ||
![]() |
6221b709f4 | ||
![]() |
2b2580fa22 | ||
![]() |
26ff82e838 | ||
![]() |
8fa26a02a2 | ||
![]() |
9a900319af | ||
![]() |
e01a526935 | ||
![]() |
8569b827ca | ||
![]() |
2dab2f23b5 | ||
![]() |
f4ff1048bd | ||
![]() |
6310cde28b | ||
![]() |
666a92ec44 | ||
![]() |
2f776dab59 | ||
![]() |
bba9487847 | ||
![]() |
995052d83e | ||
![]() |
7e53e50b9c | ||
![]() |
f6f42f5e6b | ||
![]() |
1a88c11289 | ||
![]() |
78d6699a81 | ||
![]() |
4acb20f3bb |
|
@ -47,7 +47,7 @@ Voici un bref passage en revu des différents imports proposés et pour finir l
|
|||
|
||||
## 1. Importer le contour d’une commune
|
||||
|
||||
Cliquez sur l’outil d’importation en bas de la barre de droite, puis descendez jusqu’au cadre « Assistants d’import ».
|
||||
Cliquez sur l’outil d’importation en bas de la barre de droite, puis cliquez sur le lien « Assistants d’import ».
|
||||
|
||||
Cliquez sur « Communes France » et sélectionnez la commune souhaitée dans une liste déroulante. Une fois la commune sélectionnée, le format est reconnu automatiquement (geojson) puis le type de calque (cliquer sur « ? » pour savoir quel choix opérer)
|
||||
|
||||
|
@ -64,7 +64,7 @@ Une fois cet import réalisé, tout est réglable : couleur de contour, de fond,
|
|||
|
||||
## 2. Importer les contours des départements ou des régions
|
||||
|
||||
Cliquez sur l’outil d’importation en bas de la barre de droite, puis descendez jusqu’au cadre « Assistants d’import ».
|
||||
Cliquez sur l’outil d’importation en bas de la barre de droite, puis cliquez sur le lien « Assistants d’import ».
|
||||
|
||||
Cliquez sur « Contours nationaux » puis soit départements, soit régions et enfin le type de calque (voir supra l’explication). Tous les départements sont importés :
|
||||
|
||||
|
@ -72,7 +72,7 @@ Cliquez sur « Contours nationaux » puis soit départements, soit régions et
|
|||
|
||||
## 3. Importer un point d’intérêt issu de GeoDataMine
|
||||
|
||||
Cliquez sur l’outil d’importation en bas de la barre de droite, puis descendez jusqu’au cadre « Assistants d’import ».
|
||||
Cliquez sur l’outil d’importation en bas de la barre de droite, puis cliquez sur le lien « Assistants d’import ».
|
||||
|
||||
Cliquez sur « GeoDataMine (thèmes OSM) » et sélectionnez les informations souhaitées, routes, bâtiments, commerces, services publics, …
|
||||
Par exemple, en sélectionnant les points d’eau potable de la CA du Grand Avignon, puis « Copier dans un calque »
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Force rtfd to use a recent version of mkdocs
|
||||
mkdocs==1.6.1
|
||||
pymdown-extensions==10.12
|
||||
mkdocs-material==9.5.47
|
||||
mkdocs-material==9.5.48
|
||||
mkdocs-static-i18n==1.2.3
|
||||
|
|
Before Width: | Height: | Size: 3.4 MiB After Width: | Height: | Size: 734 KiB |
|
@ -175,11 +175,6 @@ UMAP_EXTRA_URLS = {
|
|||
}
|
||||
```
|
||||
|
||||
#### UMAP_KEEP_VERSIONS
|
||||
|
||||
How many datalayer versions to keep. 10 by default.
|
||||
|
||||
|
||||
#### UMAP_DEFAULT_EDIT_STATUS
|
||||
|
||||
Define the map default edit status.
|
||||
|
@ -270,6 +265,16 @@ Available importers:
|
|||
- `communesfr`: download French communes boundaries, from https://geo.api.gouv.fr/
|
||||
- `datasets`: define URLs you want to promote to users, with a `name` and a `format`
|
||||
|
||||
#### UMAP_KEEP_VERSIONS
|
||||
|
||||
How many datalayer versions to keep. 10 by default.
|
||||
|
||||
#### UMAP_LABEL_KEYS
|
||||
|
||||
List of properties to consider as "Feature label" (to show in popup or in browser).
|
||||
|
||||
UMAP_LABEL_KEYS = ["name", "title"]
|
||||
|
||||
#### UMAP_MAPS_PER_PAGE
|
||||
|
||||
How many maps to show in maps list, like search or home page.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Force rtfd to use a recent version of mkdocs
|
||||
mkdocs==1.6.1
|
||||
pymdown-extensions==10.12
|
||||
mkdocs-material==9.5.47
|
||||
mkdocs-material==9.5.48
|
||||
mkdocs-static-i18n==1.2.3
|
||||
|
|
|
@ -28,7 +28,7 @@ classifiers = [
|
|||
"Programming Language :: Python :: 3.12",
|
||||
]
|
||||
dependencies = [
|
||||
"Django==5.1.3",
|
||||
"Django==5.1.4",
|
||||
"django-agnocomplete==2.2.0",
|
||||
"django-environ==0.11.2",
|
||||
"django-probes==1.7.0",
|
||||
|
@ -44,10 +44,10 @@ dependencies = [
|
|||
[project.optional-dependencies]
|
||||
dev = [
|
||||
"hatch==1.13.0",
|
||||
"ruff==0.8.1",
|
||||
"djlint==1.36.1",
|
||||
"ruff==0.8.2",
|
||||
"djlint==1.36.3",
|
||||
"mkdocs==1.6.1",
|
||||
"mkdocs-material==9.5.47",
|
||||
"mkdocs-material==9.5.48",
|
||||
"mkdocs-static-i18n==1.2.3",
|
||||
"vermin==1.6.0",
|
||||
"pymdown-extensions==10.12",
|
||||
|
@ -56,10 +56,10 @@ dev = [
|
|||
test = [
|
||||
"factory-boy==3.3.1",
|
||||
"playwright>=1.39",
|
||||
"pytest==8.3.3",
|
||||
"pytest==8.3.4",
|
||||
"pytest-django==4.9.0",
|
||||
"pytest-playwright==0.6.2",
|
||||
"pytest-rerunfailures==14.0",
|
||||
"pytest-rerunfailures==15.0",
|
||||
"pytest-xdist>=3.5.0,<4",
|
||||
]
|
||||
docker = [
|
||||
|
@ -68,8 +68,8 @@ docker = [
|
|||
sync = [
|
||||
"channels==4.2.0",
|
||||
"daphne==4.1.2",
|
||||
"pydantic==2.10.2",
|
||||
"websockets==13.1",
|
||||
"pydantic==2.10.3",
|
||||
"websockets==14.1",
|
||||
]
|
||||
|
||||
[project.scripts]
|
||||
|
|
|
@ -273,6 +273,7 @@ UMAP_HOME_FEED = "latest"
|
|||
UMAP_IMPORTERS = {}
|
||||
UMAP_HOST_INFOS = {}
|
||||
UMAP_PURGATORY_ROOT = "/tmp/umappurgatory"
|
||||
UMAP_LABEL_KEYS = ["name", "title"]
|
||||
|
||||
UMAP_READONLY = env("UMAP_READONLY", default=False)
|
||||
UMAP_GZIP = True
|
||||
|
|
|
@ -157,613 +157,13 @@ dt {
|
|||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
.grid-container.by4 {
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
}
|
||||
.grid-container > * {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* *********** */
|
||||
/* forms */
|
||||
/* *********** */
|
||||
input[type="text"], input[type="password"], input[type="date"],
|
||||
input[type="datetime-local"], input[type="email"], input[type="number"],
|
||||
input[type="search"], input[type="tel"], input[type="time"], input[type="file"],
|
||||
input[type="url"], textarea {
|
||||
background-color: white;
|
||||
border: 1px solid #CCCCCC;
|
||||
border-radius: 2px 2px 2px 2px;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset;
|
||||
color: rgba(0, 0, 0, 0.75);
|
||||
display: block;
|
||||
font-family: inherit;
|
||||
margin: 0;
|
||||
margin-bottom: var(--box-margin);
|
||||
padding: 7px;
|
||||
width: 100%;
|
||||
}
|
||||
input[type="range"] {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 5px;
|
||||
width: 100%;
|
||||
}
|
||||
input[type="radio"] {
|
||||
margin-inline-end: var(--text-margin);
|
||||
}
|
||||
input[type="checkbox"] {
|
||||
margin: 0 var(--text-margin);
|
||||
vertical-align: middle;
|
||||
appearance: none;
|
||||
}
|
||||
input[type="checkbox"]:after {
|
||||
display: inline-block;
|
||||
content: ' ';
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border: 1px solid var(--color-lightGray);
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
font-size: 1rem;
|
||||
line-height: 0.8rem;
|
||||
}
|
||||
input[type=checkbox]:checked:after {
|
||||
background-color: var(--color-lightCyan);
|
||||
content: '✓';
|
||||
color: var(--color-darkGray);
|
||||
}
|
||||
|
||||
input[data-modified=true] {
|
||||
background-color: var(--color-lightCyan);
|
||||
border: 1px solid var(--color-darkGray);
|
||||
}
|
||||
textarea {
|
||||
height: inherit;
|
||||
padding: 7px;
|
||||
min-height: 15rem;
|
||||
min-height: 6rlh;
|
||||
}
|
||||
select {
|
||||
border: 1px solid #222;
|
||||
width: 100%;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: var(--box-margin);
|
||||
}
|
||||
.dark select {
|
||||
color: #efefef;
|
||||
background-color: #393F3F;
|
||||
}
|
||||
select[multiple="multiple"] {
|
||||
height: auto;
|
||||
}
|
||||
.button,
|
||||
[type="button"],
|
||||
input[type="submit"] {
|
||||
display: block;
|
||||
margin-bottom: 14px;
|
||||
text-align: center;
|
||||
border-radius: 2px;
|
||||
font-weight: normal;
|
||||
cursor: pointer;
|
||||
padding: 7px;
|
||||
width: 100%;
|
||||
min-height: 32px;
|
||||
line-height: 32px;
|
||||
border: none;
|
||||
text-decoration: none;
|
||||
background-color: white;
|
||||
}
|
||||
.dark .button,
|
||||
.dark [type="button"] {
|
||||
background-color: var(--color-darkerGray);
|
||||
color: var(--text-color);
|
||||
border: 1px solid #1b1f20;
|
||||
}
|
||||
.dark .button:hover,
|
||||
.dark [type="button"]:hover,
|
||||
.dark input[type="submit"]:hover {
|
||||
background-color: #2e3436;
|
||||
}
|
||||
.dark a {
|
||||
color: var(--text-color);
|
||||
}
|
||||
button.flat,
|
||||
[type="button"].flat,
|
||||
.dark [type="button"].flat {
|
||||
border: none;
|
||||
background-color: inherit;
|
||||
padding: 0;
|
||||
text-align: start;
|
||||
min-height: inherit;
|
||||
width: initial;
|
||||
display: initial;
|
||||
line-height: inherit;
|
||||
color: var(--text-color);
|
||||
}
|
||||
button.flat:hover,
|
||||
[type="button"].flat:hover,
|
||||
.dark [type="button"].flat:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.help-text, .helptext {
|
||||
display: block;
|
||||
padding: 7px 7px;
|
||||
margin-bottom: 14px;
|
||||
background: #393F3F;
|
||||
color: var(--color-lightGray);
|
||||
font-size: 10px;
|
||||
border-radius: 0 2px;
|
||||
}
|
||||
.content .helptext {
|
||||
background-color: #eee;
|
||||
color: #000;
|
||||
}
|
||||
input + .help-text {
|
||||
margin-top: -14px;
|
||||
}
|
||||
.formbox {
|
||||
min-height: 36px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
.formbox.with-switch {
|
||||
padding-top: 2px;
|
||||
}
|
||||
fieldset.formbox {
|
||||
border: none;
|
||||
border-top: 1px solid var(--color-lightGray);
|
||||
}
|
||||
label {
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
line-height: 21px;
|
||||
width: 100%;
|
||||
}
|
||||
label + label {
|
||||
margin-top: var(--box-margin);
|
||||
}
|
||||
.content label {
|
||||
font-weight: bold;
|
||||
}
|
||||
input[type="checkbox"] + label {
|
||||
display: inline;
|
||||
padding: 0 14px;
|
||||
}
|
||||
select + .error,
|
||||
input + .error {
|
||||
display: block;
|
||||
padding: 7px 7px;
|
||||
margin-top: -14px;
|
||||
margin-bottom: 14px;
|
||||
background: var(--color-lightGray);
|
||||
color: #fff;
|
||||
background-color: #cc0000;
|
||||
font-size: 11px;
|
||||
border-radius: 0 2px;
|
||||
}
|
||||
input[type="file"] + .error {
|
||||
margin-top: 0;
|
||||
}
|
||||
input[value]:invalid {
|
||||
border-color: red;
|
||||
background-color: darkred;
|
||||
}
|
||||
.dark input, .dark textarea {
|
||||
background-color: #232729;
|
||||
border-color: #1b1f20;
|
||||
color: #efefef;
|
||||
}
|
||||
details {
|
||||
margin-bottom: 5px;
|
||||
border-start-start-radius: 4px;
|
||||
border-start-end-radius: 4px;
|
||||
}
|
||||
.dark details {
|
||||
border: 1px solid #222;
|
||||
}
|
||||
details fieldset {
|
||||
overflow: hidden;
|
||||
border: 1px solid var(--color-lightGray);
|
||||
margin: 0;
|
||||
padding-top: 10px;
|
||||
}
|
||||
details summary {
|
||||
cursor: pointer;
|
||||
background-color: var(--color-lightGray);
|
||||
line-height: 30px;
|
||||
font-size: 1.2em;
|
||||
padding: 0 5px;
|
||||
}
|
||||
.dark details summary {
|
||||
background-color: #232729;
|
||||
color: #fff;
|
||||
}
|
||||
.dark details fieldset {
|
||||
border: 1px solid var(--color-darkGray);
|
||||
}
|
||||
fieldset legend {
|
||||
font-size: .9rem;
|
||||
padding: 0 5px;
|
||||
}
|
||||
fieldset.separator {
|
||||
border: none;
|
||||
border-top: 1px solid var(--color-lightGray);
|
||||
}
|
||||
|
||||
[data-badge] {
|
||||
position: relative;
|
||||
}
|
||||
[data-badge]:after {
|
||||
position: absolute;
|
||||
inset-inline-end: -6px;
|
||||
top: -6px;
|
||||
min-width: 8px;
|
||||
min-height: 8px;
|
||||
line-height: 8px;
|
||||
padding: 2px;
|
||||
font-weight: bold;
|
||||
background-color: var(--color-accent);
|
||||
color: var(--color-darkBlue);
|
||||
text-align: center;
|
||||
font-size: .75rem;
|
||||
border-radius: 50%;
|
||||
content: attr(data-badge);
|
||||
}
|
||||
[hidden] {
|
||||
display: none!important;
|
||||
}
|
||||
|
||||
/* Switch */
|
||||
input.switch:empty {
|
||||
display: none;
|
||||
}
|
||||
input.switch:empty ~ label {
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
float: inline-start;
|
||||
line-height: 2em;
|
||||
height: 2em;
|
||||
text-indent: 6em;
|
||||
margin: 0.2em 0;
|
||||
cursor: pointer;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
text-shadow: 0 1px rgba(0, 0, 0, 0.1);
|
||||
width: 80px;
|
||||
}
|
||||
input.switch:empty ~ label:before,
|
||||
input.switch:empty ~ label:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
inset-inline-start: 0;
|
||||
content: ' ';
|
||||
width: 6em;
|
||||
-webkit-transition: all 100ms ease-in;
|
||||
transition: all 100ms ease-in;
|
||||
color: #c9c9c7;
|
||||
font-weight: bold;
|
||||
background-color: #ededed;
|
||||
}
|
||||
.dark input.switch:empty ~ label:before,
|
||||
.dark input.switch:empty ~ label:after {
|
||||
background-color: #272c2e;
|
||||
}
|
||||
input.switch:empty ~ label:after {
|
||||
width: 3em;
|
||||
margin-inline-start: 0.1em;
|
||||
background-color: #ededed;
|
||||
content: "OFF";
|
||||
text-indent: 3.5em;
|
||||
border: 1px solid #374E75;
|
||||
font-weight: bold;
|
||||
}
|
||||
.dark input.switch:empty ~ label:after {
|
||||
border: 1px solid #202425;
|
||||
background-color: #2c3233;
|
||||
}
|
||||
input.switch:checked:empty ~ label:after {
|
||||
content: ' ';
|
||||
}
|
||||
.dark input.switch:checked ~ label:before,
|
||||
input.switch:checked ~ label:before {
|
||||
background-color: var(--color-lightCyan);
|
||||
border: 1px solid var(--color-lightGray);
|
||||
color: var(--color-darkGray);
|
||||
content: "ON";
|
||||
text-indent: 0.7em;
|
||||
text-align: start;
|
||||
font-weight: bold;
|
||||
}
|
||||
.dark input.switch:checked ~ label:before {
|
||||
border: none;
|
||||
background-color: var(--color-accent);
|
||||
}
|
||||
input.switch:checked ~ label:after {
|
||||
margin-inline-start: 3em;
|
||||
}
|
||||
.button-bar, .umap-multiplechoice {
|
||||
margin-top: 5px;
|
||||
text-align: center;
|
||||
display: grid;
|
||||
width: 100%
|
||||
}
|
||||
.button-bar {
|
||||
grid-gap: 7px;
|
||||
}
|
||||
.umap-multiplechoice.by2,
|
||||
.button-bar.half {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
.button-bar.by3,
|
||||
.button-bar.by5,
|
||||
.button-bar.by6,
|
||||
.umap-multiplechoice.by3,
|
||||
.umap-multiplechoice.by5,
|
||||
.umap-multiplechoice.by6 {
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
}
|
||||
.button-bar.by4,
|
||||
.umap-multiplechoice.by4 {
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr;
|
||||
}
|
||||
.button-bar .button,
|
||||
.button-bar [type="button"] {
|
||||
display: inline-block;
|
||||
}
|
||||
.umap-multiplechoice input[type='radio'] {
|
||||
display: none;
|
||||
}
|
||||
.umap-multiplechoice label {
|
||||
border: 1px solid #374E75;
|
||||
cursor: pointer;
|
||||
background-color: #c9c9c7;
|
||||
min-height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
}
|
||||
.dark .umap-multiplechoice label {
|
||||
border: 1px solid black;
|
||||
background-color: #2c3233;
|
||||
}
|
||||
.umap-multiplechoice input[type='radio']:checked + label {
|
||||
background-color: var(--color-accent);
|
||||
box-shadow: inset 0 0 6px 0px #2c3233;
|
||||
color: var(--color-darkGray);
|
||||
}
|
||||
.inheritable .header,
|
||||
.inheritable {
|
||||
clear: both;
|
||||
overflow: hidden;
|
||||
}
|
||||
.inheritable .header {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.inheritable .header label {
|
||||
padding-top: 6px;
|
||||
}
|
||||
.inheritable + .inheritable {
|
||||
border-top: 1px solid #222;
|
||||
padding-top: 5px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
.umap-field-iconUrl .action-button,
|
||||
.inheritable .define,
|
||||
.inheritable .undefine {
|
||||
float: inline-end;
|
||||
width: initial;
|
||||
min-height: 18px;
|
||||
line-height: 18px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.inheritable .quick-actions {
|
||||
float: inline-end;
|
||||
}
|
||||
.inheritable .quick-actions .formbox {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.inheritable .quick-actions input {
|
||||
width: 100px;
|
||||
margin-inline-end: 5px;
|
||||
}
|
||||
.inheritable .define,
|
||||
.inheritable.undefined .undefine,
|
||||
.inheritable.undefined .show-on-defined {
|
||||
display: none;
|
||||
}
|
||||
.inheritable.undefined .define {
|
||||
display: block;
|
||||
}
|
||||
i.info {
|
||||
background-repeat: no-repeat;
|
||||
background-image: url('./img/16.svg');
|
||||
background-position: -170px -50px;
|
||||
display: inline-block;
|
||||
margin-inline-start: 5px;
|
||||
vertical-align: middle;
|
||||
width: 16px;
|
||||
height: 18px;
|
||||
}
|
||||
.dark i.info {
|
||||
background-image: url('./img/16-white.svg');
|
||||
}
|
||||
.with-transition {
|
||||
transition: all .7s;
|
||||
}
|
||||
.umap-empty:before, .umap-to-polygon:before,
|
||||
.umap-clone:before, .umap-edit:before, .umap-download:before,
|
||||
.umap-to-polyline:before {
|
||||
background-repeat: no-repeat;
|
||||
text-indent: 36px;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
display: inline-block;
|
||||
background-image: url('./img/24.svg');
|
||||
vertical-align: bottom;
|
||||
content: " ";
|
||||
}
|
||||
.dark .umap-empty:before,
|
||||
.dark .umap-to-polygon:before,
|
||||
.dark .umap-clone:before,
|
||||
.dark .umap-edit:before, .dark .umap-download:before,
|
||||
.dark .umap-to-polyline:before {
|
||||
background-image: url('./img/24-white.svg');
|
||||
vertical-align: middle;
|
||||
}
|
||||
.umap-to-polygon:before {
|
||||
background-position: -72px -42px;
|
||||
}
|
||||
.umap-to-polyline:before {
|
||||
background-position: -106px -42px;
|
||||
}
|
||||
.umap-clone:before {
|
||||
background-position: -144px -78px;
|
||||
}
|
||||
.umap-empty:before {
|
||||
background-position: -108px -78px;
|
||||
}
|
||||
.umap-download:before {
|
||||
background-position: -72px -78px;
|
||||
}
|
||||
.permissions-panel,
|
||||
.umap-upload,
|
||||
.umap-share,
|
||||
.umap-datalayer-container,
|
||||
.umap-layer-properties-container,
|
||||
.umap-browse-data,
|
||||
.umap-tilelayer-switcher-container {
|
||||
padding: 0 10px;
|
||||
}
|
||||
.umap-field-datalist {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 9px;
|
||||
margin-top: -8px;
|
||||
padding: 0 5px;
|
||||
}
|
||||
.flat-tabs {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 20px;
|
||||
border-bottom: 1px solid #bebebe;
|
||||
}
|
||||
.flat-tabs button {
|
||||
padding: 10px;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
border-bottom: 1px solid transparent;
|
||||
}
|
||||
.flat-tabs button:hover,
|
||||
.flat-tabs .on {
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #444;
|
||||
}
|
||||
.dark .flat-tabs button {
|
||||
color: #fff;
|
||||
}
|
||||
.dark .flat-tabs button:hover,
|
||||
.dark .flat-tabs .on {
|
||||
border-bottom: 1px solid #fff;
|
||||
}
|
||||
.umap-pictogram-category h6 {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
.umap-pictogram-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, 30px);
|
||||
justify-content: space-between;
|
||||
grid-gap: 5px;
|
||||
}
|
||||
.umap-pictogram-choice {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
cursor: pointer;
|
||||
background-color: #999;
|
||||
text-align: center;
|
||||
margin-bottom: 5px;
|
||||
display: block;
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
}
|
||||
.umap-pictogram-choice img {
|
||||
vertical-align: middle;
|
||||
max-width: 24px;
|
||||
}
|
||||
.umap-pictogram-choice:hover,
|
||||
.umap-color-picker span:hover {
|
||||
background-color: #bebebe;
|
||||
}
|
||||
.umap-pictogram-choice.selected {
|
||||
box-shadow: inset 0 0 0 1px #e9e9e9;
|
||||
}
|
||||
|
||||
.umap-pictogram-choice .leaflet-marker-icon {
|
||||
bottom: 0;
|
||||
inset-inline-start: 30px;
|
||||
position: absolute;
|
||||
}
|
||||
.umap-color-picker {
|
||||
clear: both;
|
||||
margin-bottom: 20px;
|
||||
overflow: hidden;
|
||||
display: none;
|
||||
}
|
||||
.umap-color-picker span {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
display: block;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
float: inline-start;
|
||||
}
|
||||
input.blur {
|
||||
width: calc(100% - 40px);
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
border-start-end-radius: 0;
|
||||
border-end-end-radius: 0;
|
||||
}
|
||||
.blur + .button:before,
|
||||
.blur + [type="button"]:before {
|
||||
content: '✔';
|
||||
}
|
||||
.blur + .button,
|
||||
.blur + [type="button"] {
|
||||
width: 40px;
|
||||
height: 18px;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
line-height: 18px;
|
||||
border-start-start-radius: 0;
|
||||
border-end-start-radius: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
input[type=hidden].blur + .button,
|
||||
input[type=hidden].blur + [type="button"] {
|
||||
display: none;
|
||||
}
|
||||
.copiable-input {
|
||||
display: flex;
|
||||
align-items: end;
|
||||
}
|
||||
.copiable-input input {
|
||||
border-radius: initial;
|
||||
}
|
||||
.copiable-input button {
|
||||
background-position: -46px -92px;
|
||||
display: inline;
|
||||
padding: 0 10px;
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
border: 1px solid #202425;
|
||||
border-radius: initial;
|
||||
}
|
||||
|
||||
/* *********** */
|
||||
/* Panel */
|
||||
|
|
617
umap/static/umap/css/form.css
Normal file
|
@ -0,0 +1,617 @@
|
|||
input[type="text"], input[type="password"], input[type="date"],
|
||||
input[type="datetime-local"], input[type="email"], input[type="number"],
|
||||
input[type="search"], input[type="tel"], input[type="time"], input[type="file"],
|
||||
input[type="url"], textarea {
|
||||
background-color: white;
|
||||
border: 1px solid #CCCCCC;
|
||||
border-radius: 2px 2px 2px 2px;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset;
|
||||
color: rgba(0, 0, 0, 0.75);
|
||||
display: block;
|
||||
font-family: inherit;
|
||||
margin: 0;
|
||||
margin-bottom: var(--box-margin);
|
||||
padding: 7px;
|
||||
width: 100%;
|
||||
}
|
||||
input[type="range"] {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 5px;
|
||||
width: 100%;
|
||||
}
|
||||
input[type="radio"] {
|
||||
margin-inline-end: var(--text-margin);
|
||||
}
|
||||
input[type="checkbox"] {
|
||||
margin: 0 var(--text-margin);
|
||||
vertical-align: middle;
|
||||
appearance: none;
|
||||
}
|
||||
input[type="checkbox"]:after {
|
||||
display: inline-block;
|
||||
content: ' ';
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border: 1px solid var(--color-lightGray);
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
font-size: 1rem;
|
||||
line-height: 0.8rem;
|
||||
}
|
||||
input[type=checkbox]:checked:after {
|
||||
background-color: var(--color-lightCyan);
|
||||
content: '✓';
|
||||
color: var(--color-darkGray);
|
||||
}
|
||||
|
||||
input[data-modified=true] {
|
||||
background-color: var(--color-lightCyan);
|
||||
border: 1px solid var(--color-darkGray);
|
||||
}
|
||||
textarea {
|
||||
height: inherit;
|
||||
padding: 7px;
|
||||
min-height: 15rem;
|
||||
min-height: 6rlh;
|
||||
}
|
||||
select {
|
||||
border: 1px solid #222;
|
||||
width: 100%;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: var(--box-margin);
|
||||
}
|
||||
.dark select {
|
||||
color: #efefef;
|
||||
background-color: #393F3F;
|
||||
}
|
||||
select[multiple="multiple"] {
|
||||
height: auto;
|
||||
}
|
||||
.button,
|
||||
[type="button"],
|
||||
input[type="submit"] {
|
||||
display: block;
|
||||
margin-bottom: 14px;
|
||||
text-align: center;
|
||||
border-radius: 2px;
|
||||
font-weight: normal;
|
||||
cursor: pointer;
|
||||
padding: 7px 14px;
|
||||
min-height: 32px;
|
||||
line-height: 32px;
|
||||
border: none;
|
||||
text-decoration: none;
|
||||
background-color: white;
|
||||
}
|
||||
.dark .button,
|
||||
.dark [type="button"] {
|
||||
background-color: var(--color-darkerGray);
|
||||
color: var(--text-color);
|
||||
border: 1px solid #1b1f20;
|
||||
}
|
||||
.dark .button.primary:not([disabled]),
|
||||
.dark [type="button"].primary:not([disabled]) {
|
||||
background-color: var(--color-brightCyan);
|
||||
color: var(--color-dark);
|
||||
border: 1px solid #1b1f20;
|
||||
}
|
||||
.dark .button:hover,
|
||||
.dark [type="button"]:hover,
|
||||
.dark input[type="submit"]:hover {
|
||||
background-color: #2e3436;
|
||||
}
|
||||
.dark a {
|
||||
color: var(--text-color);
|
||||
}
|
||||
.dark [type="button"][disabled],
|
||||
.dark input[type="submit"][disabled] {
|
||||
background-color: var(--color-mediumGray);
|
||||
cursor: not-allowed;
|
||||
}
|
||||
button.flat,
|
||||
[type="button"].flat,
|
||||
.dark [type="button"].flat {
|
||||
border: none;
|
||||
background-color: inherit;
|
||||
padding: 0;
|
||||
text-align: start;
|
||||
min-height: inherit;
|
||||
width: initial;
|
||||
display: initial;
|
||||
line-height: inherit;
|
||||
color: var(--text-color);
|
||||
}
|
||||
button.flat:hover,
|
||||
[type="button"].flat:hover,
|
||||
.dark [type="button"].flat:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.help-text, .helptext {
|
||||
display: block;
|
||||
padding: 7px 7px;
|
||||
margin-bottom: 14px;
|
||||
background: #393F3F;
|
||||
color: var(--color-lightGray);
|
||||
font-size: 10px;
|
||||
border-radius: 0 2px;
|
||||
}
|
||||
.content .helptext {
|
||||
background-color: #eee;
|
||||
color: #000;
|
||||
}
|
||||
input + .help-text {
|
||||
margin-top: -14px;
|
||||
}
|
||||
.formbox {
|
||||
min-height: 36px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
.formbox.with-switch {
|
||||
padding-top: 2px;
|
||||
}
|
||||
fieldset.formbox {
|
||||
border: none;
|
||||
border-top: 1px solid var(--color-lightGray);
|
||||
}
|
||||
label {
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
line-height: 21px;
|
||||
width: 100%;
|
||||
}
|
||||
label + label {
|
||||
margin-top: var(--box-margin);
|
||||
}
|
||||
.content label {
|
||||
font-weight: bold;
|
||||
}
|
||||
input[type="checkbox"] + label {
|
||||
display: inline;
|
||||
padding: 0 14px;
|
||||
}
|
||||
select + .error,
|
||||
input + .error {
|
||||
display: block;
|
||||
padding: 7px 7px;
|
||||
margin-top: -14px;
|
||||
margin-bottom: 14px;
|
||||
background: var(--color-lightGray);
|
||||
color: #fff;
|
||||
background-color: #cc0000;
|
||||
font-size: 11px;
|
||||
border-radius: 0 2px;
|
||||
}
|
||||
input[type="file"] + .error {
|
||||
margin-top: 0;
|
||||
}
|
||||
input[value]:invalid {
|
||||
border-color: red;
|
||||
background-color: darkred;
|
||||
}
|
||||
.dark input, .dark textarea {
|
||||
background-color: #232729;
|
||||
border-color: #1b1f20;
|
||||
color: #efefef;
|
||||
}
|
||||
details {
|
||||
margin-bottom: 5px;
|
||||
border-start-start-radius: 4px;
|
||||
border-start-end-radius: 4px;
|
||||
}
|
||||
.dark details {
|
||||
border: 1px solid #222;
|
||||
}
|
||||
details fieldset {
|
||||
overflow: hidden;
|
||||
border: 1px solid var(--color-lightGray);
|
||||
margin: 0;
|
||||
padding-top: 10px;
|
||||
}
|
||||
details summary {
|
||||
cursor: pointer;
|
||||
background-color: var(--color-lightGray);
|
||||
line-height: 30px;
|
||||
font-size: 1.2em;
|
||||
padding: 0 5px;
|
||||
}
|
||||
.dark details summary {
|
||||
background-color: #232729;
|
||||
color: #fff;
|
||||
}
|
||||
.dark details fieldset {
|
||||
border: 1px solid var(--color-darkGray);
|
||||
}
|
||||
fieldset legend {
|
||||
font-size: .9rem;
|
||||
padding: 0 5px;
|
||||
}
|
||||
fieldset.separator {
|
||||
border: none;
|
||||
border-top: 1px solid var(--color-lightGray);
|
||||
}
|
||||
|
||||
[data-badge] {
|
||||
position: relative;
|
||||
}
|
||||
[data-badge]:after {
|
||||
position: absolute;
|
||||
inset-inline-end: -6px;
|
||||
top: -6px;
|
||||
min-width: 8px;
|
||||
min-height: 8px;
|
||||
line-height: 8px;
|
||||
padding: 2px;
|
||||
font-weight: bold;
|
||||
background-color: var(--color-accent);
|
||||
color: var(--color-darkBlue);
|
||||
text-align: center;
|
||||
font-size: .75rem;
|
||||
border-radius: 50%;
|
||||
content: attr(data-badge);
|
||||
}
|
||||
[hidden] {
|
||||
display: none!important;
|
||||
}
|
||||
|
||||
/* Switch */
|
||||
input.switch:empty {
|
||||
display: none;
|
||||
}
|
||||
input.switch:empty ~ label {
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
float: inline-start;
|
||||
line-height: 2em;
|
||||
height: 2em;
|
||||
text-indent: 6em;
|
||||
margin: 0.2em 0;
|
||||
cursor: pointer;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
text-shadow: 0 1px rgba(0, 0, 0, 0.1);
|
||||
width: 80px;
|
||||
}
|
||||
input.switch:empty ~ label:before,
|
||||
input.switch:empty ~ label:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
inset-inline-start: 0;
|
||||
content: ' ';
|
||||
width: 6em;
|
||||
-webkit-transition: all 100ms ease-in;
|
||||
transition: all 100ms ease-in;
|
||||
color: #c9c9c7;
|
||||
font-weight: bold;
|
||||
background-color: #ededed;
|
||||
}
|
||||
.dark input.switch:empty ~ label:before,
|
||||
.dark input.switch:empty ~ label:after {
|
||||
background-color: #272c2e;
|
||||
}
|
||||
input.switch:empty ~ label:after {
|
||||
width: 3em;
|
||||
margin-inline-start: 0.1em;
|
||||
background-color: #ededed;
|
||||
content: "OFF";
|
||||
text-indent: 3.5em;
|
||||
border: 1px solid #374E75;
|
||||
font-weight: bold;
|
||||
}
|
||||
.dark input.switch:empty ~ label:after {
|
||||
border: 1px solid #202425;
|
||||
background-color: #2c3233;
|
||||
}
|
||||
input.switch:checked:empty ~ label:after {
|
||||
content: ' ';
|
||||
}
|
||||
.dark input.switch:checked ~ label:before,
|
||||
input.switch:checked ~ label:before {
|
||||
background-color: var(--color-lightCyan);
|
||||
border: 1px solid var(--color-lightGray);
|
||||
color: var(--color-darkGray);
|
||||
content: "ON";
|
||||
text-indent: 0.7em;
|
||||
text-align: start;
|
||||
font-weight: bold;
|
||||
}
|
||||
.dark input.switch:checked ~ label:before {
|
||||
border: none;
|
||||
background-color: var(--color-accent);
|
||||
}
|
||||
input.switch:checked ~ label:after {
|
||||
margin-inline-start: 3em;
|
||||
}
|
||||
.button-bar, .umap-multiplechoice {
|
||||
margin-top: 5px;
|
||||
text-align: center;
|
||||
display: grid;
|
||||
width: 100%
|
||||
}
|
||||
.button-bar {
|
||||
grid-gap: 7px;
|
||||
}
|
||||
.umap-multiplechoice.by2,
|
||||
.button-bar.half {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
.button-bar.by3,
|
||||
.button-bar.by5,
|
||||
.button-bar.by6,
|
||||
.umap-multiplechoice.by3,
|
||||
.umap-multiplechoice.by5,
|
||||
.umap-multiplechoice.by6 {
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
}
|
||||
.button-bar.by4,
|
||||
.umap-multiplechoice.by4 {
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr;
|
||||
}
|
||||
.button-bar .button,
|
||||
.button-bar [type="button"] {
|
||||
display: inline-block;
|
||||
}
|
||||
.umap-multiplechoice input[type='radio'] {
|
||||
display: none;
|
||||
}
|
||||
.umap-multiplechoice label {
|
||||
border: 1px solid #374E75;
|
||||
cursor: pointer;
|
||||
background-color: #c9c9c7;
|
||||
min-height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
}
|
||||
.dark .umap-multiplechoice label {
|
||||
border: 1px solid black;
|
||||
background-color: #2c3233;
|
||||
}
|
||||
.umap-multiplechoice input[type='radio']:checked + label {
|
||||
background-color: var(--color-accent);
|
||||
box-shadow: inset 0 0 6px 0px #2c3233;
|
||||
color: var(--color-darkGray);
|
||||
}
|
||||
.inheritable .header,
|
||||
.inheritable {
|
||||
clear: both;
|
||||
overflow: hidden;
|
||||
}
|
||||
.inheritable .header {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.inheritable .header label {
|
||||
padding-top: 6px;
|
||||
}
|
||||
.inheritable + .inheritable {
|
||||
border-top: 1px solid #222;
|
||||
padding-top: 5px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
.umap-field-iconUrl .action-button,
|
||||
.inheritable .define,
|
||||
.inheritable .undefine {
|
||||
float: inline-end;
|
||||
width: initial;
|
||||
min-height: 18px;
|
||||
line-height: 18px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.inheritable .quick-actions {
|
||||
float: inline-end;
|
||||
}
|
||||
.inheritable .quick-actions .formbox {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.inheritable .quick-actions input {
|
||||
width: 100px;
|
||||
margin-inline-end: 5px;
|
||||
}
|
||||
.inheritable .define,
|
||||
.inheritable.undefined .undefine,
|
||||
.inheritable.undefined .show-on-defined {
|
||||
display: none;
|
||||
}
|
||||
.inheritable.undefined .define {
|
||||
display: block;
|
||||
}
|
||||
|
||||
i.info {
|
||||
background-repeat: no-repeat;
|
||||
background-image: url('../img/16.svg');
|
||||
background-position: -170px -50px;
|
||||
display: inline-block;
|
||||
margin-inline-start: 5px;
|
||||
vertical-align: middle;
|
||||
width: 16px;
|
||||
height: 18px;
|
||||
}
|
||||
.dark i.info {
|
||||
background-image: url('../img/16-white.svg');
|
||||
}
|
||||
.with-transition {
|
||||
transition: all .7s;
|
||||
}
|
||||
.umap-empty:before, .umap-to-polygon:before,
|
||||
.umap-clone:before, .umap-edit:before, .umap-download:before,
|
||||
.umap-to-polyline:before {
|
||||
background-repeat: no-repeat;
|
||||
text-indent: 36px;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
display: inline-block;
|
||||
background-image: url('../img/24.svg');
|
||||
vertical-align: bottom;
|
||||
content: " ";
|
||||
}
|
||||
.dark .umap-empty:before,
|
||||
.dark .umap-to-polygon:before,
|
||||
.dark .umap-clone:before,
|
||||
.dark .umap-edit:before, .dark .umap-download:before,
|
||||
.dark .umap-to-polyline:before {
|
||||
background-image: url('../img/24-white.svg');
|
||||
vertical-align: middle;
|
||||
}
|
||||
.umap-to-polygon:before {
|
||||
background-position: -72px -42px;
|
||||
}
|
||||
.umap-to-polyline:before {
|
||||
background-position: -106px -42px;
|
||||
}
|
||||
.umap-clone:before {
|
||||
background-position: -144px -78px;
|
||||
}
|
||||
.umap-empty:before {
|
||||
background-position: -108px -78px;
|
||||
}
|
||||
.umap-download:before {
|
||||
background-position: -72px -78px;
|
||||
}
|
||||
.permissions-panel,
|
||||
.umap-upload,
|
||||
.umap-share,
|
||||
.umap-datalayer-container,
|
||||
.umap-layer-properties-container,
|
||||
.umap-browse-data,
|
||||
.umap-tilelayer-switcher-container {
|
||||
padding: 0 10px;
|
||||
}
|
||||
.umap-field-datalist {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 9px;
|
||||
margin-top: -8px;
|
||||
padding: 0 5px;
|
||||
}
|
||||
.flat-tabs {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 20px;
|
||||
border-bottom: 1px solid #bebebe;
|
||||
}
|
||||
.flat-tabs button {
|
||||
padding: 10px;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
border-bottom: 1px solid transparent;
|
||||
}
|
||||
.flat-tabs button:hover,
|
||||
.flat-tabs .on {
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #444;
|
||||
}
|
||||
.dark .flat-tabs button {
|
||||
color: #fff;
|
||||
}
|
||||
.dark .flat-tabs button:hover,
|
||||
.dark .flat-tabs .on {
|
||||
border-bottom: 1px solid #fff;
|
||||
}
|
||||
.umap-pictogram-category h6 {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
.umap-pictogram-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, 30px);
|
||||
justify-content: space-between;
|
||||
grid-gap: 5px;
|
||||
}
|
||||
.umap-pictogram-choice {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
cursor: pointer;
|
||||
background-color: #999;
|
||||
text-align: center;
|
||||
margin-bottom: 5px;
|
||||
display: block;
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
}
|
||||
.umap-pictogram-choice img {
|
||||
vertical-align: middle;
|
||||
max-width: 24px;
|
||||
}
|
||||
.umap-pictogram-choice:hover,
|
||||
.umap-color-picker span:hover {
|
||||
background-color: #bebebe;
|
||||
}
|
||||
.umap-pictogram-choice.selected {
|
||||
box-shadow: inset 0 0 0 1px #e9e9e9;
|
||||
}
|
||||
|
||||
.umap-pictogram-choice .leaflet-marker-icon {
|
||||
bottom: 0;
|
||||
inset-inline-start: 30px;
|
||||
position: absolute;
|
||||
}
|
||||
.umap-color-picker {
|
||||
clear: both;
|
||||
margin-bottom: 20px;
|
||||
overflow: hidden;
|
||||
display: none;
|
||||
}
|
||||
.umap-color-picker span {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
display: block;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
float: inline-start;
|
||||
}
|
||||
input.blur {
|
||||
width: calc(100% - 40px);
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
border-start-end-radius: 0;
|
||||
border-end-end-radius: 0;
|
||||
}
|
||||
.blur + .button:before,
|
||||
.blur + [type="button"]:before {
|
||||
content: '✔';
|
||||
}
|
||||
.blur + .button,
|
||||
.blur + [type="button"] {
|
||||
width: 40px;
|
||||
height: 18px;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
line-height: 18px;
|
||||
border-start-start-radius: 0;
|
||||
border-end-start-radius: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
input[type=hidden].blur + .button,
|
||||
input[type=hidden].blur + [type="button"] {
|
||||
display: none;
|
||||
}
|
||||
.copiable-input {
|
||||
display: flex;
|
||||
align-items: end;
|
||||
}
|
||||
.copiable-input input {
|
||||
border-radius: initial;
|
||||
}
|
||||
.copiable-input button {
|
||||
background-position: -46px -92px;
|
||||
display: inline;
|
||||
padding: 0 10px;
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
border: 1px solid #202425;
|
||||
border-radius: initial;
|
||||
}
|
||||
input.highlightable:not(:placeholder-shown) {
|
||||
border: 1px solid var(--color-brightCyan);
|
||||
}
|
||||
.umap-upload [type=url] {
|
||||
margin-bottom: 0;
|
||||
}
|
|
@ -110,6 +110,9 @@ html[dir="rtl"] .icon {
|
|||
.icon-list {
|
||||
background-position: var(--tile) calc(var(--tile) * 4);
|
||||
}
|
||||
.icon-magic {
|
||||
background-position: calc(var(--tile) * 7) 0;
|
||||
}
|
||||
.icon-marker {
|
||||
background-position: calc(var(--tile) * 3) calc(var(--tile) * 5);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<svg id="svg2" width="168" height="168" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<svg id="svg2" width="192" height="192" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<defs id="defs4">
|
||||
<clipPath id="clip0_241_10857">
|
||||
<rect id="rect586" width="18.05" height="19.01" fill="#fff"/>
|
||||
|
@ -12,6 +12,9 @@
|
|||
<mask id="mask0_181_11916" x="2" y="2" width="15" height="15" maskUnits="userSpaceOnUse">
|
||||
<path id="path1259" d="m16.04 2.3158h-14.035v14.035h14.035z" fill="#fff"/>
|
||||
</mask>
|
||||
<clipPath id="clip0_2695_1939">
|
||||
<rect id="rect1" width="20" height="20" fill="#fff"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<metadata id="metadata7">
|
||||
<rdf:RDF>
|
||||
|
@ -202,5 +205,8 @@
|
|||
<path id="path6-6" d="m8.5 9.3501h-3v2.39"/>
|
||||
<path id="path7-2" d="m5.5 9.3501h3v2.39"/>
|
||||
</g>
|
||||
<g id="g2-67" transform="translate(170.12 814.31)" clip-path="url(#clip0_2695_1939)">
|
||||
<path id="path1-5" d="m8.8453 14.83c-0.28116 0.6439-1.1722 0.6439-1.4533 0l-0.73138-1.6751c-0.65086-1.4907-1.8224-2.6774-3.2837-3.326l-2.0131-0.89358c-0.64004-0.28408-0.64004-1.2152 0-1.4993l1.9502-0.86569c1.4989-0.66535 2.6914-1.8959 3.3312-3.4375l0.74086-1.7852c0.27491-0.66247 1.1902-0.66247 1.4652 0l0.74083 1.7852c0.63972 1.5416 1.8322 2.7722 3.3311 3.4375l1.9503 0.86569c0.64 0.2841 0.64 1.2152 0 1.4993l-2.0131 0.89358c-1.4613 0.64864-2.6328 1.8353-3.2837 3.326zm-5.0624-6.6444c1.9049 0.84555 3.4537 2.2354 4.3357 4.1478 0.88202-1.9124 2.4308-3.3022 4.3356-4.1478-1.9276-0.85565-3.4813-2.3132-4.3356-4.2596-0.85434 1.9463-2.4081 3.4039-4.3357 4.2596zm12.385 10.723 0.2057-0.4714c0.3667-0.8405 1.0271-1.5098 1.8511-1.8758l0.6336-0.2816c0.3428-0.1523 0.3428-0.6504 0-0.8026l-0.5981-0.2658c-0.8453-0.3755-1.5175-1.0695-1.8779-1.9386l-0.2112-0.5094c-0.1473-0.355-0.6381-0.355-0.7853 0l-0.2112 0.5094c-0.3603 0.8691-1.0326 1.5631-1.8778 1.9386l-0.5983 0.2658c-0.3427 0.1522-0.3427 0.6503 0 0.8026l0.6337 0.2816c0.8241 0.366 1.4844 1.0353 1.8511 1.8758l0.2057 0.4714c0.1505 0.3451 0.6283 0.3451 0.7789 0zm-0.8557-3.0358 0.4687-0.4655 0.459 0.4655-0.459 0.4524z" fill="#efefef"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg width="168" height="168" id="svg2" version="1.1" inkscape:version="1.4 (e7c3feb100, 2024-10-09)" sodipodi:docname="16-white.svg" inkscape:export-filename="16-white.png" inkscape:export-xdpi="96" inkscape:export-ydpi="96" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<svg width="192" height="192" id="svg2" version="1.1" inkscape:version="1.4 (e7c3feb100, 2024-10-09)" sodipodi:docname="16-white.svg" inkscape:export-filename="16-white.png" inkscape:export-xdpi="96" inkscape:export-ydpi="96" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs id="defs4">
|
||||
<clipPath id="clip0_241_10857">
|
||||
<rect width="18.049999" height="19.01" fill="#ffffff" id="rect586" x="0" y="0" />
|
||||
|
@ -13,23 +13,15 @@
|
|||
<rect width="18" height="12.79" fill="#ffffff" id="rect4" x="0" y="0" />
|
||||
</clipPath>
|
||||
<mask id="mask0_181_11916" maskUnits="userSpaceOnUse" x="2" y="2" width="15" height="15">
|
||||
<path d="M 16.0401,2.3158 H 2.005 v 14.0351 h 14.0351 z" fill="#ffffff" id="path1259" />
|
||||
<path d="m 16.0401,2.3158 h -14.0351 v 14.0351 h 14.0351 z" fill="#ffffff" id="path1259" />
|
||||
</mask>
|
||||
<clipPath id="clip0_2695_1939">
|
||||
<rect width="20" height="20" fill="#ffffff" id="rect1" x="0" y="0" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="11.587678" inkscape:cx="79.049488" inkscape:cy="68.779959" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" showguides="true" inkscape:guide-bbox="true" inkscape:snap-grids="true" inkscape:snap-to-guides="true" inkscape:showpageshadow="2" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1">
|
||||
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="14.041122" inkscape:cx="165.15774" inkscape:cy="24.998002" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" showguides="true" inkscape:guide-bbox="true" inkscape:snap-grids="true" inkscape:snap-to-guides="true" inkscape:showpageshadow="2" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1">
|
||||
<inkscape:grid type="xygrid" id="grid3004" empspacing="4" visible="true" enabled="true" snapvisiblegridlinesonly="true" originx="0" originy="0" spacingy="1" spacingx="1" units="px" />
|
||||
<sodipodi:guide orientation="-1,0" position="24,168" id="guide3084" inkscape:locked="false" inkscape:label="" inkscape:color="rgb(0,134,229)" />
|
||||
<sodipodi:guide orientation="0,1" position="0,96" id="guide3086" inkscape:locked="false" inkscape:label="" inkscape:color="rgb(0,134,229)" />
|
||||
<sodipodi:guide orientation="-1,0" position="48,168" id="guide3088" inkscape:locked="false" inkscape:label="" inkscape:color="rgb(0,134,229)" />
|
||||
<sodipodi:guide orientation="0,1" position="0,72" id="guide3090" inkscape:locked="false" inkscape:label="" inkscape:color="rgb(0,134,229)" />
|
||||
<sodipodi:guide orientation="-1,0" position="72,168" id="guide14621" inkscape:locked="false" inkscape:label="" inkscape:color="rgb(0,134,229)" />
|
||||
<sodipodi:guide orientation="0,1" position="0,48" id="guide17864" inkscape:locked="false" />
|
||||
<sodipodi:guide orientation="0,1" position="0,120" id="guide3026" inkscape:locked="false" inkscape:label="" inkscape:color="rgb(0,134,229)" />
|
||||
<sodipodi:guide orientation="-1,0" position="96,168" id="guide3028" inkscape:locked="false" inkscape:label="" inkscape:color="rgb(0,134,229)" />
|
||||
<sodipodi:guide position="120,168" orientation="-1,0" id="guide4869" inkscape:label="" inkscape:color="rgb(0,0,255)" inkscape:locked="false" />
|
||||
<sodipodi:guide position="0,144" orientation="0,1" id="guide5766" inkscape:locked="false" inkscape:label="" inkscape:color="rgb(0,134,229)" />
|
||||
<sodipodi:guide position="144,104" orientation="1,0" id="guide1" inkscape:locked="false" />
|
||||
<sodipodi:guide position="0,24" orientation="0,1" id="guide5005" inkscape:label="" inkscape:locked="false" inkscape:color="rgb(0,134,229)" />
|
||||
<inkscape:grid id="grid1" units="px" originx="0" originy="0" spacingx="24" spacingy="24" empcolor="#203fff" empopacity="0.85490196" color="#3f3fff" opacity="0.1254902" empspacing="1" enabled="true" visible="true" />
|
||||
</sodipodi:namedview>
|
||||
<metadata id="metadata7">
|
||||
<rdf:RDF>
|
||||
|
@ -40,23 +32,23 @@
|
|||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-812.36218)">
|
||||
<path style="fill:#f2f2f2;fill-opacity:1;stroke-width:0.25;paint-order:fill markers stroke;stroke:#999999;stroke-opacity:1" d="m 106.58891,43.849359 c -3.10089,-0.58252 -5.52944,-2.863466 -6.31937,-5.935298 -0.23482,-0.913171 -0.294235,-2.2415 -0.14177,-3.169542 0.51108,-3.110805 2.83364,-5.667956 5.86284,-6.455008 3.72982,-0.969088 7.59776,0.861664 9.2444,4.375508 0.52616,1.122793 0.76105,2.331963 0.7086,3.647677 -0.0496,1.245447 -0.28677,2.18265 -0.82249,3.250829 -1.04984,2.093266 -2.88939,3.559535 -5.24807,4.183141 -0.49134,0.129903 -0.73215,0.154443 -1.68896,0.172114 -0.81094,0.01498 -1.24691,-0.004 -1.59518,-0.06942 z m 2.43966,-5.8477 v -3.046165 h -1.02544 -1.02544 v 3.046165 3.046164 h 1.02544 1.02544 z m -0.53434,-4.563852 c 0.33094,-0.09915 0.70763,-0.444612 0.87372,-0.801282 0.4662,-1.001185 -0.2615,-2.144718 -1.36482,-2.144718 -0.44164,0 -0.73107,0.12392 -1.06527,0.456086 -0.42453,0.421956 -0.54914,0.937689 -0.37666,1.558908 0.0814,0.293275 0.60383,0.829099 0.89905,0.922151 0.28553,0.09 0.74987,0.09398 1.03398,0.0089 z" id="path6" transform="translate(0,812.36218)" />
|
||||
<path style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-opacity:1;paint-order:fill markers stroke" d="m 106.58891,43.849359 c -3.10089,-0.58252 -5.52944,-2.863466 -6.31937,-5.935298 -0.23482,-0.913171 -0.294235,-2.2415 -0.14177,-3.169542 0.51108,-3.110805 2.83364,-5.667956 5.86284,-6.455008 3.72982,-0.969088 7.59776,0.861664 9.2444,4.375508 0.52616,1.122793 0.76105,2.331963 0.7086,3.647677 -0.0496,1.245447 -0.28677,2.18265 -0.82249,3.250829 -1.04984,2.093266 -2.88939,3.559535 -5.24807,4.183141 -0.49134,0.129903 -0.73215,0.154443 -1.68896,0.172114 -0.81094,0.01498 -1.24691,-0.004 -1.59518,-0.06942 z m 2.43966,-5.8477 v -3.046165 h -1.02544 -1.02544 v 3.046165 3.046164 h 1.02544 1.02544 z m -0.53434,-4.563852 c 0.33094,-0.09915 0.70763,-0.444612 0.87372,-0.801282 0.4662,-1.001185 -0.2615,-2.144718 -1.36482,-2.144718 -0.44164,0 -0.73107,0.12392 -1.06527,0.456086 -0.42453,0.421956 -0.54914,0.937689 -0.37666,1.558908 0.0814,0.293275 0.60383,0.829099 0.89905,0.922151 0.28553,0.09 0.74987,0.09398 1.03398,0.0089 z" id="path6" transform="translate(0,812.36218)" />
|
||||
<text xml:space="preserve" style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" x="5.7867966" y="897.80786" id="text4457"><tspan y="897.80786" x="5.7867966" sodipodi:role="line" id="tspan4459" style="font-size:40px;line-height:1.25;font-family:sans-serif"> </tspan></text>
|
||||
<g id="g3001" transform="translate(-23.255701,-119.38651)">
|
||||
<path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 35.255701,935.74851 c -4.412356,0 -8.00014,3.58778 -8.00014,8.00014 0,4.41235 3.587784,8.00014 8.00014,8.00014 4.412356,0 8.00014,-3.58779 8.00014,-8.00014 0,-4.41236 -3.587784,-8.00014 -8.00014,-8.00014 z m 0,1.00028 c 3.871916,0 6.99986,3.12794 6.99986,6.99986 0,3.87191 -3.127944,6.99986 -6.99986,6.99986 -3.871916,0 -6.999861,-3.12795 -6.999861,-6.99986 0,-3.87192 3.127945,-6.99986 6.999861,-6.99986 z" id="path3014" inkscape:connector-curvature="0" />
|
||||
<g id="text3784" style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none" transform="translate(27.255701,-100.61365)">
|
||||
<path inkscape:connector-curvature="0" id="path3789" style="font-weight:bold;font-size:12px;-inkscape-font-specification:'Sans Bold';fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 9,1046.0464 H 6.6301966 v -0.3223 c 0,-0.3596 0.072207,-0.6775 0.2166302,-0.9539 0.1444174,-0.2807 0.4485749,-0.636 0.9124728,-1.0658 l 0.4201314,-0.3816 c 0.249449,-0.228 0.4310681,-0.4429 0.5448577,-0.6446 0.1181576,-0.2019 0.1772384,-0.4036 0.177243,-0.6053 -4.6e-6,-0.3071 -0.1050376,-0.5462 -0.3150985,-0.7171 -0.2100697,-0.1756 -0.5032861,-0.2632 -0.87965,-0.2632 -0.3544889,0 -0.7374207,0.075 -1.1487968,0.2237 -0.4113804,0.1446 -0.840264,0.3618 -1.2866522,0.6513 v -2.0659 c 0.5295391,-0.184 1.0131273,-0.32 1.4507661,-0.4077 0.437634,-0.088 0.8599531,-0.1317 1.2669587,-0.1317 1.0678292,0 1.8818328,0.2194 2.442012,0.6579 0.560169,0.4341 0.840256,1.0702 0.840263,1.9078 -7e-6,0.4298 -0.08535,0.8159 -0.256017,1.158 -0.170685,0.3377 -0.461713,0.7017 -0.873085,1.092 l -0.4201313,0.375 c -0.297598,0.272 -0.4923463,0.4913 -0.5842451,0.658 -0.091909,0.1622 -0.1378603,0.342 -0.1378556,0.5394 v 0.296 m -2.3698034,0.9739 H 9 v 2.342 H 6.6301966 v -2.342" sodipodi:nodetypes="ccsccccccsccccsccccccccccccc" />
|
||||
<path inkscape:connector-curvature="0" id="path3789" style="font-weight:bold;font-size:12px;-inkscape-font-specification:'Sans Bold';fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 9,1046.0464 h -2.3698034 v -0.3223 c 0,-0.3596 0.072207,-0.6775 0.2166302,-0.9539 0.1444174,-0.2807 0.4485749,-0.636 0.9124728,-1.0658 l 0.4201314,-0.3816 c 0.249449,-0.228 0.4310681,-0.4429 0.5448577,-0.6446 0.1181576,-0.2019 0.1772384,-0.4036 0.177243,-0.6053 -4.6e-6,-0.3071 -0.1050376,-0.5462 -0.3150985,-0.7171 -0.2100697,-0.1756 -0.5032861,-0.2632 -0.87965,-0.2632 -0.3544889,0 -0.7374207,0.075 -1.1487968,0.2237 -0.4113804,0.1446 -0.840264,0.3618 -1.2866522,0.6513 v -2.0659 c 0.5295391,-0.184 1.0131273,-0.32 1.4507661,-0.4077 0.437634,-0.088 0.8599531,-0.1317 1.2669587,-0.1317 1.0678292,0 1.8818328,0.2194 2.442012,0.6579 0.560169,0.4341 0.840256,1.0702 0.840263,1.9078 -7e-6,0.4298 -0.08535,0.8159 -0.256017,1.158 -0.170685,0.3377 -0.461713,0.7017 -0.873085,1.092 l -0.4201313,0.375 c -0.297598,0.272 -0.4923463,0.4913 -0.5842451,0.658 -0.091909,0.1622 -0.1378603,0.342 -0.1378556,0.5394 v 0.296 m -2.3698034,0.9739 h 2.3698034 v 2.342 h -2.3698034 v -2.342" sodipodi:nodetypes="ccsccccccsccccsccccccccccccc" />
|
||||
</g>
|
||||
</g>
|
||||
<path style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 78,819.36214 v 2 h 12 v -2 z m 0,3 v 1 h 4 v -1 z m 5,0 v 1 h 7 v -1 z m -5,2 v 1 h 4 v -1 z m 5,0 v 1 h 7 v -1 z m -5,2 v 1 h 4 v -1 z m 5,0 v 1 h 7 v -1 z m -5,2 v 1 h 4 v -1 z m 5,0 v 1 h 7 v -1 z" id="table" inkscape:connector-curvature="0" inkscape:label="table" inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/browse-data.png" inkscape:export-xdpi="89.996864" inkscape:export-ydpi="89.996864" />
|
||||
<path style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 35,843.36202 v 4 h -4 v 2 h 4 v 4 h 2 v -4 h 4 v -2 h -4 v -4 z" id="rect5280" inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/add-layer-grey-18.png" inkscape:export-xdpi="89.996864" inkscape:export-ydpi="89.996864" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccccc" />
|
||||
<path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" d="m 13.517525,866.362 c -2.466762,0 -4.48249,2.0158 -4.48249,4.4826 0,0.8297 0.233748,1.5964 0.63035,2.26462 l -3.66537,3.66532 1.587549,1.5876 3.66537,-3.66542 c 0.668139,0.3966 1.434831,0.6303 2.264591,0.6303 2.466762,0 4.48249,-2.0157 4.48249,-4.48242 0,-2.4668 -2.015728,-4.4826 -4.48249,-4.4826 z m 0,1.4943 c 1.659256,0 2.988326,1.329 2.988326,2.9883 0,1.6592 -1.32907,2.98832 -2.988326,2.98832 -1.659256,0 -2.988326,-1.32912 -2.988326,-2.98832 0,-1.6593 1.32907,-2.9883 2.988326,-2.9883 z m 0,1.4941 c -0.816354,0 -1.494163,0.6779 -1.494163,1.4942 0,0.8163 0.677809,1.4942 1.494163,1.4942 0.816354,0 1.494163,-0.6779 1.494163,-1.4942 0,-0.8163 -0.677809,-1.4942 -1.494163,-1.4942 z" id="path4354" inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/zoom_to.png" inkscape:export-xdpi="89.996864" inkscape:export-ydpi="89.996864" inkscape:connector-curvature="0" />
|
||||
<path id="path4392" d="m 37.51751,866.36205 c -2.466762,0 -4.482491,2.0157 -4.482491,4.4825 0,0.8298 0.233749,1.5964 0.630351,2.2645 L 30,876.77459 l 1.587549,1.5875 3.665369,-3.66544 c 0.668139,0.39662 1.434831,0.63042 2.264592,0.63042 2.466762,0 4.48249,-2.01572 4.48249,-4.48252 0,-2.4668 -2.015728,-4.4825 -4.48249,-4.4825 z m 0,1.4942 c 1.659256,0 2.988327,1.329 2.988327,2.9883 0,1.6593 -1.329071,2.9883 -2.988327,2.9883 -1.659256,0 -2.988327,-1.329 -2.988327,-2.9883 0,-1.6593 1.329071,-2.9883 2.988327,-2.9883 z m 0,1.4941 c -0.816355,0 -1.494164,0.6779 -1.494164,1.4942 0,0.8163 0.677809,1.4942 1.494164,1.4942 0.816355,0 1.494163,-0.6779 1.494163,-1.4942 0,-0.8163 -0.677808,-1.4942 -1.494163,-1.4942 z" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" inkscape:connector-curvature="0" inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/zoom_to-off.png" inkscape:export-xdpi="89.996864" inkscape:export-ydpi="89.996864" />
|
||||
<path id="path4392" d="m 37.51751,866.36205 c -2.466762,0 -4.482491,2.0157 -4.482491,4.4825 0,0.8298 0.233749,1.5964 0.630351,2.2645 l -3.66537,3.66554 1.587549,1.5875 3.665369,-3.66544 c 0.668139,0.39662 1.434831,0.63042 2.264592,0.63042 2.466762,0 4.48249,-2.01572 4.48249,-4.48252 0,-2.4668 -2.015728,-4.4825 -4.48249,-4.4825 z m 0,1.4942 c 1.659256,0 2.988327,1.329 2.988327,2.9883 0,1.6593 -1.329071,2.9883 -2.988327,2.9883 -1.659256,0 -2.988327,-1.329 -2.988327,-2.9883 0,-1.6593 1.329071,-2.9883 2.988327,-2.9883 z m 0,1.4941 c -0.816355,0 -1.494164,0.6779 -1.494164,1.4942 0,0.8163 0.677809,1.4942 1.494164,1.4942 0.816355,0 1.494163,-0.6779 1.494163,-1.4942 0,-0.8163 -0.677808,-1.4942 -1.494163,-1.4942 z" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" inkscape:connector-curvature="0" inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/zoom_to-off.png" inkscape:export-xdpi="89.996864" inkscape:export-ydpi="89.996864" />
|
||||
<path style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 54,819.36214 v 2 h 12 v -2 z m 0,3 v 1 h 4 v -1 z m 5,0 v 1 h 7 v -1 z m -5,2 v 1 h 4 v -1 z m 5,0 v 1 h 7 v -1 z m -5,2 v 1 h 4 v -1 z m 5,0 v 1 h 7 v -1 z m -5,2 v 1 h 4 v -1 z m 5,0 v 1 h 7 v -1 z" id="table-5" inkscape:connector-curvature="0" inkscape:label="table" inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/browse-data.png" inkscape:export-xdpi="89.996864" inkscape:export-ydpi="89.996864" />
|
||||
<g transform="translate(32,-48.000118)" style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none" id="text3784-6" />
|
||||
<path style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 63.71429,866.36213 -1.14285,1.14286 2.28571,2.28572 L 66,868.64785 Z M 62,868.07641 l -6.285714,6.28574 2.285715,2.2857 6.285719,-6.28572 z M 55.714286,874.36215 54,878.36214 l 4.000001,-1.71429 z" id="path3684" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccccc" />
|
||||
<path style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 63.71429,866.36213 -1.14285,1.14286 2.28571,2.28572 1.14285,-1.14286 z m -1.71429,1.71428 -6.285714,6.28574 2.285715,2.2857 6.285719,-6.28572 z m -6.285714,6.28574 -1.714286,3.99999 4.000001,-1.71429 z" id="path3684" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccccc" />
|
||||
<text xml:space="preserve" style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" x="41.647079" y="916.79706" id="text4457-6"><tspan y="916.79706" x="41.647079" sodipodi:role="line" id="tspan4459-6" style="font-size:30.4762px;line-height:1.25;font-family:sans-serif"> </tspan></text>
|
||||
<path style="fill:#b3b3b3;fill-opacity:1;stroke:none" d="m 63.71429,890.36216 -1.14285,1.1428 2.28571,2.2858 L 66,892.64786 Z M 62,892.07646 55.714286,898.36218 58,900.64788 l 6.28572,-6.2857 z m -6.285714,6.28572 -1.714286,4 4,-1.7143 z" id="path3684-2" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccccc" />
|
||||
<path style="fill:#b3b3b3;fill-opacity:1;stroke:none" d="m 63.71429,890.36216 -1.14285,1.1428 2.28571,2.2858 1.14285,-1.1429 z m -1.71429,1.7143 -6.285714,6.28572 2.285714,2.2857 6.28572,-6.2857 z m -6.285714,6.28572 -1.714286,4 4,-1.7143 z" id="path3684-2" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccccc" />
|
||||
<g id="g4717" transform="translate(-54.789185,-114.477)">
|
||||
<path style="fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 141.26953,173.42383 -6.75586,2.67969 0.95313,6.3457 5.87109,3.12695 4.14844,-7.87305 z m -1.44726,2.48828 2.99023,1.60156 -0.5918,2.43164 -3.35742,1.50391 -1.73828,-3.81055 z" transform="translate(-1.210815,854.83918)" id="path3862" inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
|
@ -82,7 +74,7 @@
|
|||
<path inkscape:connector-curvature="0" id="path4353-1-6-1-3-3-9" transform="matrix(1.9000195,0,0,1.9000195,-245.02393,606.04174)" d="m 222.11328,179.64258 -1.04883,1.04883 1.58203,1.58007 -1.58203,1.58204 1.04883,1.04687 1.58203,-1.58008 1.58008,1.58008 1.04883,-1.04687 -1.58203,-1.58204 1.58203,-1.58007 -1.04883,-1.04883 -1.58008,1.58008 z" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.81628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
</g>
|
||||
</g>
|
||||
<path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 108.14555,816.36218 v 3.8267 H 112 v -3.8267 z m 0.51755,4.35174 -1.24591,2.31321 1.16687,0.61848 1.24404,-2.31507 z m -1.86888,3.47168 -0.27666,0.51571 h -2.42597 v 2.24408 L 100,831.00938 l 1.36261,1.3528 3.86198,-3.83417 h 2.72145 v -3.6959 l 0.015,-0.028 -0.015,-0.008 v -0.0953 h -0.17879 l -0.97303,-0.51571 z" id="path4873" inkscape:connector-curvature="0" />
|
||||
<path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 108.14555,816.36218 v 3.8267 h 3.85445 v -3.8267 z m 0.51755,4.35174 -1.24591,2.31321 1.16687,0.61848 1.24404,-2.31507 z m -1.86888,3.47168 -0.27666,0.51571 h -2.42597 v 2.24408 l -4.09159,4.06399 1.36261,1.3528 3.86198,-3.83417 h 2.72145 v -3.6959 l 0.015,-0.028 -0.015,-0.008 v -0.0953 h -0.17879 l -0.97303,-0.51571 z" id="path4873" inkscape:connector-curvature="0" />
|
||||
<g id="g4244" transform="matrix(0.51357238,-0.54309229,0.54309229,0.51357238,-518.0199,506.22551)">
|
||||
<path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 220.49219,133.52344 c -0.33017,0.01 -0.66239,0.0456 -0.99414,0.10742 -2.22487,0.41425 -4.02666,1.95747 -4.83203,4.00976 l -0.87696,-1.8164 a 0.50004998,0.50004998 0 0 0 -0.83398,-0.11328 0.50004998,0.50004998 0 0 0 -0.0664,0.54883 l 1.45899,3.01953 a 0.50004998,0.50004998 0 0 0 0.60742,0.25586 l 2.84375,-0.94532 a 0.50028339,0.50028339 0 1 0 -0.31641,-0.94922 l -2.00195,0.66797 c 0.61312,-1.89015 2.20733,-3.32407 4.20117,-3.69531 2.24744,-0.41845 4.51458,0.59912 5.69531,2.55664 1.18073,1.95754 1.02202,4.43774 -0.39648,6.23047 -1.41851,1.79275 -3.79606,2.51535 -5.97266,1.81641 a 0.50004998,0.50004998 0 1 0 -0.30469,0.95117 c 2.57038,0.82539 5.38736,-0.0294 7.0625,-2.14649 0.4188,-0.52924 0.74532,-1.11137 0.97657,-1.7207 0.69373,-1.828 0.53599,-3.91467 -0.50977,-5.64844 -1.22005,-2.02271 -3.42908,-3.19767 -5.74023,-3.1289 z" transform="matrix(0.91921787,0.9720541,-0.9720541,0.91921787,152.1356,647.93271)" id="path4240" inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
|
@ -153,53 +145,53 @@
|
|||
<path id="polygon" style="fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" d="m 29,888.36218 v 2 h 0.927734 l -0.855468,12 h -1.072266 v 2 h 2 v -1.19922 l 8,-1.60156 v 0.80078 h 2 v -2 h -0.777344 l 1.554688,-7 h 1.222656 v -2 h -2 v 0.72656 l -9,-2.45312 v -1.27344 z" />
|
||||
<path id="marker" d="m 84,936.36218 c -2.625,0 -5.25,1.70216 -6,5.1064 0,2.04256 1.5,6.12768 6,10.8936 4.5,-4.76592 6,-8.85104 6,-10.8936 -0.75,-3.40424 -3.375,-5.1064 -6,-5.1064 z m 0,2.38304 c 1.656857,0 3,1.21928 3,2.72336 0,1.50408 -1.343143,2.72344 -3,2.72344 -1.656848,0 -3,-1.21936 -3,-2.72344 0,-1.50408 1.343152,-2.72336 3,-2.72336 z" style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" inkscape:connector-curvature="0" />
|
||||
<g transform="matrix(0.16294606,0,0,0.16295934,27.835262,912.23132)" id="settings" style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:1.49736;stroke-miterlimit:4;stroke-dasharray:none" class="sprite">
|
||||
<path inkscape:connector-curvature="0" d="M 98.762,43.652 C 98.576,42.266 97.281,41.07 95.886,40.993 l -6.172,-0.337 c -1.395,-0.076 -2.899,-1.224 -3.341,-2.55 l -2.28,-5.518 c -0.629,-1.249 -0.379,-3.121 0.553,-4.161 l 4.122,-4.6 c 0.933,-1.042 0.962,-2.77 0.066,-3.842 l -8.813,-8.813 c -1.073,-0.897 -2.803,-0.867 -3.845,0.065 l -4.598,4.122 c -1.039,0.934 -2.915,1.182 -4.161,0.551 l -5.521,-2.279 c -1.324,-0.442 -2.472,-1.945 -2.549,-3.34 L 59.01,4.121 C 58.933,2.725 57.738,1.43 56.351,1.243 c 0,0 -3.252,-0.44 -6.248,-0.44 -2.991,0 -6.243,0.44 -6.243,0.44 -1.386,0.188 -2.582,1.483 -2.658,2.878 l -0.338,6.17 c -0.076,1.396 -1.224,2.898 -2.551,3.34 l -5.517,2.279 c -1.249,0.631 -3.122,0.382 -4.161,-0.551 l -4.601,-4.122 c -1.042,-0.932 -2.769,-0.962 -3.842,-0.065 l -8.813,8.813 c -0.897,1.073 -0.867,2.801 0.066,3.842 l 4.122,4.6 c 0.933,1.041 1.182,2.913 0.551,4.161 l -2.279,5.518 c -0.442,1.326 -1.946,2.474 -3.34,2.55 l -6.17,0.337 c -1.396,0.077 -2.691,1.272 -2.879,2.659 0,0 -0.439,3.253 -0.439,6.243 0,2.99 0.44,6.24 0.44,6.24 0.188,1.389 1.483,2.582 2.879,2.659 l 6.169,0.339 c 1.396,0.075 2.898,1.225 3.341,2.549 l 2.278,5.517 c 0.631,1.248 0.381,3.122 -0.551,4.163 l -4.122,4.598 c -0.933,1.042 -0.963,2.771 -0.066,3.845 l 8.814,8.813 c 1.073,0.896 2.801,0.866 3.842,-0.066 l 4.6,-4.122 c 1.041,-0.932 2.913,-1.182 4.161,-0.553 l 5.517,2.28 c 1.327,0.441 2.475,1.946 2.55,3.343 l 0.338,6.168 c 0.076,1.395 1.272,2.692 2.658,2.88 0,0 3.252,0.439 6.244,0.439 2.996,0 6.25,-0.439 6.25,-0.439 1.385,-0.188 2.58,-1.485 2.657,-2.88 L 59.347,89.5 c 0.077,-1.396 1.225,-2.901 2.551,-3.343 l 5.517,-2.28 c 1.248,-0.629 3.122,-0.379 4.163,0.553 l 4.598,4.122 c 1.042,0.933 2.771,0.964 3.843,0.067 l 8.815,-8.814 C 89.73,78.732 89.7,77.002 88.768,75.96 l -4.122,-4.598 c -0.932,-1.041 -1.182,-2.915 -0.553,-4.163 l 2.28,-5.517 c 0.441,-1.324 1.946,-2.474 3.341,-2.549 l 6.172,-0.339 c 1.395,-0.077 2.692,-1.271 2.876,-2.659 0,0 0.441,-3.25 0.441,-6.24 0,-2.99 -0.441,-6.243 -0.441,-6.243 z M 50.104,62.361 c -6.886,0 -12.468,-5.585 -12.468,-12.467 0,-6.885 5.582,-12.467 12.468,-12.467 6.89,0 12.475,5.582 12.475,12.467 -10e-4,6.882 -5.586,12.467 -12.475,12.467 z" id="path27812" style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:1.49736;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<path inkscape:connector-curvature="0" d="m 98.762,43.652 c -0.186,-1.386 -1.481,-2.582 -2.876,-2.659 l -6.172,-0.337 c -1.395,-0.076 -2.899,-1.224 -3.341,-2.55 l -2.28,-5.518 c -0.629,-1.249 -0.379,-3.121 0.553,-4.161 l 4.122,-4.6 c 0.933,-1.042 0.962,-2.77 0.066,-3.842 l -8.813,-8.813 c -1.073,-0.897 -2.803,-0.867 -3.845,0.065 l -4.598,4.122 c -1.039,0.934 -2.915,1.182 -4.161,0.551 l -5.521,-2.279 c -1.324,-0.442 -2.472,-1.945 -2.549,-3.34 l -0.337,-6.17 c -0.077,-1.396 -1.272,-2.691 -2.659,-2.878 0,0 -3.252,-0.44 -6.248,-0.44 -2.991,0 -6.243,0.44 -6.243,0.44 -1.386,0.188 -2.582,1.483 -2.658,2.878 l -0.338,6.17 c -0.076,1.396 -1.224,2.898 -2.551,3.34 l -5.517,2.279 c -1.249,0.631 -3.122,0.382 -4.161,-0.551 l -4.601,-4.122 c -1.042,-0.932 -2.769,-0.962 -3.842,-0.065 l -8.813,8.813 c -0.897,1.073 -0.867,2.801 0.066,3.842 l 4.122,4.6 c 0.933,1.041 1.182,2.913 0.551,4.161 l -2.279,5.518 c -0.442,1.326 -1.946,2.474 -3.34,2.55 l -6.17,0.337 c -1.396,0.077 -2.691,1.272 -2.879,2.659 0,0 -0.439,3.253 -0.439,6.243 0,2.99 0.44,6.24 0.44,6.24 0.188,1.389 1.483,2.582 2.879,2.659 l 6.169,0.339 c 1.396,0.075 2.898,1.225 3.341,2.549 l 2.278,5.517 c 0.631,1.248 0.381,3.122 -0.551,4.163 l -4.122,4.598 c -0.933,1.042 -0.963,2.771 -0.066,3.845 l 8.814,8.813 c 1.073,0.896 2.801,0.866 3.842,-0.066 l 4.6,-4.122 c 1.041,-0.932 2.913,-1.182 4.161,-0.553 l 5.517,2.28 c 1.327,0.441 2.475,1.946 2.55,3.343 l 0.338,6.168 c 0.076,1.395 1.272,2.692 2.658,2.88 0,0 3.252,0.439 6.244,0.439 2.996,0 6.25,-0.439 6.25,-0.439 1.385,-0.188 2.58,-1.485 2.657,-2.88 l 0.337,-6.168 c 0.077,-1.396 1.225,-2.901 2.551,-3.343 l 5.517,-2.28 c 1.248,-0.629 3.122,-0.379 4.163,0.553 l 4.598,4.122 c 1.042,0.933 2.771,0.964 3.843,0.067 l 8.815,-8.814 c 0.896,-1.073 0.866,-2.803 -0.066,-3.845 l -4.122,-4.598 c -0.932,-1.041 -1.182,-2.915 -0.553,-4.163 l 2.28,-5.517 c 0.441,-1.324 1.946,-2.474 3.341,-2.549 l 6.172,-0.339 c 1.395,-0.077 2.692,-1.271 2.876,-2.659 0,0 0.441,-3.25 0.441,-6.24 0,-2.99 -0.441,-6.243 -0.441,-6.243 z m -48.658,18.709 c -6.886,0 -12.468,-5.585 -12.468,-12.467 0,-6.885 5.582,-12.467 12.468,-12.467 6.89,0 12.475,5.582 12.475,12.467 -10e-4,6.882 -5.586,12.467 -12.475,12.467 z" id="path27812" style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:1.49736;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
</g>
|
||||
<g clip-path="url(#clip0_241_10857)" id="undo" transform="matrix(0.71300568,0,0,0.66260978,53.493751,938.13028)" style="fill:none;stroke:#f2f2f2;stroke-width:1.45488;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1">
|
||||
<path d="M 1.07001,4.41003 H 10.49 c 0.9234,-0.0066 1.8391,0.16957 2.6941,0.5184 0.8551,0.34883 1.6327,0.8634 2.288,1.51407 0.6553,0.65067 1.1754,1.42458 1.5303,2.27713 0.3549,0.85256 0.5376,1.76697 0.5376,2.69037 0.0067,0.9277 -0.1712,1.8474 -0.5231,2.7058 -0.3519,0.8583 -0.871,1.6382 -1.527,2.2941 -0.656,0.656 -1.4358,1.1751 -2.2941,1.527 -0.8584,0.352 -1.7781,0.5298 -2.7058,0.5231 H 1.07001" stroke="#f2f2f2" stroke-miterlimit="10" id="path580" style="fill:none;stroke:#f2f2f2;stroke-width:1.45486;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path d="M 4.75002,8.44998 0.710022,4.39998 4.75002,0.349976" stroke="#f2f2f2" stroke-miterlimit="10" id="path582" style="fill:none;stroke:#f2f2f2;stroke-width:1.45486;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path d="m 1.07001,4.41003 h 9.41999 c 0.9234,-0.0066 1.8391,0.16957 2.6941,0.5184 0.8551,0.34883 1.6327,0.8634 2.288,1.51407 0.6553,0.65067 1.1754,1.42458 1.5303,2.27713 0.3549,0.85256 0.5376,1.76697 0.5376,2.69037 0.0067,0.9277 -0.1712,1.8474 -0.5231,2.7058 -0.3519,0.8583 -0.871,1.6382 -1.527,2.2941 -0.656,0.656 -1.4358,1.1751 -2.2941,1.527 -0.8584,0.352 -1.7781,0.5298 -2.7058,0.5231 h -9.41999" stroke="#f2f2f2" stroke-miterlimit="10" id="path580" style="fill:none;stroke:#f2f2f2;stroke-width:1.45486;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path d="m 4.75002,8.44998 -4.039998,-4.05 4.039998,-4.050004" stroke="#f2f2f2" stroke-miterlimit="10" id="path582" style="fill:none;stroke:#f2f2f2;stroke-width:1.45486;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g id="g1" transform="translate(144,-24.00004)">
|
||||
<path d="m 9,849.93721 v 4.04997 c 0,0.20708 0.167895,0.375 0.375,0.375 h 5.25 c 0.207075,0 0.375,-0.16792 0.375,-0.375 v -4.04997 c 0,-0.20708 -0.167925,-0.375 -0.375,-0.375 h -5.25 c -0.207105,0 -0.375,0.16792 -0.375,0.375 z" stroke="#f2f2f2" id="path438" style="fill:none;stroke:#999999;stroke-width:0.999997;stroke-opacity:1" />
|
||||
<path d="M 15.21255,842.36218 H 6.375 c -0.207105,0 -0.375,0.1679 -0.375,0.37499 v 11.24993 c 0,0.20708 0.167895,0.375 0.375,0.375 h 11.25 c 0.207075,0 0.375,-0.16792 0.375,-0.375 v -8.67664 c 0,-0.0953 -0.0363,-0.18697 -0.1014,-0.25648 l -2.41245,-2.57327 c -0.07095,-0.0756 -0.16995,-0.11853 -0.2736,-0.11853 z" stroke="#f2f2f2" id="save" style="fill:none;stroke:#999999;stroke-width:0.999997;stroke-opacity:1" />
|
||||
<path d="m 15.21255,842.36218 h -8.83755 c -0.207105,0 -0.375,0.1679 -0.375,0.37499 v 11.24993 c 0,0.20708 0.167895,0.375 0.375,0.375 h 11.25 c 0.207075,0 0.375,-0.16792 0.375,-0.375 v -8.67664 c 0,-0.0953 -0.0363,-0.18697 -0.1014,-0.25648 l -2.41245,-2.57327 c -0.07095,-0.0756 -0.16995,-0.11853 -0.2736,-0.11853 z" stroke="#f2f2f2" id="save" style="fill:none;stroke:#999999;stroke-width:0.999997;stroke-opacity:1" />
|
||||
</g>
|
||||
<path id="close" style="color:#000000;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.188976;stroke-dasharray:none;stroke-opacity:1" d="m 32.353516,820.00866 -0.707032,0.70704 3.646485,3.64648 -3.646485,3.64648 0.707032,0.70704 L 36,825.06921 l 3.646484,3.64649 0.707032,-0.70704 -3.646485,-3.64648 3.646485,-3.64648 -0.707032,-0.70704 L 36,823.65515 Z" />
|
||||
<path id="close" style="color:#000000;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.188976;stroke-dasharray:none;stroke-opacity:1" d="m 32.353516,820.00866 -0.707032,0.70704 3.646485,3.64648 -3.646485,3.64648 0.707032,0.70704 3.646484,-3.64649 3.646484,3.64649 0.707032,-0.70704 -3.646485,-3.64648 3.646485,-3.64648 -0.707032,-0.70704 -3.646484,3.64649 z" />
|
||||
<g clip-path="url(#clip0_576_2753)" id="eye" transform="translate(51,843.33202)">
|
||||
<path d="m 9,1 c 3.06,0 6.26,2.74 7.6,4.03 C 15.26,6.33 12.06,9.06 9,9.06 5.94,9.06 2.74,6.33 1.4,5.03 2.74,3.74 5.93,1 9,1 Z M 9,0 C 4.5,0 0,5.03 0,5.03 c 0,0 4.5,5.03 9,5.03 4.5,0 9,-5.03 9,-5.03 C 18,5.03 13.5,0 9,0 Z" fill="#f2f2f2" id="path1" />
|
||||
<path d="m 9,1 c 3.06,0 6.26,2.74 7.6,4.03 -1.34,1.3 -4.54,4.03 -7.6,4.03 -3.06,0 -6.26,-2.73 -7.6,-4.03 1.34,-1.29 4.53,-4.03 7.6,-4.03 z m 0,-1 c -4.5,0 -9,5.03 -9,5.03 0,0 4.5,5.03 9,5.03 4.5,0 9,-5.03 9,-5.03 0,0 -4.5,-5.03 -9,-5.03 z" fill="#f2f2f2" id="path1" />
|
||||
<path d="m 8.99999,3.64001 c 0.77,0 1.39001,0.63 1.39001,1.39 0,0.76 -0.63001,1.39 -1.39001,1.39 -0.76,0 -1.39,-0.63 -1.39,-1.39 0,-0.76 0.63,-1.39 1.39,-1.39 z m 0,-1 c -1.32,0 -2.39,1.07 -2.39,2.39 0,1.32 1.07,2.39 2.39,2.39 1.32001,0 2.39001,-1.07 2.39001,-2.39 0,-1.32 -1.07,-2.39 -2.39001,-2.39 z" fill="#f2f2f2" id="path2" />
|
||||
</g>
|
||||
<g clip-path="url(#clip0_588_799)" id="eye-closed" transform="translate(75,841.96201)">
|
||||
<path d="m 9,2.36001 c 3.06,0 6.26,2.74 7.6,4.03 -1.34,1.3 -4.54,4.02999 -7.6,4.02999 -3.06,0 -6.26,-2.72999 -7.6,-4.01999 1.34,-1.3 4.54,-4.03 7.6,-4.03 m 0,-1 c -4.5,-0.01 -9,5.03 -9,5.03 0,0 4.5,5.02999 9,5.02999 4.5,0 9,-5.02999 9,-5.02999 0,0 -4.5,-5.03 -9,-5.03 z" fill="#f2f2f2" id="path1-6" style="fill:#b3b3b3;fill-opacity:1" />
|
||||
<path d="m 8.99999,5 c 0.77,0 1.39001,0.63 1.39001,1.39 0,0.76 -0.63001,1.39 -1.39001,1.39 -0.76,0 -1.39,-0.63 -1.39,-1.39 0,-0.76 0.63,-1.39 1.39,-1.39 z m 0,-1 c -1.32,0 -2.39,1.07 -2.39,2.39 0,1.32 1.07,2.39 2.39,2.39 C 10.32,8.78 11.39,7.71 11.39,6.39 11.39,5.07 10.32,4 8.99999,4 Z" fill="#f2f2f2" id="path2-7" style="fill:#b3b3b3;fill-opacity:1" />
|
||||
<path d="M 16.8,0.400024 1.19995,12.4" stroke="#f2f2f2" stroke-miterlimit="10" id="path3" />
|
||||
<path d="M 16.8,0.400024 1.19995,12.4" stroke="#f2f2f2" stroke-miterlimit="10" id="path4" style="stroke:#b3b3b3;stroke-opacity:1" />
|
||||
<path d="m 8.99999,5 c 0.77,0 1.39001,0.63 1.39001,1.39 0,0.76 -0.63001,1.39 -1.39001,1.39 -0.76,0 -1.39,-0.63 -1.39,-1.39 0,-0.76 0.63,-1.39 1.39,-1.39 z m 0,-1 c -1.32,0 -2.39,1.07 -2.39,2.39 0,1.32 1.07,2.39 2.39,2.39 1.32001,0 2.39001,-1.07 2.39001,-2.39 0,-1.32 -1.07,-2.39 -2.39001,-2.39 z" fill="#f2f2f2" id="path2-7" style="fill:#b3b3b3;fill-opacity:1" />
|
||||
<path d="m 16.8,0.400024 -15.60005,11.999976" stroke="#f2f2f2" stroke-miterlimit="10" id="path3" />
|
||||
<path d="m 16.8,0.400024 -15.60005,11.999976" stroke="#f2f2f2" stroke-miterlimit="10" id="path4" style="stroke:#b3b3b3;stroke-opacity:1" />
|
||||
</g>
|
||||
<g id="g2" transform="translate(144)">
|
||||
<path d="m 9,849.93721 v 4.04997 c 0,0.20708 0.167895,0.375 0.375,0.375 h 5.25 c 0.207075,0 0.375,-0.16792 0.375,-0.375 v -4.04997 c 0,-0.20708 -0.167925,-0.375 -0.375,-0.375 h -5.25 c -0.207105,0 -0.375,0.16792 -0.375,0.375 z" stroke="#f2f2f2" id="path438-6" style="fill:none;stroke:#42ece6;stroke-width:0.999997;stroke-opacity:1" />
|
||||
<path d="M 15.21255,842.36218 H 6.375 c -0.207105,0 -0.375,0.1679 -0.375,0.37499 v 11.24993 c 0,0.20708 0.167895,0.375 0.375,0.375 h 11.25 c 0.207075,0 0.375,-0.16792 0.375,-0.375 v -8.67664 c 0,-0.0953 -0.0363,-0.18697 -0.1014,-0.25648 l -2.41245,-2.57327 c -0.07095,-0.0756 -0.16995,-0.11853 -0.2736,-0.11853 z" stroke="#f2f2f2" id="save-7" style="fill:none;stroke:#42ece6;stroke-width:0.999997;stroke-opacity:1" />
|
||||
<path d="m 15.21255,842.36218 h -8.83755 c -0.207105,0 -0.375,0.1679 -0.375,0.37499 v 11.24993 c 0,0.20708 0.167895,0.375 0.375,0.375 h 11.25 c 0.207075,0 0.375,-0.16792 0.375,-0.375 v -8.67664 c 0,-0.0953 -0.0363,-0.18697 -0.1014,-0.25648 l -2.41245,-2.57327 c -0.07095,-0.0756 -0.16995,-0.11853 -0.2736,-0.11853 z" stroke="#f2f2f2" id="save-7" style="fill:none;stroke:#42ece6;stroke-width:0.999997;stroke-opacity:1" />
|
||||
</g>
|
||||
<path style="fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 156,875.36218 6,-6 h -12 z" id="arrow-down" inkscape:connector-curvature="0" sodipodi:nodetypes="cccc" />
|
||||
<path style="fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 159,896.36218 -6,-6 v 12 z" id="arrow-right" inkscape:connector-curvature="0" sodipodi:nodetypes="cccc" />
|
||||
<path id="permissions" class="sprite" d="m 151.39636,940.36205 c -2.24289,-0.005 -4.05758,1.79327 -4.06262,4.00014 0.005,2.21175 1.81973,3.9966 4.06262,4.00014 1.49552,-0.002 2.79821,-0.80916 3.50023,-2.00007 h 1.64589 l 1.31254,-1.27088 1.00005,0.95837 0.95837,-0.93753 0.97921,0.95838 1.00005,-0.95838 0.97921,0.95838 1.7084,-1.6459 c 0.24596,-0.25014 0.25203,-0.43892 0,-0.68752 l -1.39588,-1.37504 h -8.16683 c -0.69828,-1.20226 -2.01522,-2.00317 -3.52088,-2.00007 z m -1.77089,2.91689 c 0.58953,-0.003 1.05806,0.47235 1.06254,1.06254 -0.004,0.58196 -0.47273,1.05714 -1.06254,1.06253 -0.59953,-0.006 -1.08889,-0.48057 -1.08338,-1.06253 -0.005,-0.59019 0.48385,-1.06537 1.08338,-1.06254 z" fill="#f2f2f2" stroke="#999999" stroke-width="0.166673" />
|
||||
<path id="import" class="sprite" d="m 156.0004,912.44554 c -4.37271,0 -7.91753,3.54481 -7.91753,7.91753 0,4.37272 3.54482,7.91752 7.91753,7.91752 4.37272,0 7.91752,-3.5448 7.91752,-7.91752 0,-4.37272 -3.5448,-7.91753 -7.91752,-7.91753 z m 0,3.29893 4.6186,4.6186 h -3.29893 v 3.95876 h -2.63909 v -3.95876 h -3.29893 z" fill="#f2f2f2" stroke="#999999" stroke-width="0.164949" />
|
||||
<g id="tilelayers" transform="matrix(2.5261037,0,0,2.5463653,48.310583,954.88883)" style="stroke-width:0.993545">
|
||||
<path d="m 25.978244,7.8843707 h 0.03307 V 7.8512977 4.3049501 4.2718771 h -0.03307 -3.713453 -0.03307 v 0.033073 3.5463476 0.033073 h 0.03307 z M 21.999543,3.7253064 h 4.243946 c 0.06157,0 0.120623,0.024461 0.164173,0.068001 0.04352,0.04354 0.068,0.1025948 0.068,0.1641713 v 4.2439425 c 0,0.061569 -0.02447,0.1206236 -0.068,0.164174 -0.04355,0.04355 -0.102605,0.067998 -0.164173,0.067998 h -4.243946 c -0.06158,0 -0.120628,-0.024448 -0.164171,-0.067998 -0.04354,-0.04355 -0.068,-0.1026054 -0.068,-0.164174 V 3.9574787 c 0,-0.061577 0.02446,-0.1206315 0.068,-0.1641713 0.04354,-0.04354 0.102595,-0.068001 0.164171,-0.068001 z" fill="#f2f2f2" stroke="#999999" stroke-width="0.0657188" id="path1257" />
|
||||
<path d="m 25.978244,7.8843707 h 0.03307 v -0.033073 -3.5463476 -0.033073 h -0.03307 -3.713453 -0.03307 v 0.033073 3.5463476 0.033073 h 0.03307 z m -3.978701,-4.1590643 h 4.243946 c 0.06157,0 0.120623,0.024461 0.164173,0.068001 0.04352,0.04354 0.068,0.1025948 0.068,0.1641713 v 4.2439425 c 0,0.061569 -0.02447,0.1206236 -0.068,0.164174 -0.04355,0.04355 -0.102605,0.067998 -0.164173,0.067998 h -4.243946 c -0.06158,0 -0.120628,-0.024448 -0.164171,-0.067998 -0.04354,-0.04355 -0.068,-0.1026054 -0.068,-0.164174 v -4.2439425 c 0,-0.061577 0.02446,-0.1206315 0.068,-0.1641713 0.04354,-0.04354 0.102595,-0.068001 0.164171,-0.068001 z" fill="#f2f2f2" stroke="#999999" stroke-width="0.0657188" id="path1257" />
|
||||
<g mask="url(#mask0_181_11916)" id="g1284" transform="matrix(0.2645833,0,0,0.2645833,20.108331,2.1166664)" style="stroke-width:0.993545">
|
||||
<path d="M 16.0401,2.3158 H 2.005 v 14.0351 h 14.0351 z" fill="#d5ecbe" id="path1262" style="stroke-width:0.992312" />
|
||||
<path d="M 2.37597,3.42857 C 2.64371,3.11619 2.99113,2.88224 3.38126,2.75161 3.7714,2.62098 4.18964,2.59855 4.59151,2.68672 c 0.32391,0.15649 0.58536,0.41794 0.74185,0.74185 0.37093,0.72181 0,1.26316 0,2.21554 C 5.25316,7.36842 6.33587,7.72933 6.06519,9.33334 5.98499,9.90476 5.72434,10.7769 5.33336,10.807 4.71181,10.8672 4.39101,8.80201 3.11782,8.59148 c -0.39097,-0.06015 -0.47117,0.11028 -0.74185,0 -1.05263,-0.401 -1.523811,-3.65915 0,-5.16291 z" fill="#e9daab" id="path1264" style="stroke-width:0.992312" />
|
||||
<path d="M 7.1779,16.3509 C 5.42352,14.6266 5.01249,14.5965 5.01249,14.1353 4.85209,13.1328 6.75685,12.8421 7.22803,11.178 7.55886,10.005 6.75685,9.61404 6.48617,7.48873 6.32577,6.2356 6.08517,4.27068 7.22803,3.05765 8.37089,1.84462 10.3659,1.88472 11.6591,2.3158 c 1.0647,0.38986 1.9867,1.09245 2.6451,2.01558 0.6584,0.92314 1.0223,2.02371 1.0441,3.15735 0,1.24311 -0.6817,1.65413 -0.7318,3.68927 0.0605,0.7372 0.0605,1.4782 0,2.2155 -0.1546,1.1225 -0.6763,2.1624 -1.4837,2.9574 C 11.629,17.6942 9.22302,18.0451 7.90973,17.0927 7.75936,16.9825 7.83956,17.0426 7.1779,16.3509 Z" fill="#bcd8af" id="path1266" style="stroke-width:0.992312" />
|
||||
<path d="m 16.0401,2.3158 h -14.0351 v 14.0351 h 14.0351 z" fill="#d5ecbe" id="path1262" style="stroke-width:0.992312" />
|
||||
<path d="m 2.37597,3.42857 c 0.26774,-0.31238 0.61516,-0.54633 1.00529,-0.67696 0.39014,-0.13063 0.80838,-0.15306 1.21025,-0.06489 0.32391,0.15649 0.58536,0.41794 0.74185,0.74185 0.37093,0.72181 0,1.26316 0,2.21554 -0.0802,1.72431 1.00251,2.08522 0.73183,3.68923 -0.0802,0.57142 -0.34085,1.44356 -0.73183,1.47366 -0.62155,0.0602 -0.94235,-2.00499 -2.21554,-2.21552 -0.39097,-0.06015 -0.47117,0.11028 -0.74185,0 -1.05263,-0.401 -1.523811,-3.65915 0,-5.16291 z" fill="#e9daab" id="path1264" style="stroke-width:0.992312" />
|
||||
<path d="m 7.1779,16.3509 c -1.75438,-1.7243 -2.16541,-1.7544 -2.16541,-2.2156 -0.1604,-1.0025 1.74436,-1.2932 2.21554,-2.9573 0.33083,-1.173 -0.47118,-1.56396 -0.74186,-3.68927 -0.1604,-1.25313 -0.401,-3.21805 0.74186,-4.43108 1.14286,-1.21303 3.13787,-1.17293 4.43107,-0.74185 1.0647,0.38986 1.9867,1.09245 2.6451,2.01558 0.6584,0.92314 1.0223,2.02371 1.0441,3.15735 0,1.24311 -0.6817,1.65413 -0.7318,3.68927 0.0605,0.7372 0.0605,1.4782 0,2.2155 -0.1546,1.1225 -0.6763,2.1624 -1.4837,2.9574 -1.5038,1.3433 -3.90978,1.6942 -5.22307,0.7418 -0.15037,-0.1102 -0.07017,-0.0501 -0.73183,-0.7418 z" fill="#bcd8af" id="path1266" style="stroke-width:0.992312" />
|
||||
<path d="m 14.1956,9.33332 c -0.4303,0.37544 -0.6966,0.90438 -0.7419,1.47368 0,0.1203 0,1.213 0.7419,1.4837 0.2937,0.0714 0.6033,0.036 0.8733,-0.0999 0.27,-0.1359 0.4828,-0.3635 0.6004,-0.6419 0.066,-0.2429 0.066,-0.499 0,-0.7419 -0.1604,-1.38345 0.3007,-2.00501 0,-2.21553 -0.3008,-0.21053 -1.0928,0.35087 -1.4737,0.74185 z" fill="#ebe9d6" id="path1268" style="stroke-width:0.992312" />
|
||||
<path d="m 14.1955,15.2381 c 0.2874,0.0123 0.5733,-0.0483 0.831,-0.1763 0.2577,-0.1279 0.4788,-0.3191 0.6427,-0.5555 0.2005,-0.3308 0.4411,-1.0526 0,-1.4837 -0.2062,-0.1739 -0.4672,-0.2693 -0.7369,-0.2693 -0.2696,0 -0.5306,0.0954 -0.7368,0.2693 0,0 -1.4837,0.7418 -1.4837,1.4837 0,0.7418 1.4837,0.7318 1.4837,0.7318 z" fill="#f3ecdd" id="path1270" style="stroke-width:0.992312" />
|
||||
<path d="M 7.90976,1.57394 C 6.01502,2.89725 5.6441,3.86968 5.69422,4.53134 c 0.0802,1.0025 1.09273,1.37343 1.48371,3.00752 0.19537,0.72559 0.19537,1.48994 0,2.21553 -0.58145,1.85461 -2.51629,1.88471 -3.69925,3.68921 -0.6679,1.11 -0.92678,2.4186 -0.73183,3.6993" stroke="#dfa170" stroke-width="0.745158" stroke-miterlimit="10" id="path1272" style="fill:none" />
|
||||
<path d="m 7.90976,1.57394 c -1.89474,1.32331 -2.26566,2.29574 -2.21554,2.9574 0.0802,1.0025 1.09273,1.37343 1.48371,3.00752 0.19537,0.72559 0.19537,1.48994 0,2.21553 -0.58145,1.85461 -2.51629,1.88471 -3.69925,3.68921 -0.6679,1.11 -0.92678,2.4186 -0.73183,3.6993" stroke="#dfa170" stroke-width="0.745158" stroke-miterlimit="10" id="path1272" style="fill:none" />
|
||||
<path d="m 5.33325,1.94485 c 1.5732,1.61744 2.60339,3.68483 2.94737,5.91479 0.13097,0.73271 0.13097,1.48283 0,2.21556 -0.33083,1.7042 -1.30326,2.3559 -2.21554,4.4311 -0.31515,0.713 -0.56025,1.455 -0.73183,2.2155" stroke="#e0859b" stroke-width="0.248386" stroke-miterlimit="10" id="path1274" style="fill:none" />
|
||||
<path d="m 10.4963,14.5063 c -1.84462,-1.0025 -1.7143,-5.53387 0,-6.64665 0.5915,-0.38096 1.1328,-0.21053 1.4837,-0.74186 0.5213,-0.802 -0.411,-1.69423 0,-2.95739 0.2306,-0.72181 0.8922,-1.52381 1.4737,-1.47369 1.0025,0.0802 2.1253,2.5564 1.4737,4.43108 -0.5314,1.56391 -1.9148,1.51379 -2.2156,3.00751 -0.3408,1.6441 1.2732,2.6266 0.7419,3.6892 -0.3395,0.4362 -0.8182,0.7428 -1.3564,0.8687 -0.5382,0.1259 -1.1033,0.0634 -1.601,-0.1769 z" fill="#ade3ea" id="path1276" style="stroke-width:0.992312" />
|
||||
<path d="M 7.90971,2.31578 C 7.51873,3.22806 8.12023,4.46115 8.65156,4.53132 9.18289,4.6015 9.31322,3.87969 10.1353,3.78947 c 0.401,0 0.5213,0.1203 0.7318,0 0.5013,-0.27068 0.6115,-1.62406 0,-2.21554 C 10.6274,1.41713 10.3579,1.31164 10.0755,1.26409 9.79306,1.21654 9.50385,1.22797 9.22606,1.29765 8.94826,1.36734 8.6879,1.49377 8.46135,1.66899 8.23481,1.84421 8.04699,2.06443 7.90971,2.31578 Z" fill="#748ec2" id="path1278" style="stroke-width:0.992312" />
|
||||
<path d="M 10.1354,5.27317 C 9.82458,5.57392 9.25315,6.1253 9.3935,6.74686 c 0.09023,0.401 0.45113,0.78195 0.7419,0.74185 0.2907,-0.0401 0.2907,-0.57143 0.7318,-0.74185 0.4411,-0.17043 0.5113,0.11027 0.7418,0 0.5314,-0.24061 0.6116,-1.92482 0,-2.21554 -0.6115,-0.29073 -1.2431,0.4812 -1.4736,0.74185 z" fill="#f3ecdd" id="path1280" style="stroke-width:0.992312" />
|
||||
<path d="M 3.47861,3.78948 C 3.74929,3.62908 4.79189,4.33083 4.96232,5.27319 5.13275,6.21555 4.14027,7.58898 3.47861,7.48873 3.1966,7.37627 2.96599,7.16372 2.83095,6.8918 2.69592,6.61988 2.66595,6.30769 2.74678,6.01504 3.01746,5.46367 4.20042,5.57394 4.22047,5.28321 4.24052,4.99249 3.70919,5.01254 3.47861,4.53133 c -0.1203,-0.27067 -0.14035,-0.65162 0,-0.74185 z" fill="#cfd7c8" id="path1282" style="stroke-width:0.992312" />
|
||||
<path d="m 7.90971,2.31578 c -0.39098,0.91228 0.21052,2.14537 0.74185,2.21554 0.53133,0.07018 0.66166,-0.65163 1.48374,-0.74185 0.401,0 0.5213,0.1203 0.7318,0 0.5013,-0.27068 0.6115,-1.62406 0,-2.21554 -0.2397,-0.1568 -0.5092,-0.26229 -0.7916,-0.30984 -0.28244,-0.04755 -0.57165,-0.03612 -0.84944,0.03356 -0.2778,0.06969 -0.53816,0.19612 -0.76471,0.37134 -0.22654,0.17522 -0.41436,0.39544 -0.55164,0.64679 z" fill="#748ec2" id="path1278" style="stroke-width:0.992312" />
|
||||
<path d="m 10.1354,5.27317 c -0.31082,0.30075 -0.88225,0.85213 -0.7419,1.47369 0.09023,0.401 0.45113,0.78195 0.7419,0.74185 0.2907,-0.0401 0.2907,-0.57143 0.7318,-0.74185 0.4411,-0.17043 0.5113,0.11027 0.7418,0 0.5314,-0.24061 0.6116,-1.92482 0,-2.21554 -0.6115,-0.29073 -1.2431,0.4812 -1.4736,0.74185 z" fill="#f3ecdd" id="path1280" style="stroke-width:0.992312" />
|
||||
<path d="m 3.47861,3.78948 c 0.27068,-0.1604 1.31328,0.54135 1.48371,1.48371 0.17043,0.94236 -0.82205,2.31579 -1.48371,2.21554 -0.28201,-0.11246 -0.51262,-0.32501 -0.64766,-0.59693 -0.13503,-0.27192 -0.165,-0.58411 -0.08417,-0.87676 0.27068,-0.55137 1.45364,-0.4411 1.47369,-0.73183 0.02005,-0.29072 -0.51128,-0.27067 -0.74186,-0.75188 -0.1203,-0.27067 -0.14035,-0.65162 0,-0.74185 z" fill="#cfd7c8" id="path1282" style="stroke-width:0.992312" />
|
||||
</g>
|
||||
<path d="m 24.352274,6.3088036 h 0.03307 V 6.2757306 2.7293857 2.6963127 h -0.03307 -3.713451 -0.03307 v 0.033073 3.5463449 0.033073 h 0.03307 z M 20.373578,2.1497393 h 4.24394 c 0.06157,0 0.120624,0.024461 0.164174,0.068002 0.04355,0.043541 0.068,0.102595 0.068,0.1641723 v 4.2439399 c 0,0.061569 -0.02445,0.1206236 -0.068,0.164174 -0.04355,0.04355 -0.102605,0.067998 -0.164174,0.067998 h -4.24394 c -0.06158,0 -0.120631,-0.024447 -0.164172,-0.067998 -0.04354,-0.04355 -0.068,-0.1026054 -0.068,-0.164174 V 2.3819136 c 0,-0.061577 0.02446,-0.1206315 0.068,-0.1641723 0.04354,-0.043541 0.102595,-0.068002 0.164172,-0.068002 z" fill="#f2f2f2" stroke="#999999" stroke-width="0.0657188" id="path1286" />
|
||||
<path d="m 24.352274,6.3088036 h 0.03307 v -0.033073 -3.5463449 -0.033073 h -0.03307 -3.713451 -0.03307 v 0.033073 3.5463449 0.033073 h 0.03307 z m -3.978696,-4.1590643 h 4.24394 c 0.06157,0 0.120624,0.024461 0.164174,0.068002 0.04355,0.043541 0.068,0.102595 0.068,0.1641723 v 4.2439399 c 0,0.061569 -0.02445,0.1206236 -0.068,0.164174 -0.04355,0.04355 -0.102605,0.067998 -0.164174,0.067998 h -4.24394 c -0.06158,0 -0.120631,-0.024447 -0.164172,-0.067998 -0.04354,-0.04355 -0.068,-0.1026054 -0.068,-0.164174 v -4.2439399 c 0,-0.061577 0.02446,-0.1206315 0.068,-0.1641723 0.04354,-0.043541 0.102595,-0.068002 0.164172,-0.068002 z" fill="#f2f2f2" stroke="#999999" stroke-width="0.0657188" id="path1286" />
|
||||
</g>
|
||||
<path style="color:#000000;fill:#f2f2f2;fill-rule:evenodd;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-dasharray:none" d="m 133.73437,963.36133 -4.73437,4.73437 5.05078,4.6836 1.35938,-1.4668 -3.52735,-3.26953 3.26563,-3.26563 z" id="path1-67" />
|
||||
<path style="color:#000000;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-dasharray:none;stroke-opacity:1" d="m 133.73437,963.36133 -4.73437,4.73437 5.05078,4.6836 1.35938,-1.4668 -3.52735,-3.26953 3.26563,-3.26563 z" id="path1-67" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="m 87.166638,966.62162 -3.166579,-2.99638 -3.166613,2.99638 -0.833375,-0.78858 3.4333,-3.24873 c 0.312979,-0.29613 0.82041,-0.29613 1.133389,0 l 3.43324,3.24873 z m -6.333275,3.48122 3.166626,2.99639 3.166649,-2.99639 0.833362,0.78859 -3.433322,3.24872 c -0.312968,0.29608 -0.820411,0.29608 -1.133378,0 l -3.4333,-3.24872 z" fill="#efefef" id="path1-675" style="stroke-width:0.999996" />
|
||||
<path style="fill:#efefef;fill-opacity:1;stroke-width:0.999996" d="m 63.166637,974.36218 -3.166626,-2.99639 -3.166649,2.99639 -0.833362,-0.78859 3.433322,-3.24872 c 0.312968,-0.29608 0.820411,-0.29608 1.133378,0 l 3.4333,3.24872 z" id="path5" />
|
||||
<path style="fill:#efefef;fill-opacity:1;stroke-width:0.999996" d="m 56.000071,963.15076 3.43324,3.24873 c 0.312979,0.29613 0.82041,0.29613 1.133389,0 l 3.4333,-3.24873 -0.833375,-0.78858 -3.166613,2.99638 -3.166579,-2.99638 z" id="path1-675-2" />
|
||||
|
@ -208,7 +200,7 @@
|
|||
<path style="fill:#f2f2f2;stroke:#999999;stroke-width:0.25;paint-order:fill markers stroke" d="m 8.1902877,37.423896 c -0.4872187,-0.174113 -0.7923051,-0.442073 -0.9946703,-0.873627 l -0.1907982,-0.406887 -1.3702708,-0.0034 c -1.4982701,-0.0037 -1.5910875,-0.03214 -1.5406237,-0.47225 l 0.026557,-0.23161 1.4211632,-0.02255 1.4211632,-0.02255 0.1982698,-0.389502 c 0.347892,-0.683434 0.8634941,-1.009111 1.592299,-1.005764 0.7177082,0.0033 1.3415151,0.432422 1.6290831,1.120669 l 0.116359,0.278485 h 4.65745 c 4.520341,0 4.659962,0.0047 4.742759,0.159402 0.1159,0.216562 0.107667,0.300926 -0.04419,0.452784 -0.114657,0.114657 -0.660626,0.129501 -4.763204,0.129501 h -4.633703 l -0.104975,0.290304 c -0.152574,0.421935 -0.6274874,0.844474 -1.1103021,0.987854 -0.4962156,0.147361 -0.6614998,0.148792 -1.0523644,0.0091 z m 0.9689602,-0.845129 c 0.6980003,-0.331223 0.6980003,-1.377155 0,-1.708378 -0.3515556,-0.166824 -0.4925823,-0.168492 -0.8270409,-0.0098 -0.3376099,0.160207 -0.5444962,0.513326 -0.5444962,0.929363 0,0.368008 0.1600657,0.606145 0.5356626,0.796928 0.3157622,0.16039 0.4841923,0.158752 0.8358745,-0.0081 z" id="path8" transform="translate(0,812.36218)" />
|
||||
<path style="fill:#f2f2f2;stroke:#999999;stroke-width:0.25;paint-order:fill markers stroke" d="m 12.773494,42.243521 c -0.4045,-0.187277 -0.732456,-0.526846 -0.902897,-0.934868 l -0.128748,-0.308213 -3.8106837,-0.02143 -3.8106834,-0.02142 -0.026557,-0.23161 c -0.055311,-0.482381 -0.1677415,-0.468805 3.8892984,-0.469606 l 3.7189457,-7.33e-4 0.21287,-0.431917 c 0.651632,-1.322166 2.472575,-1.284611 3.125651,0.06446 l 0.178591,0.36892 h 2.297219 c 2.258426,0 2.298803,0.003 2.391007,0.175244 0.06808,0.127207 0.06936,0.228859 0.0047,0.370843 l -0.08912,0.1956 h -2.305381 -2.30538 l -0.15493,0.350241 c -0.387132,0.875164 -1.437261,1.286451 -2.283867,0.894485 z m 1.063202,-0.700358 c 0.378023,-0.157949 0.544298,-0.425794 0.541165,-0.871741 -0.004,-0.573585 -0.363385,-0.908772 -0.974299,-0.908772 -0.312041,0 -0.40386,0.04292 -0.649922,0.303826 -0.257768,0.273313 -0.282484,0.339859 -0.246104,0.662621 0.04524,0.401361 0.228194,0.651219 0.595596,0.813394 0.317179,0.140006 0.399909,0.140082 0.733564,6.68e-4 z" id="path9" transform="translate(0,812.36218)" />
|
||||
<path style="color:#000000;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-dasharray:none;stroke-opacity:1" d="m 154.67579,963.53902 4.73437,4.73437 -5.05078,4.6836 -1.35938,-1.4668 3.52735,-3.26953 -3.26563,-3.26563 z" id="path1-67-5" />
|
||||
<path id="copy" style="fill:#f2f2f2;paint-order:fill markers stroke;fill-opacity:1" d="m 58,914.36218 v 3.5 h 4 v 4 h 3.5 v -7.5 z m -4,4 v 7.5 h 7.5 v -7.5 z" />
|
||||
<path id="copy" style="fill:#f2f2f2;fill-opacity:1;paint-order:fill markers stroke" d="m 58,914.36218 v 3.5 h 4 v 4 h 3.5 v -7.5 z m -4,4 v 7.5 h 7.5 v -7.5 z" />
|
||||
<g id="g1-5" transform="translate(0.1,0.1)">
|
||||
<g id="g24">
|
||||
<path d="m 12,912.36218 c -4.4182692,0 -8,3.58172 -8,8 0.00463,1.61557 0.4982915,3.19189 1.4160156,4.52148 0.1980248,0.28729 0.4146342,0.56131 0.6484375,0.82032 1.5128357,1.68659 3.6698868,2.65261 5.9355469,2.6582 2.266949,-0.006 4.424914,-0.97357 5.9375,-2.66211 0.23535,-0.26077 0.45327,-0.53676 0.652344,-0.82617 0.913769,-1.32754 1.405284,-2.9001 1.410156,-4.51172 0,-4.41828 -3.58173,-8 -8,-8 z m -5.3242188,12.50586 c 1.3285496,-1.56088 3.274489,-2.46104 5.3242188,-2.46289 2.050412,10e-4 3.997179,0.90149 5.326172,2.46289 0,0 -0.0035,-0.003 0.0059,0.006 0,0 -0.537098,0.5762 -0.839844,0.82812 -0.175326,0.14821 -0.35784,0.2877 -0.546874,0.41797 -0.06626,0.0467 -0.133328,0.0923 -0.201172,0.13672 -0.244804,0.15763 -0.499205,0.29983 -0.761719,0.42578 -0.931874,0.44366 -1.950332,0.67577 -2.982422,0.67969 -0.618083,-0.005 -1.232807,-0.0915 -1.828125,-0.25781 -0.6753225,-0.18416 -1.3192066,-0.46858 -1.9101562,-0.84375 -0.0685,-0.0444 -0.1362192,-0.09 -0.203125,-0.13672 -0.00521,-0.004 -0.010422,-0.008 -0.015625,-0.0117 -0.1876607,-0.12974 -0.3688672,-0.26858 -0.5429688,-0.41602 -0.2997188,-0.24977 -0.5780329,-0.52416 -0.8320313,-0.82031 m -0.5917968,-0.81445 c -0.6976631,-1.10814 -1.0705109,-2.38976 -1.0761719,-3.69922 0,-3.86599 3.1340146,-7 7,-7 l -4.1e-5,-1.6e-4 c 3.865985,0 7,3.13401 7,7 -0.0054,1.30234 -0.374061,2.57734 -1.064453,3.68164 -1.516341,-1.67935 -3.672913,-2.63806 -5.935547,-2.63867 -2.2612709,0.008 -4.4133749,0.97341 -5.9238281,2.65625" style="fill:#f2f2f2;stroke:#999999;stroke-width:0.2;paint-order:fill markers stroke" id="path24" sodipodi:nodetypes="scccccccsccccccccccccccccccccccc" />
|
||||
|
@ -224,5 +216,8 @@
|
|||
<path d="m 8.5,9.3501 h -3 v 2.39" stroke="#323737" stroke-width="0.7" stroke-linecap="round" stroke-linejoin="round" id="path6-6" style="stroke:#999999;stroke-opacity:1" />
|
||||
<path d="m 5.5,9.3501 h 3 v 2.39" stroke="#323737" stroke-width="0.7" stroke-linecap="round" stroke-linejoin="round" id="path7-2" style="stroke:#999999;stroke-opacity:1" />
|
||||
</g>
|
||||
<g clip-path="url(#clip0_2695_1939)" id="g2-67" transform="translate(170.11621,814.31159)">
|
||||
<path d="m 8.84533,14.8298 c -0.28116,0.6439 -1.1722,0.6439 -1.45333,0 l -0.73138,-1.6751 c -0.65086,-1.4907 -1.82238,-2.6774 -3.2837,-3.32604 l -2.0131,-0.89358 c -0.64004,-0.28408 -0.64004,-1.21518 0,-1.49928 l 1.95022,-0.86569 c 1.4989,-0.66535 2.69143,-1.89594 3.33118,-3.43751 l 0.74086,-1.78516 c 0.27491,-0.662471 1.19025,-0.662472 1.46517,0 l 0.74083,1.78517 c 0.63972,1.54156 1.83222,2.77215 3.33112,3.4375 l 1.9503,0.86569 c 0.64,0.2841 0.64,1.2152 0,1.49928 l -2.0131,0.89358 c -1.4613,0.64864 -2.6328,1.83534 -3.28374,3.32604 z m -5.06236,-6.64435 c 1.90486,0.84555 3.45371,2.23535 4.33568,4.14775 0.88202,-1.9124 2.43085,-3.3022 4.33565,-4.14775 -1.9276,-0.85565 -3.4813,-2.31323 -4.33564,-4.25955 -0.85434,1.94633 -2.4081,3.4039 -4.33569,4.25955 z m 12.38483,10.72295 0.2057,-0.4714 c 0.3667,-0.8405 1.0271,-1.5098 1.8511,-1.8758 l 0.6336,-0.2816 c 0.3428,-0.1523 0.3428,-0.6504 0,-0.8026 l -0.5981,-0.2658 c -0.8453,-0.3755 -1.5175,-1.0695 -1.8779,-1.9386 l -0.2112,-0.5094 c -0.1473,-0.355 -0.6381,-0.355 -0.7853,0 l -0.2112,0.5094 c -0.3603,0.8691 -1.0326,1.5631 -1.8778,1.9386 l -0.5983,0.2658 c -0.3427,0.1522 -0.3427,0.6503 0,0.8026 l 0.6337,0.2816 c 0.8241,0.366 1.4844,1.0353 1.8511,1.8758 l 0.2057,0.4714 c 0.1505,0.3451 0.6283,0.3451 0.7789,0 z m -0.8557,-3.0358 0.4687,-0.4655 0.459,0.4655 -0.459,0.4524 z" fill="#efefef" id="path1-5" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 43 KiB |
|
@ -165,7 +165,9 @@ class Feature {
|
|||
}
|
||||
|
||||
getSlug() {
|
||||
return this.properties[this._umap.getProperty('slugKey') || 'name'] || ''
|
||||
return (
|
||||
this.properties[this._umap.getProperty('slugKey') || U.DEFAULT_LABEL_KEY] || ''
|
||||
)
|
||||
}
|
||||
|
||||
getPermalink() {
|
||||
|
@ -234,15 +236,23 @@ class Feature {
|
|||
container.appendChild(builder.build())
|
||||
|
||||
const properties = []
|
||||
let labelKeyFound = undefined
|
||||
for (const property of this.datalayer._propertiesIndex) {
|
||||
if (['name', 'description'].includes(property)) {
|
||||
if (!labelKeyFound && U.LABEL_KEYS.includes(property)) {
|
||||
labelKeyFound = property
|
||||
continue
|
||||
}
|
||||
if (property === 'description') {
|
||||
continue
|
||||
}
|
||||
properties.push([`properties.${property}`, { label: property }])
|
||||
}
|
||||
// We always want name and description for now (properties management to come)
|
||||
properties.unshift('properties.description')
|
||||
properties.unshift('properties.name')
|
||||
if (!labelKeyFound) {
|
||||
labelKeyFound = U.DEFAULT_LABEL_KEY
|
||||
}
|
||||
properties.unshift([`properties.${labelKeyFound}`, { label: labelKeyFound }])
|
||||
builder = new U.FormBuilder(this, properties, {
|
||||
id: 'umap-feature-properties',
|
||||
})
|
||||
|
@ -255,7 +265,7 @@ class Feature {
|
|||
this.getAdvancedEditActions(advancedActions)
|
||||
const onLoad = this._umap.editPanel.open({ content: container })
|
||||
onLoad.then(() => {
|
||||
builder.helpers['properties.name'].input.focus()
|
||||
builder.helpers[`properties.${labelKeyFound}`].input.focus()
|
||||
})
|
||||
this._umap.editedFeature = this
|
||||
if (!this.ui.isOnScreen(this._umap._leafletMap.getBounds())) this.zoomTo(event)
|
||||
|
@ -316,19 +326,21 @@ class Feature {
|
|||
|
||||
endEdit() {}
|
||||
|
||||
getDisplayName(fallback) {
|
||||
const key = this.getOption('labelKey') || 'name'
|
||||
getDisplayName() {
|
||||
const keys = U.LABEL_KEYS.slice() // Copy.
|
||||
const labelKey = this.getOption('labelKey')
|
||||
// Variables mode.
|
||||
if (Utils.hasVar(key)) {
|
||||
return Utils.greedyTemplate(key, this.extendedProperties())
|
||||
if (labelKey) {
|
||||
if (Utils.hasVar(labelKey)) {
|
||||
return Utils.greedyTemplate(labelKey, this.extendedProperties())
|
||||
}
|
||||
// Simple mode.
|
||||
return (
|
||||
this.properties[key] ||
|
||||
this.properties.title ||
|
||||
fallback ||
|
||||
this.datalayer.getName()
|
||||
)
|
||||
keys.unshift(labelKey)
|
||||
}
|
||||
for (const key of keys) {
|
||||
const value = this.properties[key]
|
||||
if (value) return value
|
||||
}
|
||||
return this.datalayer.getName()
|
||||
}
|
||||
|
||||
hasPopupFooter() {
|
||||
|
|
|
@ -289,7 +289,7 @@ export class DataLayer extends ServerStored {
|
|||
|
||||
reindex() {
|
||||
const features = Object.values(this._features)
|
||||
Utils.sortFeatures(features, this._umap.getProperty('sortKey'), U.lang)
|
||||
this.sortFeatures(features)
|
||||
this._index = features.map((feature) => stamp(feature))
|
||||
}
|
||||
|
||||
|
@ -428,6 +428,10 @@ export class DataLayer extends ServerStored {
|
|||
if (idx !== -1) this._propertiesIndex.splice(idx, 1)
|
||||
}
|
||||
|
||||
allProperties() {
|
||||
return this._propertiesIndex
|
||||
}
|
||||
|
||||
sortedValues(property) {
|
||||
return Object.values(this._features)
|
||||
.map((feature) => feature.properties[property])
|
||||
|
@ -446,6 +450,11 @@ export class DataLayer extends ServerStored {
|
|||
}
|
||||
}
|
||||
|
||||
sortFeatures(collection) {
|
||||
const sortKeys = this._umap.getProperty('sortKey') || U.DEFAULT_LABEL_KEY
|
||||
return Utils.sortFeatures(collection, sortKeys, U.lang)
|
||||
}
|
||||
|
||||
makeFeatures(geojson = {}, sync = true) {
|
||||
if (geojson.type === 'Feature' || geojson.coordinates) {
|
||||
geojson = [geojson]
|
||||
|
@ -454,7 +463,7 @@ export class DataLayer extends ServerStored {
|
|||
? geojson
|
||||
: geojson.features || geojson.geometries
|
||||
if (!collection) return
|
||||
Utils.sortFeatures(collection, this._umap.getProperty('sortKey'), U.lang)
|
||||
this.sortFeatures(collection)
|
||||
for (const feature of collection) {
|
||||
this.makeFeature(feature, sync)
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { uMapAlert as Alert } from '../components/alerts/alert.js'
|
||||
import { AjaxAutocomplete, AjaxAutocompleteMultiple } from './autocomplete.js'
|
||||
import { AjaxAutocomplete, AjaxAutocompleteMultiple, AutocompleteDatalist } from './autocomplete.js'
|
||||
import Help from './help.js'
|
||||
import { ServerRequest } from './request.js'
|
||||
import { SCHEMA } from './schema.js'
|
||||
|
@ -17,6 +17,7 @@ window.U = {
|
|||
Alert,
|
||||
AjaxAutocomplete,
|
||||
AjaxAutocompleteMultiple,
|
||||
AutocompleteDatalist,
|
||||
Help,
|
||||
Icon,
|
||||
LAYER_TYPES,
|
||||
|
|
|
@ -6,17 +6,14 @@ import Dialog from './ui/dialog.js'
|
|||
import * as Utils from './utils.js'
|
||||
|
||||
const TEMPLATE = `
|
||||
<div class="umap-upload">
|
||||
<h3><i class="icon icon-16 icon-upload"></i><span>${translate('Import data')}</span></h3>
|
||||
<fieldset class="formbox">
|
||||
<legend class="counter">${translate('Choose data')}</legend>
|
||||
<input type="file" multiple autofocus onchange />
|
||||
<input type="url" placeholder="${translate('Provide an URL here')}" onchange />
|
||||
<textarea onchange placeholder="${translate('Paste your data here')}"></textarea>
|
||||
<div class="importers" hidden>
|
||||
<h4>${translate('Import helpers:')}</h4>
|
||||
<ul class="grid-container">
|
||||
</ul>
|
||||
</div>
|
||||
<input class="highlightable" type="url" placeholder="${translate('Provide an URL here')}" onchange />
|
||||
<button class="flat importers" hidden data-ref="importersButton"><i class="icon icon-16 icon-magic"></i>${translate('Import helpers')}</button>
|
||||
</fieldset>
|
||||
<fieldset class="formbox">
|
||||
<legend class="counter" data-help="importFormats">${translate(
|
||||
|
@ -36,28 +33,40 @@ const TEMPLATE = `
|
|||
<fieldset id="import-mode" class="formbox">
|
||||
<legend class="counter" data-help="importMode">${translate('Choose import mode')}</legend>
|
||||
<label>
|
||||
<input type="radio" name="action" value="copy" />
|
||||
<input type="radio" name="action" value="copy" checked onchange />
|
||||
${translate('Copy into the layer')}
|
||||
</label>
|
||||
<label>
|
||||
<input type="radio" name="action" value="link" />
|
||||
<input type="radio" name="action" value="link" onchange />
|
||||
${translate('Link to the layer as remote data')}
|
||||
</label>
|
||||
</fieldset>
|
||||
<input type="button" class="button" name="submit" value="${translate('Import data')}" />
|
||||
<input type="button" class="button primary" name="submit" value="${translate('Import data')}" disabled />
|
||||
</div>
|
||||
`
|
||||
|
||||
export default class Importer {
|
||||
const GRID_TEMPLATE = `
|
||||
<div>
|
||||
<h3><i class="icon icon-16 icon-magic"></i>${translate('Import helpers')}</h3>
|
||||
<p>${translate('Import helpers will fill the URL field for you.')}</p>
|
||||
<ul class="grid-container by4" data-ref="grid"></ul>
|
||||
</div>
|
||||
`
|
||||
|
||||
export default class Importer extends Utils.WithTemplate {
|
||||
constructor(umap) {
|
||||
super()
|
||||
this._umap = umap
|
||||
this.TYPES = ['geojson', 'csv', 'gpx', 'kml', 'osm', 'georss', 'umap']
|
||||
this.IMPORTERS = []
|
||||
this.loadImporters()
|
||||
this.dialog = new Dialog()
|
||||
this.dialog = new Dialog({ className: 'importers dark' })
|
||||
}
|
||||
|
||||
loadImporters() {
|
||||
for (const [name, config] of Object.entries(this._umap.properties.importers || {})) {
|
||||
for (const [name, config] of Object.entries(
|
||||
this._umap.properties.importers || {}
|
||||
)) {
|
||||
const register = (mod) => {
|
||||
this.IMPORTERS.push(new mod.Importer(this._umap, config))
|
||||
}
|
||||
|
@ -112,6 +121,11 @@ export default class Importer {
|
|||
return this.qs('textarea').value
|
||||
}
|
||||
|
||||
set raw(value) {
|
||||
this.qs('textarea').value = value
|
||||
this.onChange()
|
||||
}
|
||||
|
||||
get clear() {
|
||||
return Boolean(this.qs('[name=clear]').checked)
|
||||
}
|
||||
|
@ -144,20 +158,26 @@ export default class Importer {
|
|||
)
|
||||
}
|
||||
|
||||
build() {
|
||||
this.container = DomUtil.create('div', 'umap-upload')
|
||||
this.container.innerHTML = TEMPLATE
|
||||
if (this.IMPORTERS.length) {
|
||||
const parent = this.container.querySelector('.importers ul')
|
||||
showImporters() {
|
||||
if (!this.IMPORTERS.length) return
|
||||
const [element, { grid }] = Utils.loadTemplateWithRefs(GRID_TEMPLATE)
|
||||
for (const plugin of this.IMPORTERS.sort((a, b) => (a.id > b.id ? 1 : -1))) {
|
||||
L.DomUtil.createButton(
|
||||
plugin.id,
|
||||
DomUtil.element({ tagName: 'li', parent }),
|
||||
plugin.name,
|
||||
() => plugin.open(this)
|
||||
const button = Utils.loadTemplate(
|
||||
`<li><button type="button" class="${plugin.id}">${plugin.name}</button></li>`
|
||||
)
|
||||
button.addEventListener('click', () => plugin.open(this))
|
||||
grid.appendChild(button)
|
||||
}
|
||||
this.qs('.importers').toggleAttribute('hidden', false)
|
||||
this.dialog.open({ template: element, cancel: false, accept: false })
|
||||
}
|
||||
|
||||
build() {
|
||||
this.container = this.loadTemplate(TEMPLATE)
|
||||
if (this.IMPORTERS.length) {
|
||||
// TODO use this.elements instead of this.qs
|
||||
const button = this.qs('[data-ref=importersButton]')
|
||||
button.addEventListener('click', () => this.showImporters())
|
||||
button.toggleAttribute('hidden', false)
|
||||
}
|
||||
for (const type of this.TYPES) {
|
||||
DomUtil.element({
|
||||
|
@ -168,7 +188,7 @@ export default class Importer {
|
|||
})
|
||||
}
|
||||
this._umap.help.parse(this.container)
|
||||
DomEvent.on(this.qs('[name=submit]'), 'click', this.submit, this)
|
||||
this.qs('[name=submit]').addEventListener('click', () => this.submit())
|
||||
DomEvent.on(this.qs('[type=file]'), 'change', this.onFileChange, this)
|
||||
for (const element of this.container.querySelectorAll('[onchange]')) {
|
||||
DomEvent.on(element, 'change', this.onChange, this)
|
||||
|
@ -183,6 +203,7 @@ export default class Importer {
|
|||
)
|
||||
this.qs('[name=layer-name]').toggleAttribute('hidden', Boolean(this.layerId))
|
||||
this.qs('#clear').toggleAttribute('hidden', !this.layerId)
|
||||
this.qs('[name=submit').toggleAttribute('disabled', !this.canSubmit())
|
||||
}
|
||||
|
||||
onFileChange(e) {
|
||||
|
@ -204,6 +225,7 @@ export default class Importer {
|
|||
this.url = null
|
||||
this.format = undefined
|
||||
this.layerName = null
|
||||
this.raw = null
|
||||
const layerSelect = this.qs('[name="layer-id"]')
|
||||
layerSelect.innerHTML = ''
|
||||
this._umap.eachDataLayerReverse((datalayer) => {
|
||||
|
@ -236,6 +258,17 @@ export default class Importer {
|
|||
this.qs('[type=file]').showPicker()
|
||||
}
|
||||
|
||||
canSubmit() {
|
||||
if (!this.format) return false
|
||||
const hasFiles = Boolean(this.files.length)
|
||||
const hasRaw = Boolean(this.raw)
|
||||
const hasUrl = Boolean(this.url)
|
||||
const hasAction = Boolean(this.action)
|
||||
if (!hasFiles && !hasRaw && !hasUrl) return false
|
||||
if (this.url) return hasAction
|
||||
return true
|
||||
}
|
||||
|
||||
submit() {
|
||||
let hasErrors
|
||||
if (this.format === 'umap') {
|
||||
|
|
|
@ -2,6 +2,8 @@ import { DomUtil } from '../../../vendors/leaflet/leaflet-src.esm.js'
|
|||
import { BaseAjax, SingleMixin } from '../autocomplete.js'
|
||||
import * as Util from '../utils.js'
|
||||
import { AutocompleteCommunes } from './communesfr.js'
|
||||
import { translate } from '../i18n.js'
|
||||
import { uMapAlert as Alert } from '../../components/alerts/alert.js'
|
||||
|
||||
const TEMPLATE = `
|
||||
<h3>Cadastre</h3>
|
||||
|
@ -56,6 +58,8 @@ export class Importer {
|
|||
.open({
|
||||
template: container,
|
||||
className: `${this.id} importer dark`,
|
||||
cancel: false,
|
||||
accept: translate('Choose this data'),
|
||||
})
|
||||
.then(confirm)
|
||||
}
|
||||
|
|
|
@ -37,8 +37,8 @@ class Autocomplete extends SingleMixin(BaseAjax) {
|
|||
}
|
||||
|
||||
export class Importer {
|
||||
constructor(map, options = {}) {
|
||||
this.map = map
|
||||
constructor(umap, options = {}) {
|
||||
this.umap = umap
|
||||
this.name = options.name || 'GeoDataMine'
|
||||
this.baseUrl = options?.url || 'https://geodatamine.fr'
|
||||
this.id = 'geodatamine'
|
||||
|
@ -49,7 +49,7 @@ export class Importer {
|
|||
let boundaryName = null
|
||||
const container = DomUtil.create('div')
|
||||
container.innerHTML = TEMPLATE
|
||||
const response = await importer.map.request.get(`${this.baseUrl}/themes`)
|
||||
const response = await this.umap.request.get(`${this.baseUrl}/themes`)
|
||||
const select = container.querySelector('select')
|
||||
if (response?.ok) {
|
||||
const { themes } = await response.json()
|
||||
|
|
|
@ -53,11 +53,15 @@ export class Importer {
|
|||
'https://photon.komoot.io/api?q={q}&layer=county&layer=city&layer=state'
|
||||
this.id = 'overpass'
|
||||
this.boundaryChoice = null
|
||||
this.expression = null
|
||||
}
|
||||
|
||||
async open(importer) {
|
||||
const container = DomUtil.create('div')
|
||||
container.innerHTML = TEMPLATE
|
||||
if (this.expression) {
|
||||
container.querySelector('[name=tags]').value = this.expression
|
||||
}
|
||||
this.autocomplete = new Autocomplete(container.querySelector('#area'), {
|
||||
url: this.searchUrl,
|
||||
placeholder: translate(
|
||||
|
@ -80,6 +84,7 @@ export class Importer {
|
|||
Alert.error(translate('Expression is empty'))
|
||||
return
|
||||
}
|
||||
this.expression = form.tags
|
||||
let tags = form.tags
|
||||
if (!tags.startsWith('[')) tags = `[${tags}]`
|
||||
let area = '{south},{west},{north},{east}'
|
||||
|
|
|
@ -44,12 +44,12 @@ const ControlsMixin = {
|
|||
new U.DrawToolbar({ map: this }).addTo(this)
|
||||
const editActions = [
|
||||
U.EditCaptionAction,
|
||||
U.EditPropertiesAction,
|
||||
U.ImportAction,
|
||||
U.EditLayersAction,
|
||||
U.ChangeTileLayerAction,
|
||||
U.UpdateExtentAction,
|
||||
U.UpdatePermsAction,
|
||||
U.ImportAction,
|
||||
U.EditPropertiesAction,
|
||||
]
|
||||
if (this.options.editMode === 'advanced') {
|
||||
new U.SettingsToolbar({ actions: editActions }).addTo(this)
|
||||
|
@ -96,8 +96,6 @@ const ControlsMixin = {
|
|||
this._controls.more = new U.MoreControls()
|
||||
this._controls.scale = L.control.scale()
|
||||
this._controls.permanentCredit = new U.PermanentCreditsControl(this)
|
||||
if (this.options.scrollWheelZoom) this.scrollWheelZoom.enable()
|
||||
else this.scrollWheelZoom.disable()
|
||||
this._umap.drop = new U.DropControl(this)
|
||||
this._controls.tilelayers = new U.TileLayerControl(this)
|
||||
},
|
||||
|
@ -279,12 +277,23 @@ export const LeafletMap = BaseMap.extend({
|
|||
this.initControls()
|
||||
// Needs locate control and hash to exist
|
||||
this.initCenter()
|
||||
this.initTileLayers()
|
||||
this.renderUI()
|
||||
},
|
||||
|
||||
renderUI: function () {
|
||||
setOptions(this, this._umap.properties)
|
||||
this.initTileLayers()
|
||||
if (this.options.scrollWheelZoom) {
|
||||
this.scrollWheelZoom.enable()
|
||||
this.dragging.enable()
|
||||
} else {
|
||||
this.scrollWheelZoom.disable()
|
||||
// In mobile, do not let the user move the map
|
||||
// when scrolling the main page and touching the
|
||||
// map in an iframe. May be a bit dumb, but let's
|
||||
// try like this for now.
|
||||
if (L.Browser.mobile) this.dragging.disable()
|
||||
}
|
||||
// Needs tilelayer to exist for minimap
|
||||
this.renderControls()
|
||||
this.handleLimitBounds()
|
||||
|
|
|
@ -115,7 +115,9 @@ class Table extends TitleMixin(PopupTemplate) {
|
|||
const table = document.createElement('table')
|
||||
|
||||
for (const key in feature.properties) {
|
||||
if (typeof feature.properties[key] === 'object' || key === 'name') continue
|
||||
if (typeof feature.properties[key] === 'object' || U.LABEL_KEYS.includes(key)) {
|
||||
continue
|
||||
}
|
||||
table.appendChild(this.makeRow(feature, key))
|
||||
}
|
||||
return table
|
||||
|
@ -150,6 +152,19 @@ class GeoRSSLink extends PopupTemplate {
|
|||
}
|
||||
|
||||
class OSM extends TitleMixin(PopupTemplate) {
|
||||
renderTitle(feature) {
|
||||
const title = DomUtil.add('h3', 'popup-title')
|
||||
const color = feature.getPreviewColor()
|
||||
title.style.backgroundColor = color
|
||||
const iconUrl = feature.getDynamicOption('iconUrl')
|
||||
const icon = Icon.makeElement(iconUrl, title)
|
||||
DomUtil.addClass(icon, 'icon')
|
||||
Icon.setContrast(icon, title, iconUrl, color)
|
||||
if (DomUtil.contrastedColor(title, color)) title.style.color = 'white'
|
||||
DomUtil.add('span', '', title, this.getName(feature))
|
||||
return title
|
||||
}
|
||||
|
||||
getName(feature) {
|
||||
const props = feature.properties
|
||||
const locale = getLocale()
|
||||
|
@ -160,15 +175,6 @@ class OSM extends TitleMixin(PopupTemplate) {
|
|||
renderBody(feature) {
|
||||
const props = feature.properties
|
||||
const body = document.createElement('div')
|
||||
const title = DomUtil.add('h3', 'popup-title', container)
|
||||
const color = feature.getPreviewColor()
|
||||
title.style.backgroundColor = color
|
||||
const iconUrl = feature.getDynamicOption('iconUrl')
|
||||
const icon = Icon.makeElement(iconUrl, title)
|
||||
DomUtil.addClass(icon, 'icon')
|
||||
Icon.setContrast(icon, title, iconUrl, color)
|
||||
if (DomUtil.contrastedColor(title, color)) title.style.color = 'white'
|
||||
DomUtil.add('span', '', title, this.getName(feature))
|
||||
const street = props['addr:street']
|
||||
if (street) {
|
||||
const row = DomUtil.add('address', 'address', body)
|
||||
|
@ -205,6 +211,13 @@ class OSM extends TitleMixin(PopupTemplate) {
|
|||
Utils.loadTemplate(`<div><a href="mailto:${email}">${email}</a></div>`)
|
||||
)
|
||||
}
|
||||
if (props.panoramax) {
|
||||
body.appendChild(
|
||||
Utils.loadTemplate(
|
||||
`<div><img src="https://api.panoramax.xyz/api/pictures/${props.panoramax}/sd.jpg" /></div>`
|
||||
)
|
||||
)
|
||||
}
|
||||
const id = props['@id'] || props.id
|
||||
if (id) {
|
||||
body.appendChild(
|
||||
|
|
|
@ -75,7 +75,7 @@ const FeatureMixin = {
|
|||
|
||||
resetTooltip: function () {
|
||||
if (!this.feature.hasGeom()) return
|
||||
const displayName = this.feature.getDisplayName(null)
|
||||
const displayName = this.feature.getDisplayName()
|
||||
let showLabel = this.feature.getOption('showLabel')
|
||||
const oldLabelHover = this.feature.getOption('labelHover')
|
||||
|
||||
|
@ -255,7 +255,10 @@ const PathMixin = {
|
|||
if (this._map.measureTools?.enabled()) {
|
||||
this._map._umap.tooltip.open({ content: this.getMeasure(), anchor: this })
|
||||
} else if (this._map._umap.editEnabled && !this._map._umap.editedFeature) {
|
||||
this._map._umap.tooltip.open({ content: translate('Click to edit'), anchor: this })
|
||||
this._map._umap.tooltip.open({
|
||||
content: translate('Click to edit'),
|
||||
anchor: this,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -267,7 +270,9 @@ const PathMixin = {
|
|||
this._map.once('moveend', this.makeGeometryEditable, this)
|
||||
const pointsCount = this._parts.reduce((acc, part) => acc + part.length, 0)
|
||||
if (pointsCount > 100 && this._map.getZoom() < this._map.getMaxZoom()) {
|
||||
this._map._umap.tooltip.open({ content: L._('Please zoom in to edit the geometry') })
|
||||
this._map._umap.tooltip.open({
|
||||
content: L._('Please zoom in to edit the geometry'),
|
||||
})
|
||||
this.disableEdit()
|
||||
} else {
|
||||
this.enableEdit()
|
||||
|
@ -380,8 +385,19 @@ export const LeafletPolyline = Polyline.extend({
|
|||
},
|
||||
|
||||
getMeasure: function (shape) {
|
||||
let shapes
|
||||
if (shape) {
|
||||
shapes = [shape]
|
||||
} else if (LineUtil.isFlat(this._latlngs)) {
|
||||
shapes = [this._latlngs]
|
||||
} else {
|
||||
shapes = this._latlngs
|
||||
}
|
||||
// FIXME: compute from data in feature (with TurfJS)
|
||||
const length = L.GeoUtil.lineLength(this._map, shape || this._defaultShape())
|
||||
const length = shapes.reduce(
|
||||
(acc, shape) => acc + L.GeoUtil.lineLength(this._map, shape),
|
||||
0
|
||||
)
|
||||
return L.GeoUtil.readableDistance(length, this._map.measureTools.getMeasureUnit())
|
||||
},
|
||||
})
|
||||
|
|
|
@ -55,7 +55,6 @@ export class DataLayerUpdater extends BaseUpdater {
|
|||
upsert({ value }) {
|
||||
// Upsert only happens when a new datalayer is created.
|
||||
this._umap.createDataLayer(value, false)
|
||||
this._umap.render([])
|
||||
}
|
||||
|
||||
update({ key, metadata, value }) {
|
||||
|
|
|
@ -105,7 +105,7 @@ export default class TableEditor extends WithTemplate {
|
|||
resetProperties() {
|
||||
this.properties = this.datalayer._propertiesIndex
|
||||
if (this.properties.length === 0) {
|
||||
this.properties = ['name', 'description']
|
||||
this.properties = [U.DEFAULT_LABEL_KEY, 'description']
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -71,6 +71,10 @@ export default class Umap extends ServerStored {
|
|||
// To be used in javascript APIs
|
||||
if (geojson.properties.lang) U.lang = geojson.properties.lang
|
||||
|
||||
// Make it available to utils, without needing a reference to `Umap`.
|
||||
U.LABEL_KEYS = geojson.properties.defaultLabelKeys || []
|
||||
U.DEFAULT_LABEL_KEY = U.LABEL_KEYS[0] || 'name'
|
||||
|
||||
this.setPropertiesFromQueryString()
|
||||
|
||||
// Needed for actions labels
|
||||
|
@ -684,7 +688,7 @@ export default class Umap extends ServerStored {
|
|||
}
|
||||
|
||||
allProperties() {
|
||||
return [].concat(...this.datalayersIndex.map((dl) => dl._propertiesIndex))
|
||||
return [].concat(...this.datalayersIndex.map((dl) => dl.allProperties()))
|
||||
}
|
||||
|
||||
sortedValues(property) {
|
||||
|
@ -1257,9 +1261,10 @@ export default class Umap extends ServerStored {
|
|||
}
|
||||
}
|
||||
|
||||
render(fields) {
|
||||
const impacted = this.propagate(fields)
|
||||
if (impacted) return // No need to run a wider reflow
|
||||
render(fields = []) {
|
||||
// Propagate will remove the fields it has already
|
||||
// processed
|
||||
fields = this.propagate(fields)
|
||||
|
||||
const impacts = Utils.getImpactsFromSchema(fields)
|
||||
for (const impact of impacts) {
|
||||
|
@ -1323,14 +1328,13 @@ export default class Umap extends ServerStored {
|
|||
})
|
||||
},
|
||||
}
|
||||
let impacted = false
|
||||
for (const [field, impact] of Object.entries(impacts)) {
|
||||
if (!fields.length || fields.includes(field)) {
|
||||
impact()
|
||||
impacted = true
|
||||
fields = fields.filter((item) => item !== field)
|
||||
}
|
||||
}
|
||||
return impacted
|
||||
return fields
|
||||
}
|
||||
|
||||
// TODO: allow to control the default datalayer
|
||||
|
@ -1533,7 +1537,6 @@ export default class Umap extends ServerStored {
|
|||
|
||||
importRaw(rawData) {
|
||||
const importedData = JSON.parse(rawData)
|
||||
const mustReindex = 'sortKey' in Object.keys(importedData.properties)
|
||||
|
||||
this.setProperties(importedData.properties)
|
||||
|
||||
|
@ -1550,12 +1553,12 @@ export default class Umap extends ServerStored {
|
|||
dataLayer.fromUmapGeoJSON(geojson)
|
||||
}
|
||||
|
||||
this._leafletMap.renderUI()
|
||||
this.eachDataLayer((datalayer) => {
|
||||
if (mustReindex) datalayer.reindex()
|
||||
datalayer.redraw()
|
||||
})
|
||||
this.propagate()
|
||||
// For now render->propagate expect a `properties.` prefix.
|
||||
// Remove this when we have refactored schema and render.
|
||||
const fields = Object.keys(importedData.properties).map(
|
||||
(field) => `properties.${field}`
|
||||
)
|
||||
this.render(fields)
|
||||
this._leafletMap._setDefaultCenter()
|
||||
this.isDirty = true
|
||||
}
|
||||
|
|
|
@ -292,7 +292,7 @@ export function naturalSort(a, b, lang) {
|
|||
}
|
||||
|
||||
export function sortFeatures(features, sortKey, lang) {
|
||||
const sortKeys = (sortKey || 'name').split(',')
|
||||
const sortKeys = sortKey.split(',')
|
||||
|
||||
const sort = (a, b, i) => {
|
||||
let sortKey = sortKeys[i]
|
||||
|
|
|
@ -170,22 +170,43 @@ L.DomUtil.contrastWCAG21 = (rgb) => {
|
|||
const contrast = (whiteLum + 0.05) / (lum + 0.05)
|
||||
return contrast > 3 ? 1 : 0
|
||||
}
|
||||
L.DomUtil.colorNameToHex = (str) => {
|
||||
const ctx = document.createElement('canvas').getContext('2d')
|
||||
ctx.fillStyle = str
|
||||
return ctx.fillStyle
|
||||
}
|
||||
L.DomUtil.hexToRGB = (hex) => {
|
||||
return hex
|
||||
.replace(
|
||||
/^#?([a-f\d])([a-f\d])([a-f\d])$/i,
|
||||
(m, r, g, b) => `#${r}${r}${g}${g}${b}${b}`
|
||||
)
|
||||
.substring(1)
|
||||
.match(/.{2}/g)
|
||||
.map((x) => Number.parseInt(x, 16))
|
||||
}
|
||||
|
||||
const _CACHE_CONSTRAST = {}
|
||||
L.DomUtil.contrastedColor = (el, bgcolor) => {
|
||||
// Return 0 for black and 1 for white
|
||||
// bgcolor is a human color, it can be a any keyword (purple…)
|
||||
if (typeof _CACHE_CONSTRAST[bgcolor] !== 'undefined') return _CACHE_CONSTRAST[bgcolor]
|
||||
let out = 0
|
||||
let rgb = window.getComputedStyle(el).getPropertyValue('background-color')
|
||||
rgb = L.DomUtil.RGBRegex.exec(rgb)
|
||||
if (!rgb || rgb.length !== 4) return out
|
||||
if (rgb && rgb.length === 4) {
|
||||
rgb = [
|
||||
Number.parseInt(rgb[1], 10),
|
||||
Number.parseInt(rgb[2], 10),
|
||||
Number.parseInt(rgb[3], 10),
|
||||
]
|
||||
out = L.DomUtil.contrastWCAG21(rgb)
|
||||
} else {
|
||||
// The element may not yet be added to the DOM, so let's try
|
||||
// another way
|
||||
const hex = L.DomUtil.colorNameToHex(bgcolor)
|
||||
rgb = L.DomUtil.hexToRGB(hex)
|
||||
}
|
||||
if (!rgb) return 1
|
||||
const out = L.DomUtil.contrastWCAG21(rgb)
|
||||
if (bgcolor) _CACHE_CONSTRAST[bgcolor] = out
|
||||
return out
|
||||
}
|
||||
|
|
|
@ -448,6 +448,17 @@ L.FormBuilder.BlurInput.include({
|
|||
},
|
||||
})
|
||||
|
||||
// Adds an autocomplete using all available user defined properties
|
||||
L.FormBuilder.PropertyInput = L.FormBuilder.BlurInput.extend({
|
||||
build: function () {
|
||||
L.FormBuilder.BlurInput.prototype.build.call(this)
|
||||
const autocomplete = new U.AutocompleteDatalist(this.input)
|
||||
// Will be used on Umap and DataLayer
|
||||
const properties = this.builder.obj.allProperties()
|
||||
autocomplete.suggestions = properties
|
||||
},
|
||||
})
|
||||
|
||||
L.FormBuilder.IconUrl = L.FormBuilder.BlurInput.extend({
|
||||
type: () => 'hidden',
|
||||
|
||||
|
@ -1110,10 +1121,11 @@ U.FormBuilder = L.FormBuilder.extend({
|
|||
},
|
||||
|
||||
customHandlers: {
|
||||
sortKey: 'BlurInput',
|
||||
sortKey: 'PropertyInput',
|
||||
easing: 'Switch',
|
||||
facetKey: 'BlurInput',
|
||||
slugKey: 'BlurInput',
|
||||
facetKey: 'PropertyInput',
|
||||
slugKey: 'PropertyInput',
|
||||
labelKey: 'PropertyInput',
|
||||
},
|
||||
|
||||
computeDefaultOptions: function () {
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
<link rel="stylesheet" href="{% static 'umap/font.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'umap/css/icon.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'umap/base.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'umap/css/form.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'umap/content.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'umap/nav.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'umap/map.css' %}" />
|
||||
|
|
|
@ -42,7 +42,7 @@ class LicenceFactory(factory.django.DjangoModelFactory):
|
|||
|
||||
class TileLayerFactory(factory.django.DjangoModelFactory):
|
||||
name = "Test zoom layer"
|
||||
url_template = "https://{s}.test.org/osmfr/{z}/{x}/{y}.png"
|
||||
url_template = "https://tile.openstreetmap.org/{z}/{x}/{y}.png"
|
||||
attribution = "Test layer attribution"
|
||||
|
||||
class Meta:
|
||||
|
@ -156,5 +156,6 @@ def login_required(response):
|
|||
|
||||
|
||||
def mock_tiles(route):
|
||||
print("Intercepted route", route.request.url)
|
||||
path = Path(__file__).parent / "fixtures/empty_tile.png"
|
||||
route.fulfill(path=path)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
@ -25,7 +26,7 @@ def set_timeout(context):
|
|||
@pytest.fixture(autouse=True)
|
||||
def mock_osm_tiles(page):
|
||||
if not bool(os.environ.get("PWDEBUG", False)):
|
||||
page.route("*/**/osmfr/**", mock_tiles)
|
||||
page.route(re.compile(r".*tile\..*"), mock_tiles)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
|
|
@ -15,7 +15,12 @@ DATALAYER_DATA = {
|
|||
"features": [
|
||||
{
|
||||
"type": "Feature",
|
||||
"properties": {"name": "one point in france", "foo": "point", "bar": "one"},
|
||||
"properties": {
|
||||
"name": "one point in france",
|
||||
"foo": "point",
|
||||
"bar": "one",
|
||||
"label": "this is label one",
|
||||
},
|
||||
"geometry": {"type": "Point", "coordinates": [3.339844, 46.920255]},
|
||||
},
|
||||
{
|
||||
|
@ -24,6 +29,7 @@ DATALAYER_DATA = {
|
|||
"name": "one polygon in greenland",
|
||||
"foo": "polygon",
|
||||
"bar": "two",
|
||||
"label": "this is label two",
|
||||
},
|
||||
"geometry": {
|
||||
"type": "Polygon",
|
||||
|
@ -44,6 +50,7 @@ DATALAYER_DATA = {
|
|||
"name": "one line in new zeland",
|
||||
"foo": "line",
|
||||
"bar": "three",
|
||||
"label": "this is label three",
|
||||
},
|
||||
"geometry": {
|
||||
"type": "LineString",
|
||||
|
@ -476,3 +483,11 @@ def test_main_toolbox_toggle_all_layers(live_server, map, page):
|
|||
# Should hidden again all layers
|
||||
expect(page.locator(".datalayer.off")).to_have_count(3)
|
||||
expect(markers).to_have_count(0)
|
||||
|
||||
|
||||
def test_honour_the_label_fields_settings(live_server, map, page, bootstrap, settings):
|
||||
settings.UMAP_LABEL_KEYS = ["label", "name"]
|
||||
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
||||
expect(page.locator(".panel").get_by_text("this is label one")).to_be_visible()
|
||||
expect(page.locator(".panel").get_by_text("this is label two")).to_be_visible()
|
||||
expect(page.locator(".panel").get_by_text("this is label three")).to_be_visible()
|
||||
|
|
|
@ -72,8 +72,6 @@ def test_umap_import_from_file(live_server, tilelayer, page):
|
|||
|
||||
|
||||
def test_umap_import_from_textarea(live_server, tilelayer, page, settings):
|
||||
page.route("https://tile.openstreetmap.fr/hot/**", mock_tiles)
|
||||
|
||||
settings.UMAP_ALLOW_ANONYMOUS = True
|
||||
page.goto(f"{live_server.url}/map/new/")
|
||||
page.get_by_role("button", name="Open browser").click()
|
||||
|
@ -607,6 +605,7 @@ def test_overpass_import_with_bbox(page, live_server, tilelayer, settings):
|
|||
}
|
||||
page.goto(f"{live_server.url}/map/new/")
|
||||
page.get_by_role("link", name="Import data").click()
|
||||
page.get_by_role("button", name="Import helpers").click()
|
||||
page.get_by_role("button", name="Overpass").click()
|
||||
page.get_by_placeholder("amenity=drinking_water").fill("building")
|
||||
page.get_by_role("button", name="Choose this data").click()
|
||||
|
@ -657,6 +656,7 @@ def test_overpass_import_retains_boundary(page, live_server, tilelayer, settings
|
|||
page.route(re.compile("https://foobar.io/api.*"), handle)
|
||||
page.goto(f"{live_server.url}/map/new/")
|
||||
page.get_by_role("link", name="Import data").click()
|
||||
page.get_by_role("button", name="Import helpers").click()
|
||||
page.get_by_role("button", name="Overpass").click()
|
||||
page.get_by_placeholder("amenity=drinking_water").fill("building")
|
||||
page.get_by_placeholder("Type area name, or let empty").click()
|
||||
|
@ -669,6 +669,7 @@ def test_overpass_import_retains_boundary(page, live_server, tilelayer, settings
|
|||
expect(page.get_by_placeholder("Provide an URL here")).to_have_value(
|
||||
"https://my.overpass.io/interpreter?data=[out:json];nwr[building](area:3601393025);out geom;"
|
||||
)
|
||||
page.get_by_role("button", name="Import helpers").click()
|
||||
page.get_by_role("button", name="Overpass").click()
|
||||
expect(page.locator("#area")).to_contain_text(
|
||||
"Bray-sur-Seine, Seine-et-Marne, Île-de-France, France"
|
||||
|
@ -710,6 +711,7 @@ def test_import_from_datasets(page, live_server, tilelayer, settings):
|
|||
page.goto(f"{live_server.url}/map/new/")
|
||||
expect(page.locator(".leaflet-marker-icon")).to_be_hidden()
|
||||
page.get_by_role("link", name="Import data").click()
|
||||
page.get_by_role("button", name="Import helpers").click()
|
||||
page.get_by_role("button", name="Datasets").click()
|
||||
page.get_by_role("dialog").get_by_role("combobox").select_option(
|
||||
"https://remote.org/data.json"
|
||||
|
|
44
umap/tests/integration/test_popup.py
Normal file
|
@ -0,0 +1,44 @@
|
|||
import pytest
|
||||
from playwright.sync_api import expect
|
||||
|
||||
from ..base import DataLayerFactory
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
OSM_DATA = {
|
||||
"type": "FeatureCollection",
|
||||
"features": [
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": {"type": "Point", "coordinates": [2.49, 48.79]},
|
||||
"properties": {
|
||||
"amenity": "restaurant",
|
||||
"cuisine": "italian",
|
||||
"name": "A Casa di Nonna",
|
||||
"panoramax": "d811b398-d930-4cf8-95a2-0c29c34d9fca",
|
||||
"phone": "+33 1 48 89 54 12",
|
||||
"takeaway:covid19": "yes",
|
||||
"wheelchair": "no",
|
||||
"id": "node/1130849864",
|
||||
},
|
||||
"id": "AzMjk",
|
||||
},
|
||||
],
|
||||
"_umap_options": {
|
||||
"popupTemplate": "OSM",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def test_openstreetmap_popup(live_server, map, page):
|
||||
DataLayerFactory(map=map, data=OSM_DATA)
|
||||
page.goto(f"{live_server.url}{map.get_absolute_url()}#18/48.79/2.49")
|
||||
expect(page.locator(".umap-icon-active")).to_be_hidden()
|
||||
page.locator(".leaflet-marker-icon").click()
|
||||
expect(page.get_by_role("heading", name="A Casa di Nonna")).to_be_visible()
|
||||
expect(page.get_by_text("+33 1 48 89 54 12")).to_be_visible()
|
||||
img = page.locator(".umap-popup-content img")
|
||||
expect(img).to_have_attribute(
|
||||
"src",
|
||||
"https://api.panoramax.xyz/api/pictures/d811b398-d930-4cf8-95a2-0c29c34d9fca/sd.jpg",
|
||||
)
|
|
@ -49,3 +49,37 @@ def test_should_open_popup_on_click(live_server, map, page, bootstrap):
|
|||
# Close popup
|
||||
page.locator("#map").click()
|
||||
expect(line).to_have_attribute("stroke-opacity", "0.5")
|
||||
|
||||
|
||||
def test_can_use_measure_on_name(live_server, map, page):
|
||||
data = {
|
||||
"type": "FeatureCollection",
|
||||
"features": [
|
||||
{
|
||||
"type": "Feature",
|
||||
"properties": {"name": "linestring"},
|
||||
"geometry": {
|
||||
"type": "LineString",
|
||||
"coordinates": [
|
||||
[11.25, 53.585984],
|
||||
[10.151367, 52.975108],
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"properties": {"name": "multilinestring"},
|
||||
"geometry": {
|
||||
"type": "MultiLineString",
|
||||
"coordinates": [[[8, 53], [13, 52]], [[12, 51], [15, 52]]],
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
map.settings["properties"]["labelKey"] = "{name} ({measure})"
|
||||
map.settings["properties"]["onLoadPanel"] = "databrowser"
|
||||
map.save()
|
||||
DataLayerFactory(map=map, data=data)
|
||||
page.goto(f"{live_server.url}{map.get_absolute_url()}#6/10/50")
|
||||
expect(page.get_by_text("linestring (99.7 km)")).to_be_visible()
|
||||
expect(page.get_by_text("multilinestring (592 km)")).to_be_visible()
|
||||
|
|
|
@ -609,6 +609,7 @@ class MapDetailMixin(SessionMixin):
|
|||
"websocketEnabled": settings.WEBSOCKET_ENABLED,
|
||||
"websocketURI": settings.WEBSOCKET_FRONT_URI,
|
||||
"importers": settings.UMAP_IMPORTERS,
|
||||
"defaultLabelKeys": settings.UMAP_LABEL_KEYS,
|
||||
}
|
||||
created = bool(getattr(self, "object", None))
|
||||
if (created and self.object.owner) or (not created and not user.is_anonymous):
|
||||
|
|