From ff2439309d49cb7e4fc3f93a0514faa2a0458c72 Mon Sep 17 00:00:00 2001
From: Jonas Blatt <jonasblatt@uni-koblenz.de>
Date: Wed, 30 Oct 2019 19:16:40 +0100
Subject: [PATCH] New checkbox for auto "reverify"

---
 .../META-INF/resources/css/stylesheets.css    |  8 +++-
 .../META-INF/resources/js/dmnVerifier.js      | 40 +++++++++++--------
 .../resources/js/dmnVerifierActions.js        | 21 +++++++---
 3 files changed, 46 insertions(+), 23 deletions(-)

diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/css/stylesheets.css b/dmnverifierfrontend/src/main/resources/META-INF/resources/css/stylesheets.css
index eaef15d9..1b6990e0 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/css/stylesheets.css
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/css/stylesheets.css
@@ -26,6 +26,12 @@ p {
   margin: 5px;
 }
 
+input[type=checkbox] {
+  transform: scale(1.5);
+  background-color: white;
+  margin: 10px;
+}
+
 .status-dot {
   height: 15px;
   width: 15px;
@@ -201,7 +207,7 @@ span.select2 {
   padding: 3px;
   display: flex;
   justify-content: flex-start;
-  align-items: flex-start;
+  align-items: center;
   flex-wrap: wrap;
 }
 
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 e987326f..f644c352 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js
@@ -20,12 +20,31 @@ let types = [];
 
 let $verifierTypes;
 let lastTypeSelect = undefined;
-let $select = $(`
+const $buttonReconnect = $(`
+      <button class="clickable dmn-verifier-header-item" id="dmn-button-reload-verifier" 
+      title="Reconnect backend" onClick="loadAvailableTypes()">
+      Reconnect verification backend</button>
+    `);
+const $buttonClean = $(`
+      <button class="clickable dmn-verifier-header-item" id="dmn-button-clean" 
+      title="Request verifications" onClick="cleanHighlightFunction()">
+      Clean</button>
+    `);
+const $select = $(`
     <select name="verifier" id="verifier"
       class="dmn-verifier-header-item dmn-verifier-select clickable"
       title="Select calculated verification"
       onchange="renderVerifierResult(this)">
   `);
+const $buttonVerify = $(`
+      <button class="clickable dmn-verifier-header-item" id="dmn-button-verify" 
+      title="Request verifications" onClick="checkVerifications()">
+      Verify</button>
+    `);
+const $checkBoxReverify = $(`
+  <input type="checkbox" name="reverify" checked>
+`);
+let $reverifyElement = $(`<label>Reverify</label>`).append($checkBoxReverify);
 
 function handleStatus() {
   let $dot = $('#backend-status');
@@ -84,17 +103,9 @@ function cleanDmnVerifierRoot() {
   `);
   // check, if backend is available
   if ($verifierTypes === undefined) {
-    $header.append($(`
-      <button class="clickable dmn-verifier-header-item" id="dmn-button-reload-verifier" 
-      title="Reconnect backend" onClick="loadAvailableTypes()">
-      Reconnect verification backend</button>
-    `));
+    $header.append($buttonReconnect);
   } else {
-    $header.append($(`
-      <button class="clickable dmn-verifier-header-item" id="dmn-button-clean" 
-      title="Request verifications" onClick="cleanHighlightFunction()">
-      Clean</button>
-    `));
+    $header.append($buttonClean);
     $header.append($verifierTypes);
     $verifierTypes.select2({
       containerCssClass: "dmn-verifier-header-item dmn-verifier-select clickable",
@@ -106,11 +117,8 @@ function cleanDmnVerifierRoot() {
       allowClear: true,
     });
     // Add Button Verifications
-    $header.append($(`
-      <button class="clickable dmn-verifier-header-item" id="dmn-button-verify" 
-      title="Request verifications" onClick="checkVerifications()">
-      Verify</button>
-    `));
+    $header.append($buttonVerify);
+    $header.append($reverifyElement);
     $select.empty();
     $header.append($select);
   }
diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifierActions.js b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifierActions.js
index e4d72c92..d6021ab5 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifierActions.js
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifierActions.js
@@ -25,15 +25,15 @@ function getSheetElementWithId(id) {
 function getRandomNewPointInCycle(sourceX, sourceY, w, offsetX, offsetY) {
   let dx = Math.floor(Math.random() * Math.floor(2 * w)) - w;
   let dy = Math.sqrt(w * w - dx * dx);
+  if (Math.random() > 0.5) {
+    dy *= -1;
+  }
   if (offsetX) {
     dx += offsetX;
   }
   if (offsetY) {
     dy += offsetY;
   }
-  if (Math.random() > 0.5) {
-    dy *= -1;
-  }
   return {x: sourceX + dx, y: sourceY + dy};
 }
 
@@ -41,6 +41,8 @@ function getRandomNewPointInCycle(sourceX, sourceY, w, offsetX, offsetY) {
  *
  * @param {VerificationEntry}  verificationEntry
  * @param {VerificationFix} fix
+ * @param id fix row id
+ * @param $callerButton
  */
 function performVerificationFix(verificationEntry, fix, id, $callerButton) {
   console.log("FIX", fix);
@@ -48,6 +50,7 @@ function performVerificationFix(verificationEntry, fix, id, $callerButton) {
   cleanHighlightFunction();
   $('.verification-container').removeClass('highlight-soft');
   $('#ver-entry-' + id).addClass('highlight-soft');
+  let cud = false;
   for (let i = 0; i < fix.actions.length; i++) {
     switch (fix.actions[i].actionType) {
       case 'SHOW':
@@ -55,19 +58,25 @@ function performVerificationFix(verificationEntry, fix, id, $callerButton) {
         break;
       case 'UPDATE':
         alert("Action not defined: " + fix);
-        $callerButton.css('display', 'none');
+        cud = true;
         break;
       case 'CREATE':
         performVerificationFixCREATE(verificationEntry, fix.actions[i]);
-        //$callerButton.css('display', 'none');
+        cud = true;
         break;
       case 'DELETE':
         performVerificationFixDELETE(verificationEntry, fix.actions[i]);
-        $callerButton.css('display', 'none');
+        cud = true;
         break;
       default:
         alert("Action not defined: " + fix);
     }
+    if (cud) {
+      $callerButton.css('display', 'none');
+      if ($checkBoxReverify.is(":checked")) {
+        checkVerifications();
+      }
+    }
     performHighlightFunction();
   }
 }
-- 
GitLab