comparison client/src/systemconfiguration/systemconfiguration.vue @ 864:2079fabbe6dd

client: add fill-colour setting to systemconfig * Add simple headlines to show what we are setting. * Add a section to select a colour with the vue-color chrome-picker. * yarn add vue-color.
author Bernhard Reiter <bernhard@intevation.de>
date Fri, 28 Sep 2018 21:39:01 +0200
parents d1863e91b039
children 9aa545585bdd
comparison
equal deleted inserted replaced
863:d1863e91b039 864:2079fabbe6dd
1 <template> 1 <template>
2 <div class="d-flex flex-row"> 2 <div class="d-flex flex-row">
3 <div class="card sysconfig"> 3 <div class="card sysconfig">
4 <div class="card-header shadow-sm text-white bg-info mb-6"> 4 <div class="card-header shadow-sm text-white bg-info mb-6">
5 Systemconfiguration 5 Systemconfiguration
6 </div>
7 <div class="card-body">
8 <h4>Bottleneck Areas stroke-color</h4>
9 <div class="inputs form-group row">
10 <div class="col-2">
11 <label for="r"></label>R<input class="form-control form-control-sm" v-model="r" id="r" placeholder="255">
6 </div> 12 </div>
7 <div class="card-body"> 13 <div class="col-2">
8 <div class="inputs form-group row"> 14 <label for="g"></label>G<input class="form-control form-control-sm" v-model.number="g" type="text" id="g" placeholder="255">
15 </div>
9 <div class="col-2"> 16 <div class="col-2">
10 <label for="r"></label>R<input class="form-control form-control-sm" v-model="r" id="r" placeholder="255"> 17 <label for="b"></label>B<input class="form-control form-control-sm" v-model.number="b" type="text" id="b" placeholder="255">
11 </div> 18 </div>
12 <div class="col-2"> 19 <div class="col-2">
13 <label for="g"></label>G<input class="form-control form-control-sm" v-model.number="g" type="text" id="g" placeholder="255">
14 </div>
15 <div class="col-2">
16 <label for="b"></label>B<input class="form-control form-control-sm" v-model.number="b" type="text" id="b" placeholder="255">
17 </div>
18 <div class="col-2">
19 20
20 <label for="a"></label>A<input class="form-control form-control-sm" v-model.number="a" type="text" id="a" placeholder="1.0"> 21 <label for="a"></label>A<input class="form-control form-control-sm" v-model.number="a" type="text" id="a" placeholder="1.0">
21 </div> 22 </div>
22 </div>
23 <div class="sendbutton">
24 <a @click="submit" class="btn btn-info">Send</a>
25 </div>
26 </div>
27 </div> 23 </div>
28 </div> 24 <div class="sendbutton">
25 <a @click.prevent="submit" class="btn btn-info">Send</a>
26 </div>
27 <h4>Bottleneck Areas fill-color</h4>
28 <chrome-picker v-model="fillColor" />
29 </div> <!-- card-body -->
30 </div>
31 </div>
29 </template> 32 </template>
30 33
31 <style lang="scss"> 34 <style lang="scss">
32 .sendbutton { 35 .sendbutton {
33 position: absolute; 36 position: absolute;
42 margin-top: $offset; 45 margin-top: $offset;
43 margin-left: 30vw; 46 margin-left: 30vw;
44 margin-right: auto; 47 margin-right: auto;
45 width: 60vw; 48 width: 60vw;
46 max-width: 500px; 49 max-width: 500px;
47 height: 40vh; 50 mind-heigth: 500px;
51 height: 80vh;
48 } 52 }
49 </style> 53 </style>
50 54
51 <script> 55 <script>
56 import { Chrome } from "vue-color";
57
52 import { HTTP } from "../application/lib/http"; 58 import { HTTP } from "../application/lib/http";
53 import { displayError } from "../application/lib/errors.js"; 59 import { displayError } from "../application/lib/errors.js";
54 export default { 60 export default {
55 name: "systemconfiguration", 61 name: "systemconfiguration",
56 data() { 62 data() {
58 sent: false, 64 sent: false,
59 r: 124, 65 r: 124,
60 g: 115, 66 g: 115,
61 b: 116, 67 b: 116,
62 a: 0.9, 68 a: 0.9,
69 fillColor: { r: 0, g: 0, b: 0, a: 1.0 },
63 currentConfig: null 70 currentConfig: null
64 }; 71 };
65 }, 72 },
73 components: { "chrome-picker": Chrome },
66 methods: { 74 methods: {
67 submit() { 75 submit() {
68 const payload = { 76 const payload = {
69 r: parseInt(this.r), 77 r: parseInt(this.r),
70 g: parseInt(this.g), 78 g: parseInt(this.g),
71 b: parseInt(this.b), 79 b: parseInt(this.b),
72 a: parseFloat(this.a) 80 a: parseFloat(this.a)
73 }; 81 };
74 HTTP.put("/system/style/Bottlenecks/stroke", payload, { 82 HTTP.put("/system/style/Bottlenecks/stroke", payload, {
83 headers: {
84 "X-Gemma-Auth": localStorage.getItem("token"),
85 "Content-type": "application/json"
86 }
87 })
88 .then()
89 .catch(error => {
90 const { status, data } = error.response;
91 displayError({
92 title: "Backend Error",
93 message: `${status}: ${data.message || data}`
94 });
95 });
96
97 HTTP.put("/system/style/Bottlenecks/fill", this.fillColor.rgba, {
75 headers: { 98 headers: {
76 "X-Gemma-Auth": localStorage.getItem("token"), 99 "X-Gemma-Auth": localStorage.getItem("token"),
77 "Content-type": "application/json" 100 "Content-type": "application/json"
78 } 101 }
79 }) 102 })
107 displayError({ 130 displayError({
108 title: "Backend Error", 131 title: "Backend Error",
109 message: `${status}: ${data.message || data}` 132 message: `${status}: ${data.message || data}`
110 }); 133 });
111 }); 134 });
135
136 HTTP.get("/system/style/Bottlenecks/fill", {
137 headers: {
138 "X-Gemma-Auth": localStorage.getItem("token"),
139 "Content-type": "application/json"
140 }
141 })
142 .then(response => {
143 this.fillColor = response.data.colour;
144 })
145 .catch(error => {
146 const { status, data } = error.response;
147 displayError({
148 title: "Backend Error",
149 message: `${status}: ${data.message || data}`
150 });
151 });
112 } 152 }
113 }; 153 };
114 </script> 154 </script>