122 lines
6.0 KiB
JavaScript
122 lines
6.0 KiB
JavaScript
|
|
var Dajaxice = {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
three_d_viewer: {
|
|
|
|
dajaxice_example: function(callback_function, argv, custom_settings){
|
|
return Dajaxice.call('three_d_viewer.dajaxice_example', 'POST', callback_function, argv, custom_settings);
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
,
|
|
|
|
|
|
get_cookie: function(name)
|
|
{
|
|
var cookieValue = null;
|
|
if (document.cookie && document.cookie != '') {
|
|
var cookies = document.cookie.split(';');
|
|
for (var i = 0; i < cookies.length; i++) {
|
|
var cookie = cookies[i].toString().replace(/^\s+/, "").replace(/\s+$/, "");
|
|
// Does this cookie string begin with the name we want?
|
|
if (cookie.substring(0, name.length + 1) == (name + '=')) {
|
|
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return cookieValue;
|
|
},
|
|
|
|
call: function(dajaxice_function, method, dajaxice_callback, argv, custom_settings)
|
|
{
|
|
var custom_settings = custom_settings || {},
|
|
error_callback = Dajaxice.get_setting('default_exception_callback');
|
|
|
|
if('error_callback' in custom_settings && typeof(custom_settings['error_callback']) == 'function'){
|
|
error_callback = custom_settings['error_callback'];
|
|
}
|
|
|
|
var send_data = 'argv='+encodeURIComponent(JSON.stringify(argv)),
|
|
oXMLHttpRequest = new XMLHttpRequest,
|
|
endpoint = '/dajaxice/'+dajaxice_function+'/';
|
|
|
|
if(method == 'GET'){
|
|
endpoint = endpoint + '?' + send_data;
|
|
}
|
|
oXMLHttpRequest.open(method, endpoint);
|
|
oXMLHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
oXMLHttpRequest.setRequestHeader("X-Requested-With", "XMLHttpRequest");
|
|
oXMLHttpRequest.setRequestHeader("X-CSRFToken", Dajaxice.get_cookie('csrftoken'));
|
|
oXMLHttpRequest.onreadystatechange = function() {
|
|
if (this.readyState == XMLHttpRequest.DONE) {
|
|
if(this.responseText == Dajaxice.EXCEPTION || !(this.status in Dajaxice.valid_http_responses())){
|
|
error_callback();
|
|
}
|
|
else{
|
|
var response;
|
|
try {
|
|
response = JSON.parse(this.responseText);
|
|
}
|
|
catch (exception) {
|
|
response = this.responseText;
|
|
}
|
|
dajaxice_callback(response);
|
|
}
|
|
}
|
|
}
|
|
if(method == 'POST'){
|
|
oXMLHttpRequest.send(send_data);
|
|
}
|
|
else{
|
|
oXMLHttpRequest.send();
|
|
}
|
|
return oXMLHttpRequest;
|
|
},
|
|
|
|
setup: function(settings)
|
|
{
|
|
this.settings = settings;
|
|
},
|
|
|
|
get_setting: function(key){
|
|
if(this.settings == undefined || this.settings[key] == undefined){
|
|
return Dajaxice.default_settings[key];
|
|
}
|
|
return this.settings[key];
|
|
},
|
|
|
|
valid_http_responses: function(){
|
|
return {200: null, 301: null, 302: null, 304: null}
|
|
},
|
|
|
|
EXCEPTION: 'DAJAXICE_EXCEPTION',
|
|
default_settings: {'default_exception_callback': function(){ console.log('Dajaxice: Something went wrong.')}}
|
|
};
|
|
|
|
window['Dajaxice'] = Dajaxice;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var JSON;JSON||(JSON={});
|
|
(function(){function k(a){return 10>a?"0"+a:a}function o(a){p.lastIndex=0;return p.test(a)?'"'+a.replace(p,function(a){var c=r[a];return"string"===typeof c?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function m(a,j){var c,d,h,n,g=e,f,b=j[a];b&&("object"===typeof b&&"function"===typeof b.toJSON)&&(b=b.toJSON(a));"function"===typeof i&&(b=i.call(j,a,b));switch(typeof b){case "string":return o(b);case "number":return isFinite(b)?String(b):"null";case "boolean":case "null":return String(b);case "object":if(!b)return"null";
|
|
e+=l;f=[];if("[object Array]"===Object.prototype.toString.apply(b)){n=b.length;for(c=0;c<n;c+=1)f[c]=m(c,b)||"null";h=0===f.length?"[]":e?"[\n"+e+f.join(",\n"+e)+"\n"+g+"]":"["+f.join(",")+"]";e=g;return h}if(i&&"object"===typeof i){n=i.length;for(c=0;c<n;c+=1)"string"===typeof i[c]&&(d=i[c],(h=m(d,b))&&f.push(o(d)+(e?": ":":")+h))}else for(d in b)Object.prototype.hasOwnProperty.call(b,d)&&(h=m(d,b))&&f.push(o(d)+(e?": ":":")+h);h=0===f.length?"{}":e?"{\n"+e+f.join(",\n"+e)+"\n"+g+"}":"{"+f.join(",")+
|
|
"}";e=g;return h}}"function"!==typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+k(this.getUTCMonth()+1)+"-"+k(this.getUTCDate())+"T"+k(this.getUTCHours())+":"+k(this.getUTCMinutes())+":"+k(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var q=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
|
|
p=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,e,l,r={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},i;"function"!==typeof JSON.stringify&&(JSON.stringify=function(a,j,c){var d;l=e="";if(typeof c==="number")for(d=0;d<c;d=d+1)l=l+" ";else typeof c==="string"&&(l=c);if((i=j)&&typeof j!=="function"&&(typeof j!=="object"||typeof j.length!=="number"))throw Error("JSON.stringify");return m("",{"":a})});
|
|
"function"!==typeof JSON.parse&&(JSON.parse=function(a,e){function c(a,d){var g,f,b=a[d];if(b&&typeof b==="object")for(g in b)if(Object.prototype.hasOwnProperty.call(b,g)){f=c(b,g);f!==void 0?b[g]=f:delete b[g]}return e.call(a,d,b)}var d,a=String(a);q.lastIndex=0;q.test(a)&&(a=a.replace(q,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
|
|
"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){d=eval("("+a+")");return typeof e==="function"?c({"":d},""):d}throw new SyntaxError("JSON.parse");})})();
|
|
|