Mercurial > gemma
comparison client/src/store/application.js @ 2257:ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Thu, 14 Feb 2019 08:56:32 +0100 |
parents | e6fba449aa3c |
children | c06b001dc26b |
comparison
equal
deleted
inserted
replaced
2256:0d272d7bcfb9 | 2257:ce6fd3d4a3a2 |
---|---|
13 * Markus Kottländer <markus.kottlaender@intevation.de> | 13 * Markus Kottländer <markus.kottlaender@intevation.de> |
14 * Bernhard E. Reiter <bernhard.reiter@intevation.de> | 14 * Bernhard E. Reiter <bernhard.reiter@intevation.de> |
15 */ | 15 */ |
16 | 16 |
17 import { version } from "../../package.json"; | 17 import { version } from "../../package.json"; |
18 import { HTTP } from "../lib/http"; | |
19 import { displayError } from "@/lib/errors.js"; | |
20 | 18 |
21 // initial state | 19 // initial state |
22 const init = () => { | 20 const init = () => { |
23 return { | 21 return { |
24 appTitle: process.env.VUE_APP_TITLE, | 22 appTitle: process.env.VUE_APP_TITLE, |
25 secondaryLogo: process.env.VUE_APP_SECONDARY_LOGO_URL, | 23 secondaryLogo: process.env.VUE_APP_SECONDARY_LOGO_URL, |
26 logoForPDF: process.env.VUE_APP_LOGO_FOR_PDF_URL, | 24 logoForPDF: process.env.VUE_APP_LOGO_FOR_PDF_URL, |
27 pdfTemplates: [], | |
28 showSidebar: false, | 25 showSidebar: false, |
29 showUsermenu: false, | 26 showUsermenu: false, |
30 showSplitscreen: false, | 27 showSplitscreen: false, |
31 showSearchbar: false, | 28 showSearchbar: false, |
32 showSearchbarLastState: false, | 29 showSearchbarLastState: false, |
104 expandToolbar: (state, expandToolbar) => { | 101 expandToolbar: (state, expandToolbar) => { |
105 state.expandToolbar = expandToolbar; | 102 state.expandToolbar = expandToolbar; |
106 }, | 103 }, |
107 searchQuery: (state, searchQuery) => { | 104 searchQuery: (state, searchQuery) => { |
108 state.searchQuery = searchQuery; | 105 state.searchQuery = searchQuery; |
109 }, | |
110 pdfTemplates: (state, pdfTemplates) => { | |
111 state.pdfTemplates = pdfTemplates; | |
112 } | |
113 }, | |
114 actions: { | |
115 loadPdfTemplates({ commit }) { | |
116 return new Promise((resolve, reject) => { | |
117 HTTP.get("/templates/print", { | |
118 headers: { | |
119 "X-Gemma-Auth": localStorage.getItem("token"), | |
120 "Content-type": "text/xml; charset=UTF-8" | |
121 } | |
122 }) | |
123 .then(response => { | |
124 commit("pdfTemplates", response.data); | |
125 resolve(); | |
126 }) | |
127 .catch(e => { | |
128 reject(e); | |
129 const { status, data } = e.response; | |
130 displayError({ | |
131 title: "Backend Error", | |
132 message: `${status}: ${data.message || data}` | |
133 }); | |
134 }); | |
135 }); | |
136 }, | |
137 uploadPDFTemplate({ dispatch }, files) { | |
138 return new Promise((resolve, reject) => { | |
139 const reader = new FileReader(); | |
140 reader.onload = event => { | |
141 let template; | |
142 try { | |
143 template = JSON.parse(event.target.result); | |
144 } catch (e) { | |
145 displayError({ | |
146 title: "Format Error", | |
147 message: "Uploaded file does not contain valid json data." | |
148 }); | |
149 reject(e); | |
150 } | |
151 if (template.name) { | |
152 HTTP.post( | |
153 "/templates/print/" + template.name, | |
154 { | |
155 template_name: template.name, | |
156 template_data: template | |
157 }, | |
158 { | |
159 headers: { | |
160 "X-Gemma-Auth": localStorage.getItem("token"), | |
161 "Content-type": "text/xml; charset=UTF-8" | |
162 } | |
163 } | |
164 ) | |
165 .then(response => { | |
166 dispatch("loadPdfTemplates"); | |
167 resolve(response); | |
168 }) | |
169 .catch(e => { | |
170 reject(e); | |
171 const { status, data } = e.response; | |
172 displayError({ | |
173 title: "Backend Error", | |
174 message: `${status}: ${data.message || data}` | |
175 }); | |
176 }); | |
177 } else { | |
178 reject(); | |
179 displayError({ | |
180 title: "Format Error", | |
181 message: "The provided template has no name property." | |
182 }); | |
183 } | |
184 }; | |
185 reader.onerror = error => reject(error); | |
186 reader.readAsText(files[0]); | |
187 }); | |
188 }, | |
189 removePDFTemplate({ state, commit }, template) { | |
190 HTTP.delete("/templates/print/" + template.name, { | |
191 headers: { | |
192 "X-Gemma-Auth": localStorage.getItem("token"), | |
193 "Content-type": "text/xml; charset=UTF-8" | |
194 } | |
195 }).then(() => { | |
196 let templates = state.pdfTemplates; | |
197 let removeIndex = templates.findIndex(t => t.name === template.name); | |
198 if (removeIndex !== -1) { | |
199 templates.splice(removeIndex, 1); | |
200 commit("pdfTemplates", templates); | |
201 } | |
202 }); | |
203 } | 106 } |
204 } | 107 } |
205 }; | 108 }; |