diff options
Diffstat (limited to 'src_js/opcut/common.js')
| -rw-r--r-- | src_js/opcut/common.js | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/src_js/opcut/common.js b/src_js/opcut/common.js index 89088ac..9c5d16d 100644 --- a/src_js/opcut/common.js +++ b/src_js/opcut/common.js @@ -3,6 +3,8 @@ import iziToast from 'izitoast'; import r from 'opcut/renderer'; import * as u from 'opcut/util'; +import * as states from 'opcut/states'; +import * as fs from 'opcut/fs'; const calculateUrl = URI.resolve(window.location.href, './calculate'); @@ -41,6 +43,19 @@ export function calculate() { } +export function generateOutput(output_type) { + const msg = { + output_type: output_type, + result: r.get('result') + }; + const req = new XMLHttpRequest(); + req.onload = () => parseGenerateOutputResponse(JSON.parse(req.responseText), output_type); + req.open('POST', generateOutputUrl); + req.setRequestHeader('Content-Type', 'application/json'); + req.send(JSON.stringify(msg)); +} + + function validateCalculateRequest(msg) { if (!Number.isFinite(msg.params.cut_width) || msg.params.cut_width < 0) throw 'Invalid cut width'; @@ -68,7 +83,25 @@ function validateCalculateRequest(msg) { function parseCalculateResponse(msg) { - + r.change(u.pipe( + u.set('result', msg.result), + u.set('selected', states.main.selected) + )); + if (msg.result) { + showNotification('New calculation available', 'success'); + } else { + showNotification('Could not resolve calculation', 'error'); + } +} + + +function parseGenerateOutputResponse(msg, output_type) { + if (msg.data) { + const fileName = 'output.pdf'; + fs.saveB64Data(msg.data, fileName); + } else { + showNotification('Error generating output', 'error'); + }; } |
