diff --git a/app/corpora/cqi/models/subcorpora.py b/app/corpora/cqi/models/subcorpora.py index 5024d20b..6606639b 100644 --- a/app/corpora/cqi/models/subcorpora.py +++ b/app/corpora/cqi/models/subcorpora.py @@ -59,9 +59,9 @@ class Subcorpus: for match_start, match_end in match_boundaries: left_start = max(0, match_start - context) right_end = min(self.parent_corpus.size, (match_end + 1 + context)) - matches.append({'left': list(range(left_start, match_start)), + matches.append({'lc': list(range(left_start, match_start)), 'hit': list(range(match_start, match_end + 1)), - 'right': list(range(match_end + 1, right_end))}) + 'rc': list(range(match_end + 1, right_end))}) cpos_list = [] for match in matches: cpos_list += match['lc'] + match['hit'] + match['rc'] diff --git a/app/corpora/events.py b/app/corpora/events.py index 887a511d..f7c638ba 100644 --- a/app/corpora/events.py +++ b/app/corpora/events.py @@ -50,14 +50,21 @@ def corpus_analysis_query(query): context = 100 progress = 0 while chunk_start <= results.size: + logger.warning("test") chunk = results.dump_values(context=context, first_result=chunk_start, num_results=chunk_size) - progress = ((chunk_start + chunk_size) / results.size) * 100 - progress = min(100, int(math.ceil(progress))) + logger.warning(chunk) + if (results.size == 0): + progress = 100 + else: + progress = ((chunk_start + chunk_size) / results.size) * 100 + progress = min(100, int(math.ceil(progress))) socketio.emit('corpus_analysis_query', - {'chunk': chunk, 'progress': progress, - 'num_matches_total': results.size}, + {'chunk': chunk, + 'progress': progress, + 'num_matches_total': results.size, + 'code': 0}, room=request.sid) chunk_start += chunk_size diff --git a/app/static/js/nopaque.analyse_corpus.js b/app/static/js/nopaque.analyse_corpus.js index 9c89abdd..a9e530a3 100644 --- a/app/static/js/nopaque.analyse_corpus.js +++ b/app/static/js/nopaque.analyse_corpus.js @@ -32,13 +32,13 @@ function sendQuery(event) { // 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 - result = {}; - result["matches"] = []; - result["cpos_lookup"] = {}; - result["text_lookup"] = {}; - result["loaded_match_count"] = 0; - result["match_count"] = 0; - result["query"] = ""; + result = {}; // full JSON object holding match results + result["matches"] = []; // list of all amtches with lc and rc + result["cpos_lookup"] = {}; // object contains all cpos as key value pair + result["text_lookup"] = {}; // same as above for all text ids + result["loaded_match_count"] = 0; // how many matches have been recieved + result["num_matches_total"]; // how many should have been recieved/total nr + result["query"] = ""; // the query as a string // some hiding/showing for loading animation queryLoadingElement.classList.remove("hide"); queryResultsTableElement.classList.add("hide"); @@ -97,7 +97,7 @@ function recieveResults(response) { return; // no further code execution of this code block } // logs the current recieved chunk - chunk = response["result"]; + chunk = response["chunk"]; //chunk = response["chunk"]; console.log("### corpus_analysis chunk ###"); console.log(chunk); @@ -107,7 +107,7 @@ function recieveResults(response) { result["matches"].push(...chunk["matches"]); Object.assign(result["cpos_lookup"], chunk["cpos_lookup"]); Object.assign(result["text_lookup"], chunk["text_lookup"]); - result["match_count"] = chunk["match_count"]; + result["num_matches_total"] = response["num_matches_total"]; //result["match_count"] = response["match_count"]; console.log("Before Current match count", result["loaded_match_count"]); queryData = getQueryData(queryFormElement); @@ -120,6 +120,7 @@ function recieveResults(response) { queryResultsElement.innerHTML = ""; // check if query has any results + console.log("CHUNKLENGTH", chunk["matches"].length); if (chunk["matches"].length === 0) { queryResultsTableElement.classList.add("hide"); nopaque.toast("No results for this query!"); @@ -144,13 +145,13 @@ function recieveResults(response) { result["loaded_match_count"] += Object.keys(chunk["matches"]).length; console.log("After current match count", result["loaded_match_count"]); queryResultsMetadataElement = document.getElementById("query-results-metadata"); - queryResultsMetadataElement.innerHTML = `
The query resulted in a total of ${chunk["match_count"]} matches.
${result["loaded_match_count"]} of ${result["match_count"]} matches in ${countCorpusFiles} corpus files have been loaded.
helpThe Server is still sending your results. Functions like "Export Results" and "Match Inspect" will be available after all matches have been loaded.
`; + queryResultsMetadataElement.innerHTML = `The query resulted in a total of ${result["num_matches_total"]} matches.
${result["loaded_match_count"]} of ${result["num_matches_total"]} matches in ${countCorpusFiles} corpus files have been loaded.
helpThe Server is still sending your results. Functions like "Export Results" and "Match Inspect" will be available after all matches have been loaded.
`; queryResultsInteractionElement = document.getElementById("interaction-elements"); queryResultsInteractionElement.appendChild(exportQueryResultsElement); queryResultsHeadElement = document.getElementById("query-results-head"); queryResultsHeadElement.classList.remove("hide"); - queryStatus = result["loaded_match_count"] / result["match_count"] * 100; - console.log(queryStatus); + queryStatus = response["progress"]; + console.log("QUERY STATUS:", queryStatus); queryResultsDeterminateElement.style["width"] = `${queryStatus}%`; console.log(queryResultsDeterminateElement.style["width"]); @@ -160,7 +161,7 @@ function recieveResults(response) { queryFinished = true; // global declaration to set downlaod button and inspects buttons back to disabled for new queries queryResultsDeterminateElement.parentNode.parentNode.classList.add("hide"); exportQueryResultsElement.classList.remove("disabled"); - queryResultsMetadataElement.innerHTML = `The query resulted in a total of ${chunk["match_count"]} matches.
${result["loaded_match_count"]} of ${result["match_count"]} matches in ${countCorpusFiles} corpus files have been loaded.check_circle
`; + queryResultsMetadataElement.innerHTML = `The query resulted in a total of ${result["num_matches_total"]} matches.
${result["loaded_match_count"]} of ${result["num_matches_total"]} matches in ${countCorpusFiles} corpus files have been loaded.check_circle
`; activateInspect(); } }