WIP
This commit is contained in:
parent
f0ab517857
commit
8232126684
3 changed files with 165 additions and 0 deletions
79
src/octoprint/static/js/app/client.js
Normal file
79
src/octoprint/static/js/app/client.js
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
var OctoPrint = (function($, _, SockJS) {
|
||||
var self = {
|
||||
options: {
|
||||
socketReconnectTimeouts: [0, 1, 1, 2, 3, 5, 8, 13, 20, 40, 100],
|
||||
socketDebug: false,
|
||||
socketNormalClose: 1000
|
||||
}
|
||||
};
|
||||
|
||||
var _socket = undefined;
|
||||
var _socketAddress = undefined;
|
||||
var _socketReconnecting = false;
|
||||
var _socketReconnectTrial = 0;
|
||||
var _socketIgnoreReconnects = 1;
|
||||
|
||||
function callCallback(callback, arguments) {
|
||||
if (!_.isFunction(self.options[callback])) {
|
||||
throw Error("No such callback: " + callback);
|
||||
}
|
||||
|
||||
self.options[callback].bind(arguments);
|
||||
}
|
||||
|
||||
function connect(socketAddress) {
|
||||
var address = socketAddress || _socketAddress;
|
||||
if (address == undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
var socketOptions = {
|
||||
debug: options.socketDebug || false
|
||||
};
|
||||
|
||||
if (_socket != undefined) {
|
||||
self._socket.close();
|
||||
delete self._socket;
|
||||
}
|
||||
|
||||
_socketAddress = address;
|
||||
_socket = new SockJS(address, undefined, socketOptions);
|
||||
_socket.onopen = onSocketOpen;
|
||||
_socket.onclose = onSocketClose;
|
||||
_socket.onmessage = onSocketMessage;
|
||||
}
|
||||
|
||||
function onSocketOpen() {
|
||||
_socketReconnecting = false;
|
||||
_socketReconnectTrial = 0;
|
||||
}
|
||||
|
||||
function onSocketClose(error) {
|
||||
if (error.code == options.socketNormalClose) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (_socketReconnectTrial >= _socketIgnoreReconnects) {
|
||||
if (options.onAttemptingReconnect) {
|
||||
options.onAttemptingReconnect(_socketReconnectTrial);
|
||||
}
|
||||
}
|
||||
|
||||
if (_socketReconnectTrial < options.socketReconnectTimeouts.length) {
|
||||
var timeout = options.socketReconnectTimeouts[_socketReconnectTrial];
|
||||
log.info("Reconnect trial #" + self._autoReconnectTrial + ", waiting " + timeout + "s");
|
||||
setTimeout(connect, timeout * 1000);
|
||||
_socketReconnectTrial++;
|
||||
} else {
|
||||
if (options.onReconnectFailed) {
|
||||
options.onReconnectFailed();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onSocketMessage(data) {
|
||||
}
|
||||
|
||||
return self;
|
||||
|
||||
}(jQuery, _, SockJS));
|
||||
21
src/octoprint/static/js/app/client/files.js
Normal file
21
src/octoprint/static/js/app/client/files.js
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
OctoPrint.files = (function($, _) {
|
||||
var self = {};
|
||||
|
||||
self.get = function(opts) {
|
||||
var url = "api/files";
|
||||
var origin = opts.origin || "";
|
||||
|
||||
if (origin && _.contains(["local", "sdcard"], origin)) {
|
||||
url += origin + "/"
|
||||
}
|
||||
|
||||
OctoPrint.get_json({
|
||||
url: url,
|
||||
success: opts.success,
|
||||
error: opts.error,
|
||||
complete: opts.complete
|
||||
})
|
||||
};
|
||||
|
||||
return self;
|
||||
})($, _);
|
||||
65
src/octoprint/static/js/app/client/octoprint.js
Normal file
65
src/octoprint/static/js/app/client/octoprint.js
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
var OctoPrint = (function($) {
|
||||
var self = {};
|
||||
|
||||
self.options = {
|
||||
"baseurl": undefined,
|
||||
"apikey": undefined
|
||||
};
|
||||
|
||||
self.ajax = function(opts) {
|
||||
var url = self.options.baseurl + opts.url;
|
||||
var headers = $.extend({}, opts.headers || {});
|
||||
headers["X-Api-Key"] = self.options.apikey;
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.url = url;
|
||||
|
||||
$.ajax(params);
|
||||
};
|
||||
|
||||
self.get = function(opts) {
|
||||
var params = $.extend({}, opts);
|
||||
params.type = "GET";
|
||||
|
||||
self.ajax(params);
|
||||
};
|
||||
|
||||
self.post = function(opts) {
|
||||
var headers = $.extend({}, opts.headers || {});
|
||||
headers["Cache-Control"] = "no-cache";
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.type = "POST";
|
||||
params.data = JSON.stringify(data);
|
||||
params.headers = headers;
|
||||
|
||||
self.ajax(params);
|
||||
};
|
||||
|
||||
self.delete = function(opts) {
|
||||
var params = $.extend({}, opts);
|
||||
params.type = "DELETE";
|
||||
|
||||
self.ajax(params);
|
||||
};
|
||||
|
||||
self.get_json = function(opts) {
|
||||
var params = $.extend({}, opts);
|
||||
params.dataType = "json";
|
||||
|
||||
self.get(params);
|
||||
};
|
||||
|
||||
self.post_json = function(opts) {
|
||||
var data = opts.data || {};
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.contentType = "application/json; charset=UTF-8";
|
||||
params.dataType = "json";
|
||||
params.data = JSON.stringify(data);
|
||||
|
||||
self.post(params);
|
||||
};
|
||||
|
||||
return self;
|
||||
})($);
|
||||
Loading…
Reference in a new issue