From 74104922b65d06862455780a7378a09bff857458 Mon Sep 17 00:00:00 2001
From: Stephan Porada <sporada@uni-bielefeld.de>
Date: Fri, 26 Jun 2020 09:51:10 +0200
Subject: [PATCH] Some documentation

---
 web/app/static/js/nopaque.lists.js | 90 +++++++++++++++---------------
 1 file changed, 46 insertions(+), 44 deletions(-)

diff --git a/web/app/static/js/nopaque.lists.js b/web/app/static/js/nopaque.lists.js
index 64925d77..d7825790 100644
--- a/web/app/static/js/nopaque.lists.js
+++ b/web/app/static/js/nopaque.lists.js
@@ -134,11 +134,12 @@ class ResultsList extends List {
   this.currentExpertTokenElements = {}; // all token elements which have added
   // classes like chip and hoverable for expert view. Collected
   //here to delete later on
-  this.addToSubResultsStatus = {};
-  this.addToSubResultsIdsToShow = new Set();
+  this.addToSubResultsStatus = {};  // holds True/false for check buttons used to add matches tu sub-results. If checked, it is True. If unchecked, it is false. Buttons for this have the class add. Those little round check buttons.
+  this.addToSubResultsIdsToShow = new Set();  // If check button is pressed its corresponding data_index is saved in this set. The set is shown to the user.
   }
 
   // handels interactionElements during a pagination navigation
+  // loops over interactionElements and executes callback functions accordingly
   pageChangeEventInteractionHandler(interactionElements) {
     // get elements to check thier status
     for (let interaction of interactionElements) {
@@ -147,18 +148,15 @@ class ResultsList extends List {
           let f_on = interaction.bindThisToCallback("on");
           let args_on = interaction.callbacks.on.args;
           f_on(...args_on);
-          console.log("ON TRIGGERED");
         } else {
           let f_off = interaction.bindThisToCallback("off");
           let args_off = interaction.callbacks.off.args;
           f_off(...args_off);
-          console.log("OFF TRIGGERED");
         }
       } else {
         let f = interaction.bindThisToCallback("noCheck");
         let args = interaction.callbacks.noCheck.args;
         f(...args);
-        console.log("noCheck activated");
       }
     }
   }
@@ -179,7 +177,7 @@ class ResultsList extends List {
   }
 
   // ###### Functions to add one match to a sub-results ######
-  // activate add button
+  // activate the add buttons
   activateAddToSubResults() {
     subResultsIdListElement.classList.remove("hide");
     subResultsCreateElement.classList.remove("hide");
@@ -188,7 +186,7 @@ class ResultsList extends List {
       addToSubResultsBtn.classList.remove("hide");
     }
   }
-  // deactivate add button
+  // deactivate the add buttons
   deactivateAddToSubResults() {
     subResultsIdListElement.classList.add("hide");
     subResultsCreateElement.classList.add("hide");
@@ -198,53 +196,59 @@ class ResultsList extends List {
     }
   }
 
+  // Used in addToSubResults and inspect to toggle the design of the check
+  // buttons according to its checked unchecked status.
   helperActivateBtn(btn) {
-    console.log(btn);
     btn.classList.remove("grey");
     btn.classList.add("green");
     btn.innerText = "check";
   }
 
+  // Used in addToSubResults and inspect to toggle the design of the check
+  // buttons according to its checked unchecked status.
   helperDeactivateBtn(btn) {
-    console.log(btn);
     btn.classList.remove("green");
     btn.classList.add("grey");
     btn.innerText = "add";
   }
 
