Remove asynch rework because it was already event driven

This commit is contained in:
Stephan Porada
2020-08-07 17:32:10 +02:00
parent 6b1f588f29
commit 25ea9ba583
3 changed files with 218 additions and 65 deletions

View File

@ -67,11 +67,20 @@
<!-- import modules -->
<script type="module">
// ### First Phase: document content is loaded and scripts are run ###
/**
* First Phase:
* document content is loaded and scripts are being imported and executed
*/
import {CorpusAnalysisClient,
CorpusAnalysisDisplay} from "../../static/js/modules/nopaque.CorpusAnalysisClient.js";
CorpusAnalysisDisplay,
SocketEventListener} from '../../static/js/modules/nopaque.CorpusAnalysisClient.js';
import {recieveSession, recieveQueryStatus,
recieveQueryData} from '../../static/js/modules/nopaque.listenerFunctions.js'
// ### Second Phase: asynchronous and event-driven ###
/**
* Second Phase:
* Asynchronus and event driven code
*/
document.addEventListener("DOMContentLoaded", () => {
// init some modals
const initLoadingElement = document.getElementById("init-display");
@ -81,12 +90,48 @@
const initLoadingDisplay = new CorpusAnalysisDisplay(initLoadingModal);
// set up CorpusAnalysisClient
const client = new CorpusAnalysisClient({{ corpus_id }}, nopaque.socket);
console.info("CorpusAnalysisClient created as client:", client);
// register display elements to client
client.setDisplay("init", initLoadingDisplay);
// register listeners and load them
const listenForSession = new SocketEventListener('corpus_analysis_init',
recieveSession);
const listenForQueryStatus = new SocketEventListener('corpus_analysis_query',
recieveQueryStatus);
const listenForQueryData = new SocketEventListener('corpus_analysis_query_results',
recieveQueryData);
client.setSocketEventListeners([listenForSession, listenForQueryStatus,
listenForQueryData]);
client.loadListeners();
// Session initialization
console.log("CorpusAnalysisClient created as client:", client);
client.initSession();
client.requestSession();
// send a query and recieve its answer data
let queryFormElement = document.getElementById("query-form");
queryFormElement.addEventListener("submit", (event) => {
try {
/**
* Selects first page of result list if pagination is already available
* from an query submitted before.
* This avoids confusion for the user e.g.: The user was on page 24
* reviewing the results and issues a new query. He would not see any
* results until the new results reach page 24 or he clicks on another
* valid result page element from the new pagination.
*/
let xpath = '//a[@class="page" and text()=1]';
let firstPageElement = document.evaluate(xpath,
document,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue;
firstPageElement.click();
} catch (e) {
}
// Prevent page from reloading on submit
event.preventDefault();
// Get query string and send query to server
// results.data.getQueryStr(queryFormElement);
client.requestQueryData('"this" []* "that" within 10 words;');
});
});
</script>
{% endblock %}