From ea476e40e3e0cc3dba56578c61e4d1902838d425 Mon Sep 17 00:00:00 2001 From: Alan Knowles Date: Tue, 21 Jul 2020 15:01:09 +0800 Subject: [PATCH] Fix #6343 - generic progress bar delete --- Pman.Delete.js | 137 +++++++++++++++++++++++++++++++++++++++++++++++++ Pman.js | 65 ++--------------------- 2 files changed, 140 insertions(+), 62 deletions(-) create mode 100644 Pman.Delete.js diff --git a/Pman.Delete.js b/Pman.Delete.js new file mode 100644 index 00000000..30aa19b1 --- /dev/null +++ b/Pman.Delete.js @@ -0,0 +1,137 @@ +/* + * Generic Delete function (moved from Pman.js) + * + * with progressbar version. + */ + + +Pman.Delete = { + + + selections : function(tab) + { + var r = []; + + + var s = tab.grid.getSelectionModel().getSelections(); + if (!s.length) { + Roo.MessageBox.alert("Error", "Select at least one Row to delete" ); + return ''; + } + var reader = tab.grid.reader || tab.grid.ds.reader; + for(var i = 0; i < s.length; i++) { + r.push(reader.getId(s[i].json)); + } + return r; + }, + + // previous version - no progress.. + + simple : function(tab, tbl) + { + + var r = this.selections(tab); + if (!r.length) { + return; + } + + + Roo.MessageBox.confirm("Confirm", "Are you sure you want to delete that?", + function(btn) { + if (btn != 'yes') { + return; + } + tab.grid.getView().mainWrap.mask("Deleting"); + Pman.Delete.simpleCall(tab, tbl, r, function(response) { + tab.grid.getView().mainWrap.unmask(); + Pman.Delete.completed(tab); + }); + + } + + ); + }, + + simpleCall : function(tab, tbl, r, resp) + { + // what about the toolbar?? + + new Pman.Request({ + url: baseURL + '/Roo/'+tbl, + method: 'POST', + params: { + _delete : r.join(',') + }, + success: resp, + failure: function(act) { + + Roo.log(act); + var msg = ''; + try { + msg = act.errorMsg; + } catch(e) { + msg = "Error deleting"; + } + tab.grid.getView().mainWrap.unmask(); + Roo.MessageBox.alert("Error", msg); + } + + }); + }, + + progress : function(tab, tbl) { + + var r = this.selections(tab); + if (!r.length) { + return; + } + + + Roo.MessageBox.confirm("Confirm", "Are you sure you want to delete that?", + function(btn) { + if (btn != 'yes') { + return; + } + Roo.MessageBox.progress("Delete Records", "Deleting 1/" + r.length ); + + + var p = 0; + + var delItem = function () + { + Roo.MessageBox.updateProgress( (p+1)/r.length, "Deleting " + (1+p) + "/" + r.length ); + Pman.Delete.simpleCall(tab, tbl, [ r[p] ], function(response) { + + p++; + if (p == r.length) { + Roo.MessageBox.hide(); + Pman.Delete.completed(tab); + return; + } + + delItem(); + }); + } + delItem(); + + + } + + ); + }, + completed : function(tab) + { + + if ( tab.paging ) { + tab.paging.onClick('refresh'); + } else if (tab.grid.footer && tab.grid.footer.onClick) { + // new xtype built grids + tab.grid.footer.onClick('refresh'); + } else if (tab.refresh) { + tab.refresh(); // this might cause problems as panels have a refresh method? + } else { + tab.grid.getDataSource().load(); + } + + } +} \ No newline at end of file diff --git a/Pman.js b/Pman.js index 618ddda7..32c76fc8 100644 --- a/Pman.js +++ b/Pman.js @@ -548,68 +548,9 @@ Pman = new Roo.Document( } return res; }, - genericDelete : function(tab,tbl) { - - var r = []; - - - var s = tab.grid.getSelectionModel().getSelections(); - if (!s.length) { - Roo.MessageBox.alert("Error", "Select at least one Row to delete" ); - return ''; - } - var reader = tab.grid.reader || tab.grid.ds.reader; - for(var i = 0; i < s.length; i++) { - r.push(reader.getId(s[i].json)); - } - - Roo.MessageBox.confirm("Confirm", "Are you sure you want to delete that?", - function(btn) { - if (btn != 'yes') { - return; - } - // what about the toolbar?? - tab.grid.getView().mainWrap.mask("Deleting"); - new Pman.Request({ - url: baseURL + '/Roo/'+tbl+'.php', - method: 'POST', - params: { - _delete : r.join(',') - }, - success: function(response) { - tab.grid.getView().mainWrap.unmask(); - if ( tab.paging ) { - tab.paging.onClick('refresh'); - } else if (tab.grid.footer && tab.grid.footer.onClick) { - // new xtype built grids - tab.grid.footer.onClick('refresh'); - } else if (tab.refresh) { - tab.refresh(); // this might cause problems as panels have a refresh method? - } else { - tab.grid.getDataSource().load(); - } - - - - }, - failure: function(act) { - - Roo.log(act); - var msg = ''; - try { - msg = act.errorMsg; - } catch(e) { - msg = "Error deleting"; - } - tab.grid.getView().mainWrap.unmask(); - Roo.MessageBox.alert("Error", msg); - } - - }); - } - - ); - return ''; + genericDelete : function(tab,tbl) + { + Pman.Delete.progress(tab,tbl) }, -- 2.39.2