use Proxmox.button.StdRemoveButton where possible

most 'Remove' buttons we have used the same code pattern over and over,
with the StdRemoveButton we have a component which does all of this for
us

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Dominik Csapak 2018-01-15 15:18:07 +01:00
parent 1774f14804
commit 3b1ca3ff5d
15 changed files with 81 additions and 316 deletions

View File

@ -46,31 +46,14 @@ Ext.define('PVE.dc.AuthView', {
handler: run_editor
});
var remove_btn = new PVE.button.Button({
text: gettext('Remove'),
disabled: true,
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
baseurl: '/access/domains/',
selModel: sm,
confirmMsg: function (rec) {
return Ext.String.format(gettext('Are you sure you want to remove entry {0}'),
"'" + rec.data.realm + "'");
},
enableFn: function(rec) {
return !(rec.data.type === 'pve' || rec.data.type === 'pam');
},
handler: function(btn, event, rec) {
var realm = rec.data.realm;
PVE.Utils.API2Request({
url: '/access/domains/' + realm,
method: 'DELETE',
waitMsgTarget: me,
callback: function() {
reload();
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
callback: function() {
reload();
}
});

View File

@ -362,23 +362,11 @@ Ext.define('PVE.dc.BackupView', {
handler: run_editor
});
var remove_btn = new PVE.button.Button({
text: gettext('Remove'),
disabled: true,
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
confirmMsg: gettext('Are you sure you want to remove this entry'),
handler: function(btn, event, rec) {
PVE.Utils.API2Request({
url: '/cluster/backup/' + rec.data.id,
method: 'DELETE',
waitMsgTarget: me,
callback: function() {
reload();
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
baseurl: '/cluster/backup',
callback: function() {
reload();
}
});

View File

@ -25,27 +25,12 @@ Ext.define('PVE.dc.GroupView', {
var sm = Ext.create('Ext.selection.RowModel', {});
var remove_btn = new PVE.button.Button({
text: gettext('Remove'),
disabled: true,
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
confirmMsg: function (rec) {
return Ext.String.format(gettext('Are you sure you want to remove entry {0}'),
"'" + rec.data.groupid + "'");
callback: function() {
reload();
},
handler: function(btn, event, rec) {
PVE.Utils.API2Request({
url: '/access/groups/' + rec.data.groupid,
method: 'DELETE',
waitMsgTarget: me,
callback: function() {
reload();
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
}
baseurl: '/access/groups/'
});
var run_editor = function() {

View File

@ -25,26 +25,11 @@ Ext.define('PVE.dc.PoolView', {
var sm = Ext.create('Ext.selection.RowModel', {});
var remove_btn = new PVE.button.Button({
text: gettext('Remove'),
disabled: true,
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
confirmMsg: function (rec) {
return Ext.String.format(gettext('Are you sure you want to remove entry {0}'),
"'" + rec.data.poolid + "'");
},
handler: function(btn, event, rec) {
PVE.Utils.API2Request({
url: '/pools/' + rec.data.poolid,
method: 'DELETE',
waitMsgTarget: me,
callback: function() {
reload();
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
baseurl: '/pools/',
callback: function () {
reload();
}
});

View File

@ -149,24 +149,14 @@ Ext.define('PVE.SecurityGroupList', {
}
});
me.removeBtn = new PVE.button.Button({
text: gettext('Remove'),
me.removeBtn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
disabled: true,
handler: function() {
var rec = sm.getSelection()[0];
if (!rec || !me.base_url) {
return;
}
PVE.Utils.API2Request({
url: me.base_url + '/' + rec.data.group,
method: 'DELETE',
waitMsgTarget: me,
failure: function(response, options) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
},
callback: reload
});
baseurl: me.base_url + '/',
enableFn: function(rec) {
return (rec && me.base_url);
},
callback: function() {
reload();
}
});

View File

@ -77,26 +77,11 @@ Ext.define('PVE.dc.StorageView', {
handler: run_editor
});
var remove_btn = new PVE.button.Button({
text: gettext('Remove'),
disabled: true,
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
confirmMsg: function (rec) {
return Ext.String.format(gettext('Are you sure you want to remove entry {0}'),
"'" + rec.data.storage + "'");
},
handler: function(btn, event, rec) {
PVE.Utils.API2Request({
url: '/storage/' + rec.data.storage,
method: 'DELETE',
waitMsgTarget: me,
callback: function() {
reload();
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
baseurl: '/storage/',
callback: function() {
reload();
}
});

View File

@ -81,34 +81,17 @@ Ext.define('PVE.dc.UserView', {
var sm = Ext.create('Ext.selection.RowModel', {});
var remove_btn = new PVE.button.Button({
text: gettext('Remove'),
disabled: true,
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
baseurl: '/access/users/',
enableFn: function(rec) {
if (!caps.access['User.Modify']) {
return false;
}
return rec.data.userid !== 'root@pam';
},
confirmMsg: function (rec) {
return Ext.String.format(gettext('Are you sure you want to remove entry {0}'),
"'" + rec.data.userid + "'");
},
handler: function(btn, event, rec) {
var userid = rec.data.userid;
PVE.Utils.API2Request({
url: '/access/users/' + userid,
method: 'DELETE',
waitMsgTarget: me,
callback: function() {
reload();
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
callback: function() {
reload();
}
});

View File

@ -156,11 +156,9 @@ Ext.define('PVE.grid.BackupView', {
}
});
var delete_btn = Ext.create('PVE.button.Button', {
text: gettext('Remove'),
disabled: true,
var delete_btn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
dangerous: true,
dangerous: true,
confirmMsg: function(rec) {
var msg = Ext.String.format(gettext('Are you sure you want to remove entry {0}'),
"'" + rec.data.volid + "'");
@ -168,27 +166,12 @@ Ext.define('PVE.grid.BackupView', {
return msg;
},
enableFn: function(rec) {
return !!rec;
},
handler: function(b, e, rec){
getUrl: function(rec) {
var storage = storagesel.getValue();
if (!storage) {
return;
}
var volid = rec.data.volid;
PVE.Utils.API2Request({
url: "/nodes/" + nodename + "/storage/" + storage + "/content/" + volid,
method: 'DELETE',
waitMsgTarget: me,
failure: function(response, opts) {
Ext.Msg.alert('Error', response.htmlStatus);
},
success: function(response, options) {
reload();
}
});
return '/nodes/' + nodename + '/storage/' + storage + '/content/' + rec.data.volid;
},
callback: function() {
reload();
}
});

View File

@ -152,25 +152,10 @@ Ext.define('PVE.FirewallAliases', {
}
});
me.removeBtn = new PVE.button.Button({
text: gettext('Remove'),
me.removeBtn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
disabled: true,
handler: function() {
var rec = sm.getSelection()[0];
if (!rec) {
return;
}
PVE.Utils.API2Request({
url: me.base_url + '/' + rec.data.name,
method: 'DELETE',
waitMsgTarget: me,
failure: function(response, options) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
},
callback: reload
});
}
baseurl: me.base_url + '/',
callback: reload
});

View File

@ -408,6 +408,7 @@ Ext.define('PVE.FirewallRules', {
me.store.removeAll();
} else {
me.addBtn.setDisabled(false);
me.removeBtn.baseurl = url + '/';
if (me.groupBtn) {
me.groupBtn.setDisabled(false);
}
@ -468,26 +469,6 @@ Ext.define('PVE.FirewallRules', {
});
},
deleteRule: function(rule) {
var me = this;
if (!me.base_url) {
return;
}
PVE.Utils.API2Request({
url: me.base_url + '/' + rule.pos.toString() +
'?digest=' + encodeURIComponent(rule.digest),
method: 'DELETE',
waitMsgTarget: me,
failure: function(response, options) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
},
callback: function() {
me.store.load();
}
});
},
initComponent: function() {
/*jslint confusion: true */
@ -606,16 +587,17 @@ Ext.define('PVE.FirewallRules', {
});
}
me.removeBtn = Ext.create('PVE.button.Button',{
text: gettext('Remove'),
me.removeBtn = Ext.create('Proxmox.button.StdRemoveButton',{
selModel: sm,
disabled: true,
handler: function() {
var rec = sm.getSelection()[0];
if (!rec) {
return;
}
me.deleteRule(rec.data);
baseurl: me.base_url + '/',
confirmMsg: false,
getRecordName: function(rec) {
var rule = rec.data;
return rule.pos.toString() +
'?digest=' + encodeURIComponent(rule.digest);
},
callback: function() {
me.store.load();
}
});

View File

@ -129,6 +129,8 @@ Ext.define('PVE.window.ReplicaEdit', {
}
});
/*jslint confusion: true */
/* callback is a function and string */
Ext.define('PVE.grid.ReplicaView', {
extend: 'Ext.grid.Panel',
xtype: 'pveReplicaView',
@ -166,20 +168,6 @@ Ext.define('PVE.grid.ReplicaView', {
win.show();
},
removeJob: function(button,event,rec) {
var me = this.getView();
var controller = this;
PVE.Utils.API2Request({
url: '/api2/extjs/cluster/replication/' + rec.data.id,
waitMsgTarget: me,
method: 'DELETE',
callback: function() { controller.reload(); },
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
},
scheduleJobNow: function(button,event,rec) {
var me = this.getView();
var controller = this;
@ -266,16 +254,11 @@ Ext.define('PVE.grid.ReplicaView', {
disabled: true
},
{
xtype: 'pveButton',
text: gettext('Remove'),
xtype: 'proxmoxStdRemoveButton',
itemId: 'removeButton',
handler: 'removeJob',
baseurl: '/api2/extjs/cluster/replication/',
dangerous: true,
confirmMsg: function(rec) {
var msg = Ext.String.format(gettext("Are you sure you want to remove entry {0}"), rec.id);
return msg;
},
disabled: true
callback: 'reload'
},
{
xtype: 'pveButton',

View File

@ -36,24 +36,11 @@ Ext.define('PVE.ha.GroupsView', {
win.show();
};
var remove_btn = new PVE.button.Button({
text: gettext('Remove'),
disabled: true,
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
handler: function(btn, event, rec) {
var group = rec.data.group;
PVE.Utils.API2Request({
url: '/cluster/ha/groups/' + group,
method: 'DELETE',
waitMsgTarget: me,
callback: function() {
reload();
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
baseurl: '/cluster/ha/groups/',
callback: function() {
reload();
}
});

View File

@ -67,24 +67,15 @@ Ext.define('PVE.ha.ResourcesView', {
win.show();
};
var remove_btn = new PVE.button.Button({
text: gettext('Remove'),
disabled: true,
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
handler: function(btn, event, rec) {
var sid = rec.data.sid;
PVE.Utils.API2Request({
url: '/cluster/ha/resources/' + sid,
method: 'DELETE',
waitMsgTarget: me,
callback: function() {
reload();
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
baseurl: '/cluster/ha/resources/',
getUrl: function(rec) {
var me = this;
return me.baseurl + '/' + rec.get('sid');
},
callback: function() {
reload();
}
});

View File

@ -129,25 +129,10 @@ Ext.define('PVE.IPSetList', {
}
});
me.removeBtn = new PVE.button.Button({
text: gettext('Remove'),
me.removeBtn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
disabled: true,
handler: function() {
var rec = sm.getSelection()[0];
if (!rec || !me.base_url) {
return;
}
PVE.Utils.API2Request({
url: me.base_url + '/' + rec.data.name,
method: 'DELETE',
waitMsgTarget: me,
failure: function(response, options) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
},
callback: reload
});
}
baseurl: me.base_url + '/',
callback: reload
});
Ext.apply(me, {
@ -287,6 +272,7 @@ Ext.define('PVE.IPSetGrid', {
me.store.removeAll();
} else {
me.addBtn.setDisabled(false);
me.removeBtn.baseurl = url + '/';
me.store.setProxy({
type: 'pve',
url: '/api2/json' + url
@ -350,26 +336,10 @@ Ext.define('PVE.IPSetGrid', {
}
});
me.removeBtn = new PVE.button.Button({
text: gettext('Remove'),
me.removeBtn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
disabled: true,
handler: function() {
var rec = sm.getSelection()[0];
if (!rec || !me.base_url) {
return;
}
PVE.Utils.API2Request({
url: me.base_url + '/' + rec.data.cidr,
method: 'DELETE',
waitMsgTarget: me,
failure: function(response, options) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
},
callback: reload
});
}
baseurl: me.base_url + '/',
callback: reload
});
var render_errors = function(value, metaData, record) {

View File

@ -438,30 +438,15 @@ Ext.define('PVE.storage.ContentView', {
}
},
{
xtype: 'pveButton',
text: gettext('Remove'),
xtype: 'proxmoxStdRemoveButton',
selModel: sm,
disabled: true,
confirmMsg: function(rec) {
return Ext.String.format(gettext('Are you sure you want to remove entry {0}'),
"'" + rec.data.volid + "'");
},
enableFn: function(rec) {
return rec && rec.data.content !== 'images';
},
handler: function(b, e, rec) {
PVE.Utils.API2Request({
url: baseurl + '/' + rec.data.volid,
method: 'DELETE',
waitMsgTarget: me,
callback: function() {
reload();
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
}
callback: function() {
reload();
},
baseurl: baseurl + '/'
},
templateButton,
uploadButton,