]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/grid/Replication.js
drop jslint lines
[pve-manager.git] / www / manager6 / grid / Replication.js
index 66dbf81d2bbc445bea70dcaefde9fcc2aa654a45..19e67d904719bbe1af0955b663352858a454ac68 100644 (file)
@@ -1,5 +1,5 @@
 Ext.define('PVE.window.ReplicaEdit', {
-    extend: 'PVE.window.Edit',
+    extend: 'Proxmox.window.Edit',
     xtype: 'pveReplicaEdit',
 
     subject: gettext('Replication Job'),
@@ -35,12 +35,12 @@ Ext.define('PVE.window.ReplicaEdit', {
            {
                xtype: 'pveCalendarEvent',
                fieldLabel: gettext('Schedule'),
-               emptyText: '*/15',
+               emptyText: '*/15 - ' + Ext.String.format(gettext('Every {0} minutes'), 15),
                name: 'schedule'
            },
            {
                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,32 +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  + "'" + '<br>' +
-                                           gettext('(Note: Removal of replication job has to be replicated)'));
-               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
        }
     ],
 
@@ -271,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
@@ -308,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) {
@@ -316,46 +338,27 @@ Ext.define('PVE.grid.ReplicaView', {
                            return '';
                        }
 
+                       var icons = [];
                        var states = [];
 
                        if (record.data.remove_job) {
-                           states.push('<i class="fa fa-ban warning" title="'
+                           icons.push('<i class="fa fa-ban warning" title="'
                                        + gettext("Removal Scheduled") + '"></i>');
-                       }
-
-                       if (record.data.error) {
-                           states.push('<i class="fa fa-times critical" title="'
-                                       + gettext("Error") + '"></i>');
-                       }
-
-                       if (states.length > 0) {
-                           return states.join(',');
-                       }
-
-                       return '<i class="fa fa-check good"></i>';
-                   }
-               },
-               {
-                   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('<i class="fa fa-times critical" title="'
+                                       + gettext("Error") + '"></i>');
                            states.push(record.data.error);
                        }
 
-                       if (states.length > 0) {
-                           return states.join(', ');
+                       if (icons.length == 0) {
+                           icons.push('<i class="fa fa-check good"></i>');
+                           states.push(gettext('OK'));
                        }
 
-                       return gettext('OK');
+                       return icons.join(',') + ' ' + states.join(',');
                    }
                },
                {
@@ -371,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'),
@@ -396,7 +399,7 @@ Ext.define('PVE.grid.ReplicaView', {
                            return gettext('pending');
                        }
 
-                       return PVE.Utils.render_timestamp(value);
+                       return Proxmox.Utils.render_timestamp(value);
                    }
                }
            );
@@ -409,7 +412,7 @@ Ext.define('PVE.grid.ReplicaView', {
                dataIndex: 'schedule'
            },
            {
-               text: gettext('Rate'),
+               text: gettext('Rate limit'),
                dataIndex: 'rate',
                renderer: function(value) {
                    if (!value) {
@@ -427,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: [
                {
@@ -451,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
@@ -463,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();
@@ -476,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; } }
        ]
     });