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; } } ] });