mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 04:12:45 +00:00 
			
		
		
		
	Add function to resend queries during running query
This commit is contained in:
		@@ -1,3 +1,24 @@
 | 
			
		||||
// ### corpus analysis client status functions
 | 
			
		||||
 | 
			
		||||
function sendAbortSignal() {
 | 
			
		||||
  console.log(`Sending status "abort signal" from client side.`);
 | 
			
		||||
  message = {'status': "abort"};
 | 
			
		||||
  nopaque.socket.emit("send_analysis_status_cli", message);
 | 
			
		||||
  setAnalysisStatus("abort");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function setAnalysisStatus(statusStr) {
 | 
			
		||||
  analysisClientStatus[sessionId] = statusStr;
 | 
			
		||||
  console.log(`Set new status "${statusStr}" for "${sessionId}" on client side.`);
 | 
			
		||||
  console.log("Object with status is:", analysisClientStatus);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function checkAnalysisStatus(sessionId) {
 | 
			
		||||
  let status = analysisClientStatus[sessionId];
 | 
			
		||||
  console.log(`Check status on client side for ${sessionId}.`, analysisClientStatus);
 | 
			
		||||
  return status;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ### Send query functions ###
 | 
			
		||||
 | 
			
		||||
//function to get current queryData from a given queryFormElement
 | 
			
		||||
@@ -12,11 +33,13 @@ function getQueryData(queryFormElement) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Function to send a query to the CQP server using queryData gatherd with getQueryData
 | 
			
		||||
function sendQuery(event) {
 | 
			
		||||
async function sendQuery(event) {
 | 
			
		||||
  const delay = ms => new Promise(res => setTimeout(res, ms));
 | 
			
		||||
  result;  // global declaration, holds query results as JSON
 | 
			
		||||
  resultList;  // global declaration, list.js object displaying the results
 | 
			
		||||
  let queryData;  // holds data of query form
 | 
			
		||||
  let resultListOptions;  // holding the options for the ResultList object
 | 
			
		||||
  let analysisStatus;
 | 
			
		||||
 | 
			
		||||
  // checks if one query has been finished before
 | 
			
		||||
  // if true, result download will be disabled again until query is finished
 | 
			
		||||
@@ -26,9 +49,32 @@ function sendQuery(event) {
 | 
			
		||||
    queryResultsDeterminateElement.parentNode.parentNode.classList.remove("hide");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  console.log("Sending query.");
 | 
			
		||||
  console.log("Session status are: ", analysisClientStatus);
 | 
			
		||||
  event.preventDefault();
 | 
			
		||||
  analysisStatus = checkAnalysisStatus(sessionId);
 | 
			
		||||
  queryData = getQueryData(queryFormElement);
 | 
			
		||||
  nopaque.socket.emit("corpus_analysis_query", queryData.query);
 | 
			
		||||
 | 
			
		||||
  if (analysisStatus === "idle") {
 | 
			
		||||
    nopaque.toast("Query has been sent!");
 | 
			
		||||
    nopaque.socket.emit("corpus_analysis_query", queryData.query);
 | 
			
		||||
    helperSendQuery(queryData);
 | 
			
		||||
    analysisStatus = checkAnalysisStatus(sessionId);
 | 
			
		||||
  } else if (analysisStatus === "running" ) {
 | 
			
		||||
    sendAbortSignal();
 | 
			
		||||
    analysisStatus = checkAnalysisStatus(sessionId);
 | 
			
		||||
    while (analysisStatus === "abort") {
 | 
			
		||||
      queryResultsTableElement.classList.add("hide");
 | 
			
		||||
      queryLoadingElement.classList.remove("hide");
 | 
			
		||||
      analysisStatus = checkAnalysisStatus(sessionId);
 | 
			
		||||
      await delay(100);
 | 
			
		||||
    }
 | 
			
		||||
    sendQuery(event)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function helperSendQuery(queryData) {
 | 
			
		||||
  // full results object declaration, global declaration!
 | 
			
		||||
  // will always be reset if a query is sent, so that only the chunks of the
 | 
			
		||||
  // current query will be saved in it
 | 
			
		||||
@@ -42,7 +88,6 @@ function sendQuery(event) {
 | 
			
		||||
  // some hiding/showing for loading animation
 | 
			
		||||
  queryLoadingElement.classList.remove("hide");
 | 
			
		||||
  queryResultsTableElement.classList.add("hide");
 | 
			
		||||
  nopaque.toast("Query has been sent!");
 | 
			
		||||
 | 
			
		||||
  resultListOptions = {page: queryData["hits_per_page"],
 | 
			
		||||
    pagination: [{
 | 
			
		||||
@@ -114,10 +159,16 @@ function recieveResults(response) {
 | 
			
		||||
  result["query"] = queryData["query"];
 | 
			
		||||
  console.log(result);
 | 
			
		||||
  // Some hiding and showing of loading animations
 | 
			
		||||
  queryLoadingElement.classList.add("hide");
 | 
			
		||||
  queryResultsTableElement.classList.remove("hide");
 | 
			
		||||
  queryResultsElement = document.getElementById("query-results");
 | 
			
		||||
  queryResultsElement.innerHTML = "";
 | 
			
		||||
  analysisStatus = checkAnalysisStatus();
 | 
			
		||||
  if (analysisStatus === "abort") {
 | 
			
		||||
    queryResultsTableElement.classList.add("hide");
 | 
			
		||||
    queryLoadingElement.classList.remove("hide");
 | 
			
		||||
  } else {
 | 
			
		||||
    queryResultsTableElement.classList.remove("hide");
 | 
			
		||||
    queryLoadingElement.classList.add("hide");
 | 
			
		||||
    queryResultsElement = document.getElementById("query-results");
 | 
			
		||||
    queryResultsElement.innerHTML = "";
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // check if query has any results
 | 
			
		||||
  if (chunk["matches"].length === 0) {
 | 
			
		||||
@@ -252,7 +303,7 @@ function changeContext(event) {
 | 
			
		||||
      console.log("This error is expected.");
 | 
			
		||||
  } finally {
 | 
			
		||||
      newContextValue = document.getElementById("context").value;
 | 
			
		||||
      console.log(newContextValue);
 | 
			
		||||
      console.log("Context value is:", newContextValue);
 | 
			
		||||
      lc = document.getElementsByClassName("left-context");
 | 
			
		||||
      rc = document.getElementsByClassName("right-context");
 | 
			
		||||
      for (let element of lc) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user