diff --git a/content/multipledataset.html b/content/multipledataset.html index 74fd63dd..564116de 100644 --- a/content/multipledataset.html +++ b/content/multipledataset.html @@ -34,11 +34,34 @@ draft: false break; } window.dats=await Promise.all(proms) - reloadSelect() - await reloadContent() + reloadFileSelector() + await reloadSelect() }) } - function reloadSelect(){ + function reloadFileSelector(){ + document.getElementById("customFiles_input").value = "" + } + + async function reloadSelect(){ + radioval=$('#form_dat > input[name=datatype]:checked').val(); + for(file of Array.from(document.getElementById("customFiles_input").files)) + { + switch (radioval) { + case "abs": + var dat=await AbsDataFile.loadAsync(file) + window.dats.push(dat) + break; + + case "fluo": + dat=await FluoDataFile.loadAsync(file) + window.dats.push(dat) + break; + case "ZPE": + dat=await ZPEDataFile.loadAsync(file) + window.dats.push(dat) + break; + } + } $('#form_dat > select').each(function(){ $(this).find('option[value!=""]').remove() const vals=uniq(window.dats.map((d)=>{return d[$(this).attr("name")]})) @@ -49,6 +72,7 @@ draft: false $(this).append(op) } }) + await reloadContent() } async function reloadStat(){ var stb=document.getElementById("stat_table_b"); @@ -162,7 +186,7 @@ draft: false var lnkfile=document.createElement("a") lnkfile.target="_blank" lnkfile.innerText="Go to file" - lnkfile.href=d.sourceFile.viewerUrl + lnkfile.href=await d.sourceFile.getViewerURL() row.appendChild(lnkfile) dtb.appendChild(row) } @@ -179,6 +203,9 @@ draft: false
+ + +
diff --git a/content/onedataset.html b/content/onedataset.html index c00ce2da..7b473ecf 100644 --- a/content/onedataset.html +++ b/content/onedataset.html @@ -114,7 +114,7 @@ draft: false node=document.createElement("a") node.innerText="Go to file" node.target='_blank' - node.href=element.viewerUrl + node.href= await element.getViewerURL() break case "Array": k=element[0] diff --git a/content/view.html b/content/view.html index 6b8aea64..a7da6002 100644 --- a/content/view.html +++ b/content/view.html @@ -24,21 +24,30 @@ draft: false console.warn(mystr); } queryDic=parseQueryStringToDictionary() - key="dataFile" - if(queryDic[key]!=undefined){ - var filename=queryDic[key]; - var path=getFullDataPath(filename); - var textPromise=getTextFromFileAsync(path) + key=["file","fileBase64"] + if(key[0] in queryDic){ + var filename=queryDic[key[0]]; + var textPromise=getTextFromFileUrlAsync(filename) btn_download=document.getElementById("btn_download"); btn_download.onclick=function(){ - window.open(path,"_self"); + window.open(filename,"_self"); } document.getElementById('fileTitle').innerText=filename; document.getElementById('fileContent').innerText=await textPromise; document.getElementById('file').hidden=false; document.getElementById("div_btn").hidden=false; + } else if(key[1] in queryDic){ + var base64=queryDic[key[1]]; + btn_download=document.getElementById("btn_download"); + btn_download.onclick=function(){ + window.open(String.raw`data:application/pdf;base64,${Base64}`,"_self") + } + document.getElementById('fileTitle').hudden=true + document.getElementById('fileContent').innerText=atob(base64) + document.getElementById('file').hidden=false; + document.getElementById("div_btn").hidden=false; } - else { + else{ document.getElementById('error_P').hidden=false; errNode; } diff --git a/static/scripts/data.js b/static/scripts/data.js index c45e486b..d6027c45 100644 --- a/static/scripts/data.js +++ b/static/scripts/data.js @@ -111,7 +111,16 @@ class dataFileBase { this.sourceFile=null } static async loadAsync(file) { - var dat = this.loadString(await getTextFromFileAsync(getFullDataPath(file))); + switch (trueTypeOf(file)) { + case "string": + file=getFullDataPath(file) + var str=await getTextFromFileUrlAsync(file) + break; + case "File": + var str=await getTextFromUploadedFileAsync(file) + break + } + var dat = this.loadString(str); dat.sourceFile=new websiteFile(file) return dat } diff --git a/static/scripts/getTextFromFile.js b/static/scripts/getTextFromFile.js index acc499ad..12ab05bb 100644 --- a/static/scripts/getTextFromFile.js +++ b/static/scripts/getTextFromFile.js @@ -1,7 +1,7 @@ -async function getTextFromFileAsync(file) { +async function getTextFromFileUrlAsync(url) { return new Promise(function (resolve, reject) { var req = new XMLHttpRequest(); - req.open("GET",file, true); + req.open("GET",url, true); req.onreadystatechange = function() { if (req.readyState == 4) { if (req.status == 200) {//when a good response is given do this @@ -17,4 +17,20 @@ async function getTextFromFileAsync(file) { } req.send(); }); -} \ No newline at end of file +} + +async function getTextFromUploadedFileAsync(inputFile){ + const temporaryFileReader = new FileReader(); + + return new Promise((resolve, reject) => { + temporaryFileReader.onerror = () => { + temporaryFileReader.abort(); + reject(new DOMException("Problem parsing input file.")); + }; + + temporaryFileReader.onload = () => { + resolve(temporaryFileReader.result); + }; + temporaryFileReader.readAsText(inputFile); + }); +}; \ No newline at end of file diff --git a/static/scripts/websiteFile.js b/static/scripts/websiteFile.js index 5098180c..1822327a 100644 --- a/static/scripts/websiteFile.js +++ b/static/scripts/websiteFile.js @@ -1,8 +1,18 @@ class websiteFile{ - constructor(path){ - this.path=path + constructor(file){ + this.file=file } - get viewerUrl(){ - return String.raw`/view?dataFile=${this.path}` + + async getViewerURL(){ + var urlbase="/view" + switch (trueTypeOf(this.file)) { + case "string": + return String.raw`${urlbase}?file=${this.file}` + break + case "File": + var base64=btoa(await getTextFromUploadedFileAsync(this.file)) + return String.raw`${urlbase}?fileBase64=${base64}`; + break + } } } \ No newline at end of file