Quellcode durchsuchen

disable button while saving, fix bug caused due to double save

version-14
Rushabh Mehta vor 12 Jahren
Ursprung
Commit
ab767897a7
5 geänderte Dateien mit 33 neuen und 134 gelöschten Zeilen
  1. +7
    -4
      public/js/legacy/model/doclist.js
  2. +14
    -37
      public/js/legacy/widgets/form/form.js
  3. +11
    -5
      public/js/legacy/widgets/form/form_header.js
  4. +0
    -87
      public/js/wn/form/header.js
  5. +1
    -1
      wnf.py

+ 7
- 4
public/js/legacy/model/doclist.js Datei anzeigen

@@ -69,7 +69,7 @@ function zip(k,v) {
return obj; return obj;
} }


function save_doclist(dt, dn, save_action, onsave, onerr) {
function save_doclist(dt, dn, save_action, onsave, onerr, btn) {
var doc = locals[dt][dn]; var doc = locals[dt][dn];
var doctype = locals['DocType'][dt]; var doctype = locals['DocType'][dt];
@@ -96,16 +96,19 @@ function save_doclist(dt, dn, save_action, onsave, onerr) {
var _save = function() { var _save = function() {
//console.log(compress_doclist(doclist)); //console.log(compress_doclist(doclist));
btn && $(btn).attr("disabled", true);
$c('webnotes.widgets.form.save.savedocs', {'docs':compress_doclist(doclist), 'docname':dn, 'action': save_action, 'user':user }, $c('webnotes.widgets.form.save.savedocs', {'docs':compress_doclist(doclist), 'docname':dn, 'action': save_action, 'user':user },
function(r, rtxt) {
if(f){ f.savingflag = false;}
function(r) {
btn && $(btn).attr("disabled", false);
if(r.saved) { if(r.saved) {
if(onsave)onsave(r); if(onsave)onsave(r);
} else { } else {
if(onerr)onerr(r); if(onerr)onerr(r);
} }
}, function() { }, function() {
if(f){ f.savingflag = false; } /*time out*/
//
},0,(f ? 'Saving...' : '') },0,(f ? 'Saving...' : '')
); );
} }


+ 14
- 37
public/js/legacy/widgets/form/form.js Datei anzeigen

@@ -299,7 +299,7 @@ _f.Frm.prototype.setup_footer = function() {
f.help_area = $a(this.page_layout.footer,'div'); f.help_area = $a(this.page_layout.footer,'div');


var b = $btn(f.save_area, 'Save', var b = $btn(f.save_area, 'Save',
function() { cur_frm.save('Save'); },{marginLeft:'0px'},'green');
function() { cur_frm.save('Save', this); },{marginLeft:'0px'},'green');
// show / hide save // show / hide save
f.show_save = function() { f.show_save = function() {
@@ -807,7 +807,7 @@ _f.Frm.prototype.show_doc = function(dn) {


// ====================================================================================== // ======================================================================================
var validated; // bad design :( var validated; // bad design :(
_f.Frm.prototype.save = function(save_action, call_back) {
_f.Frm.prototype.save = function(save_action, callback, btn) {
// removes focus from a field before save, // removes focus from a field before save,
// so that its change event gets triggered before saving // so that its change event gets triggered before saving
$(document.activeElement).blur(); $(document.activeElement).blur();
@@ -818,12 +818,6 @@ _f.Frm.prototype.save = function(save_action, call_back) {
save_action = 'Save'; save_action = 'Save';
} }


var me = this;
if(this.savingflag) {
msgprint("Document is currently saving....");
return; // already saving (do not double save)
}

if(save_action=='Submit') { if(save_action=='Submit') {
locals[this.doctype][this.docname].submitted_on = dateutil.full_str(); locals[this.doctype][this.docname].submitted_on = dateutil.full_str();
locals[this.doctype][this.docname].submitted_by = user; locals[this.doctype][this.docname].submitted_by = user;
@@ -856,36 +850,28 @@ _f.Frm.prototype.save = function(save_action, call_back) {
this.runclientscript('validate'); this.runclientscript('validate');
if(!validated) { if(!validated) {
this.savingflag = false;
return 'Error'; return 'Error';
} }
} }
var ret_fn = function(r) {
me.savingflag = false;
var onsave = function(r) {
if(!me.meta.istable && r) { if(!me.meta.istable && r) {
me.refresh(r.docname); me.refresh(r.docname);
} }

if(call_back){
call_back(r);
}
callback && callback(r)
} }


var me = this; var me = this;
var ret_fn_err = function(r) {
var onerr = function(r) {
var doc = locals[me.doctype][me.docname]; var doc = locals[me.doctype][me.docname];
me.savingflag = false;
ret_fn(r);
onsave(r);
} }
this.savingflag = true;
if(this.docname && validated) { if(this.docname && validated) {
// scroll to top // scroll to top
scroll(0, 0); scroll(0, 0);
return this.savedoc(save_action, ret_fn, ret_fn_err);
return save_doclist(this.doctype, this.docname, save_action, onsave, onerr, btn);
} }
} }


@@ -1019,7 +1005,7 @@ _f.Frm.prototype.reload_doc = function() {
this.check_doctype_conflict(this.docname); this.check_doctype_conflict(this.docname);


var me = this; var me = this;
var ret_fn = function(r, rtxt) {
var onsave = function(r, rtxt) {
// n tweets and last comment // n tweets and last comment
me.runclientscript('setup', me.doctype, me.docname); me.runclientscript('setup', me.doctype, me.docname);
me.refresh(); me.refresh();
@@ -1027,23 +1013,14 @@ _f.Frm.prototype.reload_doc = function() {


if(me.doc.__islocal) { if(me.doc.__islocal) {
// reload only doctype // reload only doctype
$c('webnotes.widgets.form.load.getdoctype', {'doctype':me.doctype }, ret_fn, null, null, 'Refreshing ' + me.doctype + '...');
$c('webnotes.widgets.form.load.getdoctype', {'doctype':me.doctype }, onsave, null, null, 'Refreshing ' + me.doctype + '...');
} else { } else {
// reload doc and docytpe // reload doc and docytpe
$c('webnotes.widgets.form.load.getdoc', {'name':me.docname, 'doctype':me.doctype, 'getdoctype':1, 'user':user}, ret_fn, null, null, 'Refreshing ' + me.docname + '...');
$c('webnotes.widgets.form.load.getdoc', {'name':me.docname, 'doctype':me.doctype, 'getdoctype':1, 'user':user}, onsave, null, null, 'Refreshing ' + me.docname + '...');
} }
} }



_f.Frm.prototype.savedoc = function(save_action, onsave, onerr) {
save_doclist(this.doctype, this.docname, save_action, onsave, onerr);
}

_f.Frm.prototype.saveupdate = function() {
this.save('Update');
}

_f.Frm.prototype.savesubmit = function() {
_f.Frm.prototype.savesubmit = function(btn) {
var answer = confirm("Permanently Submit "+this.docname+"?"); var answer = confirm("Permanently Submit "+this.docname+"?");
var me = this; var me = this;
if(answer) { if(answer) {
@@ -1051,13 +1028,13 @@ _f.Frm.prototype.savesubmit = function() {
if(!r.exc && me.cscript.on_submit) { if(!r.exc && me.cscript.on_submit) {
me.runclientscript('on_submit', me.doctype, me.docname); me.runclientscript('on_submit', me.doctype, me.docname);
} }
});
}, btn);
} }
} }


_f.Frm.prototype.savecancel = function() {
_f.Frm.prototype.savecancel = function(btn) {
var answer = confirm("Permanently Cancel "+this.docname+"?"); var answer = confirm("Permanently Cancel "+this.docname+"?");
if(answer) this.save('Cancel');
if(answer) this.save('Cancel', null, btn);
} }


// delete the record // delete the record


+ 11
- 5
public/js/legacy/widgets/form/form_header.js Datei anzeigen

@@ -116,26 +116,32 @@ _f.FrmHeader = Class.extend({
var docstatus = cint(cur_frm.doc.docstatus); var docstatus = cint(cur_frm.doc.docstatus);
// Save // Save
if(docstatus==0 && p[WRITE]) { if(docstatus==0 && p[WRITE]) {
this.appframe.add_button('Save', function() { cur_frm.save('Save');}, '');
this.appframe.add_button('Save', function() {
cur_frm.save('Save', null, this);}, '');
this.appframe.buttons['Save'].addClass('btn-info').text("Save (Ctrl+S)"); this.appframe.buttons['Save'].addClass('btn-info').text("Save (Ctrl+S)");
} }
// Submit // Submit
if(docstatus==0 && p[SUBMIT] && (!cur_frm.doc.__islocal)) if(docstatus==0 && p[SUBMIT] && (!cur_frm.doc.__islocal))
this.appframe.add_button('Submit', function() { cur_frm.savesubmit();}, 'icon-lock');
this.appframe.add_button('Submit', function() {
cur_frm.savesubmit(this);}, 'icon-lock');


// Update after sumit // Update after sumit
if(docstatus==1 && p[SUBMIT]) { if(docstatus==1 && p[SUBMIT]) {
this.appframe.add_button('Update', function() { cur_frm.saveupdate();}, '');
this.appframe.add_button('Update', function() {
this.save('Update', null, this);
}, '');
if(!cur_frm.doc.__unsaved) this.appframe.buttons['Update'].toggle(false); if(!cur_frm.doc.__unsaved) this.appframe.buttons['Update'].toggle(false);
} }


// Cancel // Cancel
if(docstatus==1 && p[CANCEL]) if(docstatus==1 && p[CANCEL])
this.appframe.add_button('Cancel', function() { cur_frm.savecancel() }, 'icon-remove');
this.appframe.add_button('Cancel', function() {
cur_frm.savecancel(this) }, 'icon-remove');


// Amend // Amend
if(docstatus==2 && p[AMEND]) if(docstatus==2 && p[AMEND])
this.appframe.add_button('Amend', function() { cur_frm.amend_doc() }, 'icon-pencil');
this.appframe.add_button('Amend', function() {
cur_frm.amend_doc() }, 'icon-pencil');
// Help // Help
if(cur_frm.meta.description) { if(cur_frm.meta.description) {


+ 0
- 87
public/js/wn/form/header.js Datei anzeigen

@@ -1,87 +0,0 @@
wn.provide('wn.form');

wn.form.Header = Class.extend({
init: function(parent) {
this.buttons = {};
this.$w = $('<div><h1></h1>\
<a class="close" onclick="window.history.back();">&times;</a>
<div class="label-area"></div>\
<div class="toolbar-area"></div></div><hr>').
appendTo(parent);
},
refresh: function() {
var m = cur_frm.meta;

this.$w.toggle(!m.hide_heading && !cur_frm.in_dialog);
this.$w.find('.toolbar-area').toggle(m.hide_toolbar);
this.$w.find('.toolbar-area').empty();
this.add_buttons();
},
add_buttons: function() {
// Print View
if(cur_frm.meta.read_only_onload && !cur_frm.doc.__islocal) {
if(cur_frm.editable) {
this.add_button({
label:'Print View',
click: function() {
cur_frm.is_editable[cur_frm.docname] = 0;
cur_frm.refresh();
},
icon: 'icon-print'
})
}
}
switch(cur_frm.doc.docstatus) {
case 0:
if(p[WRITE]) {
this.add_button({
label:'Save', click:function() { cur_frm.save('Save'); }
});
if(!cur_frm.doc.__islocal) {
this.add_button({
label:'Submit', click:function() { cur_frm.savesubmit(); },
icon: 'icon-lock'
});
};
}
break;
case 1:
if(p[SUBMIT] && cur_frm.doc.__unsaved) {
this.add_button({
label:'Update', click: function() { cur_frm.saveupdate(); }
});
}
if(p[CANCEL]) {
this.add_button({
label:'Cancel', click: function() { cur_frm.savecancel(); },
icon: 'icon-remove'
});
}
break;
case 2:
if(p[AMEND]) {
this.add_button({
label:'Amend', click: function() { cur_frm.amend_doc(); },
icon: 'icon-pencil'
});
}
}
},
add_button: function(opts) {
// label, icon, click
var b = $('<button class="btn btn-small"></button>')
.text(opts.label)
.click(click)
.appendTo(this.$w.find('.toolbar-area'))
if(opts.icon) {
b.html('<i class="'+opts.icon+'"></i> ' + opts.label);
}
this.buttons[opts.label] = b;
}
})

+ 1
- 1
wnf.py Datei anzeigen

@@ -274,7 +274,7 @@ def run():
elif options.watch: elif options.watch:
from webnotes.utils import bundlejs from webnotes.utils import bundlejs
bundlejs.watch(options.no_compress)
bundlejs.watch(True)
return return


# code replace # code replace


Laden…
Abbrechen
Speichern