From 9f341b90b921a60afac86994cb8610f2ba485941 Mon Sep 17 00:00:00 2001
From: Stephan Porada <sporada@uni-bielefeld.de>
Date: Fri, 26 Jun 2020 10:04:54 +0200
Subject: [PATCH] Some more documentation!

---
 web/app/static/js/nopaque.callbacks.js        | 10 +++-
 .../templates/corpora/analyse_corpus.html.j2  | 52 ++++++++++---------
 2 files changed, 36 insertions(+), 26 deletions(-)

diff --git a/web/app/static/js/nopaque.callbacks.js b/web/app/static/js/nopaque.callbacks.js
index a6db9e94..1dd2fba9 100644
--- a/web/app/static/js/nopaque.callbacks.js
+++ b/web/app/static/js/nopaque.callbacks.js
@@ -1,8 +1,13 @@
+// This callback is called on a socket.on "corpus_analysis_send_meta_data".
+// Handels incoming corpus metadata
 function recvMetaData(payload) {
   results.metaData.init(payload)
   console.log(results.metaData);
 }
 
+// This callback is called in socket.on "corpus_analysis_inspect_match" but
+// only if the response.type is "sub-results".
+// Saves the incoming inspect match results into results.subResultsData.
 function saveSubResultsChoices(response) {
   console.log("Recieve match with context");
   results.subResultsData.init();
@@ -28,8 +33,9 @@ function saveSubResultsChoices(response) {
 
 }
 
+// This callback is called on socket.on "query".
+// Does some hiding, showing disabling etc.
 function querySetup(payload) {
-  // This is called when a query was successfull
   // some hiding and resetting
   let textarea = subResultsIdListElement.getElementsByTagName("textarea")[0];
   textarea.innerText = "";
@@ -54,6 +60,8 @@ function querySetup(payload) {
   results.data.match_count = payload.match_count;
 }
 
+// This callback is called on socket.on "query_results"
+// this handels the incoming result chunks
 function queryRenderResults(payload) {
   let resultItems;  // array of built html result items row element
   // This is called when results are transmitted and being recieved
diff --git a/web/app/templates/corpora/analyse_corpus.html.j2 b/web/app/templates/corpora/analyse_corpus.html.j2
index 4760c342..4faa86fe 100644
--- a/web/app/templates/corpora/analyse_corpus.html.j2
+++ b/web/app/templates/corpora/analyse_corpus.html.j2
@@ -363,12 +363,14 @@
 <script>
 // ###### Defining global variables used in other functions ######
   var addToSubResultsElement; // Button to start adding matches to sub-results
+  var addToSubResultsFromInspectElement; // button in inspect mdoal to add this match to the sub results
   var client;  // CorpusAnalysisClient first undefined on DOMContentLoaded defined
   var collapsibleElements;  // All collapsibleElements on this page
   var contextModal;  // Modal to open on inspect for further match context
   var data;  // full JSON object holding match results
   var expertModeSwitchElement; // Expert mode switch Element
   var initDisplay;  // CorpusAnalysisDisplay object first undfined on DOMContentLoaded defined
+  var interactionElements;  // Interaction elements and their parameters
   var matchCountElement;  // Total nr. of matches will be displayed in this element
   var progress;  // global progress value
   var queryDisplay; // CorpusAnalysisDisplay object first undfined on DOMContentLoaded defined
@@ -381,13 +383,11 @@
   var results;  // results object
   var resultsList;  // resultsList object
   var resultsListOptions;  // specifies ResultsList options
+  var subResultsCreateElement; // if presses sub results will be created from ids
+  var subResultsExportElement;  // button to download sub results
+  var subResultsIdListElement;  // list showing marked matches for sub corpus creation
   var textLookupCountElement  // Nr of texts the matches occured in will be shown in this element
-  var interactionElements;  // Interaction elements and their parameters
   var textTitlesElement;  // matched text titles
-  var subResultsIdListElement;  // list showing marked matches for sub corpus creation
-  var subResultsExportElement;  // button to download sub results
-  var subResultsCreateElement; // if presses sub results will be created from ids
-  var addToSubResultsFromInspectElement; // button in inspect mdoal to add this match to the sub results
 
   // ###### Defining local scope variables ######
   let contextPerItemElement;  // Form Element for display option
@@ -406,8 +406,9 @@
   let xpath;  // xpath to grab first resultsList page pagination element
 
   // ###### Initialize variables ######
-  client = undefined;
   addToSubResultsElement = document.getElementById("add-to-sub-results");
+  addToSubResultsFromInspectElement = document.getElementById("add-to-sub-results-from-inspect");
+  client = undefined;
   collapsibleElements = document.querySelector('.collapsible.expandable');
   contextModal = document.getElementById("context-modal");
   contextPerItemElement = document.getElementById("display-options-form-result_context");
@@ -428,12 +429,11 @@
   queryResultsProgressElement = document.getElementById("query-results-progress");
   queryResultsUserFeedbackElement = document.getElementById("query-results-user-feedback");
   receivedMatchCountElement = document.getElementById("received-match-count");
+  subResultsCreateElement = document.getElementById("sub-results-create-div");
+  subResultsExportElement = document.getElementById("sub-results-export");
+  subResultsIdListElement = document.getElementById("sub-results-match-ids-div");
   textLookupCountElement = document.getElementById("text-lookup-count");
   textTitlesElement = document.getElementById("text-titles");
-  subResultsIdListElement = document.getElementById("sub-results-match-ids-div");
-  subResultsExportElement = document.getElementById("sub-results-export");
-  subResultsCreateElement = document.getElementById("sub-results-create-div");
-  addToSubResultsFromInspectElement = document.getElementById("add-to-sub-results-from-inspect");
 
   // ###### js list options and intialization ######
   displayOptionsData = ResultsList.getDisplayOptions(displayOptionsFormElement);
@@ -531,8 +531,11 @@
     // live update of lr context per item if context value is changed
     contextPerItemElement.onchange = results.jsList.changeContext;
 
-    // stuff that happens in the list table and should also be checked and
-    // updated if the pagination is used
+    // Initialization of interactionElemnts
+    // An interactionElement is an object identifing a switch or button via
+    // htmlID. Callbacks are set for these elements which will be triggered on
+    // a pagination interaction by the user or if the status of the element has
+    // been altered. (Like the switche has ben turned on or off).
     interactionElements = new Array();
     let expertModeInteraction = new InteractionElement("display-options-form-expert_mode");
     expertModeInteraction.setCallback("on",
@@ -565,18 +568,6 @@
                                         results.jsList)
     interactionElements.push(expertModeInteraction, subResultsInteraction, activateInspectInteraction, changeContextInteraction);
 
-
-    // eventListener if pagination is used to apply new context size to new page
-    // and also activate inspect match if progress is 100
-    // also adds more interaction buttons like add to sub results
-    for (let element of paginationElements) {
-      element.addEventListener("click", (event) => {
-        results.jsList.pageChangeEventInteractionHandler(interactionElements);
-      });
-    }
-
-
-
     // checks if a change for every interactionElement happens and executes
     // the callbacks accordingly
     for (let interaction of interactionElements) {
@@ -596,8 +587,19 @@
         continue
       }
     };
+
+    // eventListener if pagination is used to apply new context size to new page
+    // and also activate inspect match if progress is 100
+    // also adds more interaction buttons like add to sub results
+    for (let element of paginationElements) {
+      element.addEventListener("click", (event) => {
+        results.jsList.pageChangeEventInteractionHandler(interactionElements);
+      });
+    }
+
   });
 
+  // ### Download events and sub-results creation ###
   // Add onclick to open download modal when Export Results button is pressed
   queryResultsExportElement.onclick = () => {
     exportModal.open();
@@ -631,7 +633,7 @@
     results.data.createSubResultsData();
   }
 
-  // Add onclick to open download modal when sub results button is pressed
+  // Add onclick to open download modal when sub-results button is pressed
   subResultsExportElement.onclick = () => {
     exportModal.open();
     console.log(results.subResultsData);
-- 
GitLab