Mercurial > gemma
changeset 1361:ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
* remove trailing whitespace for some cleint files
* add headers for licensing to Makefile
* add the missed authors in the header to Systemconfiguration.vue file
line wrap: on
line diff
--- a/client/Makefile Mon Nov 26 10:04:47 2018 +0100 +++ b/client/Makefile Mon Nov 26 11:11:13 2018 +0100 @@ -1,3 +1,16 @@ +#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): +# Thomas Junk <thomas.junk@intevation.de> + # On OSX the PATH variable isn't exported unless "SHELL" is also set, see: http://stackoverflow.com/a/25506676 SHELL = /bin/bash NODE_BINDIR = ./node_modules/.bin
--- a/client/src/assets/application.sass Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/assets/application.sass Mon Nov 26 11:11:13 2018 +0100 @@ -1,14 +1,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> * Markus Kottländer <markus.kottlaender@intevation>
--- a/client/src/assets/tooltip.sass Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/assets/tooltip.sass Mon Nov 26 11:11:13 2018 +0100 @@ -1,14 +1,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/components/App.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/App.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,36 +1,36 @@ <template> - <div id="app" class="main"> - <div v-if="isAuthenticated" class="d-flex flex-column userinterface"> - <div class="topbar d-flex pt-3 mx-3"> - <div class="mr-auto d-flex"> - <Sidebar :routeName="routeName"></Sidebar> - <div class="d-flex flex-column ml-3" style="max-width: 600px"> - <Search v-if="routeName == 'mainview'"></Search> - <Contextbox v-if="routeName == 'mainview'"></Contextbox> - </div> - </div> - <div class="ml-auto d-flex"> - <div class="d-flex flex-column align-items-end"> - <Layers v-if="routeName == 'mainview'"></Layers> - </div> - <div class="d-flex flex-column align-items-end"> - <Identify v-if="routeName == 'mainview'"></Identify> - <Pdftool v-if="routeName == 'mainview'"></Pdftool> - </div> - <Toolbar v-if="routeName == 'mainview'"></Toolbar> - </div> - </div> - <div class="flex-fill"></div> - <div class="d-flex flex-row align-items-end"> - <Surveys v-if="routeName == 'mainview'"></Surveys> - <Infobar v-if="routeName == 'mainview'"></Infobar> - </div> - <Zoom v-if="routeName == 'mainview'"></Zoom> + <div id="app" class="main"> + <div v-if="isAuthenticated" class="d-flex flex-column userinterface"> + <div class="topbar d-flex pt-3 mx-3"> + <div class="mr-auto d-flex"> + <Sidebar :routeName="routeName"></Sidebar> + <div class="d-flex flex-column ml-3" style="max-width: 600px"> + <Search v-if="routeName == 'mainview'"></Search> + <Contextbox v-if="routeName == 'mainview'"></Contextbox> + </div> </div> - <div class="d-flex flex-column"> - <router-view/> + <div class="ml-auto d-flex"> + <div class="d-flex flex-column align-items-end"> + <Layers v-if="routeName == 'mainview'"></Layers> + </div> + <div class="d-flex flex-column align-items-end"> + <Identify v-if="routeName == 'mainview'"></Identify> + <Pdftool v-if="routeName == 'mainview'"></Pdftool> + </div> + <Toolbar v-if="routeName == 'mainview'"></Toolbar> </div> + </div> + <div class="flex-fill"></div> + <div class="d-flex flex-row align-items-end"> + <Surveys v-if="routeName == 'mainview'"></Surveys> + <Infobar v-if="routeName == 'mainview'"></Infobar> + </div> + <Zoom v-if="routeName == 'mainview'"></Zoom> </div> + <div class="d-flex flex-column"> + <router-view/> + </div> + </div> </template> <style lang="sass" scoped> @@ -61,14 +61,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> * Markus Kottländer <markus.kottlaender@intevation.de>
--- a/client/src/components/Login.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/Login.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,54 +1,79 @@ (<template> - <div class="d-flex flex-column login bg-white shadow"> - <div class="m-5"> - <!-- logo section --> - <div class="d-flex flex-row justify-content-center mb-3"> - <div class="logo mr-3"><img src="../assets/logo.png"></div> - <div class="title"> - <h1>{{ appTitle }}</h1> - </div> - </div> - <!-- end logo section --> - <form class="loginform mx-auto" @submit.prevent="login"> - <div id="alert" :style="errorMessageStyle" :class="errorMessageClass" role="alert"> - <span>{{ errorMessage }}</span> - </div> - <div class="input-group mb-3"> - <input type="text" v-model="user" id="inputUsername" class="form-control shadow-sm" :placeholder="usernameLabel" required autofocus> - </div> - <div class="input-group mb-3"> - <input :type="isPasswordVisible" v-model="password" id="inputPassword" class="form-control shadow-sm" :placeholder='passwordLabel' :required='!showPasswordReset' :disabled='showPasswordReset'> - <div class="input-group-append"> - <span class="input-group-text disabled" id="basic-addon2" @click="showPassword"> - <font-awesome-icon icon="eye" v-if="!readablePassword" /> - <font-awesome-icon icon="eye-slash" v-if="readablePassword" /> - </span> - </div> - </div> - <button v-if="showPasswordReset==false" class="btn btn-primary btn-block shadow-sm" :disabled="submitted || showPasswordReset" type="submit"> - <translate>Login</translate> - </button> - <div v-if="showPasswordReset" class="passwordreset"> - <button class="btn btn-block btn-info" type="button" @click="resetPassword"> - <translate>Request password reset!</translate> - </button> - <div class="pull-right"> - <a href="#" @click.prevent="togglePasswordReset"> - <translate>back to login</translate> - </a> - </div> - </div> - <div v-else class="pull-right"> - <a href="#" @click.prevent="togglePasswordReset"> - <translate>Forgot password</translate> - </a> - </div> - </form> + <div class="d-flex flex-column login bg-white shadow"> + <div class="m-5"> + <!-- logo section --> + <div class="d-flex flex-row justify-content-center mb-3"> + <div class="logo mr-3"> + <img src="../assets/logo.png"> + </div> + <div class="title"> + <h1>{{ appTitle }}</h1> + </div> + </div> + <!-- end logo section --> + <form class="loginform mx-auto" @submit.prevent="login"> + <div id="alert" :style="errorMessageStyle" :class="errorMessageClass" role="alert"> + <span>{{ errorMessage }}</span> + </div> + <div class="input-group mb-3"> + <input + type="text" + v-model="user" + id="inputUsername" + class="form-control shadow-sm" + :placeholder="usernameLabel" + required + autofocus + > + </div> + <div class="input-group mb-3"> + <input + :type="isPasswordVisible" + v-model="password" + id="inputPassword" + class="form-control shadow-sm" + :placeholder="passwordLabel" + :required="!showPasswordReset" + :disabled="showPasswordReset" + > + <div class="input-group-append"> + <span class="input-group-text disabled" id="basic-addon2" @click="showPassword"> + <font-awesome-icon icon="eye" v-if="!readablePassword"/> + <font-awesome-icon icon="eye-slash" v-if="readablePassword"/> + </span> + </div> + </div> + <button + v-if="showPasswordReset==false" + class="btn btn-primary btn-block shadow-sm" + :disabled="submitted || showPasswordReset" + type="submit" + > + <translate>Login</translate> + </button> + <div v-if="showPasswordReset" class="passwordreset"> + <button class="btn btn-block btn-info" type="button" @click="resetPassword"> + <translate>Request password reset!</translate> + </button> + <div class="pull-right"> + <a href="#" @click.prevent="togglePasswordReset"> + <translate>back to login</translate> + </a> + </div> + </div> + <div v-else class="pull-right"> + <a href="#" @click.prevent="togglePasswordReset"> + <translate>Forgot password</translate> + </a> + </div> + </form> - <!-- bottom logo section --> - <div class="mb-3 secondary-logo mx-auto mb-auto"><img :src="secondaryLogo"></div> - </div> + <!-- bottom logo section --> + <div class="mb-3 secondary-logo mx-auto mb-auto"> + <img :src="secondaryLogo"> + </div> </div> + </div> </template>) <style lang="sass" scoped> @@ -75,14 +100,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Markus Kottländer <markus@intevation.de > */
--- a/client/src/components/Sidebar.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/Sidebar.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,77 +1,75 @@ <template> - <div :class="sidebarStyle"> - <div - @click="$store.commit('application/showSidebar', !showSidebar)" - class="menubutton ui-element d-print-none p-2 bg-white rounded position-absolute d-flex justify-content-center" + <div :class="sidebarStyle"> + <div + @click="$store.commit('application/showSidebar', !showSidebar)" + class="menubutton ui-element d-print-none p-2 bg-white rounded position-absolute d-flex justify-content-center" + > + <font-awesome-icon icon="bars"></font-awesome-icon> + </div> + <div class="menu text-nowrap text-left"> + <router-link to="/"> + <font-awesome-icon icon="map-marked-alt" fixed-width></font-awesome-icon>Map + </router-link> + <a + href="#" + @click="toggleContextBox('bottlenecks')" + :class="['secondary', { active: isActive('bottlenecks') }]" + > + <font-awesome-icon icon="ship" fixed-width></font-awesome-icon>Bottlenecks + </a> + <div v-if="isWaterwayAdmin"> + <a + href="#" + @click="toggleContextBox('imports')" + :class="['secondary', { active: isActive('imports') }]" > - <font-awesome-icon icon="bars"></font-awesome-icon> - </div> - <div class="menu text-nowrap text-left"> - <router-link to="/"> - <font-awesome-icon icon="map-marked-alt" fixed-width></font-awesome-icon> - Map - </router-link> - <a href="#" - @click="toggleContextBox('bottlenecks')" - :class="['secondary', { active: isActive('bottlenecks') }]"> - <font-awesome-icon icon="ship" fixed-width></font-awesome-icon> - Bottlenecks - </a> - <div v-if="isWaterwayAdmin"> - <a href="#" - @click="toggleContextBox('imports')" - :class="['secondary', { active: isActive('imports') }]"> - <font-awesome-icon icon="upload" fixed-width></font-awesome-icon> - Import soundingresults - </a> - <a href="#" - @click="toggleContextBox('staging')" - :class="['secondary', { active: isActive('staging') }]"> - <font-awesome-icon icon="clipboard-check" fixed-width></font-awesome-icon> - Staging area - </a> - <small class="text-muted pl-3">Systemadministration</small> - <hr class="m-0"> - <router-link to="usermanagement"> - <font-awesome-icon icon="users-cog" fixed-width></font-awesome-icon> - Users - </router-link> - </div> - <div v-if="isSysAdmin"> - <router-link to="systemconfiguration"> - <font-awesome-icon icon="wrench" fixed-width></font-awesome-icon> - Systemconfiguration - </router-link> - <router-link to="logs"> - <font-awesome-icon icon="book" fixed-width></font-awesome-icon> - Logs - </router-link> - <router-link to="importqueue"> - <font-awesome-icon icon="tasks" fixed-width></font-awesome-icon> - Importqueue - </router-link> - </div> - <hr class="m-0"> - <a href="#" @click="logoff"> - <font-awesome-icon icon="power-off" fixed-width></font-awesome-icon> - Logout {{ user }} - </a> - </div> + <font-awesome-icon icon="upload" fixed-width></font-awesome-icon>Import soundingresults + </a> + <a + href="#" + @click="toggleContextBox('staging')" + :class="['secondary', { active: isActive('staging') }]" + > + <font-awesome-icon icon="clipboard-check" fixed-width></font-awesome-icon>Staging area + </a> + <small class="text-muted pl-3">Systemadministration</small> + <hr class="m-0"> + <router-link to="usermanagement"> + <font-awesome-icon icon="users-cog" fixed-width></font-awesome-icon>Users + </router-link> + </div> + <div v-if="isSysAdmin"> + <router-link to="systemconfiguration"> + <font-awesome-icon icon="wrench" fixed-width></font-awesome-icon>Systemconfiguration + </router-link> + <router-link to="logs"> + <font-awesome-icon icon="book" fixed-width></font-awesome-icon>Logs + </router-link> + <router-link to="importqueue"> + <font-awesome-icon icon="tasks" fixed-width></font-awesome-icon>Importqueue + </router-link> + </div> + <hr class="m-0"> + <a href="#" @click="logoff"> + <font-awesome-icon icon="power-off" fixed-width></font-awesome-icon> + Logout {{ user }} + </a> </div> + </div> </template> <script> /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> * Markus Kottländer <markus.kottlaender@intevation.de>
--- a/client/src/components/admin/Logs.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/admin/Logs.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,58 +1,58 @@ <template> - <div class="main d-flex flex-column"> - <div class="d-flex flex-row"> - <div :class="spacer"></div> - <div class="logoutput text-left bg-white shadow mt-3 mx-3"> - <pre id="code" v-highlightjs="logs"><code class="bash hljs hljs-string"></code></pre> - </div> + <div class="main d-flex flex-column"> + <div class="d-flex flex-row"> + <div :class="spacer"></div> + <div class="logoutput text-left bg-white shadow mt-3 mx-3"> + <pre id="code" v-highlightjs="logs"><code class="bash hljs hljs-string"></code></pre> + </div> + </div> + <div class="d-flex flex-row logmenu"> + <div class="d-flex align-self-center"> + <ul class="nav nav-pills"> + <li class="nav-item"> + <a + @click="fetch('system/log/apache2/access.log', 'accesslog')" + :class="accesslogStyle" + href="#" + >Accesslog</a> + </li> + <li class="nav-item"> + <a + @click="fetch('system/log/apache2/error.log', 'errorlog')" + :class="errorlogStyle" + href="#" + >Errorlog</a> + </li> + </ul> + </div> + <div class="statuscontainer d-flex flex-row"> + <div class="statusline ml-3 mt-1 align-self-center"> + <h3>Last refresh: {{refreshed}}</h3> </div> - <div class="d-flex flex-row logmenu"> - <div class="d-flex align-self-center"> - <ul class="nav nav-pills"> - <li class="nav-item"> - <a - @click="fetch('system/log/apache2/access.log', 'accesslog')" - :class="accesslogStyle" - href="#" - >Accesslog</a> - </li> - <li class="nav-item"> - <a - @click="fetch('system/log/apache2/error.log', 'errorlog')" - :class="errorlogStyle" - href="#" - >Errorlog</a> - </li> - </ul> - </div> - <div class="statuscontainer d-flex flex-row"> - <div class="statusline ml-3 mt-1 align-self-center"> - <h3>Last refresh: {{refreshed}}</h3> - </div> - <div class="refresh"> - <button class="btn btn-dark" @click="fetch(currentFile, currentLog)">Refresh</button> - </div> - </div> + <div class="refresh"> + <button class="btn btn-dark" @click="fetch(currentFile, currentLog)">Refresh</button> </div> + </div> </div> + </div> </template> <style lang="sass" scoped> .statuscontainer width: 87% position: relative - + .logmenu margin-left: 5rem min-width: 60vw - + #code overflow: auto - + .refresh position: absolute right: 0 - + .logoutput width: 95% height: 85vh @@ -79,14 +79,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/components/admin/Systemconfiguration.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/admin/Systemconfiguration.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,42 +1,41 @@ <template> - <div class="d-flex flex-row"> - <div class="card sysconfig mt-3 mx-auto"> - <div class="card-header shadow-sm text-white bg-info mb-6"> - Systemconfiguration - </div> - <div class="card-body config"> - <section class="configsection"> - <h4 class="card-title">Bottleneck Areas stroke-color</h4> - <compact-picker v-model="strokeColor" /> - </section> - <section> - <h4 class="card-title">Bottleneck Areas fill-color</h4> - <chrome-picker v-model="fillColor" /> - </section> - <div class="sendbutton"> - <a @click.prevent="submit" class="btn btn-info">Send</a> - </div> - </div> <!-- card-body --> + <div class="d-flex flex-row"> + <div class="card sysconfig mt-3 mx-auto"> + <div class="card-header shadow-sm text-white bg-info mb-6">Systemconfiguration</div> + <div class="card-body config"> + <section class="configsection"> + <h4 class="card-title">Bottleneck Areas stroke-color</h4> + <compact-picker v-model="strokeColor"/> + </section> + <section> + <h4 class="card-title">Bottleneck Areas fill-color</h4> + <chrome-picker v-model="fillColor"/> + </section> + <div class="sendbutton"> + <a @click.prevent="submit" class="btn btn-info">Send</a> </div> + </div> + <!-- card-body --> </div> + </div> </template> <style scoped lang="sass"> .config text-align: left - + .configsection margin-bottom: $large-offset - + .sendbutton position: absolute right: $offset bottom: $offset - + .inputs margin-left: auto margin-right: auto - + .sysconfig width: 30vw </style> @@ -45,16 +44,17 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> + * Bernhard Reiter <bernhard@intevation.de> */ import { Chrome } from "vue-color"; import { Compact } from "vue-color";
--- a/client/src/components/admin/usermanagement/Passwordfield.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/admin/usermanagement/Passwordfield.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,19 +1,25 @@ <template> - <div> - <label for="password">{{this.label}}</label> - <div class="d-flex d-row"> - <input :type="isPasswordVisible" @change="fieldChanged" class="form-control" :placeholder='placeholder' :required="required"> - <span class="input-group-text" @click="showPassword"> - <font-awesome-icon :icon="readablePassword ? 'eye-slash' : 'eye'"></font-awesome-icon> - </span> - </div> - <div v-show="passworderrors" class="text-danger"> - <small> - <font-awesome-icon icon="exclamation-triangle"></font-awesome-icon> - {{ this.passworderrors}} - </small> - </div> + <div> + <label for="password">{{this.label}}</label> + <div class="d-flex d-row"> + <input + :type="isPasswordVisible" + @change="fieldChanged" + class="form-control" + :placeholder="placeholder" + :required="required" + > + <span class="input-group-text" @click="showPassword"> + <font-awesome-icon :icon="readablePassword ? 'eye-slash' : 'eye'"></font-awesome-icon> + </span> </div> + <div v-show="passworderrors" class="text-danger"> + <small> + <font-awesome-icon icon="exclamation-triangle"></font-awesome-icon> + {{ this.passworderrors}} + </small> + </div> + </div> </template> <style> @@ -27,14 +33,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/components/admin/usermanagement/Userdetail.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/admin/usermanagement/Userdetail.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,84 +1,126 @@ <template> - <div class="userdetails h-100 mt-3 mr-auto shadow fadeIn animated"> - <div class="card"> - <div class="card-header shadow-sm text-white bg-info mb-3"> - {{ this.cardHeader }} - <span @click="closeDetailview" class="pull-right"> - <font-awesome-icon icon="times"></font-awesome-icon> - </span> + <div class="userdetails h-100 mt-3 mr-auto shadow fadeIn animated"> + <div class="card"> + <div class="card-header shadow-sm text-white bg-info mb-3"> + {{ this.cardHeader }} + <span @click="closeDetailview" class="pull-right"> + <font-awesome-icon icon="times"></font-awesome-icon> + </span> + </div> + <div class="card-body"> + <form @submit.prevent="save" class="ml-3"> + <div class="formfields"> + <div v-if="currentUser.isNew" class="form-group row"> + <label for="user">Username</label> + <input + type="user" + :placeholder="userNamePlaceholder" + class="form-control form-control-sm" + id="user" + aria-describedby="userHelp" + v-model="currentUser.user" + > + <div v-show="errors.user" class="text-danger"> + <small> + <font-awesome-icon icon="exclamation-triangle"></font-awesome-icon> + {{ errors.user }} + </small> + </div> + </div> + <div class="form-group row"> + <label for="country">Country</label> + <select + class="form-control form-control-sm" + v-on:change="validateCountry" + v-model="currentUser.country" + > + <option disabled value>Please select one</option> + <option + v-for="country in countries" + v-bind:value="country" + v-bind:key="country" + >{{country}}</option> + </select> + <div v-show="errors.country" class="text-danger"> + <small> + <font-awesome-icon icon="exclamation-triangle"></font-awesome-icon> + {{ errors.country }} + </small> + </div> </div> - <div class="card-body"> - <form @submit.prevent="save" class="ml-3"> - <div class="formfields"> - <div v-if="currentUser.isNew" class="form-group row"> - <label for="user">Username</label> - <input type="user" :placeholder="userNamePlaceholder" class="form-control form-control-sm" id="user" aria-describedby="userHelp" v-model="currentUser.user"> - <div v-show="errors.user" class="text-danger"> - <small> - <font-awesome-icon icon="exclamation-triangle"></font-awesome-icon> - {{ errors.user }} - </small> - </div> - </div> - <div class="form-group row"> - <label for="country">Country</label> - <select class="form-control form-control-sm" v-on:change="validateCountry" v-model="currentUser.country"> - <option disabled value="">Please select one</option> - <option v-for="country in countries" v-bind:value="country" v-bind:key="country">{{country}}</option> - </select> - <div v-show="errors.country" class="text-danger"> - <small> - <font-awesome-icon icon="exclamation-triangle"></font-awesome-icon> - {{ errors.country }} - </small> - </div> - </div> - <div class="form-group row"> - <label for="email">Email address</label> - <input type="email" v-on:change="validateEmailaddress" class="form-control form-control-sm" id="email" aria-describedby="emailHelp" v-model="currentUser.email"> - <div v-show="errors.email" class="text-danger"> - <small> - <font-awesome-icon icon="exclamation-triangle"></font-awesome-icon> - {{ errors.email }} - </small> - </div> - </div> - <div class="form-group row"> - <label for="role">Role</label> - <select class="form-control form-control-sm" v-on:change="validateRole" v-model="currentUser.role"> - <option disabled value="">Please select one</option> - <option value="sys_admin">Sysadmin</option> - <option value="waterway_admin">Waterway Admin</option> - <option value="waterway_user">Waterway User</option> - </select> - <div v-show="errors.role" class="text-danger"> - <small> - <font-awesome-icon icon="exclamation-triangle"></font-awesome-icon> - {{ errors.role }} - </small> - </div> - </div> - <div class="form-group row"> - <PasswordField @fieldchange="passwordChanged" :placeholder="passwordPlaceholder" :label="passwordLabel" :passworderrors="errors.password"></PasswordField> - </div> - <div class="form-group row"> - <PasswordField @fieldchange="passwordReChanged" :placeholder="passwordRePlaceholder" :label="passwordReLabel" :passworderrors="errors.passwordre"></PasswordField> - </div> - </div> - <div> - <button type="submit" :disabled="submitted" class="shadow-sm btn btn-info pull-right">Submit</button> - </div> - <div v-if="currentUser.role !='waterway_user' " class="form-group row d-flex flex-row justify-content-start mailbutton"> - <a @click="sendTestMail" class="btn btn-light"> - <font-awesome-icon icon="paper-plane"></font-awesome-icon> - Send testmail - </a> - <div v-if="mailsent">Mail was sent</div> - </div> - </form> + <div class="form-group row"> + <label for="email">Email address</label> + <input + type="email" + v-on:change="validateEmailaddress" + class="form-control form-control-sm" + id="email" + aria-describedby="emailHelp" + v-model="currentUser.email" + > + <div v-show="errors.email" class="text-danger"> + <small> + <font-awesome-icon icon="exclamation-triangle"></font-awesome-icon> + {{ errors.email }} + </small> + </div> + </div> + <div class="form-group row"> + <label for="role">Role</label> + <select + class="form-control form-control-sm" + v-on:change="validateRole" + v-model="currentUser.role" + > + <option disabled value>Please select one</option> + <option value="sys_admin">Sysadmin</option> + <option value="waterway_admin">Waterway Admin</option> + <option value="waterway_user">Waterway User</option> + </select> + <div v-show="errors.role" class="text-danger"> + <small> + <font-awesome-icon icon="exclamation-triangle"></font-awesome-icon> + {{ errors.role }} + </small> + </div> </div> - </div> + <div class="form-group row"> + <PasswordField + @fieldchange="passwordChanged" + :placeholder="passwordPlaceholder" + :label="passwordLabel" + :passworderrors="errors.password" + ></PasswordField> + </div> + <div class="form-group row"> + <PasswordField + @fieldchange="passwordReChanged" + :placeholder="passwordRePlaceholder" + :label="passwordReLabel" + :passworderrors="errors.passwordre" + ></PasswordField> + </div> + </div> + <div> + <button + type="submit" + :disabled="submitted" + class="shadow-sm btn btn-info pull-right" + >Submit</button> + </div> + <div + v-if="currentUser.role !='waterway_user' " + class="form-group row d-flex flex-row justify-content-start mailbutton" + > + <a @click="sendTestMail" class="btn btn-light"> + <font-awesome-icon icon="paper-plane"></font-awesome-icon>Send testmail + </a> + <div v-if="mailsent">Mail was sent</div> + </div> + </form> + </div> </div> + </div> </template> <style lang="sass" scoped> @@ -99,14 +141,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/components/admin/usermanagement/Usermanagement.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/admin/usermanagement/Usermanagement.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,84 +1,79 @@ <template> - <div class="main d-flex flex-row"> - <div :class="spacerStyle"></div> - <div class="d-flex content flex-column"> - <div class="d-flex flex-row"> - <div :class="userlistStyle"> - <div class="card"> - <div class="card-header shadow-sm text-white bg-info mb-3"> - Users - </div> - <div class="card-body"> - <table id="datatable" :class="tableStyle"> - <thead> - <tr> - <th scope="col" @click="sortBy('user')"> - <span>Username - <font-awesome-icon v-if="sortCriterion=='user'" icon="angle-down"></font-awesome-icon> - </span> - </th> - <th scope="col" @click="sortBy('country')"> - <span>Country - <font-awesome-icon v-if="sortCriterion=='country'" icon="angle-down"></font-awesome-icon> - </span> - </th> - <th scope="col" @click="sortBy('email')"> - <span>Email - <font-awesome-icon v-if="sortCriterion=='email'" icon="angle-down"></font-awesome-icon> - </span> - </th> - <th scope="col" @click="sortBy('role')"> - <span>Role - <font-awesome-icon v-if="sortCriterion=='role'" icon="angle-down"></font-awesome-icon> - </span> - </th> - <th scope="col"></th> - </tr> - </thead> - <tbody> - <tr v-for="user in users" :key="user.user" @click="selectUser(user.user)"> - <td>{{ user.user }}</td> - <td>{{ user.country }}</td> - <td>{{ user.email}}</td> - <td> - <font-awesome-icon - :icon="roleIcon(user.role)" - @click="deleteUser(user.user)" - ></font-awesome-icon> - </td> - <td> - <font-awesome-icon icon="trash" @click="deleteUser(user.user)"></font-awesome-icon> - </td> - </tr> - </tbody> - </table> - </div> - <div class="d-flex mx-auto align-items-center"> - <button - @click="prevPage" - v-if="this.currentPage !== 1" - class="mr-2 btn btn-sm btn-light align-self-center" - > - <font-awesome-icon icon="angle-left"></font-awesome-icon> - </button> - {{this.currentPage}} / {{this.pages}} - <button - @click="nextPage" - v-if="this.currentPage !== this.pages" - class="ml-2 btn btn-sm btn-light align-self-center" - > - <font-awesome-icon icon="angle-right"></font-awesome-icon> - </button> - </div> - <div class="mr-3 pb-3"> - <button @click="addUser " class="btn btn-info pull-right shadow-sm ">Add User</button> - </div> - </div> - </div> - <Userdetail v-if="isUserDetailsVisible "></Userdetail> + <div class="main d-flex flex-row"> + <div :class="spacerStyle"></div> + <div class="d-flex content flex-column"> + <div class="d-flex flex-row"> + <div :class="userlistStyle"> + <div class="card"> + <div class="card-header shadow-sm text-white bg-info mb-3">Users</div> + <div class="card-body"> + <table id="datatable" :class="tableStyle"> + <thead> + <tr> + <th scope="col" @click="sortBy('user')"> + <span>Username + <font-awesome-icon v-if="sortCriterion=='user'" icon="angle-down"></font-awesome-icon> + </span> + </th> + <th scope="col" @click="sortBy('country')"> + <span>Country + <font-awesome-icon v-if="sortCriterion=='country'" icon="angle-down"></font-awesome-icon> + </span> + </th> + <th scope="col" @click="sortBy('email')"> + <span>Email + <font-awesome-icon v-if="sortCriterion=='email'" icon="angle-down"></font-awesome-icon> + </span> + </th> + <th scope="col" @click="sortBy('role')"> + <span>Role + <font-awesome-icon v-if="sortCriterion=='role'" icon="angle-down"></font-awesome-icon> + </span> + </th> + <th scope="col"></th> + </tr> + </thead> + <tbody> + <tr v-for="user in users" :key="user.user" @click="selectUser(user.user)"> + <td>{{ user.user }}</td> + <td>{{ user.country }}</td> + <td>{{ user.email}}</td> + <td> + <font-awesome-icon :icon="roleIcon(user.role)" @click="deleteUser(user.user)"></font-awesome-icon> + </td> + <td> + <font-awesome-icon icon="trash" @click="deleteUser(user.user)"></font-awesome-icon> + </td> + </tr> + </tbody> + </table> </div> + <div class="d-flex mx-auto align-items-center"> + <button + @click="prevPage" + v-if="this.currentPage !== 1" + class="mr-2 btn btn-sm btn-light align-self-center" + > + <font-awesome-icon icon="angle-left"></font-awesome-icon> + </button> + {{this.currentPage}} / {{this.pages}} + <button + @click="nextPage" + v-if="this.currentPage !== this.pages" + class="ml-2 btn btn-sm btn-light align-self-center" + > + <font-awesome-icon icon="angle-right"></font-awesome-icon> + </button> + </div> + <div class="mr-3 pb-3"> + <button @click="addUser " class="btn btn-info pull-right shadow-sm">Add User</button> + </div> + </div> </div> + <Userdetail v-if="isUserDetailsVisible "></Userdetail> + </div> </div> + </div> </template> <style scoped lang="sass"> @@ -151,14 +146,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/components/map/Main.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/map/Main.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,28 +1,28 @@ <template> - <div class="main d-flex flex-column"> - <Maplayer :split="showSplitscreen"></Maplayer> - <FairwayProfile - :additionalSurveys="additionalSurveys" - :xScale="xAxis" - :yScaleLeft="yAxisLeft" - :yScaleRight="yAxisRight" - :margin="margins" - ></FairwayProfile> - </div> + <div class="main d-flex flex-column"> + <Maplayer :split="showSplitscreen"></Maplayer> + <FairwayProfile + :additionalSurveys="additionalSurveys" + :xScale="xAxis" + :yScaleLeft="yAxisLeft" + :yScaleRight="yAxisRight" + :margin="margins" + ></FairwayProfile> + </div> </template> <script> /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/components/map/Pdftool.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/map/Pdftool.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,60 +1,59 @@ <template> - <div :class="['box ui-element rounded bg-white text-nowrap', { expanded: showPdfTool }]"> - <div style="width: 20rem"> - <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center"> - <font-awesome-icon icon="file-pdf" class="mr-2"></font-awesome-icon> - Generate PDF - <font-awesome-icon - icon="times" - class="ml-auto text-muted" - @click="$store.commit('application/showPdfTool', false)" - ></font-awesome-icon> - </h6> - <div class="p-3"> - <b>Chose format:</b> - <select v-model="form.format" class="form-control d-block w-100"> - <option>landscape</option> - <option>portrait</option> - </select> - <small class="d-block my-2"> - <input - type="radio" - id="pdfexport-downloadtype-download" - value="download" - v-model="form.downloadType" - selected - > - <label for="pdfexport-downloadtype-download" class="ml-1 mr-2">Download</label> - <input - type="radio" - id="pdfexport-downloadtype-open" - value="open" - v-model="form.downloadType" - > - <label for="pdfexport-downloadtype-open" class="ml-1">Open in new window</label> - </small> - <button - @click="download" - type="button" - class="btn btn-sm btn-info d-block w-100" - >Generate PDF</button> - </div> - </div> + <div :class="['box ui-element rounded bg-white text-nowrap', { expanded: showPdfTool }]"> + <div style="width: 20rem"> + <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center"> + <font-awesome-icon icon="file-pdf" class="mr-2"></font-awesome-icon>Generate PDF + <font-awesome-icon + icon="times" + class="ml-auto text-muted" + @click="$store.commit('application/showPdfTool', false)" + ></font-awesome-icon> + </h6> + <div class="p-3"> + <b>Chose format:</b> + <select v-model="form.format" class="form-control d-block w-100"> + <option>landscape</option> + <option>portrait</option> + </select> + <small class="d-block my-2"> + <input + type="radio" + id="pdfexport-downloadtype-download" + value="download" + v-model="form.downloadType" + selected + > + <label for="pdfexport-downloadtype-download" class="ml-1 mr-2">Download</label> + <input + type="radio" + id="pdfexport-downloadtype-open" + value="open" + v-model="form.downloadType" + > + <label for="pdfexport-downloadtype-open" class="ml-1">Open in new window</label> + </small> + <button + @click="download" + type="button" + class="btn btn-sm btn-info d-block w-100" + >Generate PDF</button> + </div> </div> + </div> </template> <script> /* * 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): * Markus Kottländer <markus.kottlaender@intevation.de> */
--- a/client/src/components/map/Search.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/map/Search.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,26 +1,28 @@ <template> - <div :class="searchbarContainerStyle"> - <div class="input-group-prepend m-0 d-print-none"> - <span @click="toggleSearchbar" :class="searchButtonStyle" for="search"> - <font-awesome-icon icon="search"></font-awesome-icon> - </span> - </div> - <div :class="['searchgroup', {'searchgroup-collapsed': !showSearchbar}]"> - <input - @keyup.enter="takeFirstSearchresult" - id="search" - v-model="searchQuery" - type="text" - :class="searchInputStyle" - > - </div> - <div v-if="showSearchbar && searchResults !== null && !showContextBox" - class="searchresults border-top ui-element bg-white rounded-bottom d-print-none position-absolute"> - <div v-for="entry of searchResults" :key="entry.name" class="border-top py-2"> - <a href="#" @click.prevent="moveToSearchResult(entry)">{{ entry.name }}</a> - </div> - </div> + <div :class="searchbarContainerStyle"> + <div class="input-group-prepend m-0 d-print-none"> + <span @click="toggleSearchbar" :class="searchButtonStyle" for="search"> + <font-awesome-icon icon="search"></font-awesome-icon> + </span> </div> + <div :class="['searchgroup', {'searchgroup-collapsed': !showSearchbar}]"> + <input + @keyup.enter="takeFirstSearchresult" + id="search" + v-model="searchQuery" + type="text" + :class="searchInputStyle" + > + </div> + <div + v-if="showSearchbar && searchResults !== null && !showContextBox" + class="searchresults border-top ui-element bg-white rounded-bottom d-print-none position-absolute" + > + <div v-for="entry of searchResults" :key="entry.name" class="border-top py-2"> + <a href="#" @click.prevent="moveToSearchResult(entry)">{{ entry.name }}</a> + </div> + </div> + </div> </template> <style lang="sass" scoped> @@ -73,14 +75,14 @@ /* * 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): * Markus Kottländer <markus.kottlaender@intevation.de> */
--- a/client/src/components/map/fairway/Fairwayprofile.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/map/fairway/Fairwayprofile.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,94 +1,119 @@ <template> - <div :class="['position-relative', {show: showSplitscreen}]" v-if="Object.keys(currentProfile).length"> - <button - class="rounded-bottom bg-white border-0 position-absolute splitscreen-toggle" - @click="$store.commit('application/showSplitscreen', false)" - v-if="showSplitscreen"> - <font-awesome-icon icon="angle-down" /> - </button> - <button - class="rounded-bottom bg-white border-0 position-absolute clear-selection" - @click="$store.dispatch('fairwayprofile/clearSelection');" - v-if="showSplitscreen"> - <font-awesome-icon icon="times" /> - </button> - <div class="profile bg-white position-relative d-flex flex-column"> - <h5 class="headline border-bottom mb-0 py-2"> - {{ selectedBottleneck }} ({{ selectedSurvey.date_info }}) - </h5> - <div class="d-flex flex-fill"> - <div class="fairwayprofile m-3 mt-0 bg-white flex-grow-1"></div> - <div class="additionalsurveys d-flex flex-column"> - <small> - Additional Surveys - <select v-model="additionalSurvey" class="form-control form-control-sm"> - <option value="">None</option> - <option - v-for="survey in additionalSurveys" - :key="survey.date_info" - :value="survey" - >{{survey.date_info}}</option> - </select> - <hr> - <div class="d-flex text-left mb-2"> - <div class="text-nowrap mr-1"> - <b>Start:</b> - <br> - Lat: {{ startPoint[1] }} - <br> - Lon: {{ startPoint[0] }} - </div> - <div class="text-nowrap ml-1"> - <b>End:</b> - <br> - Lat: {{ endPoint[1] }} - <br> - Lon: {{ endPoint[0] }} - </div> - <button class="btn btn-outline-secondary btn-sm ml-2 mt-auto" - @click="showLabelInput = !showLabelInput"> - <font-awesome-icon :icon="showLabelInput ? 'times' : 'folder-plus'" size="lg" /> - </button> - <button v-clipboard:copy="coordinatesForClipboard" - v-clipboard:success="onCopyCoordinates" - class="btn btn-outline-secondary btn-sm ml-2 mt-auto"> - <font-awesome-icon icon="copy" /> - </button> - </div> - <div v-if="showLabelInput"> - Enter label for cross profile: - <div class="position-relative"> - <input class="form-control form-control-sm pr-5" v-model="cutLabel" /><br> - <button class="btn btn-sm btn-outline-secondary position-absolute" - @click="saveCut" - v-if="cutLabel" - style="top: 0; right: 0;"> - <font-awesome-icon icon="check" /> - </button> - </div> - </div> - Saved cross profiles: - <select class="form-control form-control-sm mb-2" v-model="coordinatesSelect"> - <option></option> - <option v-for="(cut, index) in previousCuts" :value="cut.coordinates" :key="index"> - {{ cut.label }} - </option> - </select> - Enter coordinates manually: - <div class="position-relative"> - <input class="form-control form-control-sm pr-5" placeholder="Lat,Lon,Lat,Lon" v-model="coordinatesInput" /><br> - <button class="btn btn-sm btn-outline-secondary position-absolute" - @click="applyManualCoordinates" - style="top: 0; right: 0;" - v-if="coordinatesInput"> - <font-awesome-icon icon="check" /> - </button> - </div> - </small> - </div> + <div + :class="['position-relative', {show: showSplitscreen}]" + v-if="Object.keys(currentProfile).length" + > + <button + class="rounded-bottom bg-white border-0 position-absolute splitscreen-toggle" + @click="$store.commit('application/showSplitscreen', false)" + v-if="showSplitscreen" + > + <font-awesome-icon icon="angle-down"/> + </button> + <button + class="rounded-bottom bg-white border-0 position-absolute clear-selection" + @click="$store.dispatch('fairwayprofile/clearSelection');" + v-if="showSplitscreen" + > + <font-awesome-icon icon="times"/> + </button> + <div class="profile bg-white position-relative d-flex flex-column"> + <h5 + class="headline border-bottom mb-0 py-2" + >{{ selectedBottleneck }} ({{ selectedSurvey.date_info }})</h5> + <div class="d-flex flex-fill"> + <div class="fairwayprofile m-3 mt-0 bg-white flex-grow-1"></div> + <div class="additionalsurveys d-flex flex-column"> + <small> + Additional Surveys + <select + v-model="additionalSurvey" + class="form-control form-control-sm" + > + <option value>None</option> + <option + v-for="survey in additionalSurveys" + :key="survey.date_info" + :value="survey" + >{{survey.date_info}}</option> + </select> + <hr> + <div class="d-flex text-left mb-2"> + <div class="text-nowrap mr-1"> + <b>Start:</b> + <br> + Lat: {{ startPoint[1] }} + <br> + Lon: {{ startPoint[0] }} + </div> + <div class="text-nowrap ml-1"> + <b>End:</b> + <br> + Lat: {{ endPoint[1] }} + <br> + Lon: {{ endPoint[0] }} + </div> + <button + class="btn btn-outline-secondary btn-sm ml-2 mt-auto" + @click="showLabelInput = !showLabelInput" + > + <font-awesome-icon :icon="showLabelInput ? 'times' : 'folder-plus'" size="lg"/> + </button> + <button + v-clipboard:copy="coordinatesForClipboard" + v-clipboard:success="onCopyCoordinates" + class="btn btn-outline-secondary btn-sm ml-2 mt-auto" + > + <font-awesome-icon icon="copy"/> + </button> </div> + <div v-if="showLabelInput">Enter label for cross profile: + <div class="position-relative"> + <input class="form-control form-control-sm pr-5" v-model="cutLabel"> + <br> + <button + class="btn btn-sm btn-outline-secondary position-absolute" + @click="saveCut" + v-if="cutLabel" + style="top: 0; right: 0;" + > + <font-awesome-icon icon="check"/> + </button> + </div> + </div>Saved cross profiles: + <select + class="form-control form-control-sm mb-2" + v-model="coordinatesSelect" + > + <option></option> + <option + v-for="(cut, index) in previousCuts" + :value="cut.coordinates" + :key="index" + >{{ cut.label }}</option> + </select> + Enter coordinates manually: + <div class="position-relative"> + <input + class="form-control form-control-sm pr-5" + placeholder="Lat,Lon,Lat,Lon" + v-model="coordinatesInput" + > + <br> + <button + class="btn btn-sm btn-outline-secondary position-absolute" + @click="applyManualCoordinates" + style="top: 0; right: 0;" + v-if="coordinatesInput" + > + <font-awesome-icon icon="check"/> + </button> + </div> + </small> </div> + </div> </div> + </div> </template> <style lang="sass" scoped> @@ -139,14 +164,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/components/map/fairway/Infobar.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/map/fairway/Infobar.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,25 +1,28 @@ <template> - <div v-if="selectedSurvey && !showSplitscreen" class="ui-element shadow-xs infobar rounded bg-white ml-auto mb-3 mr-3"> - <div class="d-flex flex-row justify-content-between"> - <h6 class="my-auto px-2"> - {{ selectedBottleneck }} - ({{ selectedSurvey.date_info }}) - </h6> - <span - class="p-2 border-left d-flex align-items-center" - @click="$store.commit('application/showSplitscreen', true)" - v-if="Object.keys(currentProfile).length" - > - <font-awesome-icon icon="angle-up"></font-awesome-icon> - </span> - <span - class="p-2 border-left d-flex align-items-center" - @click="$store.dispatch('fairwayprofile/clearSelection')" - > - <font-awesome-icon icon="times"></font-awesome-icon> - </span> - </div> + <div + v-if="selectedSurvey && !showSplitscreen" + class="ui-element shadow-xs infobar rounded bg-white ml-auto mb-3 mr-3" + > + <div class="d-flex flex-row justify-content-between"> + <h6 class="my-auto px-2"> + {{ selectedBottleneck }} + ({{ selectedSurvey.date_info }}) + </h6> + <span + class="p-2 border-left d-flex align-items-center" + @click="$store.commit('application/showSplitscreen', true)" + v-if="Object.keys(currentProfile).length" + > + <font-awesome-icon icon="angle-up"></font-awesome-icon> + </span> + <span + class="p-2 border-left d-flex align-items-center" + @click="$store.dispatch('fairwayprofile/clearSelection')" + > + <font-awesome-icon icon="times"></font-awesome-icon> + </span> </div> + </div> </template> <style lang="sass" scoped> @@ -35,14 +38,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Markus Kottländer <markus.kottlaender@intevation.de> */
--- a/client/src/components/map/fairway/Surveys.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/map/fairway/Surveys.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,40 +1,43 @@ <template> - <div class="box expanded ui-element rounded bg-white ml-auto mr-3 mb-3 text-nowrap" v-if="selectedBottleneck && surveys && !selectedSurvey"> - <div style="width: 15rem"> - <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center"> - {{ selectedBottleneck }} - <font-awesome-icon - icon="times" - class="ml-auto text-muted" - @click="$store.dispatch('fairwayprofile/clearSelection')" - ></font-awesome-icon> - </h6> - <div class="p-3"> - <div - v-for="(survey, i) of surveys" - :key="survey.data_info" - :class="{ 'mt-1': i }" - @click.prevent="$store.commit('bottlenecks/setSelectedSurvey', survey)" - > - <a href="#" @click.prevent>{{ survey.date_info }}</a> - </div> - </div> + <div + class="box expanded ui-element rounded bg-white ml-auto mr-3 mb-3 text-nowrap" + v-if="selectedBottleneck && surveys && !selectedSurvey" + > + <div style="width: 15rem"> + <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center"> + {{ selectedBottleneck }} + <font-awesome-icon + icon="times" + class="ml-auto text-muted" + @click="$store.dispatch('fairwayprofile/clearSelection')" + ></font-awesome-icon> + </h6> + <div class="p-3"> + <div + v-for="(survey, i) of surveys" + :key="survey.data_info" + :class="{ 'mt-1': i }" + @click.prevent="$store.commit('bottlenecks/setSelectedSurvey', survey)" + > + <a href="#" @click.prevent>{{ survey.date_info }}</a> </div> + </div> </div> + </div> </template> <script> /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> * Markus Kottländer <markus.kottlaender@intevation.de>
--- a/client/src/components/map/layers/Layers.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/map/layers/Layers.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,41 +1,40 @@ <template> - <div :class="['box ui-element rounded bg-white text-nowrap', { expanded: showLayers }]"> - <div style="width: 20rem"> - <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center"> - <font-awesome-icon icon="layer-group" class="mr-2"></font-awesome-icon> - Layers - <font-awesome-icon - icon="times" - class="ml-auto text-muted" - @click="$store.commit('application/showLayers', false)" - ></font-awesome-icon> - </h6> - <div class="d-flex flex-column p-3 small"> - <Layerselect - v-for="(layer, index) in layersForLegend" - :layerindex="index" - :layername="layer.name" - :key="layer.name" - :isVisible="layer.isVisible" - @visibilityToggled="visibilityToggled" - ></Layerselect> - </div> - </div> + <div :class="['box ui-element rounded bg-white text-nowrap', { expanded: showLayers }]"> + <div style="width: 20rem"> + <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center"> + <font-awesome-icon icon="layer-group" class="mr-2"></font-awesome-icon>Layers + <font-awesome-icon + icon="times" + class="ml-auto text-muted" + @click="$store.commit('application/showLayers', false)" + ></font-awesome-icon> + </h6> + <div class="d-flex flex-column p-3 small"> + <Layerselect + v-for="(layer, index) in layersForLegend" + :layerindex="index" + :layername="layer.name" + :key="layer.name" + :isVisible="layer.isVisible" + @visibilityToggled="visibilityToggled" + ></Layerselect> + </div> </div> + </div> </template> <script> /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> * Markus Kottländer <markus.kottlaender@intevation.de>
--- a/client/src/components/map/layers/Layerselect.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/map/layers/Layerselect.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,14 +1,20 @@ <template> - <div> - <div class="form-check d-flex flex-row flex-start selection"> - <input class="form-check-input" @change="visibilityToggled" :id="layername" type="checkbox" :checked="isVisible"> - <LegendElement :layername="layername" :layerindex="layerindex"></LegendElement> - <label class="layername form-check-label" @click="visibilityToggled">{{layername}}</label> - </div> - <div v-if="isVisible && (layername == 'Bottleneck isolines')"> - <img class="rounded my-1 d-block" :src="isolinesLegendImgUrl"> - </div> + <div> + <div class="form-check d-flex flex-row flex-start selection"> + <input + class="form-check-input" + @change="visibilityToggled" + :id="layername" + type="checkbox" + :checked="isVisible" + > + <LegendElement :layername="layername" :layerindex="layerindex"></LegendElement> + <label class="layername form-check-label" @click="visibilityToggled">{{layername}}</label> </div> + <div v-if="isVisible && (layername == 'Bottleneck isolines')"> + <img class="rounded my-1 d-block" :src="isolinesLegendImgUrl"> + </div> + </div> </template> <style lang="sass" scoped> @@ -24,14 +30,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/components/map/layers/LegendElement.vue Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/components/map/layers/LegendElement.vue Mon Nov 26 11:11:13 2018 +0100 @@ -1,19 +1,19 @@ <template> - <div :id="id" class="legendelement"></div> + <div :id="id" class="legendelement"></div> </template> <script> /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/lib/errors.js Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/lib/errors.js Mon Nov 26 11:11:13 2018 +0100 @@ -1,14 +1,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/lib/geo.js Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/lib/geo.js Mon Nov 26 11:11:13 2018 +0100 @@ -1,14 +1,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/lib/http.js Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/lib/http.js Mon Nov 26 11:11:13 2018 +0100 @@ -1,14 +1,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/lib/session.js Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/lib/session.js Mon Nov 26 11:11:13 2018 +0100 @@ -1,14 +1,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/store/fairway.js Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/store/fairway.js Mon Nov 26 11:11:13 2018 +0100 @@ -1,14 +1,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> * Markus Kottländer <markuks.kottlaender@intevation.de>
--- a/client/src/store/map.js Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/store/map.js Mon Nov 26 11:11:13 2018 +0100 @@ -1,14 +1,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/store/user.js Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/store/user.js Mon Nov 26 11:11:13 2018 +0100 @@ -1,14 +1,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */
--- a/client/src/store/usermanagement.js Mon Nov 26 10:04:47 2018 +0100 +++ b/client/src/store/usermanagement.js Mon Nov 26 11:11:13 2018 +0100 @@ -1,14 +1,14 @@ /* * 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 + * + * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH - * + * * Author(s): * Thomas Junk <thomas.junk@intevation.de> */