nopaque/app/static/js/nopaque.Results.js

77 lines
2.5 KiB
JavaScript
Raw Normal View History

2020-04-02 12:22:03 +00:00
class Results {
2020-04-07 11:13:48 +00:00
constructor(resultsJSON, resultsList) {
this.resultsJSON = resultsJSON;
2020-04-02 12:22:03 +00:00
this.resultsList = resultsList;
}
2020-04-07 11:13:48 +00:00
clear_all() {
this.resultsList.clear();
this.resultsList.update();
this.resultsJSON.init();
}
}
class ResultsJSON {
// Sets empty object structure. Also usefull to delete old results.
init(matchCount = 0) {
this["matches"] = []; // list of all c with lc and rc
this["cpos_lookup"] = {}; // object contains all this key value pair
this["text_lookup"] = {}; // same as above for all text ids
this["match_count"] = matchCount;
}
// get query as string from form Element
getQueryStr(queryFormElement) {
// gets query
let queryFormData;
let queryStr;
queryFormData = new FormData(queryFormElement);
queryStr = queryFormData.get("query-form-query");
this["query"] = queryStr;
}
2020-04-02 12:22:03 +00:00
2020-04-07 11:13:48 +00:00
// function creates a unique and safe filename for the download
createDownloadFilename() {
let today;
let currentDate;
let currentTime;
let safeFilename;
let resultFilename;
// get and create metadata
today = new Date();
currentDate = today.getUTCFullYear() + '-' + (today.getUTCMonth() +1) + '-' + today.getUTCDate();
currentTime = today.getUTCHours() + ":" + today.getUTCMinutes() + ":" + today.getUTCSeconds();
safeFilename = this.query.replace(/[^a-z0-9_-]/gi, "_");
resultFilename = "UTC-" + currentDate + "_" + currentTime + "_" + safeFilename;
return resultFilename
}
// Function to download data as a Blob created from a string, should be multi purpose
download(downloadElem, dataStr, filename, type, filenameSlug) {
let file;
console.log("Start Download!");
filename += filenameSlug;
file = new Blob([dataStr], {type: type});
if (window.navigator.msSaveOrOpenBlob) {// IE10+
window.navigator.msSaveOrOpenBlob(file, filename);
}
else { // Others
var url = URL.createObjectURL(file);
downloadElem.href = url;
downloadElem.download = filename;
}
}
// function to download the results as JSON
downloadJSONRessource(resultFilename) {
let dataStr;
let downloadElement;
// stringify JSON object for json download
dataStr = JSON.stringify(results.resultsJSON, undefined, "\t"); // use tabs to save some space
// get downloadResultsElement
downloadElement = document.getElementById("download-results-json");
// start actual download
this.download(downloadElement, dataStr, resultFilename, "text/json", ".json")
}
2020-04-02 12:22:03 +00:00
}