X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=www%2Fmanager6%2Fgrid%2FReplication.js;h=19e67d904719bbe1af0955b663352858a454ac68;hb=3bbce3b8cd50643c1379be5c764bcf3024416a0b;hp=2fd6fb75fb15c2da42c401b390da3c6b566e9420;hpb=42b45f8fe8c83678e8daf2572ebc06de068c3b18;p=pve-manager.git
diff --git a/www/manager6/grid/Replication.js b/www/manager6/grid/Replication.js
index 2fd6fb75..19e67d90 100644
--- a/www/manager6/grid/Replication.js
+++ b/www/manager6/grid/Replication.js
@@ -1,5 +1,5 @@
Ext.define('PVE.window.ReplicaEdit', {
- extend: 'PVE.window.Edit',
+ extend: 'Proxmox.window.Edit',
xtype: 'pveReplicaEdit',
subject: gettext('Replication Job'),
@@ -40,7 +40,7 @@ Ext.define('PVE.window.ReplicaEdit', {
},
{
xtype: 'numberfield',
- fieldLabel: gettext('Rate (MB/s)'),
+ fieldLabel: gettext('Rate limit') + ' (MB/s)',
step: 1,
minValue: 1,
emptyText: gettext('unlimited'),
@@ -50,6 +50,13 @@ Ext.define('PVE.window.ReplicaEdit', {
xtype: 'textfield',
fieldLabel: gettext('Comment'),
name: 'comment'
+ },
+ {
+ xtype: 'proxmoxcheckbox',
+ name: 'enabled',
+ defaultValue: 'on',
+ checked: true,
+ fieldLabel: gettext('Enabled')
}
);
@@ -57,11 +64,16 @@ Ext.define('PVE.window.ReplicaEdit', {
{
xtype: 'inputpanel',
itemId: 'ipanel',
+ onlineHelp: 'pvesr_schedule_time_format',
onGetValues: function(values) {
var me = this.up('window');
+ values.disable = values.enabled ? 0 : 1;
+ delete values.enabled;
+
PVE.Utils.delete_if_default(values, 'rate', '', me.isCreate);
+ PVE.Utils.delete_if_default(values, 'disable', 0, me.isCreate);
PVE.Utils.delete_if_default(values, 'schedule', '*/15', me.isCreate);
PVE.Utils.delete_if_default(values, 'comment', '', me.isCreate);
@@ -108,6 +120,7 @@ Ext.define('PVE.window.ReplicaEdit', {
} else {
me.load({
success: function(response, options) {
+ response.result.data.enabled = !response.result.data.disable;
me.setValues(response.result.data);
me.digest = response.result.data.digest;
}
@@ -116,12 +129,12 @@ Ext.define('PVE.window.ReplicaEdit', {
}
});
+/* callback is a function and string */
Ext.define('PVE.grid.ReplicaView', {
extend: 'Ext.grid.Panel',
xtype: 'pveReplicaView',
- // not here yet:
- //onlineHelp: 'todo',
+ onlineHelp: 'chapter_pvesr',
stateful: true,
stateId: 'grid-pve-replication-status',
@@ -154,16 +167,17 @@ Ext.define('PVE.grid.ReplicaView', {
win.show();
},
- removeJob: function(button,event,rec) {
+ scheduleJobNow: function(button,event,rec) {
var me = this.getView();
var controller = this;
- PVE.Utils.API2Request({
- url: '/api2/extjs/cluster/replication/' + rec.data.id,
+
+ Proxmox.Utils.API2Request({
+ url: "/api2/extjs/nodes/" + me.nodename + "/replication/" + rec.data.id + "/schedule_now",
+ method: 'POST',
waitMsgTarget: me,
- method: 'DELETE',
callback: function() { controller.reload(); },
failure: function (response, opts) {
- Ext.Msg.alert('Error', response.htmlStatus);
+ Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
},
@@ -171,7 +185,7 @@ Ext.define('PVE.grid.ReplicaView', {
showLog: function(button, event, rec) {
var me = this.getView();
var controller = this;
- var logView = Ext.create('PVE.panel.LogView', {
+ var logView = Ext.create('Proxmox.panel.LogView', {
border: false,
url: "/api2/extjs/nodes/" + me.nodename + "/replication/" + rec.data.id + "/log"
});
@@ -232,30 +246,32 @@ Ext.define('PVE.grid.ReplicaView', {
handler: 'addJob'
},
{
- xtype: 'pveButton',
+ xtype: 'proxmoxButton',
text: gettext('Edit'),
itemId: 'editButton',
handler: 'editJob',
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 replication job '{0}'?"), rec.id);
- return msg;
- },
- disabled: true
+ callback: 'reload'
},
{
- xtype: 'pveButton',
+ xtype: 'proxmoxButton',
text: gettext('Log'),
itemId: 'logButton',
handler: 'showLog',
disabled: true
+ },
+ {
+ xtype: 'proxmoxButton',
+ text: gettext('Schedule now'),
+ itemId: 'scheduleNowButton',
+ handler: 'scheduleJobNow',
+ disabled: true
}
],
@@ -269,7 +285,14 @@ Ext.define('PVE.grid.ReplicaView', {
me.columns = [
{
- text: gettext('ID'),
+ text: gettext('Enabled'),
+ dataIndex: 'enabled',
+ xtype: 'checkcolumn',
+ sortable: true,
+ disabled: true
+ },
+ {
+ text: 'ID',
dataIndex: 'id',
width: 60,
hidden: true
@@ -306,7 +329,8 @@ Ext.define('PVE.grid.ReplicaView', {
{
text: gettext('Status'),
dataIndex: 'state',
- width: 60,
+ minWidth: 160,
+ flex: 1,
renderer: function(value, metadata, record) {
if (record.data.pid) {
@@ -314,46 +338,27 @@ Ext.define('PVE.grid.ReplicaView', {
return '';
}
+ var icons = [];
var states = [];
if (record.data.remove_job) {
- states.push('');
- }
-
- if (record.data.error) {
- states.push('');
- }
-
- if (states.length > 0) {
- return states.join(',');
- }
-
- return '';
- }
- },
- {
- text: gettext('Status Text'),
- dataIndex: 'error',
- minWidth: 100,
- flex: 1,
- renderer: function(value, metadata, record) {
- var states = [];
-
- if (record.data.remove_job) {
states.push(gettext("Removal Scheduled"));
}
if (record.data.error) {
+ icons.push('');
states.push(record.data.error);
}
- if (states.length > 0) {
- return states.join(', ');
+ if (icons.length == 0) {
+ icons.push('');
+ states.push(gettext('OK'));
}
- return gettext('OK');
+ return icons.join(',') + ' ' + states.join(',');
}
},
{
@@ -369,14 +374,14 @@ Ext.define('PVE.grid.ReplicaView', {
return gettext('syncing');
}
- return PVE.Utils.render_timestamp(value);
+ return Proxmox.Utils.render_timestamp(value);
}
},
{
text: gettext('Duration'),
dataIndex: 'duration',
width: 60,
- renderer: PVE.Utils.render_duration
+ renderer: Proxmox.Utils.render_duration
},
{
text: gettext('Next Sync'),
@@ -394,7 +399,7 @@ Ext.define('PVE.grid.ReplicaView', {
return gettext('pending');
}
- return PVE.Utils.render_timestamp(value);
+ return Proxmox.Utils.render_timestamp(value);
}
}
);
@@ -407,7 +412,7 @@ Ext.define('PVE.grid.ReplicaView', {
dataIndex: 'schedule'
},
{
- text: gettext('Rate'),
+ text: gettext('Rate limit'),
dataIndex: 'rate',
renderer: function(value) {
if (!value) {
@@ -425,17 +430,17 @@ Ext.define('PVE.grid.ReplicaView', {
}
);
- me.rstore = Ext.create('PVE.data.UpdateStore', {
+ me.rstore = Ext.create('Proxmox.data.UpdateStore', {
storeid: 'pve-replica-' + me.nodename + me.vmid,
model: (mode === 'dc')? 'pve-replication' : 'pve-replication-state',
interval: 3000,
proxy: {
- type: 'pve',
+ type: 'proxmox',
url: "/api2/json" + url
}
});
- me.store = Ext.create('PVE.data.DiffStore', {
+ me.store = Ext.create('Proxmox.data.DiffStore', {
rstore: me.rstore,
sorters: [
{
@@ -449,10 +454,12 @@ Ext.define('PVE.grid.ReplicaView', {
me.callParent();
- // we cannot access the log in the datacenter, because
+ // we cannot access the log and scheduleNow button
+ // in the datacenter, because
// we do not know where/if the jobs runs
if (mode === 'dc') {
me.down('#logButton').setHidden(true);
+ me.down('#scheduleNowButton').setHidden(true);
}
// if we set the warning mask, we do not want to load
@@ -461,7 +468,7 @@ Ext.define('PVE.grid.ReplicaView', {
return;
}
- PVE.Utils.monStoreErrors(me, me.rstore);
+ Proxmox.Utils.monStoreErrors(me, me.rstore);
me.on('destroy', me.rstore.stopUpdate);
me.rstore.startUpdate();
@@ -474,7 +481,9 @@ Ext.define('PVE.grid.ReplicaView', {
'id', 'target', 'comment', 'rate', 'type',
{ name: 'guest', type: 'integer' },
{ name: 'jobnum', type: 'integer' },
- { name: 'schedule', defaultValue: '*/15' }
+ { name: 'schedule', defaultValue: '*/15' },
+ { name: 'disable', defaultValue: '' },
+ { name: 'enabled', calculate: function(data) { return !data.disable; } }
]
});