Skip to content
Snippets Groups Projects
Commit 68273dc6 authored by Jonas Blatt's avatar Jonas Blatt :ant:
Browse files

Handle dmn cache in javaScript --> in localStorage

parent 683c1a37
No related branches found
No related tags found
No related merge requests found
package de.unikoblenz.fgbks.dmn.frontend;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.json.bind.annotation.JsonbProperty;
@SessionScoped
public class DmnBean implements Serializable {
@JsonbProperty("camundaUrl")
protected String camundaUrl = "";
@JsonbProperty("dmnXml")
protected String dmnXml;
public String getDmnXml() {
return dmnXml;
}
public void setDmnXml(String dmnXml) {
this.dmnXml = dmnXml;
}
public String getCamundaUrl() {
return camundaUrl;
}
public void setCamundaUrl(String camundaUrl) {
this.camundaUrl = camundaUrl;
}
}
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
@Produces(MediaType.APPLICATION_JSON)
public Response getSessionDmn() {
if (dmnBean.getDmnXml() == null) {
return Response.noContent().build();
}
return Response.ok(dmnBean).build();
}
@POST
@Path("/setDmn")
@Consumes(MediaType.TEXT_XML)
public void setSessionDmn(String dmnXml) {
dmnBean.setDmnXml(dmnXml);
}
@POST
@Path("/setCamundaUrl")
@Consumes(MediaType.TEXT_PLAIN)
public void setCamundaUrl(String camundaUrl) {
dmnBean.setCamundaUrl(camundaUrl);
}
}
const engineUrl = 'engine-rest/';
const SESSION_KEY_CAMUNDA_URL = 'camundaUrl';
let camundaEngineUrl = '';
let connectionSuccess = false;
let $camundaApiRoot = $('#camunda-api-root');
......@@ -10,6 +12,10 @@ let $buttonConnectCamundaUrl = $(`
<button class="clickable modal-element" size="60" id="camunda-connect"
onclick="connectCamunda()">Connect</button>
`);
let $buttonDisconnectCamundaUrl = $(`
<button class="clickable modal-element" size="60" id="camunda-disconnect"
onclick="diconnectCamunda()">Disconnect</button>
`);
let $selectCamundaDecisions = $(
`<select class="clickable modal-element" name="decisions"
id="select-camunda-decisions"
......@@ -37,6 +43,9 @@ function refreshParams() {
$textCamundaUrl.val(camundaEngineUrl);
$camundaApiContainer.empty();
if (connectionSuccess) {
$camundaApiContainer.append(
$(`<div>Camunda Server: ${camundaEngineUrl}</div>`));
$camundaApiContainer.append($buttonDisconnectCamundaUrl);
$camundaApiContainer.append($selectCamundaDecisions);
$camundaApiContainer.append($buttonDeployDmn);
} else {
......@@ -57,6 +66,15 @@ function connectCamunda() {
requestOptionsCamundaDecisions();
}
function diconnectCamunda() {
connectionSuccess = false;
$textCamundaUrl.val('');
camundaEngineUrl = $textCamundaUrl.val();
$selectCamundaDecisions.empty();
resetCamundaUrl();
refreshParams();
}
function deployDmn() {
let dmnXml = exportDiagram();
if (dmnXml) {
......@@ -97,40 +115,23 @@ function deployDmn() {
}
function saveCamundaUrl() {
$.ajax({
timeout: 1000,
url: "/dmn/setCamundaUrl",
type: 'POST',
contentType: 'text/plain',
data: $textCamundaUrl.val(),
error: function (err) {
// nothing
console.log(err);
}
});
// Save data to sessionStorage
localStorage.setItem(SESSION_KEY_CAMUNDA_URL, $textCamundaUrl.val());
}
function loadCamundaSessionParams() {
$.ajax({
timeout: 1000,
url: "/dmn",
type: 'GET',
contentType: 'application/json',
error: function (err) {
camundaEngineUrl = '';
connectionSuccess = false;
function resetCamundaUrl() {
// Reset data from sessionStorage
localStorage.removeItem(SESSION_KEY_CAMUNDA_URL);
}
refreshParams();
},
success: function (data) {
if (data !== undefined && data.camundaUrl !== undefined) {
camundaEngineUrl = data.camundaUrl;
} else {
camundaEngineUrl = '';
}
refreshParams();
}
});
function loadCamundaSessionParams() {
let url = localStorage.getItem(SESSION_KEY_CAMUNDA_URL);
if (url !== null && url !== 'undefined') {
camundaEngineUrl = url;
} else {
camundaEngineUrl = '';
}
refreshParams();
}
function requestOptionsCamundaDecisions() {
......
const SESSION_KEY_CURRENT_DMN = 'dmnSession';
$(document).ready(function () {
$('#dmn-file-upload').on('change', loadDmnFromFile);
$('#dmn-file-empty').on('click', loadEmptyFile);
......@@ -34,7 +36,6 @@ function loadEmptyFile() {
function download() {
let dmnXml = exportDiagram();
console.log("xxx:" + dmnXml);
if (dmnXml !== undefined) {
let el = document.createElement('a');
el.setAttribute('href',
......@@ -47,45 +48,20 @@ function download() {
}
}
let oSerializer = new XMLSerializer();
function loadSessionDmn() {
$.ajax({
timeout: 1000,
url: "/dmn",
type: 'GET',
contentType: 'application/json',
error: function (err) {
// nothing
console.log(">-->--> loading session dmn failed. <--<--<");
// loading empty dmn
loadEmptyFile();
},
success: function (data) {
if (data !== undefined && data.dmnXml !== undefined) {
// let sXML = oSerializer.serializeToString(data.dmnXml);
let sXML = data.dmnXml;
openDiagram(sXML);
} else {
loadEmptyFile();
}
}
});
// Get saved dmn from sessionStorage
let dmn = localStorage.getItem(SESSION_KEY_CURRENT_DMN);
if (dmn === null || dmn === "undefined") {
loadEmptyFile();
} else {
openDiagram(dmn);
}
}
function saveSessionDmn() {
// Save data to sessionStorage
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. <--<--<");
}
});
localStorage.setItem(SESSION_KEY_CURRENT_DMN, dmnXml);
}
function generateId(length) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment