Add switch to download full context results or not.

This commit is contained in:
Stephan Porada
2020-09-15 17:18:22 +02:00
parent 27f40b98a3
commit c0472eb6c5
5 changed files with 123 additions and 8 deletions

View File

@ -114,6 +114,8 @@ class Client {
* Requests results data either for, 'full-results', 'sub-results' or
* 'inspect-results' (resultsType).
* Gets full results for evere provided dataIndex (one match).
* Full results means with full context. So the Client has to request all
* matches from the server again!
**/
getResultsData(resultsType, dataIndexes, results) {
let tmp_first_cpos = [];
@ -129,6 +131,65 @@ class Client {
last_cpos: tmp_last_cpos,});
}
//
getResultsDataWithoutContext(resultsType, dataIndexes, results, resultsList) {
let objectKey = '';
if (resultsType === 'full-results') {
console.info('Saving full-results data without full context.');
objectKey = 'fullResultsData';
} else if (resultsType === 'sub-results') {
console.info('Saving sub-results data without full context.');
objectKey = 'subResultsData';
}
// Get matches from results.data.
let matches = [];
let cpos = [];
let match;
for (let index of dataIndexes) {
match = results.data.matches[index]
matches.push(match)
// Get cpos from match.
let {lc, c, rc} = resultsList.helperCreateCpos(results.data.cpos_ranges,
match);
cpos.push(...lc);
cpos.push(...c);
cpos.push(...rc);
}
// Get cpos_lookups from cposes.
let cpos_lookup = {};
let single_lookup = {};
let textIds = new Set;
for (let single_cpos of cpos) {
single_lookup[single_cpos] = results.data.cpos_lookup[single_cpos];
textIds.add(single_lookup[single_cpos].text);
Object.assign(cpos_lookup, single_lookup);
}
let text = {};
let text_lookup = {};
for (let id of textIds) {
text[id] = results.data.text_lookup[id];
Object.assign(text_lookup, text);
}
/**
* Save the data from results.dat either in results.fullResultsData or
* results.subResultsData.
*/
results[objectKey].init();
results[objectKey].matches.push(...matches);
results[objectKey].addData(cpos_lookup, "cpos_lookup");
results[objectKey].addData(text_lookup, "text_lookup");
results[objectKey].addData(results.metaData);
results[objectKey].query = results.data.query;
results[objectKey].corpus_type = resultsType;
results[objectKey].match_count = matches.length;
results[objectKey].cpos_ranges = results.data.cpos_ranges;
results[objectKey].fullContext = false;
console.info('Results data without context has been saved.', results);
this.isBusy = false;
this.notifyView('results-data-recieved', {type: resultsType,
results: results});
}
}

View File

@ -71,10 +71,16 @@ function saveQueryData() {
}
function getResultsData() {
let [resultsType, dataIndexes, client, results, rest] = arguments;
let [resultsType, dataIndexes, resultsList, client, results, rest] = arguments;
client.isBusy = true;
client.notifyView('results-data-recieving');
client.getResultsData(resultsType, dataIndexes, results);
if (resultsList.exportFullInspectContext.checked) {
console.log('Get with full context');
client.getResultsData(resultsType, dataIndexes, results);
} else {
client.getResultsDataWithoutContext(resultsType, dataIndexes, results,
resultsList);
}
}
function saveResultsData() {
@ -100,6 +106,7 @@ function saveResultsData() {
results[objectKey].corpus_type = type;
results[objectKey].match_count = [...payload.matches].length;
results[objectKey].cpos_ranges = payload.cpos_ranges;
results[objectKey].fullContext = true;
console.info('Results data has been saved.', results);
client.isBusy = false;
client.notifyView('results-data-recieved', {type: type,

View File

@ -179,7 +179,8 @@ function recieveViewNotification(type, client) {
console.info('Client getting full results for export.');
// execute callback or functions
client.eventListeners[type].executeCallback([event.detail.resultsType,
event.detail.dataIndexes],
event.detail.dataIndexes,
event.detail.resultsList],
caseIdentifier);
break
default: