Mercurial > gemma
comparison client/src/store/gauges.js @ 2604:85f9bf4a6eba
client: gauge waterlevel diagram: draw reference waterlevels
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Tue, 12 Mar 2019 17:08:07 +0100 |
parents | 8774054959a7 |
children | 27933e66e848 |
comparison
equal
deleted
inserted
replaced
2603:8d767359fddb | 2604:85f9bf4a6eba |
---|---|
15 import { WFS } from "ol/format.js"; | 15 import { WFS } from "ol/format.js"; |
16 | 16 |
17 const init = () => { | 17 const init = () => { |
18 return { | 18 return { |
19 gauges: [], | 19 gauges: [], |
20 selectedGauge: null, | 20 selectedGaugeName: null, |
21 waterlevels: [], | 21 waterlevels: [], |
22 loading: false | 22 loading: false |
23 }; | 23 }; |
24 }; | 24 }; |
25 | 25 |
26 export default { | 26 export default { |
27 init, | 27 init, |
28 namespaced: true, | 28 namespaced: true, |
29 state: init(), | 29 state: init(), |
30 getters: { | |
31 selectedGauge: state => { | |
32 return state.gauges.find( | |
33 g => g.properties.objname === state.selectedGaugeName | |
34 ); | |
35 } | |
36 }, | |
30 mutations: { | 37 mutations: { |
31 gauges: (state, gauges) => { | 38 gauges: (state, gauges) => { |
32 state.gauges = gauges; | 39 state.gauges = gauges; |
33 }, | 40 }, |
34 selectedGauge: (state, gauge) => { | 41 selectedGaugeName: (state, name) => { |
35 state.selectedGauge = gauge; | 42 state.selectedGaugeName = name; |
36 }, | 43 }, |
37 waterlevels: (state, data) => { | 44 waterlevels: (state, data) => { |
38 state.waterlevels = data; | 45 state.waterlevels = data; |
39 }, | 46 }, |
40 loading: (state, loading) => { | 47 loading: (state, loading) => { |
41 state.loading = loading; | 48 state.loading = loading; |
42 } | 49 } |
43 }, | 50 }, |
44 actions: { | 51 actions: { |
45 selectedGauge: ({ commit }, name) => { | 52 selectedGaugeName: ({ commit }, name) => { |
46 commit("selectedGauge", name); | 53 commit("selectedGaugeName", name); |
47 commit("application/showGauges", true, { root: true }); | 54 commit("application/showGauges", true, { root: true }); |
48 commit("application/showSplitscreen", false, { root: true }); | 55 commit("application/showSplitscreen", false, { root: true }); |
49 }, | 56 }, |
50 loadGauges: ({ commit }) => { | 57 loadGauges: ({ commit }) => { |
51 return new Promise((resolve, reject) => { | 58 return new Promise((resolve, reject) => { |
75 }); | 82 }); |
76 }); | 83 }); |
77 }, | 84 }, |
78 loadWaterlevels({ state, commit }, timePeriod) { | 85 loadWaterlevels({ state, commit }, timePeriod) { |
79 return new Promise(resolve => { | 86 return new Promise(resolve => { |
80 if (state.selectedGauge && timePeriod) { | 87 if (state.selectedGaugeName && timePeriod) { |
81 // generate some demo values | 88 // generate some demo values |
82 setTimeout(() => { | 89 setTimeout(() => { |
83 let data = []; | 90 let data = []; |
84 let waterlevel = 2.5; | 91 let waterlevel = 380; |
85 for (let i = 1; i <= 365; i++) { | 92 for (let i = 1; i <= 365; i++) { |
86 let date = new Date(); | 93 let date = new Date(); |
87 date.setFullYear(2018); | 94 date.setFullYear(2018); |
88 date.setDate(date.getDate() + i); | 95 date.setDate(date.getDate() + i); |
89 waterlevel *= Math.random() * (1.02 - 0.98) + 0.98; | 96 waterlevel *= Math.random() * (1.02 - 0.98) + 0.98; |