From bdcbab528a7adae2b43f604cb29addf0a83700be Mon Sep 17 00:00:00 2001
From: Jonas Blatt <jonasblatt@uni-koblenz.de>
Date: Sun, 9 Jul 2023 14:05:53 +0200
Subject: [PATCH] Update DMN-js to support DMN1.3

---
 .../ps/core/dmn/domain/vdmn/VTypeRef.java     |  14 +-
 .../src/main/resources/application.properties |   1 +
 .../META-INF/resources/dmn/emptyDMN.dmn       |  24 +-
 .../resources/META-INF/resources/index.html   |  16 +-
 .../META-INF/resources/js/dmnCamundaApi.js    |   4 +-
 .../META-INF/resources/js/dmnUpDownload.js    | 133 ++---
 .../META-INF/resources/js/dmnVerifier.js      | 510 +++++++++---------
 .../resources/js/dmnVerifierActions.js        |   4 +-
 .../META-INF/resources/js/dmnViewer.js        | 369 ++++++-------
 9 files changed, 540 insertions(+), 535 deletions(-)

diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/ps/core/dmn/domain/vdmn/VTypeRef.java b/dmnverifierapi/src/main/java/de/unikoblenz/ps/core/dmn/domain/vdmn/VTypeRef.java
index 979a7141..ab147a7e 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/ps/core/dmn/domain/vdmn/VTypeRef.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/ps/core/dmn/domain/vdmn/VTypeRef.java
@@ -20,10 +20,19 @@ public enum VTypeRef {
    * LocalDateTime}.
    */
   DATE("date", LocalDateTime.class, DateBoundary.class),
+  /**
+   * Datetime format, which is represented as {@link DateBoundary} and as java type {@link
+   * LocalDateTime}.
+   */
+  DATETIME("dateTime", LocalDateTime.class, DateBoundary.class),
   /**
    * String format, which is represented as {@link StringBoundary} and as java type {@link String}.
    */
   STRING("string", String.class, StringBoundary.class),
+  /**
+   * Any format, which is represented as {@link StringBoundary} and as java type {@link String}.
+   */
+  ANY("any", String.class, StringBoundary.class),
   /**
    * Integer format, which is represented as {@link IntegerBoundary} and as java type {@link
    * Integer}.
@@ -39,7 +48,10 @@ public enum VTypeRef {
    */
   DOUBLE("double", Double.class, DoubleBoundary.class),
   /** Long format, which is represented as {@link LongBoundary} and as java type {@link Long}. */
-  LONG("long", Long.class, LongBoundary.class);
+  LONG("long", Long.class, LongBoundary.class),
+
+  /** Number format, which is represented as {@link LongBoundary} and as java type {@link Long}. */
+  NUMBER("number", Long.class, LongBoundary.class);
 
   private String name;
   private Class<?> javaClass;
diff --git a/dmnverifierapi/src/main/resources/application.properties b/dmnverifierapi/src/main/resources/application.properties
index d5afb4f4..b718eedd 100644
--- a/dmnverifierapi/src/main/resources/application.properties
+++ b/dmnverifierapi/src/main/resources/application.properties
@@ -38,3 +38,4 @@ verifier.MissingInputColumnVerification=true
 verifier.MissingColumnVerification=true
 verifier.PartialReductionVerification=true
 verifier.MissingRulesVerification=true
+quarkus.console.color=true
diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/dmn/emptyDMN.dmn b/dmnverifierfrontend/src/main/resources/META-INF/resources/dmn/emptyDMN.dmn
index f6fbeeac..aad29301 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/dmn/emptyDMN.dmn
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/dmn/emptyDMN.dmn
@@ -1,16 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" xmlns:biodi="http://bpmn.io/schema/dmn/biodi/1.0" id="Definitions_genid1" name="DRD" namespace="http://camunda.org/schema/1.0/dmn">
-  <decision id="Decision_genid2" name="Decision 1">
-    <extensionElements>
-      <biodi:bounds x="120" y="145" width="180" height="80" />
-    </extensionElements>
-    <decisionTable id="decisionTable_1">
-      <input id="input_1">
-        <inputExpression id="inputExpression_1" typeRef="string">
-          <text></text>
-        </inputExpression>
+<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" id="dish" name="Dish" namespace="http://camunda.org/schema/1.0/dmn" exporter="Camunda Modeler" exporterVersion="5.6.0">
+  <decision id="Decision_155sesi" name="Decision 1">
+    <decisionTable id="DecisionTable_04qiort">
+      <input id="InputClause_1gu3xrb">
+        <inputExpression id="LiteralExpression_0l1tttf" typeRef="string" />
       </input>
-      <output id="output_1" typeRef="string" />
+      <output id="OutputClause_0pfifw9" typeRef="string" />
     </decisionTable>
   </decision>
+  <dmndi:DMNDI>
+    <dmndi:DMNDiagram id="DMNDiagram_05sfxgt">
+      <dmndi:DMNShape id="DMNShape_02411es" dmnElementRef="Decision_155sesi">
+        <dc:Bounds height="80" width="180" x="160" y="80" />
+      </dmndi:DMNShape>
+    </dmndi:DMNDiagram>
+  </dmndi:DMNDI>
 </definitions>
diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/index.html b/dmnverifierfrontend/src/main/resources/META-INF/resources/index.html
index 9b7f0fa2..be2b84c4 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/index.html
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/index.html
@@ -4,16 +4,16 @@
   <meta charset="UTF-8">
   <meta content="width=device-width, initial-scale=1.0" name="viewport">
   <title>DMN App</title>
-  <link href="https://unpkg.com/dmn-js@7.1.0/dist/assets/diagram-js.css" rel="stylesheet">
-  <link href="https://unpkg.com/dmn-js@7.1.0/dist/assets/dmn-js-shared.css" rel="stylesheet">
-  <link href="https://unpkg.com/dmn-js@7.1.0/dist/assets/dmn-js-drd.css" rel="stylesheet">
-  <link href="https://unpkg.com/dmn-js@7.1.0/dist/assets/dmn-js-decision-table.css"
+  <link href="https://unpkg.com/dmn-js@14.1.5/dist/assets/diagram-js.css" rel="stylesheet">
+  <link href="https://unpkg.com/dmn-js@14.1.5/dist/assets/dmn-js-shared.css" rel="stylesheet">
+  <link href="https://unpkg.com/dmn-js@14.1.5/dist/assets/dmn-js-drd.css" rel="stylesheet">
+  <link href="https://unpkg.com/dmn-js@14.1.5/dist/assets/dmn-js-decision-table.css"
         rel="stylesheet">
