Added files and connection API and socket library
This commit is contained in:
parent
8232126684
commit
5f8c3d967c
4 changed files with 278 additions and 35 deletions
41
src/octoprint/static/js/app/client/connection.js
Normal file
41
src/octoprint/static/js/app/client/connection.js
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
OctoPrint.connection = (function() {
|
||||
var self = {};
|
||||
|
||||
self.getSettings = function(opts) {
|
||||
opts = opts || {};
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.url = "api/connection";
|
||||
|
||||
return OctoPrint.getJson(params);
|
||||
};
|
||||
|
||||
self.connect = function(data, opts) {
|
||||
data = data || {};
|
||||
|
||||
return self.issueCommand("connect", data, opts);
|
||||
};
|
||||
|
||||
self.disconnect = function(opts) {
|
||||
return self.issueCommand("disconnect", {}, opts);
|
||||
};
|
||||
|
||||
self.fakeAck = function(opts) {
|
||||
return self.issueCommand("fake_ack", {}, opts);
|
||||
};
|
||||
|
||||
self.issueCommand = function(command, data, opts) {
|
||||
opts = opts || {};
|
||||
data = data || {};
|
||||
|
||||
var payload = $.extend({}, data);
|
||||
payload.command = command;
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.url = "api/connection";
|
||||
|
||||
return OctoPrint.postJson(payload, params);
|
||||
};
|
||||
|
||||
return self;
|
||||
})($, _);
|
||||
|
|
@ -1,21 +1,89 @@
|
|||
OctoPrint.files = (function($, _) {
|
||||
var self = {};
|
||||
var exports = {};
|
||||
|
||||
self.get = function(opts) {
|
||||
var url = "api/files";
|
||||
var origin = opts.origin || "";
|
||||
exports.get = function(opts) {
|
||||
opts = opts || {};
|
||||
|
||||
if (origin && _.contains(["local", "sdcard"], origin)) {
|
||||
url += origin + "/"
|
||||
var path = "api/files";
|
||||
var location = opts.location || "";
|
||||
|
||||
if (location && _.contains(["local", "sdcard"], location)) {
|
||||
path += "/" + location;
|
||||
}
|
||||
|
||||
OctoPrint.get_json({
|
||||
url: url,
|
||||
success: opts.success,
|
||||
error: opts.error,
|
||||
complete: opts.complete
|
||||
})
|
||||
var params = _.extend({}, opts);
|
||||
params.url = path;
|
||||
|
||||
return OctoPrint.getJson(params);
|
||||
};
|
||||
|
||||
return self;
|
||||
exports.listAll = function(opts) {
|
||||
opts = opts || {};
|
||||
|
||||
if (opts.location) {
|
||||
opts.location = undefined;
|
||||
}
|
||||
|
||||
return exports.get(opts);
|
||||
};
|
||||
|
||||
exports.listAllForLocation = function(location, opts) {
|
||||
opts = opts || {};
|
||||
opts.location = location;
|
||||
|
||||
return exports.get(opts);
|
||||
};
|
||||
|
||||
exports.getInfoForFile = function(location, filename, opts) {
|
||||
opts = opts || {};
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.url = exports.resourceForFile(location, filename);
|
||||
|
||||
return OctoPrint.getJson(params);
|
||||
};
|
||||
|
||||
exports.selectFile = function(location, filename, print, opts) {
|
||||
print = print || false;
|
||||
|
||||
var data = {
|
||||
print: print
|
||||
};
|
||||
|
||||
return exports.issueFileCommand(location, filename, "select", data, opts);
|
||||
};
|
||||
|
||||
exports.sliceFile = function(location, filename, parameters, opts) {
|
||||
parameters = parameters || {};
|
||||
|
||||
return exports.issueFileCommand(location, filename, "slice", parameters, opts);
|
||||
};
|
||||
|
||||
exports.issueFileCommand = function(location, filename, command, data, opts) {
|
||||
opts = opts || {};
|
||||
data = data || {};
|
||||
|
||||
var payload = $.extend({}, data);
|
||||
payload.command = command;
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.url = exports.resourceForFile(location, filename);
|
||||
|
||||
return OctoPrint.postJson(payload, params);
|
||||
};
|
||||
|
||||
exports.deleteFile = function(location, filename, opts) {
|
||||
opts = opts || {};
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.url = exports.resourceForFile(location, filename);
|
||||
|
||||
return OctoPrint.delete(opts);
|
||||
};
|
||||
|
||||
exports.resourceForFile = function(location, filename) {
|
||||
return "api/files/" + location + "/" + filename;
|
||||
};
|
||||
|
||||
return exports;
|
||||
})($, _);
|
||||
|
|
|
|||
|
|
@ -1,65 +1,80 @@
|
|||
var OctoPrint = (function($) {
|
||||
var self = {};
|
||||
var OctoPrint = (function($, _) {
|
||||
var exports = {};
|
||||
|
||||
self.options = {
|
||||
exports.options = {
|
||||
"baseurl": undefined,
|
||||
"apikey": undefined
|
||||
};
|
||||
|
||||
self.ajax = function(opts) {
|
||||
var url = self.options.baseurl + opts.url;
|
||||
exports.ajax = function(opts) {
|
||||
opts = opts || {};
|
||||
|
||||
var url = exports.options.baseurl;
|
||||
if (!_.endsWith(url, "/")) {
|
||||
url = url + "/";
|
||||
}
|
||||
url += opts.url;
|
||||
|
||||
var headers = $.extend({}, opts.headers || {});
|
||||
headers["X-Api-Key"] = self.options.apikey;
|
||||
headers["X-Api-Key"] = exports.options.apikey;
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.url = url;
|
||||
params.headers = headers;
|
||||
|
||||
$.ajax(params);
|
||||
return $.ajax(params);
|
||||
};
|
||||
|
||||
self.get = function(opts) {
|
||||
exports.get = function(opts) {
|
||||
opts = opts || {};
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.type = "GET";
|
||||
|
||||
self.ajax(params);
|
||||
return exports.ajax(params);
|
||||
};
|
||||
|
||||
self.post = function(opts) {
|
||||
exports.post = function(data, opts) {
|
||||
opts = opts || {};
|
||||
|
||||
var headers = $.extend({}, opts.headers || {});
|
||||
headers["Cache-Control"] = "no-cache";
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.type = "POST";
|
||||
params.data = JSON.stringify(data);
|
||||
params.data = data;
|
||||
params.headers = headers;
|
||||
|
||||
self.ajax(params);
|
||||
return exports.ajax(params);
|
||||
};
|
||||
|
||||
self.delete = function(opts) {
|
||||
exports.delete = function(opts) {
|
||||
opts = opts || {};
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.type = "DELETE";
|
||||
|
||||
self.ajax(params);
|
||||
return exports.ajax(params);
|
||||
};
|
||||
|
||||
self.get_json = function(opts) {
|
||||
exports.getJson = function(opts) {
|
||||
opts = opts || {};
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.dataType = "json";
|
||||
|
||||
self.get(params);
|
||||
return exports.get(params);
|
||||
};
|
||||
|
||||
self.post_json = function(opts) {
|
||||
var data = opts.data || {};
|
||||
exports.postJson = function(data, opts) {
|
||||
opts = opts || {};
|
||||
|
||||
var params = $.extend({}, opts);
|
||||
params.contentType = "application/json; charset=UTF-8";
|
||||
params.dataType = "json";
|
||||
params.data = JSON.stringify(data);
|
||||
|
||||
self.post(params);
|
||||
return exports.post(JSON.stringify(data), params);
|
||||
};
|
||||
|
||||
return self;
|
||||
})($);
|
||||
return exports;
|
||||
})($, _);
|
||||
|
|
|
|||
119
src/octoprint/static/js/app/client/socket.js
Normal file
119
src/octoprint/static/js/app/client/socket.js
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
OctoPrint.socket = (function($, _, SockJS) {
|
||||
var exports = {};
|
||||
|
||||
exports.options = {
|
||||
timeouts: [0, 1, 1, 2, 3, 5, 8, 13, 20, 40, 100]
|
||||
};
|
||||
|
||||
var normalClose = 1000;
|
||||
|
||||
var socket = undefined;
|
||||
var reconnecting = false;
|
||||
var reconnectTrial = 0;
|
||||
|
||||
var onOpen = function() {
|
||||
reconnecting = false;
|
||||
reconnectTrial = 0;
|
||||
};
|
||||
|
||||
var onClose = function(e) {
|
||||
if (e.code == normalClose) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (exports.onReconnectAttempt(reconnectTrial)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (reconnectTrial < exports.options.timeouts.length) {
|
||||
var timeout = exports.options.timeouts[reconnectTrial];
|
||||
setTimeout(exports.reconnect, timeout * 1000);
|
||||
reconnectTrial++;
|
||||
} else {
|
||||
exports.onReconnectFailed();
|
||||
}
|
||||
};
|
||||
|
||||
var onMessage = function(msg) {
|
||||
for (var prop in msg.data) {
|
||||
if (!msg.data.hasOwnProperty(prop)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var data = msg.data[prop];
|
||||
|
||||
switch (prop) {
|
||||
case "connected": {
|
||||
exports.onConnected(data);
|
||||
break;
|
||||
}
|
||||
case "history": {
|
||||
exports.onHistoryData(data);
|
||||
break;
|
||||
}
|
||||
case "current": {
|
||||
exports.onCurrentData(data);
|
||||
break;
|
||||
}
|
||||
case "event": {
|
||||
var event = data["type"];
|
||||
var payload = data["payload"];
|
||||
exports.onEvent(event, payload);
|
||||
break;
|
||||
}
|
||||
case "plugin": {
|
||||
exports.onPluginMessage(data.plugin, data.data);
|
||||
break;
|
||||
}
|
||||
case "timelapse": {
|
||||
exports.onTimelapseSettings(data);
|
||||
break;
|
||||
}
|
||||
case "slicingProgress": {
|
||||
exports.onSlicingProgress(data.slicer, data.model_path, data.machinecode_path, data.progress);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
exports.connect = function(opts) {
|
||||
opts = opts || {};
|
||||
|
||||
exports.disconnect();
|
||||
|
||||
var url = OctoPrint.options.baseurl;
|
||||
if (!_.endsWith(url, "/")) {
|
||||
url += "/";
|
||||
}
|
||||
|
||||
socket = new SockJS(url + "sockjs", undefined, opts);
|
||||
socket.onopen = onOpen;
|
||||
socket.onclose = onClose;
|
||||
socket.onmessage = onMessage;
|
||||
};
|
||||
|
||||
exports.reconnect = function() {
|
||||
exports.disconnect();
|
||||
socket = undefined;
|
||||
exports.connect();
|
||||
};
|
||||
|
||||
exports.disconnect = function() {
|
||||
if (socket != undefined) {
|
||||
socket.close();
|
||||
}
|
||||
};
|
||||
|
||||
exports.onConnected = function(data) {};
|
||||
exports.onCurrentData = function(data) {};
|
||||
exports.onHistoryData = function(data) {};
|
||||
exports.onEvent = function(event, data) {};
|
||||
exports.onPluginMessage = function(plugin, message) {};
|
||||
exports.onTimelapseSettings = function(data) {};
|
||||
exports.onSlicingProgress = function(slicer, modelPath, machinecodePath, progress) {};
|
||||
exports.onReconnectAttempt = function(trial) {};
|
||||
exports.onReconnectFailed = function() {};
|
||||
|
||||
return exports;
|
||||
})($, _, SockJS);
|
||||
Loading…
Reference in a new issue