Mercurial > gemma
annotate client/src/components/importoverview/staging/StagingDetail.vue @ 2647:c52bf6f994c0
overview2: bottleneckview added
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Thu, 14 Mar 2019 14:07:25 +0100 |
parents | 468c8dc796cf |
children |
rev | line source |
---|---|
2403 | 1 <template> |
2 <div :class="detail"> | |
3 <div class="d-flex flex-row"> | |
4 <div class="mt-auto d-flex flex-row mb-auto small name text-left"> | |
5 <a | |
6 v-if="isSoundingResult(data.kind.toUpperCase())" | |
7 class="text-left" | |
8 @click="zoomTo()" | |
9 href="#" | |
10 >{{ data.summary.bottleneck }}</a | |
11 > | |
12 <span v-if="isBottleneck(data.kind.toUpperCase())" class="text-left" | |
13 ><translate>Bottlenecks</translate> ({{ | |
14 data.summary.bottlenecks.length | |
15 }})</span | |
16 > | |
17 <a | |
18 v-if="isApprovedGaugeMeasurement(data.kind.toUpperCase())" | |
19 class="text-left" | |
20 ><translate>Approved Gauge Measurements</translate> ({{ | |
21 data.summary.length | |
22 }})</a | |
23 > | |
24 <span | |
25 class="text-left" | |
26 v-if="isFairwayDimension(data.kind.toUpperCase())" | |
27 >{{ data.summary["source-organization"] }} (LOS: | |
28 {{ data.summary.los }})</span | |
29 > | |
30 <a | |
31 href="#" | |
32 class="text-left" | |
33 @click="zoomToStretch(data.summary.stretch)" | |
34 v-if="isStretch(data.kind.toUpperCase())" | |
35 >{{ data.summary.stretch }}</a | |
36 > | |
37 </div> | |
38 <div class="mt-auto mb-auto small text-left type"> | |
39 {{ data.kind.toUpperCase() }} | |
40 </div> | |
41 <div v-if="data.summary" class="mt-auto mb-auto small text-left date"> | |
2541
468c8dc796cf
client: convert lib helper functions to Vue filters
Markus Kottlaender <markus@intevation.de>
parents:
2528
diff
changeset
|
42 {{ data.summary.date | surveyDate }} |
2403 | 43 </div> |
44 <div v-else class="mt-auto mb-auto small text-left date">-</div> | |
45 <div class="mt-auto mb-auto small text-left imported"> | |
2541
468c8dc796cf
client: convert lib helper functions to Vue filters
Markus Kottlaender <markus@intevation.de>
parents:
2528
diff
changeset
|
46 {{ data.enqueued.split("T")[0] | surveyDate }} |
2403 | 47 </div> |
48 <div class="mt-auto mb-auto small text-left username"> | |
49 {{ data.user }} | |
50 </div> | |
51 <div class="controls d-flex flex-row justify-content-end"> | |
52 <div> | |
53 <button | |
54 :class="{ | |
55 'ml-3': true, | |
56 'mr-3': true, | |
57 btn: true, | |
58 'btn-outline-success': needsApproval(data) || isRejected(data), | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
59 'btn-success': isApproved(data), |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
60 actions: true |
2403 | 61 }" |
62 @click="toggleApproval(data.id, $options.STATES.APPROVED)" | |
63 > | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
64 <font-awesome-icon |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
65 class="small pointer mb-2" |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
66 icon="check" |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
67 ></font-awesome-icon> |
2403 | 68 </button> |
69 </div> | |
70 <div> | |
71 <button | |
72 :class="{ | |
73 'mr-3': true, | |
74 btn: true, | |
75 'btn-outline-danger': needsApproval(data) || isApproved(data), | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
76 'btn-danger': isRejected(data), |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
77 actions: true |
2403 | 78 }" |
79 @click="toggleApproval(data.id, $options.STATES.REJECTED)" | |
80 > | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
81 <font-awesome-icon |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
82 icon="times" |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
83 class="small pointer mb-2" |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
84 ></font-awesome-icon> |
2403 | 85 </button> |
86 </div> | |
87 <div | |
88 v-if=" | |
89 !isBottleneck(data.kind.toUpperCase()) || | |
90 isApprovedGaugeMeasurement(data.kind.toUpperCase()) | |
91 " | |
92 class="expander" | |
93 ></div> | |
94 <div v-if="isBottleneck(data.kind.toUpperCase())"> | |
95 <div class="mt-auto mb-auto text-info text-left"> | |
96 <font-awesome-icon | |
97 class="pointer" | |
98 @click="showDetails()" | |
99 v-if="show" | |
100 icon="angle-up" | |
101 fixed-width | |
102 ></font-awesome-icon> | |
103 <font-awesome-icon | |
104 class="pointer" | |
105 @click="showDetails()" | |
106 v-if="loading" | |
107 icon="spinner" | |
108 fixed-width | |
109 ></font-awesome-icon> | |
110 <font-awesome-icon | |
111 @click="showDetails()" | |
112 class="pointer" | |
113 v-if="!show && !loading" | |
114 icon="angle-down" | |
115 fixed-width | |
116 ></font-awesome-icon> | |
117 </div> | |
118 </div> | |
119 <div v-if="isApprovedGaugeMeasurement(data.kind.toUpperCase())"> | |
120 <div | |
121 @click="showAGMDetails = !showAGMDetails" | |
122 class="mt-auto mb-auto text-info text-left" | |
123 > | |
124 <font-awesome-icon | |
125 class="pointer" | |
126 v-if="showAGMDetails" | |
127 icon="angle-up" | |
128 fixed-width | |
129 ></font-awesome-icon> | |
130 <font-awesome-icon | |
131 class="pointer" | |
132 v-if="!showAGMDetails" | |
133 icon="angle-down" | |
134 fixed-width | |
135 ></font-awesome-icon> | |
136 </div> | |
137 </div> | |
138 <div v-else class="empty"></div> | |
139 </div> | |
140 </div> | |
141 <div v-if="show && bottlenecks.length > 0" class="bottlenecksdetails"> | |
142 <div | |
143 v-for="(bottleneck, index) in bottlenecks" | |
144 :key="index" | |
145 class="d-flex flex-row" | |
146 > | |
147 <div class="d-flex flex-column"> | |
148 <div class="d-flex flex-row"> | |
149 <a @click="moveToBottleneck(index)" class="small" href="#">{{ | |
150 bottleneck.properties.objnam | |
151 }}</a> | |
152 <div | |
153 @click="showBottleneckDetails(index)" | |
154 class="small mt-auto mb-auto text-info text-left" | |
155 > | |
156 <font-awesome-icon | |
157 class="pointer" | |
158 v-if="showBottleneckDetail === index" | |
159 icon="angle-up" | |
160 fixed-width | |
161 ></font-awesome-icon> | |
162 <font-awesome-icon | |
163 class="pointer" | |
164 v-if="!(showBottleneckDetail === index)" | |
165 icon="angle-down" | |
166 fixed-width | |
167 ></font-awesome-icon> | |
168 </div> | |
169 </div> | |
170 | |
171 <div class="d-flex flex-row" v-if="showBottleneckDetail === index"> | |
172 <table> | |
173 <tr | |
174 v-for="(info, index) in Object.keys(bottleneck.properties)" | |
175 :key="index" | |
176 class="mr-1 small text-muted" | |
177 > | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
178 <td class="text-left">{{ info }}</td> |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
179 <td class="pl-3 text-left"> |
2403 | 180 {{ bottleneck.properties[info] }} |
181 </td> | |
182 </tr> | |
183 </table> | |
184 </div> | |
185 </div> | |
186 </div> | |
187 </div> | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
188 <div class="agmdetails" v-if="showAGMDetails"> |
2403 | 189 <div class="pl-3 d-flex flex-row"> |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
190 <span class="agmcode text-left" |
2403 | 191 ><small><translate>ISRS Code</translate></small></span |
192 > | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
193 <span class="agmdetail text-left" |
2403 | 194 ><small><translate>Date of measurement</translate></small></span |
195 > | |
196 </div> | |
197 <div class="diffs"> | |
198 <div v-for="(result, index) in data.summary" :key="index"> | |
199 <div class="pl-3 d-flex flex-row"> | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
200 <span v-if="result.versions.length == 1" class="agmcode text-left" |
2403 | 201 ><small |
202 >{{ result["fk-gauge-id"] }} | |
203 <translate>( New )</translate></small | |
204 ></span | |
205 > | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
206 <span v-if="result.versions.length == 2" class="agmcode text-left" |
2403 | 207 ><small>{{ result["fk-gauge-id"] }}</small></span |
208 > | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
209 <span class="agmdetail text-left" |
2541
468c8dc796cf
client: convert lib helper functions to Vue filters
Markus Kottlaender <markus@intevation.de>
parents:
2528
diff
changeset
|
210 ><small>{{ result["measure-date"] | dateTime }}</small></span |
2403 | 211 > |
212 <div | |
213 @click="toggleDiff(index)" | |
214 class="small ml-auto mt-auto mb-auto text-info text-left" | |
215 > | |
216 <font-awesome-icon | |
217 class="pointer" | |
218 v-if="showDiff == index" | |
219 icon="angle-up" | |
220 fixed-width | |
221 ></font-awesome-icon> | |
222 <font-awesome-icon | |
223 class="pointer" | |
224 v-if="showDiff != index" | |
225 icon="angle-down" | |
226 fixed-width | |
227 ></font-awesome-icon> | |
228 </div> | |
229 </div> | |
230 <div v-if="showDiff == index" class="pl-3 d-flex flex-row"> | |
231 <div> | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
232 <div class="d-flex flex-row pl-3 text-left"> |
2403 | 233 <div class="header border-bottom agmdetailskeys"> |
234 <small><translate>Value</translate></small> | |
235 </div> | |
236 <div | |
237 v-if="result.versions.length == 2" | |
238 class="header border-bottom agmdetailsvalues" | |
239 > | |
240 <small><translate>Old</translate></small> | |
241 </div> | |
242 <div class="header border-bottom agmdetailsvalues"> | |
243 <small><translate>New</translate></small> | |
244 </div> | |
245 </div> | |
246 <div | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
247 class="d-flex flex-row pl-3 text-left" |
2403 | 248 v-for="(entry, index) in Object.keys(result.versions[0])" |
249 :key="index" | |
250 > | |
251 <div | |
252 v-if=" | |
253 result.versions.length == 1 || | |
254 result.versions[0][entry] != result.versions[1][entry] | |
255 " | |
256 class="agmdetailskeys" | |
257 > | |
258 <small>{{ entry }}</small> | |
259 </div> | |
260 <div | |
261 v-if=" | |
262 result.versions.length == 1 || | |
263 result.versions[0][entry] != result.versions[1][entry] | |
264 " | |
265 class="agmdetailsvalues" | |
266 > | |
267 <small>{{ result.versions[0][entry] }}</small> | |
268 </div> | |
269 <div | |
270 v-if=" | |
271 result.versions.length == 2 && | |
272 result.versions[0][entry] != result.versions[1][entry] | |
273 " | |
274 class="agmdetailsvalues" | |
275 > | |
276 <small>{{ result.versions[1][entry] }}</small> | |
277 </div> | |
278 </div> | |
279 </div> | |
280 </div> | |
281 </div> | |
282 </div> | |
283 </div> | |
284 </div> | |
285 </template> | |
286 | |
287 <script> | |
288 /* This is Free Software under GNU Affero General Public License v >= 3.0 | |
289 * without warranty, see README.md and license for details. | |
290 * | |
291 * SPDX-License-Identifier: AGPL-3.0-or-later | |
292 * License-Filename: LICENSES/AGPL-3.0.txt | |
293 * | |
294 * Copyright (C) 2018 by via donau | |
295 * – Österreichische Wasserstraßen-Gesellschaft mbH | |
296 * Software engineering by Intevation GmbH | |
297 * | |
298 * Author(s): | |
299 * Thomas Junk <thomas.junk@intevation.de> | |
300 */ | |
301 | |
302 import { STATES } from "@/store/imports.js"; | |
303 import { HTTP } from "@/lib/http"; | |
304 import { WFS } from "ol/format.js"; | |
305 import { or as orFilter, equalTo as equalToFilter } from "ol/format/filter.js"; | |
306 import { displayError } from "@/lib/errors.js"; | |
307 import { mapState } from "vuex"; | |
308 import { LAYERS } from "@/store/map.js"; | |
309 | |
310 const NO_DIFF = -1; | |
311 const NO_BOTTLENECK = -1; | |
312 | |
313 export default { | |
314 name: "stagingdetail", | |
315 props: ["data"], | |
316 data() { | |
317 return { | |
318 showDiff: NO_DIFF, | |
319 showAGMDetails: false, | |
320 showBottleneckDetail: NO_BOTTLENECK, | |
321 show: false, | |
322 loading: false, | |
323 bottlenecks: [] | |
324 }; | |
325 }, | |
326 mounted() { | |
327 this.bottlenecks = []; | |
328 const { id } = this.$route.params; | |
329 this.$store.commit("imports/setImportToReview", id); | |
330 if (this.open) this.showDetails(); | |
331 }, | |
332 computed: { | |
333 ...mapState("imports", ["importToReview"]), | |
334 open() { | |
335 return this.importToReview == this.data.id; | |
336 }, | |
337 detail() { | |
338 return [ | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
339 "staging", |
2403 | 340 "d-flex", |
341 "flex-column", | |
342 "w-100", | |
343 { | |
344 highlight: this.open && this.needsApproval(this.data) | |
345 } | |
346 ]; | |
347 } | |
348 }, | |
349 watch: { | |
350 showAGMDetails() { | |
351 if (!this.showAGMDetails) this.showDiff = NO_DIFF; | |
352 }, | |
353 open() { | |
354 this.show = this.open; | |
355 }, | |
356 $route() { | |
357 const { id } = this.$route.params; | |
358 this.$store.commit("imports/setImportToReview", id); | |
359 if (this.open) this.showDetails(); | |
360 } | |
361 }, | |
362 methods: { | |
363 showBottleneckDetails(index) { | |
364 if (index == this.showBottleneckDetail) { | |
365 this.showBottleneckDetail = NO_BOTTLENECK; | |
366 return; | |
367 } | |
368 this.showBottleneckDetail = index; | |
369 }, | |
370 toggleDiff(number) { | |
371 if (this.showDiff !== number || this.showDiff == -1) { | |
372 this.showDiff = number; | |
373 } else { | |
374 this.showDiff = -1; | |
375 } | |
376 }, | |
377 zoomToStretch(name) { | |
378 this.$store.commit("map/setLayerVisible", LAYERS.STRETCHES); | |
379 this.$store | |
380 .dispatch("imports/loadStretch", name) | |
381 .then(response => { | |
382 if (response.data.features.length < 1) | |
383 throw new Error("no feaures found for: " + name); | |
384 this.moveToExtent(response.data.features[0]); | |
385 }) | |
386 .catch(error => { | |
387 console.log(error); | |
388 const { status, data } = error.response; | |
389 displayError({ | |
390 title: this.$gettext("Backend Error"), | |
391 message: `${status}: ${data.message || data}` | |
392 }); | |
393 }); | |
394 }, | |
395 showDetails() { | |
396 if (!this.isBottleneck(this.data.kind.toUpperCase())) return; | |
397 if (this.show) { | |
398 this.show = false; | |
399 return; | |
400 } | |
401 if (this.bottlenecks.length > 0) { | |
402 this.show = true; | |
403 return; | |
404 } | |
405 this.loading = true; | |
406 const generateFilter = () => { | |
407 const { bottlenecks } = this.data.summary; | |
408 if (bottlenecks.length === 1) | |
409 return equalToFilter("bottleneck_id", bottlenecks[0]); | |
410 const orExpressions = bottlenecks.map(x => { | |
411 return equalToFilter("bottleneck_id", x); | |
412 }); | |
413 return orFilter(...orExpressions); | |
414 }; | |
415 const filterExpression = generateFilter(); | |
416 const bottleneckFeatureCollectionRequest = new WFS().writeGetFeature({ | |
417 srsName: "EPSG:4326", | |
418 featureNS: "gemma", | |
419 featurePrefix: "gemma", | |
420 featureTypes: ["bottlenecks_geoserver"], | |
421 outputFormat: "application/json", | |
422 filter: filterExpression | |
423 }); | |
424 HTTP.post( | |
425 "/internal/wfs", | |
426 new XMLSerializer().serializeToString( | |
427 bottleneckFeatureCollectionRequest | |
428 ), | |
429 { | |
430 headers: { | |
431 "X-Gemma-Auth": localStorage.getItem("token"), | |
432 "Content-type": "text/xml; charset=UTF-8" | |
433 } | |
434 } | |
435 ) | |
436 .then(response => { | |
437 this.bottlenecks = response.data.features; | |
438 this.show = true; | |
439 this.loading = false; | |
440 }) | |
441 .catch(error => { | |
442 const { status, data } = error.response; | |
443 displayError({ | |
444 title: this.$gettext("Backend Error"), | |
445 message: `${status}: ${data.message || data}` | |
446 }); | |
447 }); | |
448 }, | |
449 isFairwayDimension(kind) { | |
450 return kind === "FD"; | |
451 }, | |
452 isApprovedGaugeMeasurement(kind) { | |
453 return kind === "AGM"; | |
454 }, | |
455 isBottleneck(kind) { | |
456 return kind === "BN" || kind === "UBN"; | |
457 }, | |
458 isStretch(kind) { | |
459 return kind === "ST"; | |
460 }, | |
461 isSoundingResult(kind) { | |
462 return kind === "SR"; | |
463 }, | |
464 needsApproval(item) { | |
465 return item.status === STATES.NEEDSAPPROVAL; | |
466 }, | |
467 isRejected(item) { | |
468 return item.status === STATES.REJECTED; | |
469 }, | |
470 isApproved(item) { | |
471 return item.status === STATES.APPROVED; | |
472 }, | |
473 moveToBottleneck(index) { | |
474 this.$store.commit("map/setLayerVisible", LAYERS.BOTTLENECKS); | |
475 this.moveToExtent(this.bottlenecks[index]); | |
476 }, | |
477 moveToExtent(feature) { | |
478 this.$store.commit("map/moveToExtent", { | |
479 feature: feature, | |
480 zoom: 17, | |
481 preventZoomOut: true | |
482 }); | |
483 }, | |
484 moveMap(coordinates) { | |
485 this.$store.commit("map/moveMap", { | |
486 coordinates: coordinates, | |
487 zoom: 17, | |
488 preventZoomOut: true | |
489 }); | |
490 }, | |
491 zoomTo() { | |
492 const { lat, lon, bottleneck, date } = this.data.summary; | |
493 const coordinates = [lat, lon]; | |
494 this.moveMap(coordinates); | |
495 this.$store | |
496 .dispatch("bottlenecks/setSelectedBottleneck", bottleneck) | |
497 .then(() => { | |
498 this.$store.commit("bottlenecks/setSelectedSurveyByDate", date); | |
499 }); | |
500 }, | |
501 toggleApproval(id, newStatus) { | |
502 this.$store.commit("imports/toggleApproval", { | |
503 id: id, | |
504 newStatus: newStatus | |
505 }); | |
506 } | |
507 }, | |
508 STATES: STATES | |
509 }; | |
510 </script> | |
511 | |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
512 <style lang="scss" scoped> |
2524
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
513 .name { |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
514 width: 230px; |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
515 } |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
516 |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
517 .type { |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
518 width: 40px; |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
519 } |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
520 |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
521 .date { |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
522 width: 100px; |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
523 } |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
524 |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
525 .imported { |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
526 width: 100px; |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
527 } |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
528 |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
529 .username { |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
530 width: 50px; |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
531 } |
f15ee4e84c0c
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2523
diff
changeset
|
532 |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
533 .actions { |
2528
113912129481
staging: layout adjustment. Bigger buttons for review
Thomas Junk <thomas.junk@intevation.de>
parents:
2524
diff
changeset
|
534 padding: 3px; |
113912129481
staging: layout adjustment. Bigger buttons for review
Thomas Junk <thomas.junk@intevation.de>
parents:
2524
diff
changeset
|
535 width: 21px; |
113912129481
staging: layout adjustment. Bigger buttons for review
Thomas Junk <thomas.junk@intevation.de>
parents:
2524
diff
changeset
|
536 height: 21px; |
2523
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
537 } |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
538 |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
539 .bottlenecksdetails { |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
540 max-height: 300px; |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
541 overflow-y: auto; |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
542 font-stretch: condensed; |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
543 line-height: 0.9rem; |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
544 } |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
545 |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
546 .agmdetails { |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
547 max-height: 300px; |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
548 overflow-y: auto; |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
549 font-stretch: condensed; |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
550 line-height: 0.9rem; |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
551 } |
40bd6bb7886b
staging: small UI improvements
Thomas Junk <thomas.junk@intevation.de>
parents:
2403
diff
changeset
|
552 </style> |