Join and leave doc room on form-load and form-unload
This commit is contained in:
parent
422668a67f
commit
b0d333d85b
3 changed files with 37 additions and 2 deletions
|
|
@ -8,12 +8,27 @@ frappe.socket = {
|
|||
|
||||
frappe.socket.setup_listeners();
|
||||
frappe.socket.setup_reconnect();
|
||||
$(document).on('form-load', function(e, frm) {
|
||||
frappe.socket.doc_subscribe(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);
|
||||
frappe.socket.socket.emit('progress_subscribe', task_id);
|
||||
|
||||
frappe.socket.open_tasks[task_id] = opts;
|
||||
},
|
||||
doc_subscribe: function(doctype, docname) {
|
||||
frappe.socket.socket.emit('doc_subscribe', doctype, docname);
|
||||
frappe.socket.open_doc = {doctype: doctype, docname: docname};
|
||||
},
|
||||
doc_unsubscribe: function(doctype, docname) {
|
||||
frappe.socket.socket.emit('doc_unsubscribe', doctype, docname);
|
||||
frappe.socket.open_doc = null;
|
||||
},
|
||||
setup_listeners: function() {
|
||||
frappe.socket.socket.on('task_status_change', function(data) {
|
||||
|
|
@ -37,6 +52,10 @@ frappe.socket = {
|
|||
frappe.socket.subscribe(task_id, opts);
|
||||
});
|
||||
});
|
||||
|
||||
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) {
|
||||
|
|
@ -58,3 +77,4 @@ frappe.socket = {
|
|||
}
|
||||
|
||||
$(frappe.socket.init);
|
||||
|
||||
|
|
|
|||
|
|
@ -391,8 +391,13 @@ _f.Frm.prototype.refresh = function(docname) {
|
|||
// load the record for the first time, if not loaded (call 'onload')
|
||||
cur_frm.cscript.is_onload = false;
|
||||
if(!this.opendocs[this.docname]) {
|
||||
var me = this;
|
||||
cur_frm.cscript.is_onload = true;
|
||||
this.setnewdoc();
|
||||
$(document).trigger("form-load", [this]);
|
||||
$(this.page.wrapper).on('hide', function(e) {
|
||||
$(document).trigger("form-unload", [me]);
|
||||
})
|
||||
} else {
|
||||
this.render_form(is_a_different_doc);
|
||||
}
|
||||
|
|
@ -815,3 +820,4 @@ _f.Frm.prototype.validate_form_action = function(action) {
|
|||
_f.Frm.prototype.get_handlers = function(fieldname, doctype, docname) {
|
||||
return this.script_manager.get_handlers(fieldname, doctype || this.doctype, docname || this.docname)
|
||||
}
|
||||
|
||||
|
|
|
|||
13
socketio.js
13
socketio.js
|
|
@ -37,10 +37,15 @@ io.on('connection', function(socket){
|
|||
})
|
||||
.end(function(err, res) {
|
||||
if(res.status == 200) {
|
||||
socket.join('doc:'+ doctype + '/' + docname);
|
||||
var room = get_doc_room(doctype, docname);
|
||||
socket.join(room);
|
||||
}
|
||||
})
|
||||
})
|
||||
});
|
||||
socket.on('doc_unsubscribe', function(doctype, docname) {
|
||||
var room = get_doc_room(doctype, docname);
|
||||
socket.leave(room);
|
||||
});
|
||||
});
|
||||
|
||||
function send_existing_lines(task_id, socket) {
|
||||
|
|
@ -65,3 +70,7 @@ subscriber.subscribe("events");
|
|||
http.listen(3000, function(){
|
||||
console.log('listening on *:3000');
|
||||
});
|
||||
|
||||
function get_doc_room(doctype, docname) {
|
||||
return 'doc:'+ doctype + '/' + docname;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue