class Results { constructor(resultsJSON, resultsList) { this.resultsJSON = resultsJSON; this.resultsList = resultsList; } 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; } // 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") } }