Re: [pve-devel] [PATCH manager v2 1/2] add tooltip hashmap/generator for help button

2016-09-15 Thread Dietmar Maurer
applied

___
pve-devel mailing list
pve-devel@pve.proxmox.com
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


[pve-devel] [PATCH manager v2 1/2] add tooltip hashmap/generator for help button

2016-09-15 Thread Dominik Csapak
instead of manually setting the onlineHelpTooltip property
we now have a method which maps links to the docs to
titles

for now this uses a static hashmap, but in the future
we want to generate this by the pve-docs package

also most of the subheaders we can generate instead of
saving them because they simply have each word capitalized
(e.g. '_container_network' => 'Container Network')

Signed-off-by: Dominik Csapak 
---
changes from v1:
use titles instead of command name
for cli tools
 www/manager6/Utils.js | 64 +++
 www/manager6/button/HelpButton.js | 11 ++-
 www/manager6/panel/ConfigPanel.js | 12 ++--
 3 files changed, 76 insertions(+), 11 deletions(-)

diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index a31beb9..3c15135 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -63,6 +63,40 @@ var HostPort_match = new RegExp("^(" + IPV4_REGEXP + "|" + 
DnsName_REGEXP + ")(:
 var HostPortBrackets_match = new RegExp("^\\[(?:" + IPV6_REGEXP + "|" + 
IPV4_REGEXP + "|" + DnsName_REGEXP + ")\\](:\\d+)?$");
 var IP6_dotnotation_match = new RegExp("^" + IPV6_REGEXP + "(\\.\\d+)?$");
 
+var DocsPages = {
+'pve-admin-guide.html':'Proxmox VE Administration Guide',
+'chapter-sysadmin.html':'Host System Administration',
+'chapter-pvecm.html':'Cluster Manager',
+'chapter-pmxcfs.html':'Proxmox Cluster File System (pmxcfs)',
+'chapter-pvesm.html':'Proxmox VE Storage',
+'chapter-qm.html': 'Qemu/KVM Virtual Machines',
+'chapter-pve-firewall.html': 'Proxmox VE Firewall',
+'chapter-pveum.html': 'User Management',
+'chapter-pct.html': 'Proxmox Container Toolkit',
+'chapter-ha-manager.html': 'High Availability',
+'chapter-vzdump.html': 'Backup and Restore',
+'chapter-pve-faq.html': 'Frequently Asked Questions',
+'chapter-pve-bibliography.html': 'Bibliography',
+'qm.1.html': 'Qemu/KVM Virtual Machine Manager',
+'qmrestore.1.html': 'Restore QemuServer vzdump Backups',
+'pct.1.html': 'Tool to manage Linux Containers (LXC) on Proxmox VE',
+'pveam.1.html': 'Proxmox VE Appliance Manager',
+'pveceph.1.html': 'Manage CEPH Services on Proxmox VE Nodes',
+'pvecm.1.html': 'Proxmox VE Cluster Manager',
+'pveum.1.html': 'Proxmox VE User Manager',
+'pvesm.1.html': 'Proxmox VE Storage Manager',
+'pvesubscription.1.html': 'Proxmox VE Subscription Manager',
+'vzdump.1.html': 'Backup Utility for VMs and Containers',
+'ha-manager.1.html': 'Proxmox VE HA Manager',
+'index.html':'',
+'datacenter.cfg.5.html':'Proxmox VE Datacenter Configuration'
+};
+
+var DocsSubTitles = {
+'_vm_container_configuration':'VM/Container configuration',
+'_ip_aliases':'IP Aliases',
+'_ip_sets':'IP Sets'
+};
 Ext.define('PVE.Utils', { statics: {
 
 // this class only contains static functions
@@ -1275,6 +1309,36 @@ Ext.define('PVE.Utils', { statics: {
}
 
menu.showAt(event.getXY());
+},
+
+mapDocsUrlToTitle: function(url) {
+   var title, subtitle;
+   // if there is a subtitle
+   if (url.indexOf('#') !== -1) {
+   title = DocsPages[url.split('#')[0]] || '';
+   subtitle = DocsSubTitles[url.split('#')[1]];
+
+   // if we do not find the subtitle,
+   // capitalize the beginning of every word
+   // and replace '_' with ' '
+   // e.g.:
+   // '_my_text' -> 'My Text'
+   if (!subtitle) {
+   subtitle = url.split('#')[1].replace(/_(\w)/gi, 
function(match,p1){
+   return ' ' + p1.toUpperCase();
+   }).slice(1);
+   }
+
+   if (title !== '') {
+   title += ' - ';
+   }
+
+   title += subtitle;
+   } else {
+   title = DocsPages[url] || '';
+   }
+
+   return title;
 }
 }});
 
diff --git a/www/manager6/button/HelpButton.js 
b/www/manager6/button/HelpButton.js
index 4c2e07a..5afed1f 100644
--- a/www/manager6/button/HelpButton.js
+++ b/www/manager6/button/HelpButton.js
@@ -21,7 +21,7 @@ Ext.define('PVE.button.Help', {
onPveShowHelp: function(helpLink) {
var me = this.getView();
if (me.listenToGlobalEvent === true) {
-   me.onlineHelp = helpLink;
+   me.setOnlineHelp(helpLink);
me.show();
}
},
@@ -32,6 +32,15 @@ Ext.define('PVE.button.Help', {
}
}
 },
+
+// this sets the link and
+// sets the tooltip text
+setOnlineHelp:function(link) {
+   var me = this;
+   me.onlineHelp = link;
+   me.setTooltip(PVE.Utils.mapDocsUrlToTitle(link));
+},
+
 handler: function() {
var me = this;
if (me.onlineHelp) {
diff --git a/www/manager6/panel/ConfigPanel.js 
b/www/manager6/panel/ConfigPanel.js
index fe1a7d1..84c3c10 100644
--- a/www/manager6/panel/ConfigPanel.js
+++