updating to newer jquery and jquery.request.js
This commit is contained in:
9
app.js
9
app.js
@@ -6,8 +6,8 @@ ddoc =
|
|||||||
{ _id:'_design/removalist'
|
{ _id:'_design/removalist'
|
||||||
, rewrites :
|
, rewrites :
|
||||||
[ {from:"/", to:'pages/index.html'}
|
[ {from:"/", to:'pages/index.html'}
|
||||||
, {from:"csv", to:'_list/csv/all'}
|
, {from:"/api/csv", to:'_list/csv/all'}
|
||||||
, {from:"headers", to:'_list/urlencode/headers', query: {group: true}}
|
, {from:"/api/headers", to:'_list/urlencode/headers', query: {group: true}}
|
||||||
, {from:"/api", to:'../../'}
|
, {from:"/api", to:'../../'}
|
||||||
, {from:"/api/*", to:'../../*'}
|
, {from:"/api/*", to:'../../*'}
|
||||||
, {from:"/*", to:'*'}
|
, {from:"/*", to:'*'}
|
||||||
@@ -47,7 +47,8 @@ ddoc.lists = {
|
|||||||
*/
|
*/
|
||||||
csv: function(head, req) {
|
csv: function(head, req) {
|
||||||
if ('headers' in req.query) {
|
if ('headers' in req.query) {
|
||||||
var headers = JSON.parse(unescape(req.query.headers))[0];
|
var headers = JSON.parse(unescape(req.query.headers));
|
||||||
|
|
||||||
var row, sep = '\n', headerSent = false, startedOutput = false;
|
var row, sep = '\n', headerSent = false, startedOutput = false;
|
||||||
|
|
||||||
start({"headers":{"Content-Type" : "text/csv; charset=utf-8"}});
|
start({"headers":{"Content-Type" : "text/csv; charset=utf-8"}});
|
||||||
@@ -69,7 +70,7 @@ ddoc.lists = {
|
|||||||
send('\n');
|
send('\n');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
send("You must pass in the urlencoded headers you wish to build the CSV from. Query /_list/urlencode/headers");
|
send("You must pass in the urlencoded headers you wish to build the CSV from. Query /_list/urlencode/headers?group=true");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -6,8 +6,9 @@
|
|||||||
<link rel="stylesheet" href="style/reset.css" media="screen">
|
<link rel="stylesheet" href="style/reset.css" media="screen">
|
||||||
<link rel="stylesheet" href="style/demo.css" media="screen">
|
<link rel="stylesheet" href="style/demo.css" media="screen">
|
||||||
<link rel="stylesheet" href="style/css3buttons.css" media="screen">
|
<link rel="stylesheet" href="style/css3buttons.css" media="screen">
|
||||||
<script type="text/javascript" src="script/jquery-1.5.min.js"></script>
|
<script type="text/javascript" src="script/jquery-1.6.1.min.js"></script>
|
||||||
<script type="text/javascript" src="script/jquery.mustache.js"></script>
|
<script type="text/javascript" src="script/jquery.mustache.js"></script>
|
||||||
|
<script type="text/javascript" src="script/jquery.request.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(function() {
|
$(function() {
|
||||||
|
|
||||||
@@ -34,6 +35,13 @@
|
|||||||
config.baseURL = "/" + config.db + "/_design/" + config.design + "/_rewrite/";
|
config.baseURL = "/" + config.db + "/_design/" + config.design + "/_rewrite/";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var reqOpts = {
|
||||||
|
uri: config.baseURL + "api",
|
||||||
|
method: "GET",
|
||||||
|
headers: {"Content-type": "application/json"},
|
||||||
|
cache: true
|
||||||
|
}
|
||||||
|
|
||||||
var csvUrl;
|
var csvUrl;
|
||||||
|
|
||||||
/** uses $.mustache to render a template out to a target DOM
|
/** uses $.mustache to render a template out to a target DOM
|
||||||
@@ -50,7 +58,9 @@
|
|||||||
return (parseFloat(bytes)/1024/1024).toString().substr(0,4) + "MB"
|
return (parseFloat(bytes)/1024/1024).toString().substr(0,4) + "MB"
|
||||||
}
|
}
|
||||||
|
|
||||||
function gotDb( dbInfo ) {
|
function gotDb( err, resp, body ) {
|
||||||
|
|
||||||
|
var dbInfo = JSON.parse(body);
|
||||||
|
|
||||||
$.extend(dbInfo, {
|
$.extend(dbInfo, {
|
||||||
"host": window.location.host,
|
"host": window.location.host,
|
||||||
@@ -63,16 +73,16 @@
|
|||||||
render( 'bulk', 'bulk', dbInfo );
|
render( 'bulk', 'bulk', dbInfo );
|
||||||
render( 'generating', 'download' );
|
render( 'generating', 'download' );
|
||||||
|
|
||||||
function gotHeaders( headers ) {
|
function gotHeaders( err, resp, body ) {
|
||||||
csvUrl = config.baseURL + 'csv?headers=' + headers;
|
csvUrl = config.baseURL + 'api/csv?headers=' + body;
|
||||||
render( 'actions', 'actions', $.extend(dbInfo, {url: csvUrl}) );
|
render( 'actions', 'actions', $.extend({}, dbInfo, {url: csvUrl}) );
|
||||||
}
|
}
|
||||||
|
|
||||||
$.get( config.baseURL + 'headers', gotHeaders );
|
$.request($.extend({}, reqOpts, {uri: config.baseURL + 'api/headers'}), gotHeaders);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$.getJSON( config.baseURL + "api", gotDb );
|
$.request($.extend({}, reqOpts, {uri: config.baseURL + 'api'}), gotDb);
|
||||||
|
|
||||||
$( '.csv' ).live('click', ( function( e ) {
|
$( '.csv' ).live('click', ( function( e ) {
|
||||||
window.location.href = csvUrl;
|
window.location.href = csvUrl;
|
||||||
|
|||||||
16
attachments/script/jquery-1.5.min.js
vendored
16
attachments/script/jquery-1.5.min.js
vendored
File diff suppressed because one or more lines are too long
18
attachments/script/jquery-1.6.1.min.js
vendored
Normal file
18
attachments/script/jquery-1.6.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
215
attachments/script/jquery.request.js
Normal file
215
attachments/script/jquery.request.js
Normal file
@@ -0,0 +1,215 @@
|
|||||||
|
(function() {
|
||||||
|
var define = window.define
|
||||||
|
if(!define) define = function(deps, definer) {
|
||||||
|
if(!window.jQuery)
|
||||||
|
throw new Error("Can't find jQuery");
|
||||||
|
return definer(window.jQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
define(['jquery'], function(jQuery) {
|
||||||
|
|
||||||
|
//
|
||||||
|
// request.jquery
|
||||||
|
//
|
||||||
|
|
||||||
|
var DEFAULT_TIMEOUT = 3 * 60 * 1000; // 3 minutes
|
||||||
|
|
||||||
|
function request(options, callback) {
|
||||||
|
if(typeof options === 'string')
|
||||||
|
options = {'uri':options};
|
||||||
|
else
|
||||||
|
options = JSON.parse(JSON.stringify(options)); // Use a duplicate for mutating.
|
||||||
|
|
||||||
|
if (!options.uri)
|
||||||
|
throw new Error("options.uri is a required argument");
|
||||||
|
else if(typeof options.uri != "string")
|
||||||
|
throw new Error("options.uri must be a string");
|
||||||
|
|
||||||
|
; $.each(['proxy', '_redirectsFollowed', 'maxRedirects', 'followRedirect'], function(i, opt) {
|
||||||
|
if(options[opt])
|
||||||
|
throw new Error("options." + opt + " is not supported");
|
||||||
|
})
|
||||||
|
|
||||||
|
options.method = options.method || 'GET';
|
||||||
|
options.headers = options.headers || {};
|
||||||
|
|
||||||
|
if(options.headers.host)
|
||||||
|
throw new Error("Options.headers.host is not supported");
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Browsers do not like this.
|
||||||
|
if(options.body)
|
||||||
|
options.headers['content-length'] = options.body.length;
|
||||||
|
*/
|
||||||
|
|
||||||
|
var headers = {};
|
||||||
|
var beforeSend = function(xhr, settings) {
|
||||||
|
if(!options.headers.authorization && options.auth) {
|
||||||
|
debugger
|
||||||
|
options.headers.authorization = 'Basic ' + b64_enc(options.auth.username + ':' + options.auth.password);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var key in options.headers)
|
||||||
|
xhr.setRequestHeader(key, options.headers[key]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Establish a place where the callback arguments will go.
|
||||||
|
var result = [];
|
||||||
|
|
||||||
|
var onSuccess = function(data, reason, xhr) {
|
||||||
|
result = [null, xhr, data];
|
||||||
|
}
|
||||||
|
|
||||||
|
var onError = function (xhr, reason, er) {
|
||||||
|
var body = undefined;
|
||||||
|
|
||||||
|
if(!er) {
|
||||||
|
if(reason == 'timeout') {
|
||||||
|
er = new Error("Request timeout");
|
||||||
|
} else if(reason == 'error') {
|
||||||
|
if(xhr.status > 299 && xhr.responseText.length > 0) {
|
||||||
|
// Looks like HTTP worked, so there is no error as far as request is concerned. Simulate a success scenario.
|
||||||
|
er = null;
|
||||||
|
body = xhr.responseText;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
er = new Error("Unknown error; reason = " + reason);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result = [er, xhr, body];
|
||||||
|
}
|
||||||
|
|
||||||
|
var onComplete = function(xhr, reason) {
|
||||||
|
if(result.length === 0)
|
||||||
|
result = [new Error("Result does not exist at completion time")];
|
||||||
|
return callback && callback.apply(this, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var cors_creds = !!( options.creds || options.withCredentials );
|
||||||
|
|
||||||
|
return jQuery.ajax({ 'async' : true
|
||||||
|
, 'cache' : (options.cache || false)
|
||||||
|
, 'contentType': (options.headers['content-type'] || 'application/x-www-form-urlencoded')
|
||||||
|
, 'type' : options.method
|
||||||
|
, 'url' : options.uri
|
||||||
|
, 'data' : (options.body || undefined)
|
||||||
|
, 'timeout' : (options.timeout || request.DEFAULT_TIMEOUT)
|
||||||
|
, 'dataType' : 'text'
|
||||||
|
, 'processData': false
|
||||||
|
, 'beforeSend' : beforeSend
|
||||||
|
, 'success' : onSuccess
|
||||||
|
, 'error' : onError
|
||||||
|
, 'complete' : onComplete
|
||||||
|
, 'xhrFields' : { 'withCredentials': cors_creds
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
request.withCredentials = false;
|
||||||
|
request.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;
|
||||||
|
|
||||||
|
var shortcuts = [ 'get', 'put', 'post', 'head' ];
|
||||||
|
$.each(shortcuts, function(i, shortcut) {
|
||||||
|
var method = shortcut.toUpperCase();
|
||||||
|
var func = shortcut.toLowerCase();
|
||||||
|
|
||||||
|
request[func] = function(opts) {
|
||||||
|
if(typeof opts === 'string')
|
||||||
|
opts = {'method':method, 'uri':opts};
|
||||||
|
else {
|
||||||
|
opts = JSON.parse(JSON.stringify(opts));
|
||||||
|
opts.method = method;
|
||||||
|
}
|
||||||
|
|
||||||
|
var args = [opts].concat(Array.prototype.slice.apply(arguments, [1]));
|
||||||
|
return request.apply(this, args);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
request.json = function(options, callback) {
|
||||||
|
options = JSON.parse(JSON.stringify(options));
|
||||||
|
options.headers = options.headers || {};
|
||||||
|
options.headers['accept'] = options.headers['accept'] || 'application/json';
|
||||||
|
|
||||||
|
if(options.method !== 'GET')
|
||||||
|
options.headers['content-type'] = 'application/json';
|
||||||
|
|
||||||
|
return request(options, function(er, resp, body) {
|
||||||
|
if(!er)
|
||||||
|
body = JSON.parse(body)
|
||||||
|
return callback && callback(er, resp, body);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
request.couch = function(options, callback) {
|
||||||
|
return request.json(options, function(er, resp, body) {
|
||||||
|
if(er)
|
||||||
|
return callback && callback(er, resp, body);
|
||||||
|
|
||||||
|
if((resp.status < 200 || resp.status > 299) && body.error)
|
||||||
|
// The body is a Couch JSON object indicating the error.
|
||||||
|
return callback && callback(body, resp);
|
||||||
|
|
||||||
|
return callback && callback(er, resp, body);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
jQuery(document).ready(function() {
|
||||||
|
jQuery.request = request;
|
||||||
|
})
|
||||||
|
|
||||||
|
return request;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
//
|
||||||
|
// Utility
|
||||||
|
//
|
||||||
|
|
||||||
|
// MIT License from http://phpjs.org/functions/base64_encode:358
|
||||||
|
function b64_enc (data) {
|
||||||
|
// Encodes string using MIME base64 algorithm
|
||||||
|
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
||||||
|
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc="", tmp_arr = [];
|
||||||
|
|
||||||
|
if (!data) {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
// assume utf8 data
|
||||||
|
// data = this.utf8_encode(data+'');
|
||||||
|
|
||||||
|
do { // pack three octets into four hexets
|
||||||
|
o1 = data.charCodeAt(i++);
|
||||||
|
o2 = data.charCodeAt(i++);
|
||||||
|
o3 = data.charCodeAt(i++);
|
||||||
|
|
||||||
|
bits = o1<<16 | o2<<8 | o3;
|
||||||
|
|
||||||
|
h1 = bits>>18 & 0x3f;
|
||||||
|
h2 = bits>>12 & 0x3f;
|
||||||
|
h3 = bits>>6 & 0x3f;
|
||||||
|
h4 = bits & 0x3f;
|
||||||
|
|
||||||
|
// use hexets to index into b64, and append result to encoded string
|
||||||
|
tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
|
||||||
|
} while (i < data.length);
|
||||||
|
|
||||||
|
enc = tmp_arr.join('');
|
||||||
|
|
||||||
|
switch (data.length % 3) {
|
||||||
|
case 1:
|
||||||
|
enc = enc.slice(0, -2) + '==';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
enc = enc.slice(0, -1) + '=';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return enc;
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
||||||
Reference in New Issue
Block a user