This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack-primate.git

commit 960d2e958ffca8ffb339c0bb137a6064944bc64a
Author: Rohit Yadav <[email protected]>
AuthorDate: Mon Nov 25 00:26:10 2019 +0530

    config: dynamic doc links for views
    
    Signed-off-by: Rohit Yadav <[email protected]>
---
 src/components/header/UserMenu.vue    |  4 ++--
 src/components/widgets/Breadcrumb.vue | 13 ++++++++++---
 src/config/router.js                  |  4 +++-
 src/config/section/compute.js         |  6 ++++++
 src/config/settings.js                |  2 +-
 src/views/AutogenView.vue             | 13 ++++++++++++-
 6 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/src/components/header/UserMenu.vue 
b/src/components/header/UserMenu.vue
index 0279934..b53476c 100644
--- a/src/components/header/UserMenu.vue
+++ b/src/components/header/UserMenu.vue
@@ -39,7 +39,7 @@
           </router-link>
         </a-menu-item>
         <a-menu-item class="user-menu-item" key="3" disabled>
-          <a :href="helpUrl" target="_blank">
+          <a :href="docBase" target="_blank">
             <a-icon class="user-menu-item-icon" 
type="question-circle-o"></a-icon>
             <span class="user-menu-item-name">Help</span>
           </a>
