comparison client/src/store/bottlenecks.js @ 1516:6b3756676bbe

refac: bottlenecks and surveydata are now retrieved via promises
author Thomas Junk <thomas.junk@intevation.de>
date Thu, 06 Dec 2018 13:40:17 +0100
parents 53fdbe1d9678
children b4b3dfd24739
comparison
equal deleted inserted replaced
1515:43a32358a016 1516:6b3756676bbe
39 state.selectedBottleneck = name; 39 state.selectedBottleneck = name;
40 }, 40 },
41 setSurveys(state, surveys) { 41 setSurveys(state, surveys) {
42 state.surveys = surveys; 42 state.surveys = surveys;
43 }, 43 },
44 setSelectedSurveyByDate(state, date) {
45 const survey = state.surveys.filter(x => x.date_info === date)[0];
46 state.selectedSurvey = survey;
47 },
48 setFirstSurveySelected(state) {
49 state.selectedSurvey = state.surveys[0];
50 },
44 selectedSurvey(state, survey) { 51 selectedSurvey(state, survey) {
45 state.selectedSurvey = survey; 52 state.selectedSurvey = survey;
46 }, 53 },
47 surveysLoading: (state, loading) => { 54 surveysLoading: (state, loading) => {
48 state.surveysLoading = loading; 55 state.surveysLoading = loading;
49 } 56 }
50 }, 57 },
51 actions: { 58 actions: {
52 setSelectedBottleneck( 59 setSelectedBottleneck({ state, commit, rootState, rootGetters }, name) {
53 { state, commit, dispatch, rootState, rootGetters }, 60 return new Promise((resolve, reject) => {
54 name, 61 if (name !== state.selectedBottleneck) {
55 date 62 commit("selectedSurvey", null);
56 ) { 63 commit("fairwayprofile/clearCurrentProfile", null, { root: true });
57 if (name !== state.selectedBottleneck) { 64 commit("application/showSplitscreen", false, { root: true });
58 commit("selectedSurvey", null); 65 rootState.map.cutTool.setActive(false);
59 commit("fairwayprofile/clearCurrentProfile", null, { root: true }); 66 rootGetters["map/getVSourceByName"]("Cut Tool").clear();
60 commit("application/showSplitscreen", false, { root: true }); 67 }
61 rootState.map.cutTool.setActive(false); 68 if (name) {
62 rootGetters["map/getVSourceByName"]("Cut Tool").clear(); 69 commit("application/showProfiles", true, { root: true });
63 } 70 }
64 if (name) { 71 commit("setSelectedBottleneck", name);
65 commit("application/showProfiles", true, { root: true }); 72 if (name) {
66 } 73 commit("surveysLoading", true);
67 commit("setSelectedBottleneck", name); 74 HTTP.get("/surveys/" + name, {
68 dispatch("querySurveys", name, date); 75 headers: {
76 "X-Gemma-Auth": localStorage.getItem("token"),
77 "Content-type": "text/xml; charset=UTF-8"
78 }
79 })
80 .then(response => {
81 const surveys = response.data.surveys.sort((a, b) =>
82 a.date_info < b.date_info ? 1 : -1
83 );
84 commit("setSurveys", surveys);
85 resolve(response);
86 })
87 .catch(error => {
88 commit("setSurveys", []);
89 commit("selectedSurvey", null);
90 const { status, data } = error.response;
91 displayError({
92 title: "Backend Error",
93 message: `${status}: ${data.message || data}`
94 });
95 reject(error);
96 })
97 .finally(() => commit("surveysLoading", false));
98 } else {
99 commit("setSurveys", []);
100 resolve();
101 }
102 });
69 }, 103 },
70 loadBottlenecks({ commit }) { 104 loadBottlenecks({ commit }) {
71 var bottleneckFeatureCollectionRequest = new WFS().writeGetFeature({ 105 return new Promise((resolve, reject) => {
72 srsName: "EPSG:4326", 106 var bottleneckFeatureCollectionRequest = new WFS().writeGetFeature({
73 featureNS: "gemma", 107 srsName: "EPSG:4326",
74 featurePrefix: "gemma", 108 featureNS: "gemma",
75 featureTypes: ["bottleneck_overview"], 109 featurePrefix: "gemma",
76 outputFormat: "application/json" 110 featureTypes: ["bottleneck_overview"],
77 }); 111 outputFormat: "application/json"
78 112 });
79 HTTP.post( 113 HTTP.post(
80 "/internal/wfs", 114 "/internal/wfs",
81 new XMLSerializer().serializeToString( 115 new XMLSerializer().serializeToString(
82 bottleneckFeatureCollectionRequest 116 bottleneckFeatureCollectionRequest
83 ), 117 ),
84 { 118 {
85 headers: { 119 headers: {
86 "X-Gemma-Auth": localStorage.getItem("token"), 120 "X-Gemma-Auth": localStorage.getItem("token"),
87 "Content-type": "text/xml; charset=UTF-8" 121 "Content-type": "text/xml; charset=UTF-8"
122 }
88 } 123 }
89 } 124 )
90 ).then(response => {
91 commit("setBottlenecks", response.data.features);
92 });
93 },
94 querySurveys({ commit }, name, date) {
95 if (name) {
96 commit("surveysLoading", true);
97 HTTP.get("/surveys/" + name, {
98 headers: {
99 "X-Gemma-Auth": localStorage.getItem("token"),
100 "Content-type": "text/xml; charset=UTF-8"
101 }
102 })
103 .then(response => { 125 .then(response => {
104 const surveys = response.data.surveys.sort((a, b) => 126 commit("setBottlenecks", response.data.features);
105 a.date_info < b.date_info ? 1 : -1 127 resolve(response);
106 );
107 if (date) {
108 const survey = surveys.filter(x => x.date_info === date)[0];
109 commit("selectedSurvey", survey);
110 } else {
111 commit("selectedSurvey", surveys[0]);
112 }
113
114 commit("setSurveys", surveys);
115 }) 128 })
116 .catch(error => { 129 .catch(error => {
117 commit("setSurveys", []); 130 reject(error);
118 commit("selectedSurvey", null); 131 });
119 const { status, data } = error.response; 132 });
120 displayError({
121 title: "Backend Error",
122 message: `${status}: ${data.message || data}`
123 });
124 })
125 .finally(() => commit("surveysLoading", false));
126 } else {
127 commit("setSurveys", []);
128 }
129 } 133 }
130 } 134 }
131 }; 135 };