diff --git a/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnBean.java b/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnBean.java new file mode 100644 index 0000000000000000000000000000000000000000..beb00ab80414535311938b4d899c494cb430e5cb --- /dev/null +++ b/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnBean.java @@ -0,0 +1,18 @@ +package de.unikoblenz.fgbks.dmn.frontend; + +import java.io.Serializable; +import javax.enterprise.context.SessionScoped; + +@SessionScoped +public class DmnBean implements Serializable { + + protected String dmnXml; + + public String getDmnXml() { + return dmnXml; + } + + public void setDmnXml(String dmnXml) { + this.dmnXml = dmnXml; + } +} diff --git a/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnSessionApi.java b/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnSessionApi.java new file mode 100644 index 0000000000000000000000000000000000000000..3b316f5840929a1e0912035ec73ea0f1a3cccdbe --- /dev/null +++ b/dmnverifierfrontend/src/main/java/de/unikoblenz/fgbks/dmn/frontend/DmnSessionApi.java @@ -0,0 +1,34 @@ +package de.unikoblenz.fgbks.dmn.frontend; + +import javax.inject.Inject; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/dmn") +public class DmnSessionApi { + + @Inject + DmnBean dmnBean; + + @GET + @Path("/getdmn") + @Produces(MediaType.TEXT_XML) + public Response getSessionDmn() { + if (dmnBean.getDmnXml() == null) { + return Response.noContent().build(); + } + return Response.ok(dmnBean.getDmnXml()).build(); + } + + @POST + @Path("/setdmn") + @Consumes(MediaType.TEXT_XML) + public void setSessionDmn(String dmnXml) { + dmnBean.setDmnXml(dmnXml); + } +} diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnUpDownload.js b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnUpDownload.js index 9bc2b55dc70b618de5bb3f1cc907d4ca0e7bc987..83295f03bbe4f855d2a6bf69d44f4caaad0ef8bb 100644 --- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnUpDownload.js +++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnUpDownload.js @@ -1,7 +1,9 @@ -document.addEventListener("DOMContentLoaded", function () { +$(document).ready(function () { $('#dmn-file-upload').on('change', loadDmnFromFile); $('#dmn-file-empty').on('click', loadEmptyFile); - $('#dmn-file-download').on('click', exportDiagram); + $('#dmn-file-download').on('click', download); + // try to load dmn from session + loadSessionDmn(); }); function loadDmnFromFile(evt) { @@ -26,13 +28,53 @@ function loadEmptyFile() { }); } -function download(filename, dmnXml) { - let el = document.createElement('a'); - el.setAttribute('href', - 'data:text/xml;charset=utf-8,' + encodeURIComponent(dmnXml)); - el.setAttribute('download', filename); - el.style.display = 'none'; - document.body.appendChild(el); - el.click(); - document.body.removeChild(el); +function download() { + let dmnXml = exportDiagram(); + console.log("xxx:" + dmnXml); + if (dmnXml !== undefined) { + let el = document.createElement('a'); + el.setAttribute('href', + 'data:text/xml;charset=utf-8,' + dmnXml); + el.setAttribute('download', "dmnTable.dmn"); + el.style.display = 'none'; + document.body.appendChild(el); + el.click(); + document.body.removeChild(el); + } +} + +let oSerializer = new XMLSerializer(); + +function loadSessionDmn() { + $.ajax({ + timeout: 1000, + url: "/dmn/getdmn", + type: 'GET', + contentType: 'text/xml', + error: function (err) { + // nothing + console.log(">-->--> loading session dmn failed. <--<--<"); + // loading empty dmn + loadEmptyFile(); + }, + success: function (data) { + let sXML = oSerializer.serializeToString(data); + openDiagram(sXML); + } + }); +} + +function saveSessionDmn() { + let dmnXml = exportDiagram(); + $.ajax({ + timeout: 1000, + url: "/dmn/setdmn", + type: 'POST', + contentType: 'text/xml', + data: dmnXml, + error: function (err) { + // nothing + console.log(">-->--> saving session dmn failed. <--<--<"); + } + }); } diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js index 691014e0f6a8e9c4a9a9f9122749cf278207a607..bc7c9ac8b764276d3e0cb56f4ed4f954393869fd 100644 --- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js +++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js @@ -47,7 +47,6 @@ function loadAvailableTypes() { timeout: 1000, url: dmnApi + 'verification/types', type: 'GET', - contentType: 'text/xml', error: function (err) { inactiveBackend = true; handleStatus(); @@ -117,6 +116,7 @@ function cleanDmnVerifierRoot() { function checkVerifications() { cleanDmnVerifierRoot(); + saveSessionDmn(); getVerifications(); } diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js index 19788d5eac86c567f6aae408845e991dcfe6265b..d5037a8278b07c318130e83f43bc87d5fc9c9def 100644 --- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js +++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js @@ -28,6 +28,8 @@ let dmnModeler = new DmnJS({ }); dmnModeler.on('views.changed', function (event) { + // save dmn in Session + saveSessionDmn(); var {views, activeView} = event; // clear tabs $tabs.empty(); @@ -48,14 +50,16 @@ dmnModeler.on('views.changed', function (event) { * Save diagram contents and print them to the console. */ function exportDiagram() { - dmnModeler.saveXML({format: true}, function (err, xml) { + let retXml = undefined; + dmnModeler.saveXML({format: false}, function (err, xml) { if (err) { - return console.log('could not save DMN 1.1 diagram'); + console.log('could not export DMN 1.1 diagram'); } else { - console.log('saving dmn..'); + console.log('exporting DMN 1.1 diagram..'); + retXml = xml; } - download("dmnTable.dmn", xml); }); + return retXml; } /**