nopaque/app/static/js/nopaque.callbacks.js
2020-04-21 10:45:40 +02:00

64 lines
2.8 KiB
JavaScript

function querySetup(payload) {
// This is called when a query was successfull
// some hiding and resetting
queryResultsExportElement.classList.add("disabled");
queryResultsDeterminateElement.style.width = "0%";
queryResultsProgressElement.classList.remove("hide");
queryResultsUserFeedbackElement.classList.remove("hide");
// some initial values
receivedMatchCountElement.innerText = "0";
textLookupCountElement.innerText = "0";
matchCountElement.innerText = payload.match_count;
// always re initializes results to delete old results from it
// this has to be done here again because the last chunk from old results was still being recieved
results.clearAll()
// Get query string again
results.resultsJSON.getQueryStr(queryFormElement);
results.resultsJSON.match_count = payload.match_count;
}
function queryRenderResults(payload) {
let resultItems; // array of built html result items row element
// This is called when results are transmitted and being recieved
console.log("Current recieved chunk:", payload.chunk);
if (payload.chunk.cpos_ranges == true) {
results.resultsJSON["cpos_ranges"] = true;
} else {
results.resultsJSON["cpos_ranges"] = false;
}
// update progress bar
queryResultsDeterminateElement.style.width = `${payload.progress}%`;
// building the result list js list from incoming chunk
resultItems = []; // list for holding every row item
// get infos for full match row
for (let [index, match] of payload.chunk.matches.entries()) {
resultItems.push({...match, ...{"index": index + results.resultsJSON.matches.length}});
}
resultsList.add(resultItems, (items) => {
for (let item of items) {
item.elm = resultsList.createResultRowElement(item, payload.chunk);
}
resultsList.update();
results.resultsList.changeContext(); // sets lr context on first result load
});
// incorporating new chunk results into full results
results.resultsJSON.matches.push(...payload.chunk.matches);
Object.assign(results.resultsJSON.cpos_lookup, payload.chunk.cpos_lookup);
Object.assign(results.resultsJSON.text_lookup, payload.chunk.text_lookup);
// show user current and total match count
receivedMatchCountElement.innerText = `${results.resultsJSON.matches.length}`;
textLookupCountElement.innerText = `${Object.keys(results.resultsJSON.text_lookup).length}`;
console.log("Results recieved:", results.resultsJSON);
// upate progress status
progress = payload.progress; // global declaration
if (progress === 100) {
queryResultsProgressElement.classList.add("hide");
queryResultsUserFeedbackElement.classList.add("hide");
queryResultsExportElement.classList.remove("disabled");
results.resultsList.activateInspect();
}
// inital expert mode check and activation
if (expertModeSwitchElement.checked) {
results.resultsList.expertModeOn("query-display");
}
}