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 };