|
|
@@ -1,5 +1,6 @@ |
|
|
|
frappe.socket = { |
|
|
|
open_tasks: {}, |
|
|
|
open_docs: [], |
|
|
|
init: function() { |
|
|
|
if (frappe.boot.disable_async) { |
|
|
|
return; |
|
|
@@ -16,9 +17,9 @@ frappe.socket = { |
|
|
|
frappe.socket.doc_subscribe(frm.doctype, frm.docname); |
|
|
|
}); |
|
|
|
|
|
|
|
$(document).on('form-unload', function(e, frm) { |
|
|
|
frappe.socket.doc_unsubscribe(frm.doctype, frm.docname); |
|
|
|
}); |
|
|
|
// $(document).on('form-unload', function(e, frm) { |
|
|
|
// frappe.socket.doc_unsubscribe(frm.doctype, frm.docname); |
|
|
|
// }); |
|
|
|
}, |
|
|
|
subscribe: function(task_id, opts) { |
|
|
|
frappe.socket.socket.emit('task_subscribe', task_id); |
|
|
@@ -28,11 +29,17 @@ frappe.socket = { |
|
|
|
}, |
|
|
|
doc_subscribe: function(doctype, docname) { |
|
|
|
frappe.socket.socket.emit('doc_subscribe', doctype, docname); |
|
|
|
frappe.socket.open_doc = {doctype: doctype, docname: docname}; |
|
|
|
frappe.socket.open_docs.push({doctype: doctype, docname: docname}); |
|
|
|
}, |
|
|
|
doc_unsubscribe: function(doctype, docname) { |
|
|
|
frappe.socket.socket.emit('doc_unsubscribe', doctype, docname); |
|
|
|
frappe.socket.open_doc = null; |
|
|
|
frappe.socket.open_docs = $.filter(frappe.socket.open_docs, function(d) { |
|
|
|
if(d.doctype===doctype && d.name===docname) { |
|
|
|
return null; |
|
|
|
} else { |
|
|
|
return d; |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
setup_listeners: function() { |
|
|
|
frappe.socket.socket.on('task_status_change', function(data) { |
|
|
@@ -47,7 +54,6 @@ frappe.socket = { |
|
|
|
frappe.socket.socket.on('task_progress', function(data) { |
|
|
|
frappe.socket.process_response(data, "progress"); |
|
|
|
}); |
|
|
|
|
|
|
|
}, |
|
|
|
setup_reconnect: function() { |
|
|
|
// subscribe again to open_tasks |
|
|
@@ -55,11 +61,15 @@ frappe.socket = { |
|
|
|
$.each(frappe.socket.open_tasks, function(task_id, opts) { |
|
|
|
frappe.socket.subscribe(task_id, opts); |
|
|
|
}); |
|
|
|
|
|
|
|
// re-connect open docs |
|
|
|
$.each(frappe.socket.open_docs, function(d) { |
|
|
|
if(locals[d.doctype] && locals[d.doctype][d.name]) { |
|
|
|
frappe.socket.doc_subscribe(d.doctype, d.name); |
|
|
|
} |
|
|
|
}) |
|
|
|
}); |
|
|
|
|
|
|
|
if(frappe.socket.open_doc) { |
|
|
|
frappe.socket.doc_subscribe(frappe.socket.open_doc.doctype, frappe.socket.open_doc.docname); |
|
|
|
} |
|
|
|
}, |
|
|
|
process_response: function(data, method) { |
|
|
|
if(!data) { |
|
|
@@ -87,7 +97,7 @@ frappe.socket = { |
|
|
|
|
|
|
|
$(frappe.socket.init); |
|
|
|
|
|
|
|
frappe.require("frappe.realtime"); |
|
|
|
frappe.provide("frappe.realtime"); |
|
|
|
frappe.realtime.on = function(event, callback) { |
|
|
|
frappe.socket.socket.on(event, callback); |
|
|
|
} |