summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2016-12-08 21:31:42 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2016-12-08 21:35:14 -0500
commit6803ee4faff6f288aac3d92c3c7b1de9e132cd77 (patch)
tree146f7073eb17c996340f9c84626abdfc6235dea1
parent14164bdb9a931073821933beeb863bc80bd22315 (diff)
Use external binaryXRH instead of bundling a modified copy.
-rw-r--r--docs/examples/assets/js/dependencies.js1
-rw-r--r--jarmon/jarmon.js216
-rw-r--r--jarmon/jarmon.test.js2
3 files changed, 8 insertions, 211 deletions
diff --git a/docs/examples/assets/js/dependencies.js b/docs/examples/assets/js/dependencies.js
index dfefa39..417c42c 100644
--- a/docs/examples/assets/js/dependencies.js
+++ b/docs/examples/assets/js/dependencies.js
@@ -5,6 +5,7 @@
// @code_url http://flot.googlecode.com/svn/trunk/jquery.flot.stack.js
// @code_url http://flot.googlecode.com/svn/trunk/jquery.flot.selection.js
// @code_url http://javascriptrrd.cvs.sourceforge.net/viewvc/javascriptrrd/v0/src/lib/rrdFile.js
+// @code_url http://javascriptrrd.cvs.sourceforge.net/viewvc/javascriptrrd/v0/src/lib/binaryXHR.js
// @code_url https://raw.github.com/jquerytools/jquerytools/dev/src/dateinput/dateinput.js
// @code_url https://raw.github.com/jquerytools/jquerytools/dev/src/tabs/tabs.js
// @code_url https://raw.github.com/jquerytools/jquerytools/dev/src/toolbox/toolbox.history.js
diff --git a/jarmon/jarmon.js b/jarmon/jarmon.js
index 4e58334..8594fda 100644
--- a/jarmon/jarmon.js
+++ b/jarmon/jarmon.js
@@ -9,7 +9,8 @@
* - http://collectd.org/
*
* Requirements:
- * - JavascriptRRD: http://javascriptrrd.sourceforge.net/
+ * - javascriptrrd.rrdFile: http://javascriptrrd.sourceforge.net/docs/javascriptrrd_v1.1.1/doc/lib/rrdFile_js.html
+ * - javascriptrrd.binaryXHR: http://javascriptrrd.sourceforge.net/docs/javascriptrrd_v1.1.1/doc/lib/binaryXHR_js.html
* - jQuery: http://jquery.com/
* - Flot: http://code.google.com/p/flot/
*
@@ -26,207 +27,6 @@ if(typeof(jarmon) === 'undefined') {
var jarmon = {};
}
-// A VBScript and Javascript helper function to convert IE responseBody to a
-// byte string.
-// http://miskun.com/javascript/internet-explorer-and-binary-files-data-access/
-var IEBinaryToArray_ByteStr_Script =
- "<!-- IEBinaryToArray_ByteStr -->\r\n"+
- "<script type='text/vbscript'>\r\n"+
- "Function IEBinaryToArray_ByteStr(Binary)\r\n"+
- " IEBinaryToArray_ByteStr = CStr(Binary)\r\n"+
- "End Function\r\n"+
- "Function IEBinaryToArray_ByteStr_Last(Binary)\r\n"+
- " Dim lastIndex\r\n"+
- " lastIndex = LenB(Binary)\r\n"+
- " if lastIndex mod 2 Then\r\n"+
- " IEBinaryToArray_ByteStr_Last = Chr( AscB( MidB( Binary, lastIndex, 1 ) ) )\r\n"+
- " Else\r\n"+
- " IEBinaryToArray_ByteStr_Last = "+'""'+"\r\n"+
- " End If\r\n"+
- "End Function\r\n"+
- "</script>\r\n";
-document.write(IEBinaryToArray_ByteStr_Script);
-
-jarmon.GetIEByteArray_ByteStr = function(IEByteArray) {
- if(typeof(jarmon.ByteMapping) === 'undefined') {
- jarmon.ByteMapping = {};
- for ( var i = 0; i < 256; i++ ) {
- for ( var j = 0; j < 256; j++ ) {
- jarmon.ByteMapping[ String.fromCharCode( i + j * 256 ) ] =
- String.fromCharCode(i) + String.fromCharCode(j);
- }
- }
- }
-
- var rawBytes = IEBinaryToArray_ByteStr(IEByteArray);
- var lastChr = IEBinaryToArray_ByteStr_Last(IEByteArray);
- return rawBytes.replace(/[\s\S]/g,
- function( match ) { return jarmon.ByteMapping[match]; }) + lastChr;
-};
-
-/*
- * BinaryFile over XMLHttpRequest
- * Part of the javascriptRRD package
- * Copyright (c) 2009 Frank Wuerthwein, fkw@ucsd.edu
- * MIT License [http://www.opensource.org/licenses/mit-license.php]
- *
- * Original repository: http://javascriptrrd.sourceforge.net/
- *
- * Based on:
- * Binary Ajax 0.1.5
- * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com,
- * http://blog.nihilogic.dk/
- * MIT License [http://www.opensource.org/licenses/mit-license.php]
- */
-
-// ============================================================
-// Exception class
-jarmon.InvalidBinaryFile = function(msg) {
- this.message=msg;
- this.name="Invalid BinaryFile";
-};
-
-// pretty print
-jarmon.InvalidBinaryFile.prototype.toString = function() {
- return this.name + ': "' + this.message + '"';
-};
-
-// =====================================================================
-// BinaryFile class
-// Allows access to element inside a binary stream
-jarmon.BinaryFile = function(strData, iDataOffset, iDataLength) {
-
- var data = strData;
- var dataOffset = iDataOffset || 0;
- var dataLength = 0;
- // added
- var doubleMantExpHi=Math.pow(2,-28);
- var doubleMantExpLo=Math.pow(2,-52);
- var doubleMantExpFast=Math.pow(2,-20);
-
- if (typeof strData === "string") {
- dataLength = iDataLength || data.length;
- } else {
- throw new jarmon.InvalidBinaryFile(
- "Unsupported type " + (typeof strData));
- }
-
- this.getRawData = function() {
- return data;
- };
-
- this.getByteAt = function(iOffset) {
- return data.charCodeAt(iOffset + dataOffset) & 0xFF;
- };
-
- this.getLength = function() {
- return dataLength;
- };
-
- this.getSByteAt = function(iOffset) {
- var iByte = this.getByteAt(iOffset);
- if (iByte > 127)
- return iByte - 256;
- else
- return iByte;
- };
-
- this.getShortAt = function(iOffset) {
- var iShort = (
- this.getByteAt(iOffset + 1) << 8) + this.getByteAt(iOffset);
- if (iShort < 0) iShort += 65536;
- return iShort;
- };
- this.getSShortAt = function(iOffset) {
- var iUShort = this.getShortAt(iOffset);
- if (iUShort > 32767)
- return iUShort - 65536;
- else
- return iUShort;
- };
- this.getLongAt = function(iOffset) {
- var iByte1 = this.getByteAt(iOffset),
- iByte2 = this.getByteAt(iOffset + 1),
- iByte3 = this.getByteAt(iOffset + 2),
- iByte4 = this.getByteAt(iOffset + 3);
-
- var iLong = (((((iByte4 << 8) + iByte3) << 8) + iByte2) << 8) + iByte1;
- if (iLong < 0) iLong += 4294967296;
- return iLong;
- };
- this.getSLongAt = function(iOffset) {
- var iULong = this.getLongAt(iOffset);
- if (iULong > 2147483647)
- return iULong - 4294967296;
- else
- return iULong;
- };
- this.getStringAt = function(iOffset, iLength) {
- var aStr = [];
- for (var i=iOffset,j=0;i<iOffset+iLength;i++,j++) {
- aStr[j] = String.fromCharCode(this.getByteAt(i));
- }
- return aStr.join("");
- };
-
- // Added
- this.getCStringAt = function(iOffset, iMaxLength) {
- var aStr = [];
- for (var i=iOffset,j=0;(i<iOffset+iMaxLength) &&
- (this.getByteAt(i)>0);i++,j++) {
- aStr[j] = String.fromCharCode(this.getByteAt(i));
- }
- return aStr.join("");
- };
-
- // Added
- this.getDoubleAt = function(iOffset) {
- var iByte1 = this.getByteAt(iOffset),
- iByte2 = this.getByteAt(iOffset + 1),
- iByte3 = this.getByteAt(iOffset + 2),
- iByte4 = this.getByteAt(iOffset + 3),
- iByte5 = this.getByteAt(iOffset + 4),
- iByte6 = this.getByteAt(iOffset + 5),
- iByte7 = this.getByteAt(iOffset + 6),
- iByte8 = this.getByteAt(iOffset + 7);
- var iSign=iByte8 >> 7;
- var iExpRaw=((iByte8 & 0x7F)<< 4) + (iByte7 >> 4);
- var iMantHi=((((((iByte7 & 0x0F) << 8) + iByte6) << 8) + iByte5) << 8) + iByte4;
- var iMantLo=((((iByte3) << 8) + iByte2) << 8) + iByte1;
-
- if (iExpRaw===0) return 0.0;
- if (iExpRaw===0x7ff) return undefined;
-
- var iExp=(iExpRaw & 0x7FF)-1023;
-
- var dDouble = ((iSign===1)?-1:1)*Math.pow(2,iExp)*(1.0 + iMantLo*doubleMantExpLo + iMantHi*doubleMantExpHi);
- return dDouble;
- };
- // added
- // Extracts only 4 bytes out of 8, loosing in precision (20 bit mantissa)
- this.getFastDoubleAt = function(iOffset) {
- var iByte5 = this.getByteAt(iOffset + 4),
- iByte6 = this.getByteAt(iOffset + 5),
- iByte7 = this.getByteAt(iOffset + 6),
- iByte8 = this.getByteAt(iOffset + 7);
- var iSign=iByte8 >> 7;
- var iExpRaw=((iByte8 & 0x7F)<< 4) + (iByte7 >> 4);
- var iMant=((((iByte7 & 0x0F) << 8) + iByte6) << 8) + iByte5;
-
- if (iExpRaw===0) return 0.0;
- if (iExpRaw===0x7ff) return undefined;
-
- var iExp=(iExpRaw & 0x7FF)-1023;
-
- var dDouble = ((iSign===1)?-1:1)*Math.pow(2,iExp)*(1.0 + iMant*doubleMantExpFast);
- return dDouble;
- };
-
- this.getCharAt = function(iOffset) {
- return String.fromCharCode(this.getByteAt(iOffset));
- };
-};
-
jarmon.downloadBinary = function(url) {
/**
* Download a binary file asynchronously using the jQuery.ajax function
@@ -253,15 +53,11 @@ jarmon.downloadBinary = function(url) {
delete this._nativeXhr;
},
success: function(data, textStatus, jqXHR) {
- // In IE we return the responseBody
- if(typeof(this._nativeXhr.responseBody) !== 'undefined') {
- d.resolve(
- new jarmon.BinaryFile(
- jarmon.GetIEByteArray_ByteStr(
- this._nativeXhr.responseBody)));
- } else {
- d.resolve(new jarmon.BinaryFile(data));
+ var response = this._nativeXhr.responseBody // for IE
+ if (response==undefined) {
+ response=this._nativeXhr.responseText // for standards-compliant browsers
}
+ d.resolve(new BinaryFile(response));
},
error: function(xhr, textStatus, errorThrown) {
d.reject(new Error(textStatus + ':' + xhr.status));
diff --git a/jarmon/jarmon.test.js b/jarmon/jarmon.test.js
index 8494406..5a56d5a 100644
--- a/jarmon/jarmon.test.js
+++ b/jarmon/jarmon.test.js
@@ -36,7 +36,7 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
d.always(
function(ret) {
self.resume(function() {
- Y.Assert.isInstanceOf(jarmon.BinaryFile, ret);
+ Y.Assert.isInstanceOf(BinaryFile, ret);
Y.Assert.areEqual(
String.fromCharCode(0), ret.getCharAt(0));
});