-  <link href="https://unpkg.com/dmn-js@7.1.0/dist/assets/dmn-js-decision-table-controls.css"
+  <link href="https://unpkg.com/dmn-js@14.1.5/dist/assets/dmn-js-decision-table-controls.css"
         rel="stylesheet">
-  <link href="https://unpkg.com/dmn-js@7.1.0/dist/assets/dmn-js-literal-expression.css"
+  <link href="https://unpkg.com/dmn-js@14.1.5/dist/assets/dmn-js-literal-expression.css"
         rel="stylesheet">
-  <link href="https://unpkg.com/dmn-js@7.1.0/dist/assets/dmn-font/css/dmn.css" rel="stylesheet">
+  <link href="https://unpkg.com/dmn-js@14.1.5/dist/assets/dmn-font/css/dmn.css" rel="stylesheet">
   <link href="https://cdnjs.cloudflare.com/ajax/libs/jquery-modal/0.9.1/jquery.modal.min.css"
         rel="stylesheet"/>
   <link href="assets/css/select2.min.css" rel="stylesheet"/>
@@ -70,7 +70,7 @@
 <script
     src="https://cdnjs.cloudflare.com/ajax/libs/jquery-modal/0.9.1/jquery.modal.min.js"></script>
 <!-- load dmn modeler -->
-<script src="https://unpkg.com/dmn-js@7.1.0/dist/dmn-modeler.development.js"></script>
+<script src="https://unpkg.com/dmn-js@14.1.5/dist/dmn-modeler.development.js"></script>
 
 <script src="js/dmnUpDownload.js" type="text/javascript"></script>
 <script src="js/dmnViewer.js" type="text/javascript"></script>
diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnCamundaApi.js b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnCamundaApi.js
index f89cd5fe..890fd6d2 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnCamundaApi.js
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnCamundaApi.js
@@ -83,8 +83,8 @@ function diconnectCamunda() {
   refreshParams();
 }
 
