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