Pman.Delete.js
[Pman.Core] / Pman.Delete.js
1 /*
2  * Generic Delete function (moved from Pman.js)
3  *
4  * with progressbar version.
5  */
6
7
8 Pman.Delete = {
9     
10     
11     selections : function(tab)
12     {
13         var r = [];
14  
15             
16         var s = tab.grid.getSelectionModel().getSelections();
17         if (!s.length)  {
18             Roo.MessageBox.alert("Error", "Select at least one Row to delete" );
19             return '';
20         }
21         var reader = tab.grid.reader || tab.grid.ds.reader;
22         for(var i = 0; i < s.length; i++) {
23             r.push(reader.getId(s[i].json));
24         }
25         return r;
26     },
27     
28     // previous version - no progress..
29     
30     simple : function(tab, tbl)
31     {
32         
33         var r = this.selections(tab);
34         if (!r.length) {
35             return;
36         }
37         
38         
39         Roo.MessageBox.confirm("Confirm", "Are you sure you want to delete that?",
40             function(btn) {
41                 if (btn != 'yes') {
42                     return;
43                 }
44                 tab.grid.getView().mainWrap.mask("Deleting");
45                 Pman.Delete.simpleCall(tab, tbl, r, function(response) {
46                     Pman.Delete.completed(tab);
47                 });
48                 
49             }
50             
51         );
52      },
53     
54     simpleCall : function(tab, tbl, r, resp)
55     {
56             // what about the toolbar??
57         
58         new Pman.Request({
59             url: baseURL + '/Roo/'+tbl,
60             method: 'POST',
61             params: {
62                 _delete : r.join(',')
63             },
64             success: resp,
65             failure: function(act) {
66                 
67                 Roo.log(act);
68                 var msg = '';
69                 try {
70                     msg = act.errorMsg;
71                 } catch(e) {
72                     msg = "Error deleting";
73                 }
74                 tab.grid.getView().mainWrap.unmask();
75                 Roo.MessageBox.alert("Error",  msg);
76             }
77             
78         });
79     },
80     
81     progress : function(tab, tbl) {
82         
83         var r = this.selections(tab);
84         if (!r.length) {
85             return;
86         }
87         
88         
89         Roo.MessageBox.confirm("Confirm", "Are you sure you want to delete that?",
90             function(btn) {
91                 if (btn != 'yes') {
92                     return;
93                 }
94                 Roo.MessageBox.progress("Delete Records", "Deleting 1/" + r.length );
95                 
96                 
97                 var p = 0;
98                 
99                 var delItem = function ()
100                 {
101                     Roo.MessageBox.updateProgress(  (p+1)/r.length, "Deleting " + (1+p) + "/" + r.length );
102                     Pman.Delete.simpleCall(tab, tbl, [ r[p] ], function(response) {
103                         
104                         p++;
105                         if (p == r.length) {
106                             Roo.MessageBox.hide();
107                             Pman.Delete.completed(tab);
108                             return;
109                         }
110                         
111                         delItem();
112                     });
113                 }
114                 delItem();
115                
116                 
117             }
118             
119         );
120     },
121     completed : function()
122     {
123         tab.grid.getView().mainWrap.unmask();
124         if ( tab.paging ) {
125             tab.paging.onClick('refresh');   
126         } else if (tab.grid.footer && tab.grid.footer.onClick) {
127             // new xtype built grids
128             tab.grid.footer.onClick('refresh');   
129         } else if (tab.refresh) {
130             tab.refresh(); // this might cause problems as panels have a refresh method?
131         } else {
132             tab.grid.getDataSource().load();
133         }
134     
135     }
136 }