@@ -70,7 +70,7 @@ export default {
   },
   data () {
     return {
-      helpUrl: config.helpUrl
+      docBase: config.docBase
     }
   },
   methods: {
diff --git a/src/components/widgets/Breadcrumb.vue 
b/src/components/widgets/Breadcrumb.vue
index 990d1cf..031db47 100644
--- a/src/components/widgets/Breadcrumb.vue
+++ b/src/components/widgets/Breadcrumb.vue
@@ -18,6 +18,13 @@
 <template>
   <a-breadcrumb class="breadcrumb">
     <a-breadcrumb-item v-for="(item, index) in breadList" :key="index">
+      <a
+        v-if="item.meta.docHelp"
+        style="margin-right: 5px"
+        :href="docBase + '/' + item.meta.docHelp"
+        target="_blank">
+        <a-icon type="question-circle-o"></a-icon>
+      </a>
       <router-link
         v-if="item && item.name"
         :to="{ path: item.path === '' ? '/' : item.path }"
@@ -51,15 +58,15 @@
 </template>
 
 <script>
+import config from '@/config/settings'
 
 export default {
   name: 'Breadcrumb',
-  components: {
-  },
   data () {
     return {
       name: '',
-      breadList: []
+      breadList: [],
+      docBase: config.docBase
     }
   },
   created () {
diff --git a/src/config/router.js b/src/config/router.js
index ffd2fd5..77f11ef 100644
--- a/src/config/router.js
+++ b/src/config/router.js
@@ -36,7 +36,7 @@ export function generateRouterMap (section) {
     name: section.name,
     path: '/' + section.name,
     hidden: section.hidden,
-    meta: { title: section.title, keepAlive: true, icon: section.icon },
+    meta: { title: section.title, keepAlive: true, icon: section.icon, 
docHelp: section.docHelp },
     component: RouteView
   }
 
@@ -54,6 +54,7 @@ export function generateRouterMap (section) {
           name: child.name,
           keepAlive: true,
           icon: child.icon,
+          docHelp: child.docHelp,
           permission: child.permission,
           resourceType: child.resourceType,
           params: child.params ? child.params : {},
@@ -117,6 +118,7 @@ export function generateRouterMap (section) {
         name: section.name,
         keepAlive: true,
         icon: section.icon,
+        docHelp: section.docHelp,
         permission: section.permission,
         resourceType: section.resourceType,
         params: section.params ? section.params : {},
diff --git a/src/config/section/compute.js b/src/config/section/compute.js
index f26f371..aa3277b 100644
--- a/src/config/section/compute.js
+++ b/src/config/section/compute.js
@@ -24,6 +24,7 @@ export default {
       name: 'vm',
       title: 'Instances',
       icon: 'desktop',
+      docHelp: 'adminguide/virtual_machines.html',
       permission: ['listVirtualMachinesMetrics', 'listVirtualMachines'],
       resourceType: 'UserVm',
       columns: [
@@ -76,6 +77,7 @@ export default {
           api: 'startVirtualMachine',
           icon: 'caret-right',
           label: 'Start VM',
+          docHelp: 
'adminguide/virtual_machines.html#stopping-and-starting-vms',
           dataView: true,
           groupAction: true,
           show: (record) => { return ['Stopped'].includes(record.state) },
@@ -85,6 +87,7 @@ export default {
           api: 'stopVirtualMachine',
           icon: 'stop',
           label: 'label.action.stop.instance',
+          docHelp: 
'adminguide/virtual_machines.html#stopping-and-starting-vms',
           dataView: true,
           groupAction: true,
           args: ['id', 'forced'],
@@ -235,6 +238,7 @@ export default {
       name: 'vmgroup',
       title: 'Instance Groups',
       icon: 'gold',
+      docHelp: 
'adminguide/virtual_machines.html#changing-the-vm-name-os-or-group',
       permission: ['listInstanceGroups'],
       columns: ['name', 'account', 'domain'],
       details: ['name', 'id', 'account', 'domain', 'created'],
@@ -271,6 +275,7 @@ export default {
       name: 'ssh',
       title: 'SSH Key Pairs',
       icon: 'key',
+      docHelp: 
'adminguide/virtual_machines.html#using-ssh-keys-for-authentication',
       permission: ['listSSHKeyPairs'],
       columns: ['name', 'fingerprint', 'account', 'domain'],
       details: ['name', 'fingerprint', 'account', 'domain'],
@@ -307,6 +312,7 @@ export default {
       name: 'affinitygroup',
       title: 'Affinity Groups',
       icon: 'swap',
+      docHelp: 'adminguide/virtual_machines.html#affinity-groups',
       permission: ['listAffinityGroups'],
       columns: ['name', 'type', 'description', 'account', 'domain'],
       details: ['name', 'id', 'description', 'type', 'account', 'domain'],
diff --git a/src/config/settings.js b/src/config/settings.js
index 6616afb..95c3225 100644
--- a/src/config/settings.js
+++ b/src/config/settings.js
@@ -27,7 +27,7 @@ export default {
   multiTab: false, // enable to have tab/route history stuff
   // CloudStack options
   apiBase: '/client/api',
-  helpUrl: 'http://docs.cloudstack.apache.org/en/latest/',
+  docBase: 'http://docs.cloudstack.apache.org/en/latest',
   appTitle: 'CloudStack',
   // vue-ls options
   storageOptions: {
diff --git a/src/views/AutogenView.vue b/src/views/AutogenView.vue
index a1e0b07..59bd819 100644
--- a/src/views/AutogenView.vue
+++ b/src/views/AutogenView.vue
@@ -96,7 +96,6 @@
       </keep-alive>
       <a-modal
         v-else
-        :title="$t(currentAction.label)"
         :visible="showAction"
         :closable="true"
         style="top: 20px;"
@@ -105,6 +104,16 @@
         :confirmLoading="currentAction.loading"
         centered
       >
+        <span slot="title">
+          {{ $t(currentAction.label) }}
+          <a
+            v-if="currentAction.docHelp || $route.meta.docHelp"
+            style="margin-left: 5px"
+            :href="docBase + '/' + (currentAction.docHelp || 
$route.meta.docHelp)"
+            target="_blank">
+            <a-icon type="question-circle-o"></a-icon>
+          </a>
+        </span>
         <a-spin :spinning="currentAction.loading">
           <a-form
             :form="form"
@@ -195,6 +204,7 @@
 <script>
 import { api } from '@/api'
 import { mixinDevice } from '@/utils/mixin.js'
+import config from '@/config/settings'
 import store from '@/store'
 
 import Breadcrumb from '@/components/widgets/Breadcrumb'
@@ -217,6 +227,7 @@ export default {
   data () {
     return {
       apiName: '',
+      docBase: config.docBase,
       loading: false,
       columns: [],
       items: [],

Reply via email to