-function deployDmn() {
-  let dmnXml = exportDiagram();
+async function deployDmn() {
+  let {dmnXml} = await exportDiagram();
   if (dmnXml) {
     if (confirm("Do you really want to deploy this dmn?")) {
       var fileStringArray = [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 918f6a74..ed927ba8 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnUpDownload.js
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnUpDownload.js
@@ -1,88 +1,89 @@
 const SESSION_KEY_CURRENT_DMN = 'dmnSession';
 
 $(document).ready(function () {
-  $('#dmn-file-upload').on('change', loadDmnFromFile);
-  $('#dmn-file-empty').on('click', loadEmptyFile);
-  $('#dmn-file-download').on('click', download);
-  // try to load dmn from session
-  loadSessionDmn();
+    $('#dmn-file-upload').on('change', loadDmnFromFile);
+    $('#dmn-file-empty').on('click', loadEmptyFile);
+    $('#dmn-file-download').on('click', download);
+    // try to load dmn from session
+    loadSessionDmn();
 });
 
 function loadDmnFromFile(evt) {
-  let files = evt.target.files;
-  let dmnFile = files[0];
-  let fileReader = new FileReader();
-  fileReader.onload = function (fileLoadedEvent) {
-    let textFromFileLoaded = fileLoadedEvent.target.result;
-    openDiagram(textFromFileLoaded);
-  };
-  fileReader.readAsText(dmnFile, "UTF-8");
-  evt.target.value = null;
+    let files = evt.target.files;
+    let dmnFile = files[0];
+    let fileReader = new FileReader();
+    fileReader.onload = function (fileLoadedEvent) {
+        let textFromFileLoaded = fileLoadedEvent.target.result;
+        openDiagram(textFromFileLoaded);
+    };
+    fileReader.readAsText(dmnFile, "UTF-8");
+    evt.target.value = null;
 }
 
 function loadEmptyFile(caller, path) {
-  if (!path) {
-    path = 'dmn/emptyDMN.dmn';
-  }
-  $.ajax({
-    url: path,
-    type: 'GET',
-    cache: false,
-    contentType: 'text/xml',
-    success: function (data) {
-      if (typeof data === 'object') {
-        data = new XMLSerializer().serializeToString(data);
-      }
-      data = data.replace("genid1", generateId(8))
-      .replace("genid2", generateId(8));
-      openDiagram(data);
+    if (!path) {
+        path = 'dmn/emptyDMN.dmn';
     }
-  });
+    $.ajax({
+        url: path,
+        type: 'GET',
+        cache: false,
+        contentType: 'text/xml',
+        success: function (data) {
+            if (typeof data === 'object') {
+                data = new XMLSerializer().serializeToString(data);
+            }
+            data = data.replace("genid1", generateId(8))
+                .replace("genid2", generateId(8));
+            openDiagram(data);
+        }
+    });
 }
 
-function download() {
-  let dmnXml = exportDiagram();
-  if (dmnXml !== undefined) {
-    var filename = "dmnTable.dmn";
-    var pom = document.createElement('a');
-    var bb = new Blob([dmnXml], {type: 'text/xml'});
-    pom.setAttribute('href', window.URL.createObjectURL(bb));
-    pom.setAttribute('download', filename);
-    pom.dataset.downloadurl = ['text/plain', pom.download, pom.href].join(':');
-    pom.draggable = true;
-    pom.classList.add('dragout');
-    pom.click();
-  }
+async function download() {
+    const {dmnXml} = await exportDiagram();
+    if (dmnXml !== undefined) {
+        var filename = "dmnTable.dmn";
+        var pom = document.createElement('a');
+        var bb = new Blob([dmnXml], {type: 'text/xml'});
+        pom.setAttribute('href', window.URL.createObjectURL(bb));
+        pom.setAttribute('download', filename);
+        pom.dataset.downloadurl = ['text/plain', pom.download, pom.href].join(':');
+        pom.draggable = true;
+        pom.classList.add('dragout');
+        pom.click();
+    }
 }
+
 function loadSessionDmn() {
-  // Check, if there is a provided url
-  let searchParams = new URLSearchParams(window.location.search);
-  if (searchParams.has('dmnurl')) {
-    loadEmptyFile(this, searchParams.get('dmnurl'));
-    searchParams.delete('dmnurl');
-  } else {
-    // Get saved dmn from sessionStorage
-    let dmn = localStorage.getItem(SESSION_KEY_CURRENT_DMN);
-    if (dmn === null || dmn === "undefined") {
-      loadEmptyFile();
+    // Check, if there is a provided url
+    let searchParams = new URLSearchParams(window.location.search);
+    if (searchParams.has('dmnurl')) {
+        loadEmptyFile(this, searchParams.get('dmnurl'));
+        searchParams.delete('dmnurl');
     } else {
-      openDiagram(dmn);
+        // 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();
-  localStorage.setItem(SESSION_KEY_CURRENT_DMN, dmnXml);
+async function saveSessionDmn() {
+    // Save data to sessionStorage
+    let {dmnXml} = await exportDiagram();
+    localStorage.setItem(SESSION_KEY_CURRENT_DMN, dmnXml);
 }
 
 function generateId(length) {
-  var result = '';
-  var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
-  var charactersLength = characters.length;
-  for (var i = 0; i < length; i++) {
-    result += characters.charAt(Math.floor(Math.random() * charactersLength));
-  }
-  return result;
+    var result = '';
+    var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+    var charactersLength = characters.length;
+    for (var i = 0; i < length; i++) {
+        result += characters.charAt(Math.floor(Math.random() * charactersLength));
+    }
+    return result;
 }
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 819da4eb..5e21805f 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifier.js
@@ -3,9 +3,9 @@ let inactiveBackend = true;
 let activeRequest = false;
 
 $(document).ready(async function () {
-  // load types
-  dmnApi = await (await fetch("/api/dmnvertificationapiurl/")).text() + "api/dmn/";
-  loadAvailableTypes();
+    // load types
+    dmnApi = await (await fetch("/api/dmnvertificationapiurl/")).text() + "api/dmn/";
+    loadAvailableTypes();
 });
 /**
  * Global definition for verification results
@@ -48,244 +48,244 @@ const $checkBoxReverify = $(`
 let $reverifyElement = $(`<label>Reverify</label>`).append($checkBoxReverify);
 
 function handleStatus() {
-  let $dot = $('#backend-status');
-  if (inactiveBackend) {
-    verifierResults = {};
-    $dot.removeClass('active');
-    $dot.addClass('inactive');
-    alert(
-        "Error: The backend is currently not available. Please try again later.")
-  } else {
-    $dot.removeClass('inactive');
-    $dot.addClass('active');
-  }
-  cleanDmnVerifierRoot();
+    let $dot = $('#backend-status');
+    if (inactiveBackend) {
+        verifierResults = {};
+        $dot.removeClass('active');
+        $dot.addClass('inactive');
+        alert(
+            "Error: The backend is currently not available. Please try again later.")
+    } else {
+        $dot.removeClass('inactive');
+        $dot.addClass('active');
+    }
+    cleanDmnVerifierRoot();
 }
 
 function loadAvailableTypes() {
-  $.ajax({
-    timeout: 1000,
-    url: dmnApi + 'verification/types',
-    type: 'GET',
-    error: function (err) {
-      inactiveBackend = true;
-      types = [];
-      handleStatus();
-    },
-    success: function (data) {
-      inactiveBackend = false;
-      types = data;
-      // sort types by classification and name
-      types.sort(function (
-          /** VerificationType */ firstEl, /** VerificationType */ secondEl) {
-        if (firstEl.classification.name
-            === secondEl.classification.name) {
-          if (firstEl.niceName === secondEl.niceName) {
-            return 0;
-          }
-          return firstEl.niceName < secondEl.niceName ? -1 : 1;
-        } else if (firstEl.classification.name
-            < secondEl.classification.name) {
-          return -1;
-        } else {
-          return 1;
+    $.ajax({
+        timeout: 1000,
+        url: dmnApi + 'verification/types',
+        type: 'GET',
+        error: function (err) {
+            inactiveBackend = true;
+            types = [];
+            handleStatus();
+        },
+        success: function (data) {
+            inactiveBackend = false;
+            types = data;
+            // sort types by classification and name
+            types.sort(function (
+                /** VerificationType */ firstEl, /** VerificationType */ secondEl) {
+                if (firstEl.classification.name
+                    === secondEl.classification.name) {
+                    if (firstEl.niceName === secondEl.niceName) {
+                        return 0;
+                    }
+                    return firstEl.niceName < secondEl.niceName ? -1 : 1;
+                } else if (firstEl.classification.name
+                    < secondEl.classification.name) {
+                    return -1;
+                } else {
+                    return 1;
+                }
+            });
+            $verifierTypes = renderTypeOptions();
+            handleStatus();
         }
-      });
-      $verifierTypes = renderTypeOptions();
-      handleStatus();
-    }
-  });
+    });
 }
 
 function cleanDmnVerifierRoot() {
-  let $root = $('#root-dmn-verifier').empty();
-  let $header = $(`      
+    let $root = $('#root-dmn-verifier').empty();
+    let $header = $(`      
       <div id="dmn-verifier-header">
   `);
-  // check, if backend is available
-  if ($verifierTypes === undefined) {
-    $header.append($buttonReconnect);
-  } else {
-    $header.append($buttonClean);
-    $header.append($verifierTypes);
-    $verifierTypes.select2({
-      containerCssClass: "dmn-verifier-header-item dmn-verifier-select clickable",
-      placeholder: {
-        id: -1,
-        text: "All verifier"
-      },
-      width: 'resolve',
-      allowClear: true,
-    });
-    // Add Button Verifications
-    $header.append($buttonVerify);
-    $header.append($reverifyElement);
-    $select.empty();
-    $header.append($select);
-  }
+    // check, if backend is available
+    if ($verifierTypes === undefined) {
+        $header.append($buttonReconnect);
+    } else {
+        $header.append($buttonClean);
+        $header.append($verifierTypes);
+        $verifierTypes.select2({
+            containerCssClass: "dmn-verifier-header-item dmn-verifier-select clickable",
+            placeholder: {
+                id: -1,
+                text: "All verifier"
+            },
+            width: 'resolve',
+            allowClear: true,
+        });
+        // Add Button Verifications
+        $header.append($buttonVerify);
+        $header.append($reverifyElement);
+        $select.empty();
+        $header.append($select);
+    }
 
 // add header to root
-  $root.append($header);
-  $('.select2-search__field').css('width', '');
-  $root.append($(`<div id="dmn-verifier-content">`));
-  return $root;
+    $root.append($header);
+    $('.select2-search__field').css('width', '');
+    $root.append($(`<div id="dmn-verifier-content">`));
+    return $root;
 }
 
-function checkVerifications(showErrorMessage) {
-  if (!activeRequest) {
-    activeRequest = true;
-    saveSessionDmn();
-    //cleanDmnVerifierRoot();
-    setTimeout(function () {
-      getVerifications(showErrorMessage)
-    }, 20);
-  }
+async function checkVerifications(showErrorMessage) {
+    if (!activeRequest) {
+        activeRequest = true;
+        await saveSessionDmn();
+        //cleanDmnVerifierRoot();
+        setTimeout(function () {
+            getVerifications(showErrorMessage)
+        }, 20);
+    }
 }
 
-function getVerifications(showErrorMessage) {
-  dmnModeler.saveXML({format: true}, function (err, xml) {
+async function getVerifications(showErrorMessage) {
+    let err = undefined;
+    const {xml} = await dmnModeler.saveXML({format: true});
     if (err) {
-      return alert(err);
+        return alert(err);
     } else {
-      console.log('Requesting dmn verifications..');
+        console.log('Requesting dmn verifications..');
     }
     let apiPath = dmnApi + 'verification';
 
     // check, if a verifier is preselected
     if ($verifierTypes[0].selectedOptions[0] === undefined) {
-      apiPath += '?';
+        apiPath += '?';
     } else {
-      apiPath += "/types";
-      apiPath += '?';
-      for (let i = 0; i < $verifierTypes[0].selectedOptions.length; i++) {
-        apiPath += 'typeName=' + $verifierTypes[0].selectedOptions[i].value
-            + '&';
-      }
+        apiPath += "/types";
+        apiPath += '?';
+        for (let i = 0; i < $verifierTypes[0].selectedOptions.length; i++) {
+            apiPath += 'typeName=' + $verifierTypes[0].selectedOptions[i].value
+                + '&';
+        }
     }
     apiPath += 'token=' + getMetricToken();
 
     $.ajax({
-      timeout: 0, // ??
-      url: apiPath,
-      type: 'POST',
-      contentType: 'text/xml',
-      data: xml,
+        timeout: 0, // ??
+        url: apiPath,
+        type: 'POST',
+        contentType: 'text/xml',
+        data: xml,
 
-      error: function (err) {
-        activeRequest = false;
-        cleanDmnVerifierRoot();
-        if (showErrorMessage) {
-          alert(
-              'Error: There was a fatal error while parsing the xml of the dmn.');
-        }
-      },
-      success: function (data) {
-        cleanDmnVerifierRoot();
-        activeRequest = false;
-        console.log('successful dmn verification request:');
-        verifierResults = data;
-        // sort the list 1. classification, 2. size of entries
-        verifierResults.verifier.sort(function (
-            /** VerifierResult */ firstEl, /** VerifierResult */ secondEl) {
-          if (firstEl.type.classification.name
-              === secondEl.type.classification.name) {
-            if (firstEl.size === secondEl.size) {
-              return firstEl.type.name < secondEl.type.name ? -1 : 1;
-            } else if (firstEl.size < secondEl.size) {
-              return 1;
-            } else {
-              return -1;
+        error: function (err) {
+            activeRequest = false;
+            cleanDmnVerifierRoot();
+            if (showErrorMessage) {
+                alert(
+                    'Error: There was a fatal error while parsing the xml of the dmn.');
             }
-          } else if (firstEl.type.classification.name
-              < secondEl.type.classification.name) {
-            return -1;
-          } else {
-            return 1;
-          }
-        });
-        renderDmnVerifierOptions();
-      }
+        },
+        success: function (data) {
+            cleanDmnVerifierRoot();
+            activeRequest = false;
+            console.log('successful dmn verification request:');
+            verifierResults = data;
+            // sort the list 1. classification, 2. size of entries
+            verifierResults.verifier.sort(function (
+                /** VerifierResult */ firstEl, /** VerifierResult */ secondEl) {
+                if (firstEl.type.classification.name
+                    === secondEl.type.classification.name) {
+                    if (firstEl.size === secondEl.size) {
+                        return firstEl.type.name < secondEl.type.name ? -1 : 1;
+                    } else if (firstEl.size < secondEl.size) {
+                        return 1;
+                    } else {
+                        return -1;
+                    }
+                } else if (firstEl.type.classification.name
+                    < secondEl.type.classification.name) {
+                    return -1;
+                } else {
+                    return 1;
+                }
+            });
+            renderDmnVerifierOptions();
+        }
     });
-  });
 }
 
 function renderTypeOptions() {
-  let $select = $(`
+    let $select = $(`
     <select name="verifier[]" id="dmn-verifier-types" multiple="multiple"
     title="Preselect verifications"
       class="dmn-verifier-header-item dmn-verifier-select clickable">
   `);
-  let currentOpt = '';
-  let $curGroup;
-  for (let i = 0; i < types.length; i++) {
-    let bolNewGroup = currentOpt
-        !== types[i].classification.niceName;
-    if (bolNewGroup) {
-      if (currentOpt === currentOpt) {
-        $select.append($curGroup);
-      }
-      $curGroup = ($(
-          `<optgroup label="${types[i].classification.niceName}">
+    let currentOpt = '';
+    let $curGroup;
+    for (let i = 0; i < types.length; i++) {
+        let bolNewGroup = currentOpt
+            !== types[i].classification.niceName;
+        if (bolNewGroup) {
+            if (currentOpt === currentOpt) {
+                $select.append($curGroup);
+            }
+            $curGroup = ($(
+                `<optgroup label="${types[i].classification.niceName}">
       `));
-      currentOpt = types[i].classification.niceName;
-    }
-    $curGroup.append($(`
+            currentOpt = types[i].classification.niceName;
+        }
+        $curGroup.append($(`
       <option value="${types[i].name}">${types[i].niceName}</option>`
-    ));
+        ));
 
-  }
-  $select.append($curGroup);
-  return $select;
+    }
+    $select.append($curGroup);
+    return $select;
 }
 
 function renderDmnVerifierOptions() {
-  cleanHighlightFunction();
-  let currentOpt = '';
-  let $curGroup;
-  let selOpt = false;
-  $select.append($(`<option>Select a verifier</option>`));
-  if (lastTypeSelect && lastTypeSelect === 'all') {
-    $select.append(
-        $(`<option value="all" selected>All verification results</option>`));
-    selOpt = true;
-  } else {
-    $select.append($(`<option value="all">All verification results</option>`));
-  }
-  for (let i = 0; i < verifierResults.verifier.length; i++) {
-    let verifier = verifierResults.verifier[i];
-    let bolNewGroup = currentOpt
-        !== verifier.type.classification.niceName;
-    if (bolNewGroup) {
-      if (currentOpt === currentOpt) {
-        $select.append($curGroup);
-      }
-      $curGroup = ($(`
+    cleanHighlightFunction();
+    let currentOpt = '';
+    let $curGroup;
+    let selOpt = false;
+    $select.append($(`<option>Select a verifier</option>`));
+    if (lastTypeSelect && lastTypeSelect === 'all') {
+        $select.append(
+            $(`<option value="all" selected>All verification results</option>`));
+        selOpt = true;
+    } else {
+        $select.append($(`<option value="all">All verification results</option>`));
+    }
+    for (let i = 0; i < verifierResults.verifier.length; i++) {
+        let verifier = verifierResults.verifier[i];
+        let bolNewGroup = currentOpt
+            !== verifier.type.classification.niceName;
+        if (bolNewGroup) {
+            if (currentOpt === currentOpt) {
+                $select.append($curGroup);
+            }
+            $curGroup = ($(`
           <optgroup label="${verifier.type.classification.niceName}">
       `));
-      currentOpt = verifier.type.classification.niceName;
-    }
-    let $option;
-    if (verifierResults.verifier.length === 1 ||
-        lastTypeSelect !== undefined && lastTypeSelect === verifier.type.name) {
-      selOpt = true;
-      $option = $(`
+            currentOpt = verifier.type.classification.niceName;
+        }
+        let $option;
+        if (verifierResults.verifier.length === 1 ||
+            lastTypeSelect !== undefined && lastTypeSelect === verifier.type.name) {
+            selOpt = true;
+            $option = $(`
         <option value="${verifier.type.name}" selected>${verifier.type.niceName} (${verifier.size})</option>
       `);
-    } else {
-      $option = $(`
+        } else {
+            $option = $(`
         <option value="${verifier.type.name}">${verifier.type.niceName} (${verifier.size})</option>
       `);
+        }
+        if (verifier.size === 0) {
+            $option.css('color', '#999')
+        }
+        $curGroup.append($option);
     }
-    if (verifier.size === 0) {
-      $option.css('color', '#999')
-    }
-    $curGroup.append($option);
-  }
-  $select.append($curGroup);
+    $select.append($curGroup);
 
-  if (selOpt) {
-    renderVerifierResult($select[0].selectedOptions[0]);
-  }
+    if (selOpt) {
+        renderVerifierResult($select[0].selectedOptions[0]);
+    }
 }
 
 /**
@@ -293,28 +293,28 @@ function renderDmnVerifierOptions() {
  * @param {Option} verifierSelect
  */
 function renderVerifierResult(verifierSelect) {
-  cleanHighlightFunction();
-  let $verifierContent = $('#dmn-verifier-content');
-  $verifierContent.empty();
-  $verifierContent.css('display', 'none');
-  if (verifierSelect.value === 'all') {
-    lastTypeSelect = 'all';
-    for (const [key, option] of Object.entries($select[0].options)) {
-      let verifier = findVerifierByName(option.value);
-      if (verifier && verifier.size > 0) {
-        renderVerifier(verifier);
-      }
-    }
-  } else {
-    let verifier = findVerifierByName(verifierSelect.value);
-    if (verifier === undefined) {
-      lastTypeSelect = undefined;
+    cleanHighlightFunction();
+    let $verifierContent = $('#dmn-verifier-content');
+    $verifierContent.empty();
+    $verifierContent.css('display', 'none');
+    if (verifierSelect.value === 'all') {
+        lastTypeSelect = 'all';
+        for (const [key, option] of Object.entries($select[0].options)) {
+            let verifier = findVerifierByName(option.value);
+            if (verifier && verifier.size > 0) {
+                renderVerifier(verifier);
+            }
+        }
     } else {
-      lastTypeSelect = verifier.type.name;
-      renderVerifier(verifier);
+        let verifier = findVerifierByName(verifierSelect.value);
+        if (verifier === undefined) {
+            lastTypeSelect = undefined;
+        } else {
+            lastTypeSelect = verifier.type.name;
+            renderVerifier(verifier);
+        }
     }
-  }
-  $verifierContent.show();
+    $verifierContent.show();
 }
 
 /**
@@ -322,26 +322,26 @@ function renderVerifierResult(verifierSelect) {
  * @param {VerifierResult} verifier
  */
 function renderVerifier(verifier) {
-  let $verifierContent = $('#dmn-verifier-content');
-  let $verifierType = $(`<div class="verifier-type"></div>`);
-  let $verifierEntries = $(`<div class="verifier-entries"></div>`);
+    let $verifierContent = $('#dmn-verifier-content');
+    let $verifierType = $(`<div class="verifier-type"></div>`);
+    let $verifierEntries = $(`<div class="verifier-entries"></div>`);
 
-  //  name and description of verifier
-  $verifierType.append($(`
+    //  name and description of verifier
+    $verifierType.append($(`
     <div class="verifier-type-name"><h2>${verifier.type.niceName}</h2></div>
   `));
-  $verifierType.append($(`
+    $verifierType.append($(`
     <div class="verifier-type-description"><p>${verifier.type.description}</p></div>
   `));
 
-  // Add entries if min 1 result
-  if (verifier.entries.length > 0) {
-    for (let i = 0; i < verifier.entries.length; i++) {
-      $verifierEntries.append(renderVerificationEntry(verifier.entries[i]));
+    // Add entries if min 1 result
+    if (verifier.entries.length > 0) {
+        for (let i = 0; i < verifier.entries.length; i++) {
+            $verifierEntries.append(renderVerificationEntry(verifier.entries[i]));
+        }
     }
-  }
-  $verifierContent.append($verifierType);
-  $verifierContent.append($verifierEntries);
+    $verifierContent.append($verifierType);
+    $verifierContent.append($verifierEntries);
 }
 
 /**
@@ -349,18 +349,18 @@ function renderVerifier(verifier) {
  * @param {VerificationEntry} verificationEntry
  */
 function renderVerificationEntry(verificationEntry) {
-  let $entryContainer = $(
-      `<div id="ver-entry-${verificationEntry.id}" class="verification-container"></div>`);
-  $entryContainer.append($(`
+    let $entryContainer = $(
+        `<div id="ver-entry-${verificationEntry.id}" class="verification-container"></div>`);
+    $entryContainer.append($(`
       <span class="dmn-verification-icon dmn-${verificationEntry.verificationClassification}"/>
   `));
-  $entryContainer.append($(`
+    $entryContainer.append($(`
       <div class="verification-message">${verificationEntry.message}</div>
   `));
-  let $fixButtons = $(`<div class="verification-container-fix-buttons"></div>`);
-  renderFixButtons($fixButtons, verificationEntry);
-  $entryContainer.append($fixButtons);
-  return $entryContainer;
+    let $fixButtons = $(`<div class="verification-container-fix-buttons"></div>`);
+    renderFixButtons($fixButtons, verificationEntry);
+    $entryContainer.append($fixButtons);
+    return $entryContainer;
 }
 
 /**
@@ -369,17 +369,17 @@ function renderVerificationEntry(verificationEntry) {
  * @param {VerificationEntry} verificationEntry
  */
 function renderFixButtons($fixButtons, verificationEntry) {
-  for (let i = 0; i < verificationEntry.verificationFixes.length; i++) {
-    let fix = verificationEntry.verificationFixes[i];
-    let $fixButton = $(`
+    for (let i = 0; i < verificationEntry.verificationFixes.length; i++) {
+        let fix = verificationEntry.verificationFixes[i];
+        let $fixButton = $(`
       <button class="verification-fix-button clickable">${fix.fixName}</button>
     `);
-    $fixButton.on('click', function () {
-      performVerificationFix(verificationEntry, fix, verificationEntry.id,
-          $fixButton);
-    });
-    $fixButtons.append($fixButton);
-  }
+        $fixButton.on('click', function () {
+            performVerificationFix(verificationEntry, fix, verificationEntry.id,
+                $fixButton);
+        });
+        $fixButtons.append($fixButton);
+    }
 }
 
 /**
@@ -389,24 +389,24 @@ function renderFixButtons($fixButtons, verificationEntry) {
  * @return VerifierResult
  */
 function findVerifierByName(verifierName) {
-  for (let i = 0; i < verifierResults.verifier.length; i++) {
-    if (verifierResults.verifier[i].type.name === verifierName) {
-      return verifierResults.verifier[i];
+    for (let i = 0; i < verifierResults.verifier.length; i++) {
+        if (verifierResults.verifier[i].type.name === verifierName) {
+            return verifierResults.verifier[i];
+        }
     }
-  }
-  return undefined;
+    return undefined;
 }
 
 function getMetricToken() {
-  var token = localStorage.getItem('metricToken');
-  if (token === null || token === 'undefined') {
-    var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
-    var charactersLength = characters.length;
-    token = '';
-    for (var i = 0; i < 20; i++) {
-      token += characters.charAt(Math.floor(Math.random() * charactersLength));
+    var token = localStorage.getItem('metricToken');
+    if (token === null || token === 'undefined') {
+        var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+        var charactersLength = characters.length;
+        token = '';
+        for (var i = 0; i < 20; i++) {
+            token += characters.charAt(Math.floor(Math.random() * charactersLength));
+        }
+        localStorage.setItem('metricToken', token);
     }
-    localStorage.setItem('metricToken', token);
-  }
-  return token;
+    return token;
 }
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 d768b16d..b4e22510 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifierActions.js
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifierActions.js
@@ -58,7 +58,7 @@ function getRandomNewPointInCycle(sourceX, sourceY, w, offsetX, offsetY) {
  * @param id fix row id
  * @param $callerButton
  */
-function performVerificationFix(verificationEntry, fix, id, $callerButton) {
+async function performVerificationFix(verificationEntry, fix, id, $callerButton) {
   console.log("FIX", fix);
   // highlight row
   cleanHighlightFunction();
@@ -89,7 +89,7 @@ function performVerificationFix(verificationEntry, fix, id, $callerButton) {
   if (cud) {
     $callerButton.css('display', 'none');
     if ($checkBoxReverify[0].checked) {
-      checkVerifications();
+      await checkVerifications();
     }
   }
   performHighlightFunction();
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 620e40e6..bcc5a491 100644
--- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js
+++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnViewer.js
@@ -1,15 +1,15 @@
 let $container = $('.editor-container');
 let $tabs = $('.editor-tabs');
 let CLASS_NAMES = {
-  drd: 'dmn-icon-lasso-tool',
-  decisionTable: 'dmn-icon-decision-table',
-  literalExpression: 'dmn-icon-literal-expression'
+    drd: 'dmn-icon-lasso-tool',
+    decisionTable: 'dmn-icon-decision-table',
+    literalExpression: 'dmn-icon-literal-expression'
 };
 
 $tabs.delegate('.tab', 'click', function (e) {
-  var viewIdx = parseInt(this.getAttribute('data-id'), 10);
-  var view = dmnModeler.getViews()[viewIdx];
-  dmnModeler.open(view);
+    var viewIdx = parseInt(this.getAttribute('data-id'), 10);
+    var view = dmnModeler.getViews()[viewIdx];
+    dmnModeler.open(view);
 });
 
 let eventsDefinedDrd = false;
@@ -21,79 +21,72 @@ let dmnModelerHeight = $(window).height() / 2.5;
  * @type {DmnJS}
  */
 let dmnModeler = new DmnJS({
-  container: $container,
-  height: dmnModelerHeight,
-  keyboard: {
-    bindTo: window
-  }
+    container: $container,
+    height: dmnModelerHeight,
+    keyboard: {
+        bindTo: window
+    }
 });
 
-dmnModeler.on('views.changed', function (event) {
-      // save dmn in Session
-      saveSessionDmn();
-      var {views, activeView} = event;
-      // clear tabs
-      $tabs.empty();
-      // add fullscreen
-      $tabs.append($(`
+dmnModeler.on('views.changed', async function (event) {
+        // save dmn in Session
+        await saveSessionDmn();
+        var {views, activeView} = event;
+        // clear tabs
+        $tabs.empty();
+        // add fullscreen
+        $tabs.append($(`
       <div class="toggle-fullscreen clickable" onclick="toggleFullscreen()">
       </div>
     `));
-      // add tabs
-      views.forEach(function (v, idx) {
-        const className = CLASS_NAMES[v.type];
-        var tab = $(`
+        // add tabs
+        views.forEach(function (v, idx) {
+            const className = CLASS_NAMES[v.type];
+            var tab = $(`
             <div class="tab clickable ${v === activeView ? 'active' : ''}" 
             data-id="${idx}" id="tab-dec-${v.element.id}">
               <span class="${className}"></span>
               ${v.element.name || v.element.id}
             </div>
           `);
-        $tabs.append(tab);
-      });
-      const eventBus = dmnModeler.getActiveViewer().get("eventBus");
-      if (!eventsDefinedDrd) {
-        eventsDefinedDrd = true;
-        eventBus.on(
-            "element.changed",
-            1200,
-            function (ev, b) {
-              if (!inactiveBackend && renderHighlightFunction.length === 0
-                  && $checkBoxReverify[0].checked) {
-                checkVerifications();
-              }
-            }, this);
-      }
-      if (!eventsDefinedTable && ("addInput" in eventBus._listeners)) {
-        eventsDefinedTable = true;
-        eventBus.on(
-            ["elements.changed"],
-            1200,
-            function (ev, b) {
-              if (!inactiveBackend && renderHighlightFunction.length === 0
-                  && $checkBoxReverify[0].checked) {
-                checkVerifications();
-              }
-            }, this);
-      }
-      performHighlightFunction();
+            $tabs.append(tab);
+        });
+        const eventBus = dmnModeler.getActiveViewer().get("eventBus");
+        if (!eventsDefinedDrd) {
+            eventsDefinedDrd = true;
+            eventBus.on(
+                "element.changed",
+                1200,
+                function (ev, b) {
+                    if (!inactiveBackend && renderHighlightFunction.length === 0
+                        && $checkBoxReverify[0].checked) {
+                        checkVerifications();
+                    }
+                }, this);
+        }
+        if (!eventsDefinedTable && ("addInput" in eventBus._listeners)) {
+            eventsDefinedTable = true;
+            eventBus.on(
+                ["elements.changed"],
+                1200,
+                function (ev, b) {
+                    if (!inactiveBackend && renderHighlightFunction.length === 0
+                        && $checkBoxReverify[0].checked) {
+                        checkVerifications();
+                    }
+                }, this);
+        }
+        performHighlightFunction();
     }
 );
 
 /**
  * Save diagram contents and print them to the console.
  */
-function exportDiagram() {
-  let retXml = undefined;
-  dmnModeler.saveXML({format: false}, function (err, xml) {
-    if (err) {
-      console.log('could not export DMN 1.1 diagram');
-    } else {
-      console.log('exporting DMN 1.1 diagram..');
-      retXml = xml;
-    }
-  });
-  return retXml;
+async function exportDiagram() {
+    const {xml} = await dmnModeler.saveXML({format: true})
+    console.log('exporting DMN 1.3 diagram..');
+    return xml;
 }
 
 /**
@@ -101,39 +94,35 @@ function exportDiagram() {
  *
  * @param {String} dmnXML diagram to display
  */
-function openDiagram(dmnXML) {
-  // clean
-  cleanDmnVerifierRoot();
-  // import diagram
-  dmnModeler.importXML(dmnXML, function (err) {
-    if (err) {
-      return console.error('could not open DMN');
-    }
+async function openDiagram(dmnXML) {
+    // clean
+    cleanDmnVerifierRoot();
+    // import diagram
+    await dmnModeler.importXML(dmnXML);
     // fetch currently active view
     var activeView = dmnModeler.getActiveView();
     // apply initial logic in DRD view
     if (activeView.type === 'drd') {
-      var activeEditor = dmnModeler.getActiveViewer();
-      // access active editor components
-      var canvas = activeEditor.get('canvas');
-      // zoom to fit full viewport
-      canvas.zoom('fit-viewport');
+        var activeEditor = dmnModeler.getActiveViewer();
+        // access active editor components
+        var canvas = activeEditor.get('canvas');
+        // zoom to fit full viewport
+        canvas.zoom('fit-viewport');
     }
-  });
 }
 
 function toggleFullscreen() {
-  $(".dmn-js-parent").toggleClass('fullscreen');
-  $("#root-dmn-verifier").toggleClass('hidden');
-  $("#dmn-top").toggleClass('hidden');
-  $(".editor-tabs").toggleClass('fullscreen-tabs');
-  // calc height
-  if ($(".dmn-js-parent").hasClass('fullscreen')) {
-    $(".dmn-js-parent").css('height', '');
-  } else {
-    let dmnModelerHeight = $(window).height() / 2.5;
-    $(".dmn-js-parent").css('height', dmnModelerHeight + 'px');
-  }
+    $(".dmn-js-parent").toggleClass('fullscreen');
+    $("#root-dmn-verifier").toggleClass('hidden');
+    $("#dmn-top").toggleClass('hidden');
+    $(".editor-tabs").toggleClass('fullscreen-tabs');
+    // calc height
+    if ($(".dmn-js-parent").hasClass('fullscreen')) {
+        $(".dmn-js-parent").css('height', '');
+    } else {
+        let dmnModelerHeight = $(window).height() / 2.5;
+        $(".dmn-js-parent").css('height', dmnModelerHeight + 'px');
+    }
 }
 
 /**
@@ -141,29 +130,29 @@ function toggleFullscreen() {
  * @param id
  */
 function openViewWithId(id) {
-  var views = dmnModeler.getViews();
-  views.forEach(function (view) {
-    if (view.element.id === id) {
-      dmnModeler.open(view);
-    }
-  });
+    var views = dmnModeler.getViews();
+    views.forEach(function (view) {
+        if (view.element.id === id) {
+            dmnModeler.open(view);
+        }
+    });
 }
 
 // -----
 let renderHighlightFunction = [];
 
 function performHighlightFunction() {
-  for (let i = 0; i < renderHighlightFunction.length; i++) {
-    renderHighlightFunction[i].highlight();
-  }
+    for (let i = 0; i < renderHighlightFunction.length; i++) {
+        renderHighlightFunction[i].highlight();
+    }
 }
 
 function cleanHighlightFunction() {
-  $('.verification-container').removeClass('highlight-soft');
-  for (let i = 0; i < renderHighlightFunction.length; i++) {
-    renderHighlightFunction[i].clean();
-  }
-  renderHighlightFunction = [];
+    $('.verification-container').removeClass('highlight-soft');
+    for (let i = 0; i < renderHighlightFunction.length; i++) {
+        renderHighlightFunction[i].clean();
+    }
+    renderHighlightFunction = [];
 }
 
 /**
@@ -171,9 +160,9 @@ function cleanHighlightFunction() {
  * @param {Array<VerificationEntryElement>} elements
  */
 function highlightMultipleDecisions(elements) {
-  elements.forEach(function (el) {
-    highlightSingleDecision(el.identifier['decisionId']);
-  });
+    elements.forEach(function (el) {
+        highlightSingleDecision(el.identifier['decisionId']);
+    });
 }
 
 /**
@@ -181,12 +170,12 @@ function highlightMultipleDecisions(elements) {
  * @param decisionId
  */
 function highlightSingleDecision(decisionId) {
-  // node
-  let $decisionNode = $(
-      '[data-element-id=' + decisionId + '] > g > rect');
-  $decisionNode.css('fill', 'darkred');
-  // tab
-  $('#tab-dec-' + decisionId).addClass('highlight');
+    // node
+    let $decisionNode = $(
+        '[data-element-id=' + decisionId + '] > g > rect');
+    $decisionNode.css('fill', 'darkred');
+    // tab
+    $('#tab-dec-' + decisionId).addClass('highlight');
 }
 
 /**
@@ -194,9 +183,9 @@ function highlightSingleDecision(decisionId) {
  * @param {Array<VerificationEntryElement>} elements
  */
 function cleanMultipleDecisions(elements) {
-  elements.forEach(function (el) {
-    cleanSingleDecision(el.identifier['decisionId']);
-  });
+    elements.forEach(function (el) {
+        cleanSingleDecision(el.identifier['decisionId']);
+    });
 }
 
 /**
@@ -204,12 +193,12 @@ function cleanMultipleDecisions(elements) {
  * @param decisionId
  */
 function cleanSingleDecision(decisionId) {
-  // node
-  let $decisionNode = $(
-      '[data-element-id=' + decisionId + '] > g > rect');
-  $decisionNode.css('fill', 'white');
-  // tab
-  $('#tab-dec-' + decisionId).removeClass('highlight');
+    // node
+    let $decisionNode = $(
+        '[data-element-id=' + decisionId + '] > g > rect');
+    $decisionNode.css('fill', 'white');
+    // tab
+    $('#tab-dec-' + decisionId).removeClass('highlight');
 }
 
 /**
@@ -217,22 +206,22 @@ function cleanSingleDecision(decisionId) {
  * @param {Array<VerificationEntryElement>}elements
  */
 function highlightRules(elements) {
-  renderHighlightFunction.push({
-    highlight: function () {
-      highlightMultipleDecisions(elements);
-      elements.forEach(function (el) {
-        $('[data-row-id=' + el.identifier['ruleId'] + ']').addClass(
-            'highlight');
-      });
-    },
-    clean: function () {
-      cleanMultipleDecisions(elements);
-      elements.forEach(function (el) {
-        $('[data-row-id=' + el.identifier['ruleId'] + ']').removeClass(
-            'highlight');
-      });
-    }
-  });
+    renderHighlightFunction.push({
+        highlight: function () {
+            highlightMultipleDecisions(elements);
+            elements.forEach(function (el) {
+                $('[data-row-id=' + el.identifier['ruleId'] + ']').addClass(
+                    'highlight');
+            });
+        },
+        clean: function () {
+            cleanMultipleDecisions(elements);
+            elements.forEach(function (el) {
+                $('[data-row-id=' + el.identifier['ruleId'] + ']').removeClass(
+                    'highlight');
+            });
+        }
+    });
 }
 
 /**
@@ -241,22 +230,22 @@ function highlightRules(elements) {
  * @param {string} identifier
  */
 function highlightColumns(elements, identifier) {
-  renderHighlightFunction.push({
-    highlight: function () {
-      highlightMultipleDecisions(elements);
-      elements.forEach(function (el) {
-        $('[data-col-id=' + el.identifier[identifier] + ']').addClass(
-            'highlight');
-      });
-    },
-    clean: function () {
-      cleanMultipleDecisions(elements);
-      elements.forEach(function (el) {
-        $('[data-col-id=' + el.identifier[identifier] + ']').removeClass(
-            'highlight');
-      });
-    }
-  });
+    renderHighlightFunction.push({
+        highlight: function () {
+            highlightMultipleDecisions(elements);
+            elements.forEach(function (el) {
+                $('[data-col-id=' + el.identifier[identifier] + ']').addClass(
+                    'highlight');
+            });
+        },
+        clean: function () {
+            cleanMultipleDecisions(elements);
+            elements.forEach(function (el) {
+                $('[data-col-id=' + el.identifier[identifier] + ']').removeClass(
+                    'highlight');
+            });
+        }
+    });
 }
 
 /**
@@ -265,22 +254,22 @@ function highlightColumns(elements, identifier) {
  * @param {string} identifier
  */
 function highlightDataEntries(elements, identifier) {
-  renderHighlightFunction.push({
-    highlight: function () {
-      highlightMultipleDecisions(elements);
-      elements.forEach(function (el) {
-        $('[data-element-id=' + el.identifier[identifier] + ']').addClass(
-            'highlight');
-      });
-    },
-    clean: function () {
-      cleanMultipleDecisions(elements);
-      elements.forEach(function (el) {
-        $('[data-element-id=' + el.identifier[identifier] + ']').removeClass(
-            'highlight');
-      });
-    }
-  });
+    renderHighlightFunction.push({
+        highlight: function () {
+            highlightMultipleDecisions(elements);
+            elements.forEach(function (el) {
+                $('[data-element-id=' + el.identifier[identifier] + ']').addClass(
+                    'highlight');
+            });
+        },
+        clean: function () {
+            cleanMultipleDecisions(elements);
+            elements.forEach(function (el) {
+                $('[data-element-id=' + el.identifier[identifier] + ']').removeClass(
+                    'highlight');
+            });
+        }
+    });
 }
 
 /**
@@ -288,20 +277,20 @@ function highlightDataEntries(elements, identifier) {
  * @param {Array<VerificationEntryElement>}elements
  */
 function highlightInputData(elements) {
-  renderHighlightFunction.push({
-    highlight: function () {
-      elements.forEach(function (el) {
-        $('[data-element-id=' + el.identifier['inputDataId'] + '] > g > rect')
-        .css('fill', 'darkred');
-      });
-    },
-    clean: function () {
-      elements.forEach(function (el) {
-        $('[data-element-id=' + el.identifier['inputDataId'] + '] > g > rect')
-        .css('fill', 'white');
-      });
-    }
-  });
+    renderHighlightFunction.push({
+        highlight: function () {
+            elements.forEach(function (el) {
+                $('[data-element-id=' + el.identifier['inputDataId'] + '] > g > rect')
+                    .css('fill', 'darkred');
+            });
+        },
+        clean: function () {
+            elements.forEach(function (el) {
+                $('[data-element-id=' + el.identifier['inputDataId'] + '] > g > rect')
+                    .css('fill', 'white');
+            });
+        }
+    });
 }
 
 /**
@@ -309,13 +298,13 @@ function highlightInputData(elements) {
  * @param {Array<VerificationEntryElement>}elements
  */
 function highlightDecision(elements) {
-  console.log(elements);
-  renderHighlightFunction.push({
-    highlight: function () {
-      highlightMultipleDecisions(elements)
-    },
-    clean: function () {
-      cleanMultipleDecisions(elements);
-    }
-  });
+    console.log(elements);
+    renderHighlightFunction.push({
+        highlight: function () {
+            highlightMultipleDecisions(elements)
+        },
+        clean: function () {
+            cleanMultipleDecisions(elements);
+        }
+    });
 }
-- 
GitLab