diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntry.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntry.java index 00f31cc69fc7314b000b15e3f224b23252a680f6..c0ffd335669de0136c6c07d4d89c11033fa27c9a 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntry.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntry.java @@ -56,7 +56,7 @@ public class VerificationResultEntry extends AbstractResultObject { * * @return the {@link VerificationClassification} */ - @JsonbProperty("verificationClassifications") + @JsonbProperty("verificationClassification") public VerificationClassification getVerificationClassification() { return verificationClassification; } diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/index.html b/dmnverifierfrontend/src/main/resources/META-INF/resources/index.html index b0614e2bd7ec2f91365d6b6e05dad1691bd87ab9..40e985cbed903a46a3c4ae349f9a1ec09068e12f 100644 --- a/dmnverifierfrontend/src/main/resources/META-INF/resources/index.html +++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/index.html @@ -18,19 +18,20 @@ <link href="css/dmnEditorTabs.css" rel="stylesheet" type="text/css"/> </head> <body> -<div id="root"> - <input id="dmn-file-upload" type="file"> - <div id="content-dmn"> - <div class="editor-parent"> - <div class="editor-container"></div> - <div class="editor-tabs"></div> - </div> +<input id="dmn-file-upload" type="file"> +<div id="content-dmn"> + <div class="editor-parent"> + <div class="editor-container"></div> + <div class="editor-tabs"></div> </div> - <input id="dmn-verify" name="Verify" onclick="checkVerifications()" type="button"> - <div id="verifier-dmn"></div> +</div> +<button id="button-dmn-verify" onclick="checkVerifications()">Get verifications</button> +<div id="root-dmn-verifier"></div> </div> +<!-- load jquery --> <script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js" type="text/javascript"></script> +<!-- load dmn modeler --> <script src="https://unpkg.com/dmn-js@7.0.1/dist/dmn-modeler.development.js"></script> <script src="js/upload.js" type="text/javascript"></script> diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerificationResultSet..js b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerificationResultSet..js new file mode 100644 index 0000000000000000000000000000000000000000..6161d2df8908769ea025d88b54fc848cf54c0e9a --- /dev/null +++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerificationResultSet..js @@ -0,0 +1,66 @@ +/** + * @typedef VerifierResultSet + * @type {object} + * @property {number} id + * @property {number} size + * @property {Array.<VerifierResult>} verifier + */ + +/** + * @typedef VerifierResult + * @type {object} + * @property {number} id + * @property {number} executionTime + * @property {number} size + * @property {Array.<VerificationEntry>} entries + * @property {VerificationType} type + */ + +/** + * @typedef VerificationEntry + * @type {object} + * @property {number} id + * @property {number} size + * @property {string} message + * @property {string} verificationClassification + * @property {Array.<VerificationEntryElements>} elements + * @property {Array.<VerificationFixes>} verificationFixes + */ + +/** + * @typedef VerificationEntryElements + * @type {object} + * @property {number} id + * @property {Object.<string, number>} identifier + */ + +/** + * @typedef VerificationFixes + * @type {object} + * @property {string} fixName + * @property {Array.<Actions>} actions + */ + +/** + * @typedef Actions + * @type {object} + * @property {number} id + * @property {string} actionScope + * @property {string} actionType SHOW, UPDATE, INSERT, DELETE + * @property {Object.<string, number>} actionValues + */ + +/** + * @typedef VerificationType + * @type {object} + * @property {string} description + * @property {string} name + * @property {VerificationClassification} classification + */ + +/** + * @typedef VerificationClassification + * @type {object} + * @property {string} description + * @property {string} name + */ 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 29661b12d32acfb131eac65ff4e20d7d20dac463..31ef494c2fee25c5d762b65c70b893e5cf9d4c9a 100644 --- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js +++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js @@ -1,6 +1,12 @@ let rootUrl = 'http://localhost:8080/'; let dmnApi = rootUrl + 'api/dmn/'; +/** + * Global definition for verification results + * @type {VerifierResultSet} + */ +let verifierResults = {}; + function checkVerifications() { getVerifications(); } @@ -8,19 +14,41 @@ function checkVerifications() { function getVerifications() { dmnModeler.saveXML({format: true}, function (err, xml) { if (err) { - return console.log('could not save DMN 1.1 diagram'); + return console.log( + 'There is an error in requesting the dmn verifications.. ' + err); } else { - console.log('saving dmn..'); + console.log('Requesting dmn verifications..'); } $.ajax({ url: dmnApi + 'verification', type: 'POST', contentType: 'text/xml', data: xml, + success: function (data) { - console.log('dmn saved'); + console.log('successful dmn verification request:'); console.log(data); + verifierResults = data; + renderDmnVerifierOptions(); } }); }); } + +var i = 0; + +function renderDmnVerifierOptions() { + // reset div + let root = $('#root-dmn-verifier'); + root.html('verifier' + i++); + for (let i = 0; i < verifierResults.verifier.length; i++) { + console.log(verifierResults.verifier[i]); + let verifier = verifierResults.verifier[i]; + let verifierTab = $(` + <button class="but-verifier"> + ${verifier.type.name} + </button> + `); + root.append(verifierTab); + } +} 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 e66442dc6d289046c5e681d8093e3eaae421d549..e1bc061e0857bce3581b09d8599277b9bf009562 100644 --- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js +++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js @@ -12,10 +12,13 @@ $tabs.delegate('.tab', 'click', function (e) { dmnModeler.open(view); }); -// modeler instance -var dmnModeler = new DmnJS({ +/** + * + * @type {DmnJS} + */ +let dmnModeler = new DmnJS({ container: $container, - height: 350, + height: 600, width: '100%', keyboard: { bindTo: window