mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-11-15 01:05:42 +00:00
Enhance pj_analyse
This commit is contained in:
parent
4556a52ffc
commit
c33889f617
@ -47,13 +47,24 @@ class CorpusAnalysisClient {
|
|||||||
this.socket.emit("pj_corpus_analysis_init", this.corpusId);
|
this.socket.emit("pj_corpus_analysis_init", this.corpusId);
|
||||||
}
|
}
|
||||||
|
|
||||||
query(query) {
|
query(queryStr) {
|
||||||
if (this.displays.query.errorContainer != undefined) {this.displays.query.errorContainer.innerHTML == "";}
|
if (this.displays.query.errorContainer != undefined) {this.displays.query.errorContainer.innerHTML == "";}
|
||||||
if (this.displays.query != undefined) {this.displays.query.setVisibilityByStatus("waiting");}
|
if (this.displays.query != undefined) {this.displays.query.setVisibilityByStatus("waiting");}
|
||||||
nopaque.socket.emit("pj_corpus_analysis_query", query);
|
nopaque.socket.emit("pj_corpus_analysis_query", queryStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
getQueryStr(queryFormElement) {
|
||||||
|
// gets query
|
||||||
|
let queryFormData;
|
||||||
|
let queryStr;
|
||||||
|
queryFormData = new FormData(queryFormElement);
|
||||||
|
queryStr = queryFormData.get("query-form-query");
|
||||||
|
return queryStr
|
||||||
}
|
}
|
||||||
|
|
||||||
setCallback(type, callback) {
|
setCallback(type, callback) {
|
||||||
|
// saves callback functions into an object. Key is function type, callback
|
||||||
|
// is the callback function
|
||||||
this.callbacks[type] = callback;
|
this.callbacks[type] = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
31
app/static/js/nopaque.callbacks.js
Normal file
31
app/static/js/nopaque.callbacks.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
function querySetup(payload) {
|
||||||
|
// This is called when a query was successfull
|
||||||
|
console.log("Query setup.");
|
||||||
|
console.log(payload);
|
||||||
|
queryResultsDeterminateElement.style.width = "0%";
|
||||||
|
receivedMatchNumElement.innerText = "0";
|
||||||
|
textLookupNumElement.innerText = "0";
|
||||||
|
matchNumElement.innerText = payload.num_matches;
|
||||||
|
results = {};
|
||||||
|
results["matches"] = []; // list of all c with lc and rc
|
||||||
|
results["cpos_lookup"] = {}; // object contains all cpos as key value pair
|
||||||
|
results["text_lookup"] = {}; // same as above for all text ids
|
||||||
|
results[]
|
||||||
|
}
|
||||||
|
|
||||||
|
function queryRenderResults(payload) {
|
||||||
|
// This is called when results are transmitted.
|
||||||
|
console.log("CHUNK:", payload.chunk);
|
||||||
|
console.log("RESULTS:", results);
|
||||||
|
if (payload.progress === 100) {
|
||||||
|
queryResultsProgressElement.classList.add("hide");
|
||||||
|
}
|
||||||
|
queryResultsDeterminateElement.style.width = `${payload.progress}%`;
|
||||||
|
results.matches.push(...payload.chunk.matches);
|
||||||
|
receivedMatchNumElement.innerText = `${results.matches.length}`;
|
||||||
|
// incorporating new chunk results into full results
|
||||||
|
Object.assign(results.cpos_lookup, payload.chunk.cpos_lookup);
|
||||||
|
Object.assign(results.text_lookup, payload.chunk.text_lookup);
|
||||||
|
|
||||||
|
textLookupNumElement.innerText = `${Object.keys(results.text_lookup).length}`;
|
||||||
|
}
|
@ -247,7 +247,7 @@ server side -->
|
|||||||
var queryResultsDeterminateElement; // progress bar for recieved query status
|
var queryResultsDeterminateElement; // progress bar for recieved query status
|
||||||
var queryResultsTableElement; // table element displaying the query results
|
var queryResultsTableElement; // table element displaying the query results
|
||||||
var queryLoadingElement; // shows progress bar until first results are in
|
var queryLoadingElement; // shows progress bar until first results are in
|
||||||
var queryFormElement; // the quer form
|
var queryFormElement; // the query form
|
||||||
var hitsPerPageInputElement; // value of hits per page (part of query form)
|
var hitsPerPageInputElement; // value of hits per page (part of query form)
|
||||||
var contextPerItemElement; // value of contex per match (part of query form)
|
var contextPerItemElement; // value of contex per match (part of query form)
|
||||||
var paginationElements; // top and button pagination elements
|
var paginationElements; // top and button pagination elements
|
||||||
|
@ -5,11 +5,17 @@
|
|||||||
{% block page_content %}
|
{% block page_content %}
|
||||||
<div class="col s12">
|
<div class="col s12">
|
||||||
<ul class="collapsible expandable">
|
<ul class="collapsible expandable">
|
||||||
<li class="active hoverable">
|
<li class="active">
|
||||||
<div class="collapsible-header">
|
<!-- <div class="collapsible-header">
|
||||||
<i class="material-icons">search</i>Query
|
<i class="material-icons">search</i>CQP Query
|
||||||
</div>
|
</div> -->
|
||||||
<div class="collapsible-body">
|
<!-- Div element above is part of valid materialize collapsible.
|
||||||
|
Commented out to prevent the user from collapsing it and also to save
|
||||||
|
space -->
|
||||||
|
<div class="collapsible-body" style="padding-top: 10px;
|
||||||
|
padding-right: 2rem;
|
||||||
|
padding-bottom: 0px;
|
||||||
|
padding-left: 2rem;">
|
||||||
<!-- Query form -->
|
<!-- Query form -->
|
||||||
<form id="query-form">
|
<form id="query-form">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -104,8 +110,24 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<script src="{{ url_for('static', filename='js/nopaque.CorpusAnalysisClient.js') }}"></script>
|
<script src="{{ url_for('static', filename='js/nopaque.CorpusAnalysisClient.js') }}">
|
||||||
|
</script>
|
||||||
|
<script src="{{ url_for('static', filename='js/nopaque.callbacks.js') }}">
|
||||||
|
</script>
|
||||||
<script>
|
<script>
|
||||||
|
// ###### Defining global variables used in other functions ######
|
||||||
|
var results; // full JSON object holding match results
|
||||||
|
var queryFormElement; // the query form
|
||||||
|
var collapsibleElements; // all collapsibles on site
|
||||||
|
var queryResultsProgressElement; // Div element holding the progress bar
|
||||||
|
var queryResultsDeterminateElement; // The progress bar for recieved results
|
||||||
|
|
||||||
|
// ###### Initialize variables ######
|
||||||
|
|
||||||
|
|
||||||
|
// get collapsibles to alter options of those
|
||||||
|
var collapsibleElements = document.querySelector('.collapsible.expandable');
|
||||||
|
|
||||||
var client = undefined;
|
var client = undefined;
|
||||||
var initDisplay = undefined;
|
var initDisplay = undefined;
|
||||||
var queryDisplay = undefined;
|
var queryDisplay = undefined;
|
||||||
@ -115,53 +137,43 @@
|
|||||||
var queryFormElement = document.getElementById("query-form");
|
var queryFormElement = document.getElementById("query-form");
|
||||||
var queryResultsDeterminateElement = document.getElementById("query-results-determinate");
|
var queryResultsDeterminateElement = document.getElementById("query-results-determinate");
|
||||||
var queryResultsProgressElement = document.getElementById("query-results-progress");
|
var queryResultsProgressElement = document.getElementById("query-results-progress");
|
||||||
var receivedMatchNumElement = document.getElementById("received-match-num");
|
receivedMatchNumElement = document.getElementById("received-match-num");
|
||||||
var matchNumElement = document.getElementById("match-num");
|
matchNumElement = document.getElementById("match-num");
|
||||||
var textLookupNumElement = document.getElementById("text-lookup-num");
|
textLookupNumElement = document.getElementById("text-lookup-num");
|
||||||
|
|
||||||
var results = undefined;
|
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
|
//set accordion of collapsibles to false
|
||||||
|
M.Collapsible.init(collapsibleElements, {accordion: false});
|
||||||
|
|
||||||
var initModal = M.Modal.init(initDisplayElement, {dismissible: false});
|
var initModal = M.Modal.init(initDisplayElement, {dismissible: false});
|
||||||
// Init corpus analysis components
|
// Init corpus analysis components
|
||||||
initDisplay = new CorpusAnalysisDisplay(initDisplayElement);
|
initDisplay = new CorpusAnalysisDisplay(initDisplayElement);
|
||||||
queryDisplay = new CorpusAnalysisDisplay(queryDisplayElement);
|
queryDisplay = new CorpusAnalysisDisplay(queryDisplayElement);
|
||||||
client = new CorpusAnalysisClient({{ corpus_id }}, nopaque.socket);
|
client = new CorpusAnalysisClient({{ corpus_id }}, nopaque.socket);
|
||||||
initModal.open();
|
initModal.open();
|
||||||
|
// set displays visibilitys and Callback functions
|
||||||
client.setDisplay("init", initDisplay);
|
client.setDisplay("init", initDisplay);
|
||||||
client.setCallback("init", () => {initModal.close();});
|
client.setCallback("init", () => {
|
||||||
|
initModal.close();
|
||||||
|
});
|
||||||
client.setDisplay("query", queryDisplay);
|
client.setDisplay("query", queryDisplay);
|
||||||
client.setCallback("query", (payload) => {
|
client.setCallback("query", (payload) => {
|
||||||
// This is called when a query was successfull
|
querySetup(payload);
|
||||||
results = {matches: [], cpos_lookup: {}, text_lookup: {}};
|
|
||||||
queryResultsDeterminateElement.style.width = "0%";
|
|
||||||
receivedMatchNumElement.innerText = "0";
|
|
||||||
textLookupNumElement.innerText = "0";
|
|
||||||
matchNumElement.innerText = payload.num_matches;
|
|
||||||
});
|
});
|
||||||
client.setCallback("query_results", (payload) => {
|
client.setCallback("query_results", (payload) => {
|
||||||
// This is called when results are transmitted.
|
queryRenderResults(payload);
|
||||||
if (payload.progress === 100) {
|
|
||||||
queryResultsProgressElement.classList.add("hide");
|
|
||||||
}
|
|
||||||
queryResultsDeterminateElement.style.width = `${payload.progress}%`;
|
|
||||||
results.matches.push(...payload.chunk.matches);
|
|
||||||
receivedMatchNumElement.innerText = `${results.matches.length}`;
|
|
||||||
Object.assign(results.cpos_lookup, payload.chunk.cpos_lookup);
|
|
||||||
Object.assign(results.text_lookup, payload.chunk.text_lookup);
|
|
||||||
textLookupNumElement.innerText = `${Object.keys(results.text_lookup).length}`;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Trigger corpus analysis initialization on server side
|
// Trigger corpus analysis initialization on server side
|
||||||
client.init();
|
client.init();
|
||||||
queryFormElement.addEventListener("submit", (e) => {
|
// start a query request on submit
|
||||||
|
queryFormElement.addEventListener("submit", (event) => {
|
||||||
// Prevent page from reloading on submit
|
// Prevent page from reloading on submit
|
||||||
e.preventDefault();
|
event.preventDefault();
|
||||||
// Gather query data
|
// Get query string and send query to server
|
||||||
var queryFormData = new FormData(queryFormElement);
|
let queryStr = client.getQueryStr(queryFormElement);
|
||||||
var query = queryFormData.get("query-form-query");
|
client.query(queryStr);
|
||||||
// Send query to server
|
|
||||||
client.query(query);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
Reference in New Issue
Block a user