-  // add match id on click to a List of marked matches for SubSubcorpora
-  // remove match id on click from same list
+  // Either adds or removes a match to the sub-results. For this it checks
+  // onclick if the current button has been checked or not. For this the
+  // function checks if its status in addToSubResultsStatus is either flase or
+  // true. Adds match to sub-results if status is false if status is true it
+  // removes it.
   addToSubResults(dataIndex, tableCall=true) {
-    console.log(event.target);
-    let textarea = subResultsIdListElement.getElementsByTagName("textarea")[0]
+    let textarea = subResultsIdListElement.getElementsByTagName("textarea")[0];
     if (!this.addToSubResultsStatus[dataIndex]
         || this.addToSubResultsStatus === undefined) {
-      // add button is activated
-      nopaque.flash(`[Match ${dataIndex + 1}] Marked for Sub-Results!`);
+      // add button is activated because status is either false or undefined
       this.helperActivateBtn(event.target);
-      this.addToSubResultsStatus[dataIndex] = true;
-      this.addToSubResultsIdsToShow.add(dataIndex + 1);
-      textarea.innerText = [...this.addToSubResultsIdsToShow].sort(function(a, b){return a-b}).join(", ");
-      M.textareaAutoResize(textarea);
+      this.addToSubResultsStatus[dataIndex] = true;  // sets status to true
+      this.addToSubResultsIdsToShow.add(dataIndex + 1);  // + 1 because user does not see zero indexd data indexes
+      textarea.innerText = [...this.addToSubResultsIdsToShow].sort(function(a, b){return a-b}).join(", ");  // automaticalle sorts ids into the textarea in ascending order
+      M.textareaAutoResize(textarea);  // after an insert textarea has to be resized manually
     } else if (this.addToSubResultsStatus[dataIndex]) {
-      // add button is deactivated
-      nopaque.flash(`[Match ${dataIndex + 1}] Unmarked for Sub-results!`);
+      // add button is deactivated because status is true
       this.helperDeactivateBtn(event.target);
-      this.addToSubResultsStatus[dataIndex] = false;
-      this.addToSubResultsIdsToShow.delete(dataIndex + 1);
-      textarea.innerText = [...this.addToSubResultsIdsToShow].sort(function(a, b){return a-b}).join(", ");
-      M.textareaAutoResize(textarea);
+      this.addToSubResultsStatus[dataIndex] = false;  // sets status to false
+      this.addToSubResultsIdsToShow.delete(dataIndex + 1);  // + 1 because user does not see zero indexd data indexes
+      textarea.innerText = [...this.addToSubResultsIdsToShow].sort(function(a, b){return a-b}).join(", ");  // automaticalle sorts ids into the textarea in ascending order
+      M.textareaAutoResize(textarea); // after an insert textarea has to be resized manually
     }
+    // Toggles the create button accoring to the number of ids in addToSubResultsIdsToShow
     if ([...this.addToSubResultsIdsToShow].length > 0) {
       subResultsCreateElement.firstElementChild.classList.remove("disabled");
     } else if ([...this.addToSubResultsIdsToShow].length === 0) {
       subResultsCreateElement.firstElementChild.classList.add("disabled");
     }
+    // After a match as been added or removed the export button will be
+    // disabled because the sub-results have been alterd and have to be built //// again.
     subResultsExportElement.classList.add("disabled");
-    // also activate/deactivate buttons in the table accordingly if btn in inspect was activated/deactivated
+    // Also activate/deactivate buttons in the table/jsList results accordingly
+    //if button in inspect was activated/deactivated.
+    // This part only runs if tableCall is false.
     if (!tableCall) {
-      let tableAddBtn = document.getElementById("query-results").querySelectorAll(`[data-index="${dataIndex}"]`)[0].getElementsByClassName('add')[0].firstElementChild;
-      console.log("TABLECALL", tableAddBtn);
+      let tableAddBtn = document.getElementById("query-results").querySelectorAll(`[data-index="${dataIndex}"]`)[0].getElementsByClassName('add')[0].firstElementChild; // gets the add button from the list view
       if (this.addToSubResultsStatus[dataIndex]) {
         this.helperActivateBtn(tableAddBtn);
       } else {
@@ -253,8 +257,8 @@ class ResultsList extends List {
     }
   }
 
-  // triggers emit to get full match context from server for a number of
-  // matches identified by their data_index
+  // Triggers emit to get full match context from server for a number of
+  // matches identified by their data_index.
   getMatchWithContext(dataIndexes, type) {
     let tmp_first_cpos = [];
     let tmp_last_cpos = [];
@@ -289,30 +293,30 @@ class ResultsList extends List {
   // gets result cpos infos for one dataIndex (list of length 1) to send back to
   // the server
   inspect(dataIndex, type) {
+    // get result infos from server and show them in context modal
     this.contextId = dataIndex[0];
     let contextResultsElement;
     contextResultsElement = document.getElementById("context-results");
     contextResultsElement.innerHTML = "";  // clear it from old inspects
     this.getMatchWithContext(dataIndex, type);
     contextModal.open();
-    // add a button to add this match to sub results
+    // add a button to add this match to sub results with onclick event
     let classes = `btn-floating btn waves-effect` +
                   `waves-light grey right`
     let addToSubResultsIdsBtn = document.createElement("a");
     addToSubResultsIdsBtn.setAttribute("class", classes + ` add`);
     addToSubResultsIdsBtn.innerHTML = '<i class="material-icons">add</i>';
-    addToSubResultsIdsBtn.onclick= (event) => {this.addToSubResults(dataIndex[0], false)};
+    addToSubResultsIdsBtn.onclick= () => {this.addToSubResults(dataIndex[0], false)};
+    // checks if a button has already been added to the inspect modal and removes it
     if (addToSubResultsFromInspectElement.children.length > 0) {
       addToSubResultsFromInspectElement.firstElementChild.remove();
     }
+    // Changes the design of the add button according to its checked status
+    // upon opening the inspect modal.
     if (this.addToSubResultsStatus[dataIndex[0]]) {
-      addToSubResultsIdsBtn.classList.remove("grey");
-      addToSubResultsIdsBtn.classList.add("green");
-      addToSubResultsIdsBtn.firstElementChild.innerText = "check";
+      this.helperActivateBtn(addToSubResultsIdsBtn.firstElementChild);
     } else if (!this.addToSubResultsStatus[dataIndex[0]]) {
-      addToSubResultsIdsBtn.classList.remove("green");
-      addToSubResultsIdsBtn.classList.add("grey");
-      addToSubResultsIdsBtn.firstElementChild.innerText = "add";
+      this.helperDeactivateBtn(addToSubResultsIdsBtn.firstElementChild);
     }
     addToSubResultsFromInspectElement.appendChild(addToSubResultsIdsBtn);
   }
@@ -326,6 +330,8 @@ class ResultsList extends List {
     return template.content.firstChild;
     }
 
+  // Used as a callback to handle incoming match context results when inspect
+  // has been used.
   showMatchContext(response) {
     this.contextData;
     let c;
@@ -353,7 +359,6 @@ class ResultsList extends List {
     this.contextData["match_count"] = this.contextData.matches.length
     this.contextData["corpus_type"] = "inspect-result"
     Object.assign(this.contextData, results.metaData);
-    console.log(this.contextData);
     contextResultsElement = document.getElementById("context-results");
     modalExpertModeSwitchElement = document.getElementById("inspect-display-options-form-expert_mode_inspect");
     highlightSentencesSwitchElement = document.getElementById("inspect-display-options-form-highlight_sentences");
@@ -411,9 +416,6 @@ class ResultsList extends List {
       tokenHTMlElement = this.HTMLTStrToElement(htmlTokenStr)
       tokenHTMLArray.push(tokenHTMlElement);
     }
-    // console.log(tokenHTMLArray);
-    // console.log(uniqueS);
-
     for (let sId of uniqueS) {
       let htmlSentence = `<span class="sentence" data-sid="${sId}"></span>`;
       let sentenceElement = this.HTMLTStrToElement(htmlSentence);
@@ -466,6 +468,7 @@ class ResultsList extends List {
     this.changeSentenceContext(nrOfContextSentences.value)
   }
 
+  // splits context text into sentences based on spacy sentence split
   higlightContextSentences() {
     let sentences;
     sentences = document.getElementById("context-results").getElementsByClassName("sentence");
@@ -484,6 +487,7 @@ class ResultsList extends List {
       }
   }
 
+  // changes how many context sentences in inspect view are shown
   changeSentenceContext(sValue, maxSValue=10) {
     let array;
     let sentences;
@@ -589,7 +593,6 @@ class ResultsList extends List {
 
   expertModeOn(htmlId) {
     // turn the expert mode on for all tokens in the DOM element identified by its htmlID
-    console.log(this);
     if (!Array.isArray(this.currentExpertTokenElements[htmlId])) {
       this.currentExpertTokenElements[htmlId] = [];
     }
@@ -638,7 +641,6 @@ class ResultsList extends List {
   // function to remove extra informations and animations from tokens
   expertModeOff(htmlId) {
     // console.log("Expert mode is off.");
-    console.log(this);
     if (!Array.isArray(this.currentExpertTokenElements[htmlId])) {
       this.currentExpertTokenElements[htmlId] = [];
     }
-- 
GitLab