mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2025-06-13 09:30:40 +00:00
Add Results viewer functionality with ne javascript and fix some errors.
This commit is contained in:
@ -30,24 +30,43 @@ function prepareQueryData() {
|
||||
*/
|
||||
function saveQueryData() {
|
||||
let [payload, client, results, rest] = arguments;
|
||||
// get data matches length before new chun kdata is being inserted
|
||||
let dataLength = results.data.matches.length;
|
||||
// incorporating new chunk data into full results
|
||||
results.data.matches.push(...payload.chunk.matches);
|
||||
results.data.addData(payload.chunk.cpos_lookup, 'cpos_lookup');
|
||||
results.data.addData(payload.chunk.text_lookup, 'text_lookup');
|
||||
results.data.cpos_ranges = payload.chunk.cpos_ranges;
|
||||
let queryFormElement = document.querySelector('#query-form');
|
||||
results.data.getQueryStr(queryFormElement);
|
||||
client.requestQueryProgress = payload.progress;
|
||||
client.notifyView('query-data-recieving',
|
||||
{ results: results,
|
||||
client: client,
|
||||
dataLength: dataLength });
|
||||
console.info('Query data chunk saved', results.data);
|
||||
if (client.requestQueryProgress === 100) {
|
||||
client.isBusy = false;
|
||||
client.notifyView('query-data-recieved');
|
||||
if (client.dynamicMode) {
|
||||
// get data matches length before new chunk data is being inserted
|
||||
// incorporating new chunk data into full results
|
||||
results.data.matches.push(...payload.chunk.matches);
|
||||
results.data.addData(payload.chunk.cpos_lookup, 'cpos_lookup');
|
||||
results.data.addData(payload.chunk.text_lookup, 'text_lookup');
|
||||
results.data.cpos_ranges = payload.chunk.cpos_ranges;
|
||||
let queryFormElement = document.querySelector('#query-form');
|
||||
results.data.getQueryStr(queryFormElement);
|
||||
client.requestQueryProgress = payload.progress;
|
||||
client.notifyView('query-data-recieving',
|
||||
{ results: results,
|
||||
client: client,
|
||||
dataLength: dataLength });
|
||||
console.info('Query data chunk saved', results.data);
|
||||
if (client.requestQueryProgress === 100) {
|
||||
client.isBusy = false;
|
||||
client.notifyView('query-data-recieved');
|
||||
}
|
||||
} else {
|
||||
results.data.matches.push(...payload.matches);
|
||||
results.data.addData(payload.cpos_lookup, 'cpos_lookup');
|
||||
results.data.addData(payload.text_lookup, 'text_lookup');
|
||||
results.data.cpos_ranges = payload.cpos_ranges;
|
||||
let queryFormElement = document.querySelector('#query-form');
|
||||
results.data.getQueryStr(queryFormElement);
|
||||
client.requestQueryProgress = 100;
|
||||
client.notifyView('query-data-recieving',
|
||||
{ results: results,
|
||||
client: client,
|
||||
dataLength: dataLength });
|
||||
console.info('Query data chunk saved', results.data);
|
||||
if (client.requestQueryProgress === 100) {
|
||||
console.log(results.data);
|
||||
client.notifyView('query-data-recieved');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -52,7 +52,7 @@ class Data {
|
||||
let queryStr;
|
||||
queryFormData = new FormData(queryFormElement);
|
||||
queryStr = queryFormData.get('query-form-query');
|
||||
this["query"] = queryStr;
|
||||
this['query'] = queryStr;
|
||||
}
|
||||
|
||||
// function creates a unique and safe filename for the download
|
||||
|
@ -336,21 +336,28 @@ class ResultsList extends List {
|
||||
return fake_response
|
||||
}
|
||||
|
||||
// gets result cpos infos for one dataIndex (list of length 1) to send back to
|
||||
// gets result cpos infos for dataIndexes (use list of length 1 for one match) to send back to
|
||||
// the server
|
||||
inspect(dataIndex, type) {
|
||||
inspect(client, results, dataIndex, type) {
|
||||
// initialize context modal
|
||||
this.getHTMLElements([
|
||||
'#context-modal',
|
||||
'#context-results',
|
||||
'#create-inspect-menu',
|
||||
'#create-from-inspect',
|
||||
]);
|
||||
this.contextModal = M.Modal.init(this.contextModal);
|
||||
// get result infos from server and show them in context modal
|
||||
this.contextId = dataIndex[0];
|
||||
this.contextResults.innerHTML = ""; // clear it from old inspects
|
||||
this.notifyClient('get-results', {resultsType: 'inspect-results',
|
||||
dataIndexes: [dataIndex]});
|
||||
if (client.dynamicMode) {
|
||||
this.notifyClient('get-results', {resultsType: 'inspect-results',
|
||||
dataIndexes: [dataIndex]});
|
||||
} else {
|
||||
results.inspectResultsData.matches = [results.data.matches[dataIndex[0]]];
|
||||
results.inspectResultsData.cpos_ranges = results.data.cpos_ranges;
|
||||
this.showMatchContext(results, client)
|
||||
}
|
||||
// match nr for user to display derived from data_index
|
||||
let contextMatchNrElement = document.getElementById("context-match-nr");
|
||||
contextMatchNrElement.textContent = this.contextId + 1;
|
||||
@ -361,7 +368,7 @@ class ResultsList extends List {
|
||||
let addToSubResultsIdsBtn = document.createElement("a");
|
||||
addToSubResultsIdsBtn.setAttribute("class", classes + ` add`);
|
||||
addToSubResultsIdsBtn.innerHTML = '<i class="material-icons">add</i>';
|
||||
addToSubResultsIdsBtn.onclick= () => {this.addToSubResults(dataIndex[0], false)};
|
||||
addToSubResultsIdsBtn.onclick= () => {this.addToSubResults(dataIndex[0], client, false)};
|
||||
// checks if the match has or has not been added to sub results yet
|
||||
// sets the color and status of the button accordingly
|
||||
if (this.addToSubResultsStatus[dataIndex[0]]) {
|
||||
@ -371,6 +378,10 @@ class ResultsList extends List {
|
||||
}
|
||||
this.createInspectMenu.innerHTML = '';
|
||||
this.createInspectMenu.appendChild(addToSubResultsIdsBtn);
|
||||
// Hide create menu if not in dynamic mode
|
||||
if (!client.dynamicMode) {
|
||||
this.createFromInspect.classList.add('hide');
|
||||
}
|
||||
}
|
||||
|
||||
// create Element from HTML String helper function
|
||||
@ -384,7 +395,7 @@ class ResultsList extends List {
|
||||
|
||||
// Used as a callback to handle incoming match context results when inspect
|
||||
// has been used.
|
||||
showMatchContext(results) {
|
||||
showMatchContext(results, client) {
|
||||
|
||||
this.getHTMLElements([
|
||||
'#context-results',
|
||||
@ -403,7 +414,12 @@ class ResultsList extends List {
|
||||
let tokenHTMlElement;
|
||||
let token;
|
||||
for (let cpos of lc) {
|
||||
token = results.inspectResultsData.cpos_lookup[cpos];
|
||||
if (client.dynamicMode) {
|
||||
token = results.inspectResultsData.cpos_lookup[cpos];
|
||||
// If client is not in dynamic mode use cpos_lookup from results.data
|
||||
} else {
|
||||
token = results.data.cpos_lookup[cpos];
|
||||
}
|
||||
uniqueS.add(token.s)
|
||||
htmlTokenStr = `<span class="token"` +
|
||||
`data-sid="${token.s}"` +
|
||||
@ -414,7 +430,12 @@ class ResultsList extends List {
|
||||
tokenHTMLArray.push(tokenHTMlElement);
|
||||
}
|
||||
for (let cpos of c) {
|
||||
token = results.inspectResultsData.cpos_lookup[cpos];
|
||||
if (client.dynamicMode) {
|
||||
token = results.inspectResultsData.cpos_lookup[cpos];
|
||||
// If client is not in dynamic mode use cpos_lookup from results.data
|
||||
} else {
|
||||
token = results.data.cpos_lookup[cpos];
|
||||
}
|
||||
uniqueContextS.add(token.s);
|
||||
uniqueS.add(token.s);
|
||||
htmlTokenStr = `<span class="token bold light-green"` +
|
||||
@ -428,7 +449,12 @@ class ResultsList extends List {
|
||||
}
|
||||
results.inspectResultsData["context_s_ids"] = Array.from(uniqueContextS);
|
||||
for (let cpos of rc) {
|
||||
token = results.inspectResultsData.cpos_lookup[cpos];
|
||||
if (client.dynamicMode) {
|
||||
token = results.inspectResultsData.cpos_lookup[cpos];
|
||||
// If client is not in dynamic mode use cpos_lookup from results.data
|
||||
} else {
|
||||
token = results.data.cpos_lookup[cpos];
|
||||
}
|
||||
uniqueS.add(token.s)
|
||||
htmlTokenStr = `<span class="token"` +
|
||||
`data-sid="${token.s}"` +
|
||||
@ -665,7 +691,7 @@ class ResultsList extends List {
|
||||
this.eventTokens[htmlId] = [];
|
||||
}
|
||||
|
||||
createResultRowElement(item, chunk, imported=false) {
|
||||
createResultRowElement(item, chunk, client, imported=false) {
|
||||
let aCellElement;
|
||||
let addToSubResultsBtn;
|
||||
let cCellElement;
|
||||
@ -733,7 +759,9 @@ class ResultsList extends List {
|
||||
);
|
||||
addToSubResultsBtn.innerHTML = '<i class="material-icons add-btn">add</i>';
|
||||
aCellElement.appendChild(inspectBtn);
|
||||
aCellElement.appendChild(addToSubResultsBtn);
|
||||
if (client.dynamicMode) {
|
||||
aCellElement.appendChild(addToSubResultsBtn);
|
||||
}
|
||||
// add text titles at front as first td of one row
|
||||
textTitlesCellElement.textContent = [...textTitles].join(", ");
|
||||
matchRowElement.insertAdjacentHTML("afterbegin", textTitlesCellElement.outerHTML);
|
||||
|
@ -89,7 +89,9 @@ function queryDataRecievingCallback(resultsList, detail) {
|
||||
if (client.dynamicMode) {
|
||||
resultsList.add(resultItems, (items) => {
|
||||
for (let item of items) {
|
||||
item.elm = resultsList.createResultRowElement(item, results.data);
|
||||
item.elm = resultsList.createResultRowElement(item,
|
||||
results.data,
|
||||
client);
|
||||
}
|
||||
});
|
||||
// update user feedback about query status
|
||||
@ -110,12 +112,27 @@ function queryDataRecievingCallback(resultsList, detail) {
|
||||
resultsList.expertModeOn('query-display', results);
|
||||
}
|
||||
} else if (!client.dynamicMode) {
|
||||
results.jsList.add(resultItems, (items) => {
|
||||
resultsList.add(resultItems, (items) => {
|
||||
for (let item of items) {
|
||||
item.elm = results.jsList.createResultRowElement(item, payload.chunk,
|
||||
true);
|
||||
item.elm = resultsList.createResultRowElement(item,
|
||||
results.data,
|
||||
client,
|
||||
true);
|
||||
}
|
||||
});
|
||||
// update user feedback about query status
|
||||
resultsList.recievedMatchCount.textContent = results.data.matches.length;
|
||||
resultsList.queryProgressBar.firstElementChild.style.width = `${client.requestQueryProgress}%`;
|
||||
resultsList.textLookupCount.textContent = `${Object.keys(results.data.text_lookup).length}`;
|
||||
let titles = new Array();
|
||||
for (let [key, value] of Object.entries(results.data.text_lookup)) {
|
||||
titles.push(`${value.title} (${value.publishing_year})`);
|
||||
}
|
||||
resultsList.textLookupTitles.textContent = `${titles.join(', ')}`;
|
||||
// updating table on finished item creation callback via createResultRowElement
|
||||
resultsList.update();
|
||||
resultsList.changeHitsPerPage(client, results);
|
||||
resultsList.changeContext();
|
||||
}
|
||||
}
|
||||
|
||||
@ -158,7 +175,7 @@ function resultsDataRecievedCallback(resultsList, detail) {
|
||||
*/
|
||||
resultsList.subResultsCreate.classList.toggle('disabled', true);
|
||||
}
|
||||
resultsList.showMatchContext(detail.results);
|
||||
resultsList.showMatchContext(detail.results, detail.client);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user