Mercurial > gemma
changeset 1509:5853d9bfd97b
Merge
author | Hosted Weblate <hosted@weblate.org> |
---|---|
date | Wed, 05 Dec 2018 14:13:28 +0100 |
parents | f352accc8646 (current diff) 0e47ed779c66 (diff) |
children | 56734ea87f9e c234317c99be |
files | client/src/locale/de_AT/LC_MESSAGES/app.po pkg/imports/kinds.go |
diffstat | 24 files changed, 2320 insertions(+), 119 deletions(-) [+] |
line wrap: on
line diff
--- a/client/Makefile Wed Dec 05 10:31:41 2018 +0000 +++ b/client/Makefile Wed Dec 05 14:13:28 2018 +0100 @@ -20,7 +20,7 @@ OUTPUT_DIR = src # Available locales for the app. -LOCALES = de_AT en_GB sk_SK +LOCALES = de_AT en_GB sk_SK hu_HU hr_HR bg_BG ro_RO # Name of the generated .po files for each available locale. LOCALE_FILES ?= $(patsubst %,$(OUTPUT_DIR)/locale/%/LC_MESSAGES/app.po,$(LOCALES))
--- a/client/src/assets/application.scss Wed Dec 05 10:31:41 2018 +0000 +++ b/client/src/assets/application.scss Wed Dec 05 14:13:28 2018 +0100 @@ -19,7 +19,7 @@ $icon-width: 2rem; $large-offset: 2rem; $offset: 1rem; -$sidebar-width: 15rem; +$sidebar-width: 20rem; $slight-transparent: 0.96; $small-offset: 0.5rem; $smaller: 0.9rem;
--- a/client/src/components/Sidebar.vue Wed Dec 05 10:31:41 2018 +0000 +++ b/client/src/components/Sidebar.vue Wed Dec 05 14:13:28 2018 +0100 @@ -9,72 +9,72 @@ <div class="menu text-nowrap text-left"> <router-link to="/"> <font-awesome-icon + fixed-width icon="map-marked-alt" - fixed-width ></font-awesome-icon> - <span v-translate class="fix-trans-space">Map</span> + <span class="fix-trans-space" v-translate>Map</span> </router-link> <a - href="#" + :class="['secondary', { active: isActive('bottlenecks') }]" @click="toggleContextBox('bottlenecks')" - :class="['secondary', { active: isActive('bottlenecks') }]" + href="#" > - <font-awesome-icon icon="ship" fixed-width></font-awesome-icon> - <span v-translate class="fix-trans-space">Bottlenecks</span> + <font-awesome-icon fixed-width icon="ship"></font-awesome-icon> + <span class="fix-trans-space" v-translate>Bottlenecks</span> </a> <div v-if="isWaterwayAdmin"> <a - href="#" + :class="['secondary', { active: isActive('imports') }]" @click="toggleContextBox('imports')" - :class="['secondary', { active: isActive('imports') }]" + href="#" > - <font-awesome-icon icon="upload" fixed-width></font-awesome-icon> - <span v-translate class="fix-trans-space" + <font-awesome-icon fixed-width icon="upload"></font-awesome-icon> + <span class="fix-trans-space" v-translate >Import soundingresults</span > </a> <a - href="#" + :class="['secondary', { active: isActive('staging') }]" @click="toggleContextBox('staging')" - :class="['secondary', { active: isActive('staging') }]" + href="#" > <font-awesome-icon + fixed-width icon="clipboard-check" - fixed-width ></font-awesome-icon> - <span v-translate class="fix-trans-space">Staging area</span> + <span class="fix-trans-space" v-translate>Staging area</span> </a> <small class="text-muted pl-3"> <translate>Systemadministration</translate> </small> <hr class="m-0" /> <router-link to="usermanagement"> - <font-awesome-icon icon="users-cog" fixed-width></font-awesome-icon> - <span v-translate class="fix-trans-space">Users</span> + <font-awesome-icon fixed-width icon="users-cog"></font-awesome-icon> + <span class="fix-trans-space" v-translate>Users</span> </router-link> </div> <div v-if="isSysAdmin"> <router-link to="systemconfiguration"> - <font-awesome-icon icon="wrench" fixed-width></font-awesome-icon> - <span v-translate class="fix-trans-space">Configuration</span> + <font-awesome-icon fixed-width icon="wrench"></font-awesome-icon> + <span class="fix-trans-space" v-translate>Configuration</span> </router-link> <router-link to="logs"> - <font-awesome-icon icon="book" fixed-width></font-awesome-icon> - <span v-translate class="fix-trans-space">Logs</span> + <font-awesome-icon fixed-width icon="book"></font-awesome-icon> + <span class="fix-trans-space" v-translate>Logs</span> </router-link> <router-link to="importqueue"> - <font-awesome-icon icon="tasks" fixed-width></font-awesome-icon> - <span v-translate class="fix-trans-space">Importqueue</span> + <font-awesome-icon fixed-width icon="tasks"></font-awesome-icon> + <span class="fix-trans-space" v-translate>Importqueue</span> </router-link> - <router-link v-if="this.$options.IMPORTSCHEDULE" to="importschedule"> - <font-awesome-icon icon="clock" fixed-width></font-awesome-icon> + <router-link to="importschedule" v-if="this.$options.IMPORTSCHEDULE"> + <font-awesome-icon fixed-width icon="clock"></font-awesome-icon> <translate class="fix-trans-space">Importschedule</translate> </router-link> </div> <hr class="m-0" /> - <a href="#" @click="logoff"> - <font-awesome-icon icon="power-off" fixed-width></font-awesome-icon> - <span v-translate class="fix-trans-space">Logout</span> {{ user }} + <a @click="logoff" href="#"> + <font-awesome-icon fixed-width icon="power-off"></font-awesome-icon> + <span class="fix-trans-space" v-translate>Logout</span> {{ user }} </a> </div> </div> @@ -96,6 +96,7 @@ * Markus Kottländer <markus.kottlaender@intevation.de> */ import { mapGetters, mapState } from "vuex"; +import app from "../main"; export default { name: "sidebar", @@ -122,6 +123,7 @@ IMPORTSCHEDULE: process.env.VUE_APP_FEATURE_IMPORTSCHEDULE, methods: { logoff() { + app.$snotify.clear(); this.$store.commit("reset"); this.$store.commit("user/clearAuth"); this.$router.push("/login");
--- a/client/src/components/admin/Importqueue.vue Wed Dec 05 10:31:41 2018 +0000 +++ b/client/src/components/admin/Importqueue.vue Wed Dec 05 14:13:28 2018 +0100 @@ -54,6 +54,7 @@ <th><translate>Enqueued</translate></th> <th><translate>Kind</translate></th> <th><translate>User</translate></th> + <th><translate>Signer</translate></th> <th><translate>State</translate></th> </tr> </thead> @@ -62,6 +63,7 @@ <td>{{ job.enqueued }}</td> <td>{{ job.kind }}</td> <td>{{ job.user }}</td> + <td>{{ job.signer }}</td> <td>{{ job.state }}</td> </tr> </tbody> @@ -242,7 +244,7 @@ } .importqueuecard { - width: 80vw; + width: 75vw; min-height: 20rem; } @@ -276,6 +278,6 @@ .searchgroup { position: absolute; left: 0; - width: 50%; + width: 45%; } </style>
--- a/client/src/components/admin/Logs.vue Wed Dec 05 10:31:41 2018 +0000 +++ b/client/src/components/admin/Logs.vue Wed Dec 05 14:13:28 2018 +0100 @@ -6,7 +6,7 @@ <h6 class="mb-0 py-2 px-3 border-bottom d-flex text-info align-items-center" > - <font-awesome-icon icon="book" class="mr-2"></font-awesome-icon> + <font-awesome-icon class="mr-2" icon="book"></font-awesome-icon> <translate class="headline">Logs</translate> </h6> <div class="logoutput text-left bg-white"> @@ -19,8 +19,8 @@ <ul class="nav nav-pills"> <li class="nav-item"> <a + :class="accesslogStyle" @click="fetch('system/log/apache2/access.log', 'accesslog')" - :class="accesslogStyle" href="#" > <translate>Accesslog</translate> @@ -28,8 +28,8 @@ </li> <li class="nav-item"> <a + :class="errorlogStyle" @click="fetch('system/log/apache2/error.log', 'errorlog')" - :class="errorlogStyle" href="#" > <translate>Errorlog</translate> @@ -43,8 +43,8 @@ </div> <div class="refresh"> <button + @click="fetch(currentFile, currentLog)" class="btn btn-dark" - @click="fetch(currentFile, currentLog)" > <translate>Refresh</translate> </button> @@ -107,7 +107,7 @@ .statusline { position: absolute; right: 0; - margin-right: 7rem; + margin-right: 9rem; bottom: -0.5rem; }
--- a/client/src/components/map/Identify.vue Wed Dec 05 10:31:41 2018 +0000 +++ b/client/src/components/map/Identify.vue Wed Dec 05 14:13:28 2018 +0100 @@ -35,8 +35,7 @@ /[.][^.]*$/, "" ) /* cut away everything from the last . to the end */ - }}:</b - > + }}:</b> <small v-for="(value, key) in prepareProperties(feature)" :key="key" @@ -67,14 +66,10 @@ <a href="https://www.openstreetmap.org/copyright">%{ name }</a> contributors. </span> - <p v-translate="{geoLicense: 'CC-BY-4.0',data: 'data sources' }"> - Geonames data source is licensed under - <a - href="https://creativecommons.org/licenses/by/4.0/" - >%{ geoLicense }</a> without warranty, see docs for details - <a - href="http://www.geonames.org/data-sources.html" - >%{ data }</a>. + <p v-translate="{geoLicense: 'CC-BY-4.0'}"> + Uses + <a href="https://download.geonames.org/export/dump/readme.txt" + >GeoNames</a> under %{ geoLicense }. </p> </div> </div>
--- a/client/src/components/map/contextbox/Staging.vue Wed Dec 05 10:31:41 2018 +0000 +++ b/client/src/components/map/contextbox/Staging.vue Wed Dec 05 14:13:28 2018 +0100 @@ -1,13 +1,13 @@ <template> - <div class="w-90"> + <div class="w-90 stagingcard"> <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center"> <font-awesome-icon + class="mr-2" icon="clipboard-check" - class="mr-2" ></font-awesome-icon> <translate>Staging Area</translate> </h6> - <table class="table mb-0"> + <table class="table"> <thead> <tr> <th><translate>Name</translate></th> @@ -20,7 +20,7 @@ </tr> </thead> <tbody v-if="filteredData.length"> - <tr v-for="data in filteredData" :key="data.id"> + <tr :key="data.id" v-for="data in filteredData"> <td> <a @click="zoomTo(data.id)" href="#">{{ data.summary.bottleneck @@ -32,26 +32,26 @@ <td>{{ data.user }}</td> <td> <button - @click="toggleApproval(data.id, $options.STATES.APPROVED)" :class="{ btn: true, 'btn-sm': true, 'btn-outline-success': needsApproval(data) || isRejected(data), 'btn-success': isApproved(data) }" + @click="toggleApproval(data.id, $options.STATES.APPROVED)" > <font-awesome-icon icon="check"></font-awesome-icon> </button> </td> <td> <button - @click="toggleApproval(data.id, $options.STATES.REJECTED)" :class="{ btn: true, 'btn-sm': true, 'btn-outline-danger': needsApproval(data) || isApproved(data), 'btn-danger': isRejected(data) }" + @click="toggleApproval(data.id, $options.STATES.REJECTED)" > <font-awesome-icon icon="times"></font-awesome-icon> </button> @@ -67,10 +67,13 @@ </tbody> </table> <div class="p-3" v-if="filteredData.length"> - <button @click="confirmReview" class="btn btn-info"> + <button @click="confirmReview" class="confirm-button btn btn-info"> <translate>Confirm</translate> </button> </div> + <div class="p-3"> + <button @click="loadData" class="refresh btn btn-dark">Refresh</button> + </div> </div> </template> @@ -199,6 +202,11 @@ </script> <style lang="scss" scoped> +.refresh { + position: absolute; + left: $offset; + bottom: $offset; +} .table th, td { font-size: 0.9rem; @@ -207,4 +215,15 @@ text-align: left; padding: 0.5rem !important; } + +.stagingcard { + position: relative; + min-height: 150px; +} + +.confirm-button { + position: absolute; + right: $offset; + bottom: $offset; +} </style>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/src/locale/bg_BG/LC_MESSAGES/app.po Wed Dec 05 14:13:28 2018 +0100 @@ -0,0 +1,522 @@ +# Bulgarian translations for gemmajs package. +# Copyright (C) 2018 THE gemmajs'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gemmajs package. +# Automatically generated, 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: gemmajs 1.99.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-12-05 12:25+0100\n" +"PO-Revision-Date: 2018-12-05 12:23+0100\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: bg_BG\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/components/admin/Importqueue.vue:46 +msgid "Accepted" +msgstr "" + +#: src/components/admin/Logs.vue:25 +msgid "Accesslog" +msgstr "" + +#: src/components/admin/usermanagement/Usermanagement.vue:106 +msgid "Add User" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:35 +msgid "Author" +msgstr "" + +#: src/components/Login.vue:70 +msgid "back to login" +msgstr "" + +#: src/components/admin/Importqueue.vue:134 +#: src/components/admin/Systemconfiguration.vue:133 +#: src/components/admin/Systemconfiguration.vue:148 +#: src/components/admin/Systemconfiguration.vue:167 +#: src/components/admin/Systemconfiguration.vue:184 +#: src/components/admin/usermanagement/Userdetail.vue:296 +#: src/components/admin/usermanagement/Userdetail.vue:368 +#: src/components/admin/usermanagement/Usermanagement.vue:300 +#: src/components/admin/usermanagement/Usermanagement.vue:308 +#: src/components/admin/usermanagement/Usermanagement.vue:334 +#: src/components/map/Search.vue:257 +#: src/components/map/contextbox/Bottlenecks.vue:252 +#: src/components/map/contextbox/ImportSoundingresults.vue:205 +#: src/components/map/contextbox/ImportSoundingresults.vue:244 +#: src/components/map/contextbox/ImportSoundingresults.vue:275 +msgid "Backend Error" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:11 +msgid "Bottleneck" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:19 +msgid "Bottleneck Areas fill-color" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:13 +msgid "Bottleneck Areas stroke-color" +msgstr "" + +#: src/components/Sidebar.vue:22 +#: src/components/map/contextbox/Bottlenecks.vue:4 +msgid "Bottlenecks" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:121 +msgid "Cancel Upload" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:30 +msgid "Chainage" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:167 +#: src/components/map/contextbox/ImportSoundingresults.vue:181 +msgid "choose .zip- file" +msgstr "" + +#: src/components/map/Pdftool.vue:18 +msgid "Chose format:" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:64 +msgid "Compare with" +msgstr "" + +#: src/components/Sidebar.vue:58 +msgid "Configuration" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:316 +#: src/components/map/contextbox/Staging.vue:70 +msgid "Confirm" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:374 +msgid "Coordinates copied to clipboard!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:34 +msgid "Country" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:67 +#: src/components/map/contextbox/Staging.vue:14 +msgid "Date" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:47 +msgid "Depthreference" +msgstr "" + +#: src/components/map/Pdftool.vue:32 +msgid "Download" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:113 +msgid "Download Meta.json" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:37 +msgid "Email" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:60 +msgid "Email address" +msgstr "" + +#: src/components/admin/Importqueue.vue:53 +msgid "Enqueued" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:123 +msgid "Enter coordinates manually" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:185 +msgid "Enter label for cross profile" +msgstr "" + +#: src/components/Login.vue:157 +msgid "Enter passphrase" +msgstr "" + +#: src/components/Login.vue:160 +msgid "Enter username" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:377 +msgid "Error while saving user" +msgstr "" + +#: src/components/admin/Logs.vue:34 +msgid "Errorlog" +msgstr "" + +#: src/components/admin/Importqueue.vue:37 +msgid "Failed" +msgstr "" + +#: src/components/Login.vue:76 +msgid "Forgot password" +msgstr "" + +#: src/components/map/Pdftool.vue:10 src/components/map/Pdftool.vue:49 +msgid "Generate PDF" +msgstr "" + +#: src/components/map/Identify.vue:10 +msgid "Identified" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:33 +#: src/components/map/contextbox/ImportSoundingresults.vue:267 +msgid "Import" +msgstr "" + +#: src/components/Sidebar.vue:31 +msgid "Import soundingresults" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:4 +msgid "Import Soundingresults" +msgstr "" + +#: src/components/map/contextbox/Staging.vue:15 +msgid "Imported" +msgstr "" + +#: src/components/Sidebar.vue:66 src/components/admin/Importqueue.vue:9 +msgid "Importqueue" +msgstr "" + +#: src/components/Sidebar.vue:70 +#: src/components/admin/importschedule/Importschedule.vue:9 +msgid "Importschedule" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:345 +msgid "invalid email" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:408 +msgid "Invalid input" +msgstr "" + +#: src/components/admin/Importqueue.vue:54 +msgid "Kind" +msgstr "" + +#: src/components/map/Pdftool.vue:20 +msgid "landscape" +msgstr "" + +#: src/components/admin/Logs.vue:41 +msgid "Last refresh:" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:19 +msgid "Latest" +msgstr "" + +#: src/components/map/layers/Layers.vue:10 +msgid "Layers" +msgstr "" + +#: src/components/Login.vue:58 +msgid "Login" +msgstr "" + +#: src/components/Login.vue:151 +msgid "Login failed" +msgstr "" + +#: src/components/Sidebar.vue:76 +msgid "Logout" +msgstr "" + +#: src/components/Sidebar.vue:62 src/components/admin/Logs.vue:9 +msgid "Logs" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:141 +msgid "Mail was sent" +msgstr "" + +#: src/components/Sidebar.vue:14 +msgid "Map" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:20 +msgid "Measurement" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:9 +#: src/components/map/contextbox/Staging.vue:12 +msgid "Name" +msgstr "" + +#: src/components/admin/importschedule/Importscheduledetail.vue:6 +msgid "New import" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:72 +msgid "New Import" +msgstr "" + +#: src/components/map/Identify.vue:50 +msgid "No features identified." +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:116 +#: src/components/map/contextbox/Staging.vue:63 +msgid "No results." +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:66 +msgid "No schedules" +msgstr "" + +#: src/components/map/Pdftool.vue:41 +msgid "Open in new window" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:229 +msgid "password" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:227 +msgid "Password" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:230 +msgid "password again" +msgstr "" + +#: src/components/Login.vue:153 +msgid "Password reset requested!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:338 +#: src/components/admin/usermanagement/Userdetail.vue:339 +msgid "Password should at least be 8 char long including 1 digit and 1 special char like $" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:334 +msgid "Passwords do not match!" +msgstr "" + +#: src/components/admin/Importqueue.vue:40 +msgid "Pending" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:323 +msgid "Please choose a country" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:328 +msgid "Please choose a role" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:79 +msgid "Please enter a date" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:39 +msgid "Please enter a projection" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:62 +msgid "Please enter a reference" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:409 +#: src/components/map/fairway/Profiles.vue:410 +msgid "Please enter correct coordinates in the format: Lat,Lon,Lat,Lon" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:22 +msgid "Please select a bottleneck" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:41 +#: src/components/admin/usermanagement/Userdetail.vue:86 +msgid "Please select one" +msgstr "" + +#: src/components/map/Pdftool.vue:21 +msgid "portrait" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:448 +msgid "Profile deleted!" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:434 +msgid "Profile saved!" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:10 +msgid "Profiles" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:28 +msgid "Projection" +msgstr "" + +#: src/components/admin/Importqueue.vue:70 src/components/admin/Logs.vue:48 +msgid "Refresh" +msgstr "" + +#: src/components/admin/Importqueue.vue:43 +msgid "Rejected" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:228 +msgid "Repeat Password" +msgstr "" + +#: src/components/Login.vue:66 +msgid "Request password reset!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:79 +msgid "Role" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:82 +msgid "Saved cross profiles" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:36 +msgid "Schedule" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:32 +msgid "Select Bottleneck" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:25 +msgid "Send" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:139 +msgid "Send testmail" +msgstr "" + +#: src/components/map/Identify.vue:63 +msgid "" +"Some data ©\n" +" <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n" +" contributors." +msgstr "" + +#: src/components/map/fairway/Profiles.vue:45 +msgid "Sounding Result" +msgstr "" + +#: src/components/map/Identify.vue:60 +msgid "source-code" +msgstr "" + +#: src/components/Sidebar.vue:44 +msgid "Staging area" +msgstr "" + +#: src/components/map/contextbox/Staging.vue:7 +msgid "Staging Area" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:142 +msgid "Start" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:268 +msgid "Starting import for " +msgstr "" + +#: src/components/admin/Importqueue.vue:56 +msgid "State" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:130 +msgid "Submit" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:373 +msgid "Success" +msgstr "" + +#: src/components/admin/Importqueue.vue:34 +msgid "Successful" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:89 +msgid "Sysadmin" +msgstr "" + +#: src/components/Sidebar.vue:47 +msgid "Systemadministration" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:8 +msgid "Systemconfiguration" +msgstr "" + +#: src/components/map/Identify.vue:54 +msgid "" +"This app uses <i>gemma</i>, which is Free Software under <br/>\n" +" %{ license } without warranty, see docs for details." +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:34 +#: src/components/map/contextbox/Staging.vue:13 +msgid "Type" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:313 +msgid "Upload" +msgstr "" + +#: src/components/admin/Importqueue.vue:55 +msgid "User" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:15 +#: src/components/map/contextbox/Staging.vue:16 +msgid "Username" +msgstr "" + +#: src/components/Sidebar.vue:52 +#: src/components/admin/usermanagement/Usermanagement.vue:14 +msgid "Users" +msgstr "" + +#: src/components/map/Identify.vue:68 +msgid "" +"Uses\n" +" <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }." +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:92 +msgid "Waterway Admin" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:95 +msgid "Waterway User" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:435 +#: src/components/map/fairway/Profiles.vue:436 +msgid "You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile." +msgstr ""
--- a/client/src/locale/de_AT/LC_MESSAGES/app.po Wed Dec 05 10:31:41 2018 +0000 +++ b/client/src/locale/de_AT/LC_MESSAGES/app.po Wed Dec 05 14:13:28 2018 +0100 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: wamosjs 0.1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-12-04 13:29+0100\n" +"POT-Creation-Date: 2018-12-05 12:03+0100\n" "PO-Revision-Date: 2018-12-05 13:13+0000\n" "Last-Translator: Sascha L. Teichmann <sascha.teichmann@intevation.de>\n" "Language-Team: Austrian German <https://hosted.weblate.org/projects/gemma/"
--- a/client/src/locale/en_GB/LC_MESSAGES/app.po Wed Dec 05 10:31:41 2018 +0000 +++ b/client/src/locale/en_GB/LC_MESSAGES/app.po Wed Dec 05 14:13:28 2018 +0100 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: wamosjs 0.1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-12-04 13:29+0100\n" +"POT-Creation-Date: 2018-12-05 12:03+0100\n" "PO-Revision-Date: 2018-07-03 17:18+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -175,13 +175,6 @@ msgid "Generate PDF" msgstr "" -#: src/components/map/Identify.vue:69 -msgid "" -"Geonames data source is licensed under\n" -" <a href=\"https://creativecommons.org/licenses/by/4.0/\">%{ geoLicense }</a> without warranty, see docs for details\n" -" <a href=\"http://www.geonames.org/data-sources.html\">%{ data }</a>." -msgstr "" - #: src/components/map/Identify.vue:10 msgid "Identified" msgstr "" @@ -281,7 +274,7 @@ msgid "New Import" msgstr "" -#: src/components/map/Identify.vue:51 +#: src/components/map/Identify.vue:50 msgid "No features identified." msgstr "" @@ -421,7 +414,7 @@ msgid "Send testmail" msgstr "" -#: src/components/map/Identify.vue:64 +#: src/components/map/Identify.vue:63 msgid "" "Some data ©\n" " <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n" @@ -432,7 +425,7 @@ msgid "Sounding Result" msgstr "" -#: src/components/map/Identify.vue:61 +#: src/components/map/Identify.vue:60 msgid "source-code" msgstr "" @@ -480,7 +473,7 @@ msgid "Systemconfiguration" msgstr "" -#: src/components/map/Identify.vue:55 +#: src/components/map/Identify.vue:54 msgid "" "This app uses <i>gemma</i>, which is Free Software under <br/>\n" " %{ license } without warranty, see docs for details." @@ -509,6 +502,12 @@ msgid "Users" msgstr "" +#: src/components/map/Identify.vue:68 +msgid "" +"Uses\n" +" <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }." +msgstr "" + #: src/components/admin/usermanagement/Userdetail.vue:92 msgid "Waterway Admin" msgstr ""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/src/locale/hr_HR/LC_MESSAGES/app.po Wed Dec 05 14:13:28 2018 +0100 @@ -0,0 +1,522 @@ +# Croatian translations for gemmajs package. +# Copyright (C) 2018 THE gemmajs'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gemmajs package. +# Automatically generated, 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: gemmajs 1.99.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-12-05 12:25+0100\n" +"PO-Revision-Date: 2018-12-05 12:23+0100\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: hr_HR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/components/admin/Importqueue.vue:46 +msgid "Accepted" +msgstr "" + +#: src/components/admin/Logs.vue:25 +msgid "Accesslog" +msgstr "" + +#: src/components/admin/usermanagement/Usermanagement.vue:106 +msgid "Add User" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:35 +msgid "Author" +msgstr "" + +#: src/components/Login.vue:70 +msgid "back to login" +msgstr "" + +#: src/components/admin/Importqueue.vue:134 +#: src/components/admin/Systemconfiguration.vue:133 +#: src/components/admin/Systemconfiguration.vue:148 +#: src/components/admin/Systemconfiguration.vue:167 +#: src/components/admin/Systemconfiguration.vue:184 +#: src/components/admin/usermanagement/Userdetail.vue:296 +#: src/components/admin/usermanagement/Userdetail.vue:368 +#: src/components/admin/usermanagement/Usermanagement.vue:300 +#: src/components/admin/usermanagement/Usermanagement.vue:308 +#: src/components/admin/usermanagement/Usermanagement.vue:334 +#: src/components/map/Search.vue:257 +#: src/components/map/contextbox/Bottlenecks.vue:252 +#: src/components/map/contextbox/ImportSoundingresults.vue:205 +#: src/components/map/contextbox/ImportSoundingresults.vue:244 +#: src/components/map/contextbox/ImportSoundingresults.vue:275 +msgid "Backend Error" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:11 +msgid "Bottleneck" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:19 +msgid "Bottleneck Areas fill-color" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:13 +msgid "Bottleneck Areas stroke-color" +msgstr "" + +#: src/components/Sidebar.vue:22 +#: src/components/map/contextbox/Bottlenecks.vue:4 +msgid "Bottlenecks" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:121 +msgid "Cancel Upload" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:30 +msgid "Chainage" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:167 +#: src/components/map/contextbox/ImportSoundingresults.vue:181 +msgid "choose .zip- file" +msgstr "" + +#: src/components/map/Pdftool.vue:18 +msgid "Chose format:" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:64 +msgid "Compare with" +msgstr "" + +#: src/components/Sidebar.vue:58 +msgid "Configuration" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:316 +#: src/components/map/contextbox/Staging.vue:70 +msgid "Confirm" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:374 +msgid "Coordinates copied to clipboard!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:34 +msgid "Country" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:67 +#: src/components/map/contextbox/Staging.vue:14 +msgid "Date" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:47 +msgid "Depthreference" +msgstr "" + +#: src/components/map/Pdftool.vue:32 +msgid "Download" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:113 +msgid "Download Meta.json" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:37 +msgid "Email" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:60 +msgid "Email address" +msgstr "" + +#: src/components/admin/Importqueue.vue:53 +msgid "Enqueued" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:123 +msgid "Enter coordinates manually" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:185 +msgid "Enter label for cross profile" +msgstr "" + +#: src/components/Login.vue:157 +msgid "Enter passphrase" +msgstr "" + +#: src/components/Login.vue:160 +msgid "Enter username" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:377 +msgid "Error while saving user" +msgstr "" + +#: src/components/admin/Logs.vue:34 +msgid "Errorlog" +msgstr "" + +#: src/components/admin/Importqueue.vue:37 +msgid "Failed" +msgstr "" + +#: src/components/Login.vue:76 +msgid "Forgot password" +msgstr "" + +#: src/components/map/Pdftool.vue:10 src/components/map/Pdftool.vue:49 +msgid "Generate PDF" +msgstr "" + +#: src/components/map/Identify.vue:10 +msgid "Identified" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:33 +#: src/components/map/contextbox/ImportSoundingresults.vue:267 +msgid "Import" +msgstr "" + +#: src/components/Sidebar.vue:31 +msgid "Import soundingresults" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:4 +msgid "Import Soundingresults" +msgstr "" + +#: src/components/map/contextbox/Staging.vue:15 +msgid "Imported" +msgstr "" + +#: src/components/Sidebar.vue:66 src/components/admin/Importqueue.vue:9 +msgid "Importqueue" +msgstr "" + +#: src/components/Sidebar.vue:70 +#: src/components/admin/importschedule/Importschedule.vue:9 +msgid "Importschedule" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:345 +msgid "invalid email" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:408 +msgid "Invalid input" +msgstr "" + +#: src/components/admin/Importqueue.vue:54 +msgid "Kind" +msgstr "" + +#: src/components/map/Pdftool.vue:20 +msgid "landscape" +msgstr "" + +#: src/components/admin/Logs.vue:41 +msgid "Last refresh:" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:19 +msgid "Latest" +msgstr "" + +#: src/components/map/layers/Layers.vue:10 +msgid "Layers" +msgstr "" + +#: src/components/Login.vue:58 +msgid "Login" +msgstr "" + +#: src/components/Login.vue:151 +msgid "Login failed" +msgstr "" + +#: src/components/Sidebar.vue:76 +msgid "Logout" +msgstr "" + +#: src/components/Sidebar.vue:62 src/components/admin/Logs.vue:9 +msgid "Logs" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:141 +msgid "Mail was sent" +msgstr "" + +#: src/components/Sidebar.vue:14 +msgid "Map" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:20 +msgid "Measurement" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:9 +#: src/components/map/contextbox/Staging.vue:12 +msgid "Name" +msgstr "" + +#: src/components/admin/importschedule/Importscheduledetail.vue:6 +msgid "New import" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:72 +msgid "New Import" +msgstr "" + +#: src/components/map/Identify.vue:50 +msgid "No features identified." +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:116 +#: src/components/map/contextbox/Staging.vue:63 +msgid "No results." +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:66 +msgid "No schedules" +msgstr "" + +#: src/components/map/Pdftool.vue:41 +msgid "Open in new window" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:229 +msgid "password" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:227 +msgid "Password" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:230 +msgid "password again" +msgstr "" + +#: src/components/Login.vue:153 +msgid "Password reset requested!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:338 +#: src/components/admin/usermanagement/Userdetail.vue:339 +msgid "Password should at least be 8 char long including 1 digit and 1 special char like $" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:334 +msgid "Passwords do not match!" +msgstr "" + +#: src/components/admin/Importqueue.vue:40 +msgid "Pending" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:323 +msgid "Please choose a country" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:328 +msgid "Please choose a role" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:79 +msgid "Please enter a date" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:39 +msgid "Please enter a projection" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:62 +msgid "Please enter a reference" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:409 +#: src/components/map/fairway/Profiles.vue:410 +msgid "Please enter correct coordinates in the format: Lat,Lon,Lat,Lon" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:22 +msgid "Please select a bottleneck" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:41 +#: src/components/admin/usermanagement/Userdetail.vue:86 +msgid "Please select one" +msgstr "" + +#: src/components/map/Pdftool.vue:21 +msgid "portrait" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:448 +msgid "Profile deleted!" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:434 +msgid "Profile saved!" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:10 +msgid "Profiles" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:28 +msgid "Projection" +msgstr "" + +#: src/components/admin/Importqueue.vue:70 src/components/admin/Logs.vue:48 +msgid "Refresh" +msgstr "" + +#: src/components/admin/Importqueue.vue:43 +msgid "Rejected" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:228 +msgid "Repeat Password" +msgstr "" + +#: src/components/Login.vue:66 +msgid "Request password reset!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:79 +msgid "Role" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:82 +msgid "Saved cross profiles" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:36 +msgid "Schedule" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:32 +msgid "Select Bottleneck" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:25 +msgid "Send" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:139 +msgid "Send testmail" +msgstr "" + +#: src/components/map/Identify.vue:63 +msgid "" +"Some data ©\n" +" <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n" +" contributors." +msgstr "" + +#: src/components/map/fairway/Profiles.vue:45 +msgid "Sounding Result" +msgstr "" + +#: src/components/map/Identify.vue:60 +msgid "source-code" +msgstr "" + +#: src/components/Sidebar.vue:44 +msgid "Staging area" +msgstr "" + +#: src/components/map/contextbox/Staging.vue:7 +msgid "Staging Area" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:142 +msgid "Start" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:268 +msgid "Starting import for " +msgstr "" + +#: src/components/admin/Importqueue.vue:56 +msgid "State" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:130 +msgid "Submit" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:373 +msgid "Success" +msgstr "" + +#: src/components/admin/Importqueue.vue:34 +msgid "Successful" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:89 +msgid "Sysadmin" +msgstr "" + +#: src/components/Sidebar.vue:47 +msgid "Systemadministration" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:8 +msgid "Systemconfiguration" +msgstr "" + +#: src/components/map/Identify.vue:54 +msgid "" +"This app uses <i>gemma</i>, which is Free Software under <br/>\n" +" %{ license } without warranty, see docs for details." +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:34 +#: src/components/map/contextbox/Staging.vue:13 +msgid "Type" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:313 +msgid "Upload" +msgstr "" + +#: src/components/admin/Importqueue.vue:55 +msgid "User" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:15 +#: src/components/map/contextbox/Staging.vue:16 +msgid "Username" +msgstr "" + +#: src/components/Sidebar.vue:52 +#: src/components/admin/usermanagement/Usermanagement.vue:14 +msgid "Users" +msgstr "" + +#: src/components/map/Identify.vue:68 +msgid "" +"Uses\n" +" <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }." +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:92 +msgid "Waterway Admin" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:95 +msgid "Waterway User" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:435 +#: src/components/map/fairway/Profiles.vue:436 +msgid "You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile." +msgstr ""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/src/locale/hu_HU/LC_MESSAGES/app.po Wed Dec 05 14:13:28 2018 +0100 @@ -0,0 +1,522 @@ +# Hungarian translations for gemmajs package. +# Copyright (C) 2018 THE gemmajs'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gemmajs package. +# Automatically generated, 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: gemmajs 1.99.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-12-05 12:25+0100\n" +"PO-Revision-Date: 2018-12-05 12:23+0100\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: hu_HU\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/components/admin/Importqueue.vue:46 +msgid "Accepted" +msgstr "" + +#: src/components/admin/Logs.vue:25 +msgid "Accesslog" +msgstr "" + +#: src/components/admin/usermanagement/Usermanagement.vue:106 +msgid "Add User" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:35 +msgid "Author" +msgstr "" + +#: src/components/Login.vue:70 +msgid "back to login" +msgstr "" + +#: src/components/admin/Importqueue.vue:134 +#: src/components/admin/Systemconfiguration.vue:133 +#: src/components/admin/Systemconfiguration.vue:148 +#: src/components/admin/Systemconfiguration.vue:167 +#: src/components/admin/Systemconfiguration.vue:184 +#: src/components/admin/usermanagement/Userdetail.vue:296 +#: src/components/admin/usermanagement/Userdetail.vue:368 +#: src/components/admin/usermanagement/Usermanagement.vue:300 +#: src/components/admin/usermanagement/Usermanagement.vue:308 +#: src/components/admin/usermanagement/Usermanagement.vue:334 +#: src/components/map/Search.vue:257 +#: src/components/map/contextbox/Bottlenecks.vue:252 +#: src/components/map/contextbox/ImportSoundingresults.vue:205 +#: src/components/map/contextbox/ImportSoundingresults.vue:244 +#: src/components/map/contextbox/ImportSoundingresults.vue:275 +msgid "Backend Error" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:11 +msgid "Bottleneck" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:19 +msgid "Bottleneck Areas fill-color" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:13 +msgid "Bottleneck Areas stroke-color" +msgstr "" + +#: src/components/Sidebar.vue:22 +#: src/components/map/contextbox/Bottlenecks.vue:4 +msgid "Bottlenecks" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:121 +msgid "Cancel Upload" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:30 +msgid "Chainage" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:167 +#: src/components/map/contextbox/ImportSoundingresults.vue:181 +msgid "choose .zip- file" +msgstr "" + +#: src/components/map/Pdftool.vue:18 +msgid "Chose format:" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:64 +msgid "Compare with" +msgstr "" + +#: src/components/Sidebar.vue:58 +msgid "Configuration" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:316 +#: src/components/map/contextbox/Staging.vue:70 +msgid "Confirm" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:374 +msgid "Coordinates copied to clipboard!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:34 +msgid "Country" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:67 +#: src/components/map/contextbox/Staging.vue:14 +msgid "Date" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:47 +msgid "Depthreference" +msgstr "" + +#: src/components/map/Pdftool.vue:32 +msgid "Download" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:113 +msgid "Download Meta.json" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:37 +msgid "Email" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:60 +msgid "Email address" +msgstr "" + +#: src/components/admin/Importqueue.vue:53 +msgid "Enqueued" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:123 +msgid "Enter coordinates manually" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:185 +msgid "Enter label for cross profile" +msgstr "" + +#: src/components/Login.vue:157 +msgid "Enter passphrase" +msgstr "" + +#: src/components/Login.vue:160 +msgid "Enter username" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:377 +msgid "Error while saving user" +msgstr "" + +#: src/components/admin/Logs.vue:34 +msgid "Errorlog" +msgstr "" + +#: src/components/admin/Importqueue.vue:37 +msgid "Failed" +msgstr "" + +#: src/components/Login.vue:76 +msgid "Forgot password" +msgstr "" + +#: src/components/map/Pdftool.vue:10 src/components/map/Pdftool.vue:49 +msgid "Generate PDF" +msgstr "" + +#: src/components/map/Identify.vue:10 +msgid "Identified" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:33 +#: src/components/map/contextbox/ImportSoundingresults.vue:267 +msgid "Import" +msgstr "" + +#: src/components/Sidebar.vue:31 +msgid "Import soundingresults" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:4 +msgid "Import Soundingresults" +msgstr "" + +#: src/components/map/contextbox/Staging.vue:15 +msgid "Imported" +msgstr "" + +#: src/components/Sidebar.vue:66 src/components/admin/Importqueue.vue:9 +msgid "Importqueue" +msgstr "" + +#: src/components/Sidebar.vue:70 +#: src/components/admin/importschedule/Importschedule.vue:9 +msgid "Importschedule" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:345 +msgid "invalid email" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:408 +msgid "Invalid input" +msgstr "" + +#: src/components/admin/Importqueue.vue:54 +msgid "Kind" +msgstr "" + +#: src/components/map/Pdftool.vue:20 +msgid "landscape" +msgstr "" + +#: src/components/admin/Logs.vue:41 +msgid "Last refresh:" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:19 +msgid "Latest" +msgstr "" + +#: src/components/map/layers/Layers.vue:10 +msgid "Layers" +msgstr "" + +#: src/components/Login.vue:58 +msgid "Login" +msgstr "" + +#: src/components/Login.vue:151 +msgid "Login failed" +msgstr "" + +#: src/components/Sidebar.vue:76 +msgid "Logout" +msgstr "" + +#: src/components/Sidebar.vue:62 src/components/admin/Logs.vue:9 +msgid "Logs" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:141 +msgid "Mail was sent" +msgstr "" + +#: src/components/Sidebar.vue:14 +msgid "Map" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:20 +msgid "Measurement" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:9 +#: src/components/map/contextbox/Staging.vue:12 +msgid "Name" +msgstr "" + +#: src/components/admin/importschedule/Importscheduledetail.vue:6 +msgid "New import" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:72 +msgid "New Import" +msgstr "" + +#: src/components/map/Identify.vue:50 +msgid "No features identified." +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:116 +#: src/components/map/contextbox/Staging.vue:63 +msgid "No results." +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:66 +msgid "No schedules" +msgstr "" + +#: src/components/map/Pdftool.vue:41 +msgid "Open in new window" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:229 +msgid "password" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:227 +msgid "Password" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:230 +msgid "password again" +msgstr "" + +#: src/components/Login.vue:153 +msgid "Password reset requested!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:338 +#: src/components/admin/usermanagement/Userdetail.vue:339 +msgid "Password should at least be 8 char long including 1 digit and 1 special char like $" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:334 +msgid "Passwords do not match!" +msgstr "" + +#: src/components/admin/Importqueue.vue:40 +msgid "Pending" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:323 +msgid "Please choose a country" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:328 +msgid "Please choose a role" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:79 +msgid "Please enter a date" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:39 +msgid "Please enter a projection" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:62 +msgid "Please enter a reference" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:409 +#: src/components/map/fairway/Profiles.vue:410 +msgid "Please enter correct coordinates in the format: Lat,Lon,Lat,Lon" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:22 +msgid "Please select a bottleneck" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:41 +#: src/components/admin/usermanagement/Userdetail.vue:86 +msgid "Please select one" +msgstr "" + +#: src/components/map/Pdftool.vue:21 +msgid "portrait" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:448 +msgid "Profile deleted!" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:434 +msgid "Profile saved!" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:10 +msgid "Profiles" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:28 +msgid "Projection" +msgstr "" + +#: src/components/admin/Importqueue.vue:70 src/components/admin/Logs.vue:48 +msgid "Refresh" +msgstr "" + +#: src/components/admin/Importqueue.vue:43 +msgid "Rejected" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:228 +msgid "Repeat Password" +msgstr "" + +#: src/components/Login.vue:66 +msgid "Request password reset!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:79 +msgid "Role" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:82 +msgid "Saved cross profiles" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:36 +msgid "Schedule" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:32 +msgid "Select Bottleneck" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:25 +msgid "Send" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:139 +msgid "Send testmail" +msgstr "" + +#: src/components/map/Identify.vue:63 +msgid "" +"Some data ©\n" +" <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n" +" contributors." +msgstr "" + +#: src/components/map/fairway/Profiles.vue:45 +msgid "Sounding Result" +msgstr "" + +#: src/components/map/Identify.vue:60 +msgid "source-code" +msgstr "" + +#: src/components/Sidebar.vue:44 +msgid "Staging area" +msgstr "" + +#: src/components/map/contextbox/Staging.vue:7 +msgid "Staging Area" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:142 +msgid "Start" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:268 +msgid "Starting import for " +msgstr "" + +#: src/components/admin/Importqueue.vue:56 +msgid "State" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:130 +msgid "Submit" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:373 +msgid "Success" +msgstr "" + +#: src/components/admin/Importqueue.vue:34 +msgid "Successful" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:89 +msgid "Sysadmin" +msgstr "" + +#: src/components/Sidebar.vue:47 +msgid "Systemadministration" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:8 +msgid "Systemconfiguration" +msgstr "" + +#: src/components/map/Identify.vue:54 +msgid "" +"This app uses <i>gemma</i>, which is Free Software under <br/>\n" +" %{ license } without warranty, see docs for details." +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:34 +#: src/components/map/contextbox/Staging.vue:13 +msgid "Type" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:313 +msgid "Upload" +msgstr "" + +#: src/components/admin/Importqueue.vue:55 +msgid "User" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:15 +#: src/components/map/contextbox/Staging.vue:16 +msgid "Username" +msgstr "" + +#: src/components/Sidebar.vue:52 +#: src/components/admin/usermanagement/Usermanagement.vue:14 +msgid "Users" +msgstr "" + +#: src/components/map/Identify.vue:68 +msgid "" +"Uses\n" +" <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }." +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:92 +msgid "Waterway Admin" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:95 +msgid "Waterway User" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:435 +#: src/components/map/fairway/Profiles.vue:436 +msgid "You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile." +msgstr ""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/src/locale/ro_RO/LC_MESSAGES/app.po Wed Dec 05 14:13:28 2018 +0100 @@ -0,0 +1,522 @@ +# Romanian translations for gemmajs package. +# Copyright (C) 2018 THE gemmajs'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gemmajs package. +# Automatically generated, 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: gemmajs 1.99.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-12-05 12:25+0100\n" +"PO-Revision-Date: 2018-12-05 12:23+0100\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ro_RO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n" + +#: src/components/admin/Importqueue.vue:46 +msgid "Accepted" +msgstr "" + +#: src/components/admin/Logs.vue:25 +msgid "Accesslog" +msgstr "" + +#: src/components/admin/usermanagement/Usermanagement.vue:106 +msgid "Add User" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:35 +msgid "Author" +msgstr "" + +#: src/components/Login.vue:70 +msgid "back to login" +msgstr "" + +#: src/components/admin/Importqueue.vue:134 +#: src/components/admin/Systemconfiguration.vue:133 +#: src/components/admin/Systemconfiguration.vue:148 +#: src/components/admin/Systemconfiguration.vue:167 +#: src/components/admin/Systemconfiguration.vue:184 +#: src/components/admin/usermanagement/Userdetail.vue:296 +#: src/components/admin/usermanagement/Userdetail.vue:368 +#: src/components/admin/usermanagement/Usermanagement.vue:300 +#: src/components/admin/usermanagement/Usermanagement.vue:308 +#: src/components/admin/usermanagement/Usermanagement.vue:334 +#: src/components/map/Search.vue:257 +#: src/components/map/contextbox/Bottlenecks.vue:252 +#: src/components/map/contextbox/ImportSoundingresults.vue:205 +#: src/components/map/contextbox/ImportSoundingresults.vue:244 +#: src/components/map/contextbox/ImportSoundingresults.vue:275 +msgid "Backend Error" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:11 +msgid "Bottleneck" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:19 +msgid "Bottleneck Areas fill-color" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:13 +msgid "Bottleneck Areas stroke-color" +msgstr "" + +#: src/components/Sidebar.vue:22 +#: src/components/map/contextbox/Bottlenecks.vue:4 +msgid "Bottlenecks" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:121 +msgid "Cancel Upload" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:30 +msgid "Chainage" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:167 +#: src/components/map/contextbox/ImportSoundingresults.vue:181 +msgid "choose .zip- file" +msgstr "" + +#: src/components/map/Pdftool.vue:18 +msgid "Chose format:" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:64 +msgid "Compare with" +msgstr "" + +#: src/components/Sidebar.vue:58 +msgid "Configuration" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:316 +#: src/components/map/contextbox/Staging.vue:70 +msgid "Confirm" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:374 +msgid "Coordinates copied to clipboard!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:34 +msgid "Country" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:67 +#: src/components/map/contextbox/Staging.vue:14 +msgid "Date" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:47 +msgid "Depthreference" +msgstr "" + +#: src/components/map/Pdftool.vue:32 +msgid "Download" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:113 +msgid "Download Meta.json" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:37 +msgid "Email" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:60 +msgid "Email address" +msgstr "" + +#: src/components/admin/Importqueue.vue:53 +msgid "Enqueued" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:123 +msgid "Enter coordinates manually" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:185 +msgid "Enter label for cross profile" +msgstr "" + +#: src/components/Login.vue:157 +msgid "Enter passphrase" +msgstr "" + +#: src/components/Login.vue:160 +msgid "Enter username" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:377 +msgid "Error while saving user" +msgstr "" + +#: src/components/admin/Logs.vue:34 +msgid "Errorlog" +msgstr "" + +#: src/components/admin/Importqueue.vue:37 +msgid "Failed" +msgstr "" + +#: src/components/Login.vue:76 +msgid "Forgot password" +msgstr "" + +#: src/components/map/Pdftool.vue:10 src/components/map/Pdftool.vue:49 +msgid "Generate PDF" +msgstr "" + +#: src/components/map/Identify.vue:10 +msgid "Identified" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:33 +#: src/components/map/contextbox/ImportSoundingresults.vue:267 +msgid "Import" +msgstr "" + +#: src/components/Sidebar.vue:31 +msgid "Import soundingresults" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:4 +msgid "Import Soundingresults" +msgstr "" + +#: src/components/map/contextbox/Staging.vue:15 +msgid "Imported" +msgstr "" + +#: src/components/Sidebar.vue:66 src/components/admin/Importqueue.vue:9 +msgid "Importqueue" +msgstr "" + +#: src/components/Sidebar.vue:70 +#: src/components/admin/importschedule/Importschedule.vue:9 +msgid "Importschedule" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:345 +msgid "invalid email" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:408 +msgid "Invalid input" +msgstr "" + +#: src/components/admin/Importqueue.vue:54 +msgid "Kind" +msgstr "" + +#: src/components/map/Pdftool.vue:20 +msgid "landscape" +msgstr "" + +#: src/components/admin/Logs.vue:41 +msgid "Last refresh:" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:19 +msgid "Latest" +msgstr "" + +#: src/components/map/layers/Layers.vue:10 +msgid "Layers" +msgstr "" + +#: src/components/Login.vue:58 +msgid "Login" +msgstr "" + +#: src/components/Login.vue:151 +msgid "Login failed" +msgstr "" + +#: src/components/Sidebar.vue:76 +msgid "Logout" +msgstr "" + +#: src/components/Sidebar.vue:62 src/components/admin/Logs.vue:9 +msgid "Logs" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:141 +msgid "Mail was sent" +msgstr "" + +#: src/components/Sidebar.vue:14 +msgid "Map" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:20 +msgid "Measurement" +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:9 +#: src/components/map/contextbox/Staging.vue:12 +msgid "Name" +msgstr "" + +#: src/components/admin/importschedule/Importscheduledetail.vue:6 +msgid "New import" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:72 +msgid "New Import" +msgstr "" + +#: src/components/map/Identify.vue:50 +msgid "No features identified." +msgstr "" + +#: src/components/map/contextbox/Bottlenecks.vue:116 +#: src/components/map/contextbox/Staging.vue:63 +msgid "No results." +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:66 +msgid "No schedules" +msgstr "" + +#: src/components/map/Pdftool.vue:41 +msgid "Open in new window" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:229 +msgid "password" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:227 +msgid "Password" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:230 +msgid "password again" +msgstr "" + +#: src/components/Login.vue:153 +msgid "Password reset requested!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:338 +#: src/components/admin/usermanagement/Userdetail.vue:339 +msgid "Password should at least be 8 char long including 1 digit and 1 special char like $" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:334 +msgid "Passwords do not match!" +msgstr "" + +#: src/components/admin/Importqueue.vue:40 +msgid "Pending" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:323 +msgid "Please choose a country" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:328 +msgid "Please choose a role" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:79 +msgid "Please enter a date" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:39 +msgid "Please enter a projection" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:62 +msgid "Please enter a reference" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:409 +#: src/components/map/fairway/Profiles.vue:410 +msgid "Please enter correct coordinates in the format: Lat,Lon,Lat,Lon" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:22 +msgid "Please select a bottleneck" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:41 +#: src/components/admin/usermanagement/Userdetail.vue:86 +msgid "Please select one" +msgstr "" + +#: src/components/map/Pdftool.vue:21 +msgid "portrait" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:448 +msgid "Profile deleted!" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:434 +msgid "Profile saved!" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:10 +msgid "Profiles" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:28 +msgid "Projection" +msgstr "" + +#: src/components/admin/Importqueue.vue:70 src/components/admin/Logs.vue:48 +msgid "Refresh" +msgstr "" + +#: src/components/admin/Importqueue.vue:43 +msgid "Rejected" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:228 +msgid "Repeat Password" +msgstr "" + +#: src/components/Login.vue:66 +msgid "Request password reset!" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:79 +msgid "Role" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:82 +msgid "Saved cross profiles" +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:36 +msgid "Schedule" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:32 +msgid "Select Bottleneck" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:25 +msgid "Send" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:139 +msgid "Send testmail" +msgstr "" + +#: src/components/map/Identify.vue:63 +msgid "" +"Some data ©\n" +" <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n" +" contributors." +msgstr "" + +#: src/components/map/fairway/Profiles.vue:45 +msgid "Sounding Result" +msgstr "" + +#: src/components/map/Identify.vue:60 +msgid "source-code" +msgstr "" + +#: src/components/Sidebar.vue:44 +msgid "Staging area" +msgstr "" + +#: src/components/map/contextbox/Staging.vue:7 +msgid "Staging Area" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:142 +msgid "Start" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:268 +msgid "Starting import for " +msgstr "" + +#: src/components/admin/Importqueue.vue:56 +msgid "State" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:130 +msgid "Submit" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:373 +msgid "Success" +msgstr "" + +#: src/components/admin/Importqueue.vue:34 +msgid "Successful" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:89 +msgid "Sysadmin" +msgstr "" + +#: src/components/Sidebar.vue:47 +msgid "Systemadministration" +msgstr "" + +#: src/components/admin/Systemconfiguration.vue:8 +msgid "Systemconfiguration" +msgstr "" + +#: src/components/map/Identify.vue:54 +msgid "" +"This app uses <i>gemma</i>, which is Free Software under <br/>\n" +" %{ license } without warranty, see docs for details." +msgstr "" + +#: src/components/admin/importschedule/Importschedule.vue:34 +#: src/components/map/contextbox/Staging.vue:13 +msgid "Type" +msgstr "" + +#: src/components/map/contextbox/ImportSoundingresults.vue:313 +msgid "Upload" +msgstr "" + +#: src/components/admin/Importqueue.vue:55 +msgid "User" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:15 +#: src/components/map/contextbox/Staging.vue:16 +msgid "Username" +msgstr "" + +#: src/components/Sidebar.vue:52 +#: src/components/admin/usermanagement/Usermanagement.vue:14 +msgid "Users" +msgstr "" + +#: src/components/map/Identify.vue:68 +msgid "" +"Uses\n" +" <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }." +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:92 +msgid "Waterway Admin" +msgstr "" + +#: src/components/admin/usermanagement/Userdetail.vue:95 +msgid "Waterway User" +msgstr "" + +#: src/components/map/fairway/Profiles.vue:435 +#: src/components/map/fairway/Profiles.vue:436 +msgid "You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile." +msgstr ""
--- a/client/src/locale/sk_SK/LC_MESSAGES/app.po Wed Dec 05 10:31:41 2018 +0000 +++ b/client/src/locale/sk_SK/LC_MESSAGES/app.po Wed Dec 05 14:13:28 2018 +0100 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: wamosjs 0.1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-12-04 13:29+0100\n" +"POT-Creation-Date: 2018-12-05 12:03+0100\n" "PO-Revision-Date: 2018-07-03 17:18+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -175,13 +175,6 @@ msgid "Generate PDF" msgstr "" -#: src/components/map/Identify.vue:69 -msgid "" -"Geonames data source is licensed under\n" -" <a href=\"https://creativecommons.org/licenses/by/4.0/\">%{ geoLicense }</a> without warranty, see docs for details\n" -" <a href=\"http://www.geonames.org/data-sources.html\">%{ data }</a>." -msgstr "" - #: src/components/map/Identify.vue:10 msgid "Identified" msgstr "" @@ -281,7 +274,7 @@ msgid "New Import" msgstr "" -#: src/components/map/Identify.vue:51 +#: src/components/map/Identify.vue:50 msgid "No features identified." msgstr "" @@ -421,7 +414,7 @@ msgid "Send testmail" msgstr "" -#: src/components/map/Identify.vue:64 +#: src/components/map/Identify.vue:63 msgid "" "Some data ©\n" " <a href=\"https://www.openstreetmap.org/copyright\">%{ name }</a>\n" @@ -432,7 +425,7 @@ msgid "Sounding Result" msgstr "" -#: src/components/map/Identify.vue:61 +#: src/components/map/Identify.vue:60 msgid "source-code" msgstr "" @@ -480,7 +473,7 @@ msgid "Systemconfiguration" msgstr "" -#: src/components/map/Identify.vue:55 +#: src/components/map/Identify.vue:54 msgid "" "This app uses <i>gemma</i>, which is Free Software under <br/>\n" " %{ license } without warranty, see docs for details." @@ -509,6 +502,12 @@ msgid "Users" msgstr "" +#: src/components/map/Identify.vue:68 +msgid "" +"Uses\n" +" <a href=\"https://download.geonames.org/export/dump/readme.txt\">GeoNames</a> under %{ geoLicense }." +msgstr "" + #: src/components/admin/usermanagement/Userdetail.vue:92 msgid "Waterway Admin" msgstr ""
--- a/client/src/locale/translations.json Wed Dec 05 10:31:41 2018 +0000 +++ b/client/src/locale/translations.json Wed Dec 05 14:13:28 2018 +0100 @@ -1,1 +1,1 @@ -{"de_AT":{"Accepted":"Akzeptiert","Accesslog":"Zugriffs-Protokoll","Add User":"Benutzer hinzufügen","Author":"Autor","back to login":"zurück zur Anmeldung","Backend Error":"Server-Fehler","Bottleneck":"Engstelle","Bottleneck Areas fill-color":"Flächenfüllfarbe Engstelle","Bottleneck Areas stroke-color":"Flächenumrandungsfarbe Engstelle","Bottlenecks":"Engstellen","Cancel Upload":"Hochladen abbrechen","Chainage":"Verkettung","choose .zip- file":"Wählen Sie eine .zip Datei","Chose format:":"Format wählen:","Compare with":"Vergleiche mit","Configuration":"Konfiguration","Confirm":"Bestätigen","Coordinates copied to clipboard!":"Koordinaten auf die Zwischenablage kopiert!","Country":"Land","Date":"Datum","Depthreference":"Tiefenreferenz","Download":"Herunterladen","Download Meta.json":"Meta.json Herunterladen","Email":"E-Mail","Email address":"E-Mail Adresse","Enqueued":"Hinzugefügt","Enter coordinates manually":"Manuelle Koordinateneingabe","Enter label for cross profile":"Namen für Profilschnitt eingeben","Enter passphrase":"Passphrase eingeben","Errorlog":"Fehlerprotokoll","Failed":"Fehlgeschlagen","Forgot password":"Passwort vergessen","Generate PDF":"PDF generieren","Identified":"Identifiziert","Import":"Daten-Import","Import soundingresults":"Seichtstellenmessungen importieren","Import Soundingresults":"Seichtstellenmessungen importieren","Imported":"Importiert","Importqueue":"Import-Warteschlange","Importschedule":"Import-Zeitplan","Invalid input":"Ungültige Eingabe","Kind":"Art","landscape":"Querformat","Last refresh:":"Letzter Abgleich:","Latest":"Neustes","Layers":"Schichten","Login":"Login","Login failed":"Login fehlgeschlagen","Logout":"Abmelden","Logs":"Protokolle","Mail was sent":"E-Mail wurde gesendet","Map":"Karte","Measurement":"Messung","Name":"Name","New Import":"Neuer Import","No features identified.":"Keine Objekte identifiziert.","No results.":"Keine Ergebnisse.","No schedules":"Keine Pläne","Open in new window":"In neuem Fenster öffnen","Password reset requested!":"Passwort Zurücksetzung angefragt!","Pending":"Ausstehend","Please enter a date":"Bitte ein Datum eingeben","Please enter a projection":"Bitte eine Projektion eingeben","Please enter a reference":"Bitte ein Höhenreferenzsystem eingeben","Please enter correct coordinates in the format: Lat,Lon,Lat,Lon":"Bitte geben Sie die Koordinaten in folgendem Format an: Lat,Lon,Lat,Lon","Please select a bottleneck":"Bitte eine Seichtstelle wählen","Please select one":"Bitte auswählen","portrait":"Hochformat","Profile deleted!":"Profil gelöscht!","Profile saved!":"Profil gespeichert!","Profiles":"Profile","Projection":"Projektion","Refresh":"Aktualisieren","Rejected":"Abgelehnt","Request password reset!":"Passwort-Zurücksetzung anfragen!","Role":"Rolle","Saved cross profiles":"Gespeicherte Profile","Schedule":"Zeitplan","Select Bottleneck":"Wähle Engstelle","Send":"Absenden","Send testmail":"Test-E-Mail versenden","Sounding Result":"Seichtstellenvermessungsergebnisse","source-code":"Quelltext","Staging area":"Import-Überprüfung","Staging Area":"Import-Überprüfung","Start":"Start","Starting import for ":"Import gestartet ","State":"Zustand","Submit":"Abschicken","Success":"Erfolg","Successful":"Erfolgreich","Sysadmin":"Sys-Admin","Systemadministration":"System-Administration","Systemconfiguration":"System-Konfiguation","Type":"Typ","Upload":"Hochladen","User":"Benutzer","Users":"Benutzer","Waterway Admin":"Waterway-Admin","Waterway User":"Waterway-Benutzer","You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile.":"Sie können diese Koordinaten aus dem \"Gespeicherte Profile\"-Menü auswählen, um diesen Profilschnitt wieder herzustellen."},"en_GB":{},"sk_SK":{}} \ No newline at end of file +{"bg_BG":{},"de_AT":{"Accepted":"Akzeptiert","Accesslog":"Zugriffs-Protokoll","Add User":"Benutzer hinzufügen","Author":"Autor","back to login":"zurück zur Anmeldung","Backend Error":"Server-Fehler","Bottleneck":"Engstelle","Bottleneck Areas fill-color":"Flächenfüllfarbe Engstelle","Bottleneck Areas stroke-color":"Flächenumrandungsfarbe Engstelle","Bottlenecks":"Engstellen","Cancel Upload":"Hochladen abbrechen","Chainage":"Verkettung","choose .zip- file":"Wählen Sie eine .zip Datei","Chose format:":"Format wählen:","Compare with":"Vergleiche mit","Configuration":"Konfiguration","Confirm":"Bestätigen","Coordinates copied to clipboard!":"Koordinaten auf die Zwischenablage kopiert!","Country":"Land","Date":"Datum","Depthreference":"Tiefenreferenz","Download":"Herunterladen","Download Meta.json":"Meta.json Herunterladen","Email":"E-Mail","Email address":"E-Mail Adresse","Enqueued":"Hinzugefügt","Enter coordinates manually":"Manuelle Koordinateneingabe","Enter label for cross profile":"Namen für Profilschnitt eingeben","Enter passphrase":"Passphrase eingeben","Errorlog":"Fehlerprotokoll","Failed":"Fehlgeschlagen","Forgot password":"Passwort vergessen","Generate PDF":"PDF generieren","Identified":"Identifiziert","Import":"Daten-Import","Import soundingresults":"Seichtstellenmessungen importieren","Import Soundingresults":"Seichtstellenmessungen importieren","Imported":"Importiert","Importqueue":"Import-Warteschlange","Importschedule":"Import-Zeitplan","Invalid input":"Ungültige Eingabe","Kind":"Art","landscape":"Querformat","Last refresh:":"Letzter Abgleich:","Latest":"Neustes","Layers":"Schichten","Login":"Login","Login failed":"Login fehlgeschlagen","Logout":"Abmelden","Logs":"Protokolle","Mail was sent":"E-Mail wurde gesendet","Map":"Karte","Measurement":"Messung","Name":"Name","New Import":"Neuer Import","No features identified.":"Keine Objekte identifiziert.","No results.":"Keine Ergebnisse.","No schedules":"Keine Pläne","Open in new window":"In neuem Fenster öffnen","Password reset requested!":"Passwort Zurücksetzung angefragt!","Pending":"Ausstehend","Please enter a date":"Bitte ein Datum eingeben","Please enter a projection":"Bitte eine Projektion eingeben","Please enter a reference":"Bitte ein Höhenreferenzsystem eingeben","Please enter correct coordinates in the format: Lat,Lon,Lat,Lon":"Bitte geben Sie die Koordinaten in folgendem Format an: Lat,Lon,Lat,Lon","Please select a bottleneck":"Bitte eine Seichtstelle wählen","Please select one":"Bitte auswählen","portrait":"Hochformat","Profile deleted!":"Profil gelöscht!","Profile saved!":"Profil gespeichert!","Profiles":"Profile","Projection":"Projektion","Refresh":"Aktualisieren","Rejected":"Abgelehnt","Request password reset!":"Passwort-Zurücksetzung anfragen!","Role":"Rolle","Saved cross profiles":"Gespeicherte Profile","Schedule":"Zeitplan","Select Bottleneck":"Wähle Engstelle","Send":"Absenden","Send testmail":"Test-E-Mail versenden","Sounding Result":"Seichtstellenvermessungsergebnisse","source-code":"Quelltext","Staging area":"Import-Überprüfung","Staging Area":"Import-Überprüfung","Start":"Start","Starting import for ":"Import gestartet ","State":"Zustand","Submit":"Abschicken","Success":"Erfolg","Successful":"Erfolgreich","Sysadmin":"Sys-Admin","Systemadministration":"System-Administration","Systemconfiguration":"System-Konfiguation","Type":"Typ","Upload":"Hochladen","User":"Benutzer","Users":"Benutzer","Waterway Admin":"Waterway-Admin","Waterway User":"Waterway-Benutzer","You can now select these coordinates from the \"Saved cross profiles\" menu to restore this cross profile.":"Sie können diese Koordinaten aus dem \"Gespeicherte Profile\"-Menü auswählen, um diesen Profilschnitt wieder herzustellen."},"en_GB":{},"hr_HR":{},"hu_HU":{},"ro_RO":{},"sk_SK":{}} \ No newline at end of file
--- a/client/src/main.js Wed Dec 05 10:31:41 2018 +0000 +++ b/client/src/main.js Wed Dec 05 14:13:28 2018 +0100 @@ -139,17 +139,43 @@ const supportedLanguages = { en_GB: "British English", de_AT: "Deutsch", - sk_SK: "slovenčina" + sk_SK: "slovenčina", + hu_HU: "Magyat", + hr_HR: "Hrvatska", + bg_BG: "български", + ro_RO: "Română" }; -if (browserLanguage === "de-DE") { - browserLanguage = "de-AT"; // map german to austrian variant for now +if ( + browserLanguage === "de-DE" || + browserLanguage === "de-LI" || + browserLanguage === "de-LU" || + browserLanguage === "de-CH" || + browserLanguage === "de" +) { + browserLanguage = "de-AT"; // map german,liechtenstein,luxenburg and switzerland to austrian variant for now } if (browserLanguage === "sk") { browserLanguage = "sk_SK"; } +if (browserLanguage === "hu") { + browserLanguage = "hu_HU"; +} + +if (browserLanguage === "hr") { + browserLanguage = "hr_HR"; +} + +if (browserLanguage === "bg") { + browserLanguage = "bg_BG"; +} + +if (browserLanguage === "ro") { + browserLanguage = "ro_RO"; +} + const language = browserLanguage.replace("-", "_"); const isLanguageAvailable = supportedLanguages[language]; let defaultLanguage = isLanguageAvailable ? language : "en_GB";
--- a/pkg/controllers/importqueue.go Wed Dec 05 10:31:41 2018 +0000 +++ b/pkg/controllers/importqueue.go Wed Dec 05 14:13:28 2018 +0100 @@ -113,7 +113,7 @@ } if ks := req.FormValue("kinds"); ks != "" { - kinds = toTextArray(ks, imports.ImportKindNames) + kinds = toTextArray(ks, imports.ImportKindNames()) } stmt.WriteString(selectImportsSQL)
--- a/pkg/controllers/proxy.go Wed Dec 05 10:31:41 2018 +0000 +++ b/pkg/controllers/proxy.go Wed Dec 05 14:13:28 2018 +0100 @@ -67,7 +67,7 @@ if entry, found := vars["entry"]; found { if s, found = lookup(entry); !found { - log.Printf("warn: cannot find eintry '%s'\n", entry) + log.Printf("warn: cannot find entry '%s'\n", entry) panic(middleware.ErrNotFound) } } else {
--- a/pkg/imports/kinds.go Wed Dec 05 10:31:41 2018 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -package imports - -// This is Free Software under GNU Affero General Public License v >= 3.0 -// without warranty, see README.md and license for details. -// -// SPDX-License-Identifier: AGPL-3.0-or-later -// License-Filename: LICENSES/AGPL-3.0.txt -// -// Copyright (C) 2018 by via donau -// – Österreichische Wasserstraßen-Gesellschaft mbH -// Software engineering by Intevation GmbH -// -// Author(s): -// * Sascha L. Teichmann <sascha.teichmann@intevation.de> - -var ImportKindNames = []string{ - string(SRJobKind), -}
--- a/pkg/imports/polygon.go Wed Dec 05 10:31:41 2018 +0000 +++ b/pkg/imports/polygon.go Wed Dec 05 14:13:28 2018 +0100 @@ -23,12 +23,12 @@ ) type ( - Point struct { + point struct { X float64 Y float64 } - LineString []Point - Polygon []LineString + lineString []point + polygon []lineString ) const ( @@ -36,7 +36,7 @@ wkbPolygon uint32 = 3 ) -func shapeToPolygon(s shp.Shape) (Polygon, error) { +func shapeToPolygon(s shp.Shape) (polygon, error) { switch p := s.(type) { case *shp.Polygon: return toPolygon(p.NumParts, p.Parts, p.Points), nil @@ -48,22 +48,22 @@ return nil, fmt.Errorf("Unsupported shape type %T", s) } -func toPolygon(numParts int32, parts []int32, points []shp.Point) Polygon { - out := make(Polygon, numParts) +func toPolygon(numParts int32, parts []int32, points []shp.Point) polygon { + out := make(polygon, numParts) pos := 0 for i := range out { ps := parts[i] - line := make(LineString, ps) + line := make(lineString, ps) for j := int32(0); j < ps; j, pos = j+1, pos+1 { p := &points[pos] - line[j] = Point{p.X, p.Y} + line[j] = point{p.X, p.Y} } out[i] = line } return out } -func (p Polygon) AsWBK() []byte { +func (p polygon) asWKB() []byte { if p == nil { return nil }
--- a/pkg/imports/queue.go Wed Dec 05 10:31:41 2018 +0000 +++ b/pkg/imports/queue.go Wed Dec 05 14:13:28 2018 +0100 @@ -31,22 +31,54 @@ ) type ( + // Feedback is passed to the Do method of a Job to log + // informations, warnings or errors. Feedback interface { + // Info logs informations. Info(fmt string, args ...interface{}) + // Warn logs warnings. Warn(fmt string, args ...interface{}) + // Error logs errors. Error(fmt string, args ...interface{}) } + // Job is the central abstraction of an import job + // run by the import queue. Job interface { - Do(context.Context, int64, *sql.Conn, Feedback) (interface{}, error) + // Do is called to do the actual import. + // Bind transactions to ctx and conn, please- + // id is the number of the import job. + // feedback can be used to log the import process. + // If no error is return the import is assumed to + // be successfull. The non-error return value is + // serialized as a JSON string into the database as + // a summary to the import to be used by the review process. + Do(ctx context.Context, id int64, conn *sql.Conn, feedback Feedback) (interface{}, error) + // CleanUp is called to clean up ressources hold by the import. + // It is called whether the import succeeded or not. CleanUp() error } + // JobKind is the type of an import. + // Choose a unique name for every import. JobKind string + // JobCreator is used to bring a job to life as it is stored + // in pure meta-data form to the database. JobCreator interface { + // Create build the actual job. + // kind is the name of the import type. + // data is a free form string to pass arguments to the creation + // process. This is useful to tell e.g. where to find data + // in the file system to be used for importing. Create(kind JobKind, data string) (Job, error) + // Depends returns a list of ressources locked by this type of import. + // Imports are run concurrently if they have disjoint sets + // of dependencies. Depends() []string + // StageDone is called if an import is positively reviewed + // (state = accepted). This can be used to finalize the imported + // data to move it e.g from the staging area. StageDone(context.Context, *sql.Tx, int64) error } @@ -74,6 +106,7 @@ } var ( + // ImportStateNames is a list of the states a job can be in. ImportStateNames = []string{ "queued", "running", @@ -149,15 +182,38 @@ q.creators[kind] = jc } +// FindJobCreator looks up a JobCreator in the global import queue. func FindJobCreator(kind JobKind) JobCreator { return iqueue.jobCreator(kind) } +// ImportKindNames is a list of the names of the imports the +// global import queue supports. +func ImportKindNames() []string { + return iqueue.importKindNames() +} + +// RegisterJobCreator adds a JobCreator to the global import queue. +// This a good candidate to be called in a init function for +// a particular JobCreator. func RegisterJobCreator(kind JobKind, jc JobCreator) { log.Printf("info: register import job creator for kind '%s'\n", kind) iqueue.registerJobCreator(kind, jc) } +func (q *importQueue) importKindNames() []string { + q.creatorsMu.Lock() + defer q.creatorsMu.Unlock() + names := make([]string, len(q.creators)) + var i int + for kind := range q.creators { + names[i] = string(kind) + i++ + } + // XXX: Consider using sort.Strings to make output deterministic. + return names +} + func (q *importQueue) jobCreator(kind JobKind) JobCreator { q.creatorsMu.Lock() defer q.creatorsMu.Unlock() @@ -179,6 +235,9 @@ return id, err } +// AddJob adds a job to the global import queue to be executed +// as soon as possible. This is gone in a separate Go routine +// so this will not block. func AddJob(kind JobKind, user, data string) (int64, error) { return iqueue.addJob(kind, user, data) }
--- a/pkg/imports/sr.go Wed Dec 05 10:31:41 2018 +0000 +++ b/pkg/imports/sr.go Wed Dec 05 14:13:28 2018 +0100 @@ -40,14 +40,24 @@ "gemma.intevation.de/gemma/pkg/octree" ) +// SoundingResult is a Job to import sounding reults +// from a ZIP file into the database. type SoundingResult struct { + // Dir is the folder in the file system where the + // 'sr.zip' is expect to be. Dir string `json:"dir"` // Override data - Date *models.SoundingResultDate `json:"date,omitempty"` - Bottleneck *string `json:"bottleneck,omitempty"` - EPSG *uint `json:"epsg,omitempty"` - DepthReference *string `json:"depth-reference,omitempty"` + // Date if given overrides the date value from the meta.json. + Date *models.SoundingResultDate `json:"date,omitempty"` + // Date if given overrides the name of the bottleneck from the meta.json. + Bottleneck *string `json:"bottleneck,omitempty"` + // EPSG if given overrides the EPSG code from the meta.json. + // Defaults to WGS84. + EPSG *uint `json:"epsg,omitempty"` + // DepthReference if given overides the DepthReference value + // from the meta.json. + DepthReference *string `json:"depth-reference,omitempty"` } const ( @@ -55,6 +65,7 @@ contourTolerance = 0.1 ) +// SRJobKind is the unique name of a SoundingResult import job. const SRJobKind JobKind = "sr" type srJobCreator struct{} @@ -91,7 +102,10 @@ const ( srStageDoneSQL = ` UPDATE waterway.sounding_results SET staging_done = true -WHERE id = $1` +WHERE id = ( + SELECT key from waterway.track_imports + WHERE import_id = $1 AND + relation = 'waterway.sounding_results'::regclass)` insertPointsSQL = ` INSERT INTO waterway.sounding_results ( @@ -155,10 +169,13 @@ ` ) +// FromString revives a SoundingResult import from a string. func (sr *SoundingResult) FromString(data string) error { return json.NewDecoder(strings.NewReader(data)).Decode(sr) } +// ToString serializes a SoundingResult import into a string to +// be revived by FromString. func (sr *SoundingResult) ToString() (string, error) { var b strings.Builder if err := json.NewEncoder(&b).Encode(sr); err != nil { @@ -167,6 +184,7 @@ return b.String(), nil } +// Do executes the actual sounding result import. func (sr *SoundingResult) Do( ctx context.Context, importID int64, @@ -234,7 +252,7 @@ m.Date.Time, m.DepthReference, xyz.AsWKB(), - polygon.AsWBK(), + polygon.asWKB(), m.EPSG, ).Scan(&id, &lat, &lon, &epsg) xyz, polygon = nil, nil // not need from now on. @@ -313,6 +331,8 @@ return &summary, err } +// CleanUp removes the folder containing the ZIP file with the +// the sounding result import. func (sr *SoundingResult) CleanUp() error { return os.RemoveAll(sr.Dir) } @@ -415,7 +435,7 @@ return loadXYZReader(r, feedback) } -func loadBoundary(z *zip.ReadCloser) (Polygon, error) { +func loadBoundary(z *zip.ReadCloser) (polygon, error) { shpF := common.FindInZIP(z, ".shp") if shpF == nil { return nil, nil
--- a/pkg/middleware/modifyquery.go Wed Dec 05 10:31:41 2018 +0000 +++ b/pkg/middleware/modifyquery.go Wed Dec 05 14:13:28 2018 +0100 @@ -62,6 +62,8 @@ return nil } +// ModifyQuery creates an http.Handler which calls a modify function first before +// calling the the nested next http.Handler. func ModifyQuery(next http.Handler, modify func(*http.Request, url.Values) error) http.Handler { return http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { @@ -90,6 +92,10 @@ }) } +// InjectUser is a modify function fitting into ModifyQuery to inject the +// user's name from the current session hex-encoded into the 'env' query parameter. +// This is used by the GeoServer to restrict the access to this the user/role +// to show show the requested map. func InjectUser(req *http.Request, parameters url.Values) error { // To prevent SQL injections parameters.Del("env")
--- a/pkg/middleware/notfound.go Wed Dec 05 10:31:41 2018 +0000 +++ b/pkg/middleware/notfound.go Wed Dec 05 14:13:28 2018 +0100 @@ -18,8 +18,12 @@ "net/http" ) +// ErrNotFound should be as the argument to panic if the NotFound should +// report back a http.StatusNotFound. var ErrNotFound = errors.New("Not found") +// NotFound creates an http.Handler which survives panic(ErrNotFound) and +// reports http.StatusNotFound in these cases back to the calling handler. func NotFound(next http.Handler) http.Handler { return http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { defer func() {