Signed-off-by: Alexandre Derumier <aderum...@odiso.com>
---
 www/manager6/Utils.js              | 71 +++++++++++++++++++-----------
 www/manager6/sdn/ControllerView.js | 17 +++----
 www/manager6/sdn/SubnetView.js     | 12 ++++-
 www/manager6/sdn/VnetView.js       |  8 ++++
 www/manager6/sdn/ZoneView.js       | 27 +++---------
 5 files changed, 75 insertions(+), 60 deletions(-)

diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index 89706c32..5a6267fe 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -176,32 +176,51 @@ Ext.define('PVE.Utils', { utilities: {
     },
 
     render_sdn_pending: function(rec,value,key, index) {
-        if (rec.data.state === 'deleted') {
-            if (value === undefined) {
-                return ' ';
-            } else {
-                return '<div style="text-decoration: line-through;">'+ value 
+'</div>';
-            }
-
-        } else if (rec.data.state === 'new') {
-            if(index === undefined) {
-                value = rec.data.pending[key];
-            }
-            if (value === undefined || value === null) {
-                value = ' ';
-            }
-            return '<div style="color:green">' + value + '</div>';
-        } else if (rec.data.state === 'changed') {
-            if (value === undefined || value === null) {
-                value = '<br>';
-            }
-            if (rec.data.pending[key] === undefined || rec.data.pending[key] 
=== null) {
-                rec.data.pending[key] = value;
-            }
-           return '<div style="text-decoration: line-through;">'+ value 
+'</div>' + '<div style="color:orange">' + rec.data.pending[key] + '</div>';
-        } else {
-            return value;
-        }
+       if (rec.data.state === undefined || rec.data.state === null) {
+           return value;
+       }
+
+       if (rec.data.state === 'deleted') {
+           if (value === undefined) {
+               return ' ';
+           } else {
+               return '<div style="text-decoration: line-through;">'+ value 
+'</div>';
+           }
+       } else {
+
+           if (rec.data.pending[key] !== undefined && rec.data.pending[key] 
!== null) {
+               if (rec.data.pending[key] === 'deleted') {
+                   return ' ';
+               } else {
+                   return rec.data.pending[key];
+               }
+           } else {
+               return value;
+           }
+       }
+       return value;
+    },
+
+    render_sdn_pending_state: function(rec,value) {
+
+       if (value === undefined || value === null) {
+           return ' ';
+       }
+
+       let icon = `<i class="fa fa-fw fa-refresh warning"></i>`;
+
+       if (value === 'deleted') {
+           return '<span>' + icon + value + '</span>';
+       }
+
+       let tip = 'Pending apply: <br>';
+
+       for (const [key, keyvalue] of Object.entries(rec.data.pending)) {
+           if (((rec.data[key] !== undefined && rec.data.pending[key] !== 
rec.data[key]) || rec.data[key] === undefined)) {
+               tip = tip + `${key}: ${keyvalue} <br>`;
+           }
+       }
+       return '<span data-qtip="' + tip + '">'+ icon + value + '</span>';
     },
 
     render_ceph_health: function(healthObj) {
diff --git a/www/manager6/sdn/ControllerView.js 
b/www/manager6/sdn/ControllerView.js
index 10c9c446..7981eba9 100644
--- a/www/manager6/sdn/ControllerView.js
+++ b/www/manager6/sdn/ControllerView.js
@@ -143,19 +143,12 @@ Ext.define('PVE.sdn.ControllerView', {
                     }
                },
                 {
-                    header: gettext('Pending'),
-                    flex: 3,
-                    dataIndex: 'pending',
+                    header: gettext('State'),
+                   width: 100,
+                    dataIndex: 'state',
                     renderer: function(value, metaData, rec) {
-                        if(value !== undefined ) {
-                                delete value.controller;
-                                delete value.type;
-                               if(!Ext.Object.isEmpty(value)){
-                                   return JSON.stringify(value);
-                               }
-                        }
-                        return '';
-                    }
+                        return PVE.Utils.render_sdn_pending_state(rec, value);
+                   }
                 }
            ],
            listeners: {
diff --git a/www/manager6/sdn/SubnetView.js b/www/manager6/sdn/SubnetView.js
index bff047fb..9a85bbbc 100644
--- a/www/manager6/sdn/SubnetView.js
+++ b/www/manager6/sdn/SubnetView.js
@@ -129,8 +129,16 @@ Ext.define('PVE.sdn.SubnetView', {
                    dataIndex: 'dnszoneprefix',
                     renderer: function(value, metaData, rec) {
                         return PVE.Utils.render_sdn_pending(rec, value, 
'dnszoneprefix');
-                    }
-               },
+                   }
+                },
+               {
+                   header: gettext('State'),
+                   width: 100,
+                   dataIndex: 'state',
+                   renderer: function(value, metaData, rec) {
+                       return PVE.Utils.render_sdn_pending_state(rec, value);
+                   }
+               }
 
            ],
            listeners: {
diff --git a/www/manager6/sdn/VnetView.js b/www/manager6/sdn/VnetView.js
index da0234dd..a38a9c9a 100644
--- a/www/manager6/sdn/VnetView.js
+++ b/www/manager6/sdn/VnetView.js
@@ -124,6 +124,14 @@ Ext.define('PVE.sdn.VnetView', {
                     renderer: function(value, metaData, rec) {
                        return PVE.Utils.render_sdn_pending(rec, value, 
'vlanaware');
                    }
+               },
+               {
+                   header: gettext('State'),
+                   width: 100,
+                   dataIndex: 'state',
+                    renderer: function(value, metaData, rec) {
+                       return PVE.Utils.render_sdn_pending_state(rec, value);
+                   }
                }
            ],
            listeners: {
diff --git a/www/manager6/sdn/ZoneView.js b/www/manager6/sdn/ZoneView.js
index ae44f95f..0d4ce9ac 100644
--- a/www/manager6/sdn/ZoneView.js
+++ b/www/manager6/sdn/ZoneView.js
@@ -179,27 +179,14 @@ Ext.define('PVE.sdn.ZoneView', {
                         return PVE.Utils.render_sdn_pending(rec, value, 
'reversedns');
                     }
                },
-               {
-                   header: gettext('Pending'),
-                   flex: 3,
-                   dataIndex: 'pending',
+                {
+                    header: gettext('State'),
+                   width: 100,
+                    dataIndex: 'state',
                     renderer: function(value, metaData, rec) {
-                       if(value !== undefined ) {
-                               delete value.nodes;
-                               delete value.zone;
-                               delete value.type;
-                               delete value.mtu;
-                               delete value.ipam;
-                               delete value.dns;
-                               delete value.reversedns;
-                               delete value.dnszone;
-                               if(!Ext.Object.isEmpty(value)){
-                                   return JSON.stringify(value);
-                               }
-                       }
-                       return '';
-                    }
-               },
+                        return PVE.Utils.render_sdn_pending_state(rec, value);
+                   }
+                }
            ],
            listeners: {
                activate: reload,
-- 
2.20.1


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to