Index: ../trunk-jpl/src/m/classes/clusters/generic.js =================================================================== --- ../trunk-jpl/src/m/classes/clusters/generic.js (revision 20587) +++ ../trunk-jpl/src/m/classes/clusters/generic.js (revision 20588) @@ -48,12 +48,36 @@ var oReq = new XMLHttpRequest(); oReq.open("POST", this.url, true); - oReq.responseType = 'arraybuffer'; - + oReq.responseType = 'application/octet-stream'; + oReq.position = 0 + + //TODO: dynamic progress update with package lengths and parsing + oReq.onprogress = function (oEvent) { + var newResponse = oReq.responseText; + if (newResponse.length == 13) { //"Starting" length as encoded in base64 length + $(".run-button").html("COMPUTING...").prop("disabled", true); + console.log("base64 repsonse: " + newResponse + " string response: " + window.atob(oReq.responseText)); + } + }; + oReq.onload = function (oEvent) { - var returnBuffer = new Uint8Array(oReq.response.slice()); + //get context to this.str2ab to avoid duplciation + function str2ab(str) { + var buf = new Uint8Array(str.length); + for (var i=0, strLen=str.length; i < strLen; i++) { + buf[i] = str.charCodeAt(i); + } + return buf; + } //}}} + var buffer2 = str2ab(window.atob(oReq.responseText.slice(13))); + var returnBuffer = new Uint8Array(buffer2); var returnBuffer_size=returnBuffer.byteLength; - md.results= parseresultsfrombuffer(returnBuffer,returnBuffer_size); + try { + md.results= parseresultsfrombuffer(returnBuffer,returnBuffer_size); + } + catch (e) { + console.log(e); + } callbackfunction(); };