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


The following commit(s) were added to refs/heads/master by this push:
     new 3f66c68  component: Adding contextual info for resource status (#482)
3f66c68 is described below

commit 3f66c68bcbb7ca4f4a6d7085e8f696e405723616
Author: davidjumani <dj.davidjumani1...@gmail.com>
AuthorDate: Sat Jul 4 12:19:38 2020 +0530

    component: Adding contextual info for resource status (#482)
    
    Fixes #466
---
 src/components/view/InfoCard.vue  |  9 +++----
 src/components/widgets/Status.vue | 27 +++++++++++++++++----
 src/locales/en.json               | 50 +++++++++++++++++++++++++++++++++++++--
 3 files changed, 74 insertions(+), 12 deletions(-)

diff --git a/src/components/view/InfoCard.vue b/src/components/view/InfoCard.vue
index 70f43f7..c0d0878 100644
--- a/src/components/view/InfoCard.vue
+++ b/src/components/view/InfoCard.vue
@@ -73,22 +73,19 @@
         <div class="resource-detail-item" v-if="resource.state || 
resource.status">
           <div class="resource-detail-item__label">{{ $t('label.status') 
}}</div>
           <div class="resource-detail-item__details">
-            <status class="status" :text="resource.state || resource.status"/>
-            <span>{{ resource.state || resource.status }}</span>
+            <status class="status" :text="resource.state || resource.status" 
displayText/>
           </div>
         </div>
         <div class="resource-detail-item" v-if="resource.allocationstate">
           <div class="resource-detail-item__label">{{ 
$t('label.allocationstate') }}</div>
           <div class="resource-detail-item__details">
-            <status class="status" :text="resource.allocationstate"/>
-            <span>{{ resource.allocationstate }}</span>
+            <status class="status" :text="resource.allocationstate" 
displayText/>
           </div>
         </div>
         <div class="resource-detail-item" v-if="resource.resourcestate">
           <div class="resource-detail-item__label">{{ 
$t('label.resourcestate') }}</div>
           <div class="resource-detail-item__details">
-            <status class="status" :text="resource.resourcestate"/>
-            <span>{{ resource.resourcestate }}</span>
+            <status class="status" :text="resource.resourcestate" displayText/>
           </div>
         </div>
 
diff --git a/src/components/widgets/Status.vue 
b/src/components/widgets/Status.vue
index 2301d56..db2d63d 100644
--- a/src/components/widgets/Status.vue
+++ b/src/components/widgets/Status.vue
@@ -16,10 +16,7 @@
 // under the License.
 
 <template>
-  <a-tooltip placement="bottom">
-    <template slot="title">
-      {{ text }}
-    </template>
+  <a-tooltip placement="bottom" :title="$t(getTooltip(text))">
     <a-badge style="display: inline-flex" :title="text" 
:status="getBadgeStatus(text)" :text="getText()" />
   </a-tooltip>
 </template>
@@ -97,6 +94,28 @@ export default {
           break
       }
       return status
+    },
+    getTooltip (state) {
+      if (!(state && this.displayText)) {
+        return
+      }
+      if (this.$route.path === '/vmsnapshot' || 
this.$route.path.includes('/vmsnapshot/')) {
+        return 'message.vmsnapshot.state.' + state.toLowerCase()
+      }
+      if (this.$route.path === '/vm' || this.$route.path.includes('/vm/')) {
+        return 'message.vm.state.' + state.toLowerCase()
+      }
+      if (this.$route.path === '/volume' || 
this.$route.path.includes('/volume/')) {
+        return 'message.volume.state.' + state.toLowerCase()
+      }
+      if (this.$route.path === '/guestnetwork' || 
this.$route.path.includes('/guestnetwork/')) {
+        return 'message.guestnetwork.state.' + state.toLowerCase()
+      }
+      if (this.$route.path === '/publicip' || 
this.$route.path.includes('/publicip/')) {
+        return 'message.publicip.state.' + state.toLowerCase()
+      }
+      // Nothing for snapshots, vpcs, gateways, vnpnconn, vpnuser, kubectl, 
event, project, account, infra. They're all self explanatory
+      return state
     }
   }
 }
diff --git a/src/locales/en.json b/src/locales/en.json
index c076e55..358f91a 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -1687,8 +1687,6 @@
 "label.rules.file": "Rules File",
 "label.rules.file.import.description": "Click or drag rule defintions CVS file 
to import",
 "label.running": "Running VMs",
-"label.saml.disable": "SAML Disable",
-"label.saml.enable": "SAML Enable",
 "label.s3.access.key": "Access Key",
 "label.s3.bucket": "Bucket",
 "label.s3.connection.timeout": "Connection Timeout",
@@ -1699,6 +1697,8 @@
 "label.s3.secret.key": "Secret Key",
 "label.s3.socket.timeout": "Socket Timeout",
 "label.s3.use.https": "Use HTTPS",
+"label.saml.disable": "SAML Disable",
+"label.saml.enable": "SAML Enable",
 "label.samlenable": "Authorize SAML SSO",
 "label.samlentity": "Identity Provider",
 "label.saturday": "Saturday",
@@ -2485,6 +2485,12 @@
 "message.gslb.lb.remove.confirm": "Please confirm you want to remove load 
balancing from GSLB",
 "message.guest.traffic.in.advanced.zone": "Guest network traffic is 
communication between end-user virtual machines. Specify a range of VLAN IDs to 
carry guest traffic for each physical network.",
 "message.guest.traffic.in.basic.zone": "Guest network traffic is communication 
between end-user virtual machines. Specify a range of IP addresses that 
CloudStack can assign to guest VMs. Make sure this range does not overlap the 
reserved system IP range.",
+"message.guestnetwork.state.allocated": "Indicates the network configuration 
is in allocated but not setup",
+"message.guestnetwork.state.destroy": "Indicates that the network is 
destroyed",
+"message.guestnetwork.state.implemented": "Indicates the network configuration 
is in use",
+"message.guestnetwork.state.implementing": "Indicates the network 
configuration is being implemented",
+"message.guestnetwork.state.setup": "Indicates the network configuration is 
setup",
+"message.guestnetwork.state.shutdown": "Indicates the network configuration is 
being destroyed",
 "message.host.dedicated": "Host Dedicated",
 "message.host.dedication.released": "Host dedication released",
 "message.installwizard.click.retry": "Click the button to retry launch.",
@@ -2579,6 +2585,10 @@
 "message.project.invite.sent": "Invite sent to user; they will be added to the 
project once they accept the invitation",
 "message.public.traffic.in.advanced.zone": "Public traffic is generated when 
VMs in the cloud access the internet. Publicly-accessible IPs must be allocated 
for this purpose. End users can use the CloudStack UI to acquire these IPs to 
implement NAT between their guest network and their public 
network.<br/><br/>Provide at least one range of IP addresses for internet 
traffic.",
 "message.public.traffic.in.basic.zone": "Public traffic is generated when VMs 
in the cloud access the Internet or provide services to clients over the 
Internet. Publicly accessible IPs must be allocated for this purpose. When a 
instance is created, an IP from this set of Public IPs will be allocated to the 
instance in addition to the guest IP address. Static 1-1 NAT will be set up 
automatically between the public IP and the guest IP. End users can also use 
the CloudStack UI to acquire ad [...]
+"message.publicip.state.allocating": "The IP Address is being propagated to 
other network elements and is not ready for use yet.",
+"message.publicip.state.allocated": "The IP address is in used.",
+"message.publicip.state.free": "The IP address is ready to be allocated.",
+"message.publicip.state.releasing": "The IP address is being released for 
other network elements and is not ready for allocation.",
 "message.question.are.you.sure.you.want.to.add": "Are you sure you want to 
add",
 "message.read.admin.guide.scaling.up": "Please read the dynamic scaling 
section in the admin guide before scaling up.",
 "message.recover.vm": "Please confirm that you would like to recover this VM.",
@@ -2672,10 +2682,46 @@
 "message.virtual.network.desc": "A dedicated virtualized network for your 
account.  The broadcast domain is contained within a VLAN and all public 
network access is routed out by a virtual router.",
 "message.vm.create.template.confirm": "Create Template will reboot the VM 
automatically.",
 "message.vm.review.launch": "Please review the following information and 
confirm that your virtual instance is correct before launch.",
+"message.vm.state.destroyed": "VM is marked for destroy",
+"message.vm.state.error": "VM is in error",
+"message.vm.state.expunging": "VM is being expunged",
+"message.vm.state.migrating": "VM is being migrated",
+"message.vm.state.running": "VM is running",
+"message.vm.state.shutdown": "VM state is shutdown from inside",
+"message.vm.state.starting": "VM is being started",
+"message.vm.state.stopped": "VM is stopped",
+"message.vm.state.stopping": "VM is being stopped",
+"message.vm.state.unknown": "VM state is unknown.",
+"message.vmsnapshot.state.allocated": "The VM snapshot is allocated but has 
not been created yet",
+"message.vmsnapshot.state.creating": "The VM snapshot is being created",
+"message.vmsnapshot.state.error": "The VM snapshot is in error state, and 
can't be recovered",
+"message.vmsnapshot.state.expunging": "The VM snapshot is being expunging",
+"message.vmsnapshot.state.ready": "The VM snapshot is ready to be used",
+"message.vmsnapshot.state.removed": "The VM snapshot is destroyed, and can't 
be recovered",
+"message.vmsnapshot.state.reverting": "The VM snapshot is being used to 
revert",
 "message.vnmc.available.list": "VNMC is not available from provider list.",
 "message.vnmc.not.available.list": "VNMC is not available from provider list.",
 "message.volume.create.template.confirm": "Please confirm that you wish to 
create a template for this disk volume.  Creation of the template can range 
from several minutes to longer depending on the size of the volume.",
 "message.volume.root.shrink.disk.size": "Shrink operation on ROOT volume not 
supported",
+"message.volume.state.allocated": "The volume is allocated but has not been 
created yet",
+"message.volume.state.attaching": "The volume is attaching to a volume from 
Ready state.",
+"message.volume.state.copying": "Volume is copying from image store to 
primary, in case it's an uploaded volume",
+"message.volume.state.creating": "The volume is being created",
+"message.volume.state.destroy": "The volume is destroyed, and can't be 
recovered",
+"message.volume.state.destroying": "The volume is destroying, and can't be 
recovered",
+"message.volume.state.expunged": "The volume has been expunged",
+"message.volume.state.expunging": "The volume is being expunging",
+"message.volume.state.migrating": "The volume is migrating to other storage 
pool",
+"message.volume.state.notuploaded": "The volume entry is just created in DB, 
not yet uploaded",
+"message.volume.state.ready": "The volume is ready to be used",
+"message.volume.state.resizing": "The volume is being resized",
+"message.volume.state.revertsnapshotting": "There is a snapshot created on 
this volume, the volume is being reverting from snapshot",
+"message.volume.state.snapshotting": "There is a snapshot created on this 
volume, not backed up to secondary storage yet",
+"message.volume.state.uploadabandoned": "Volume upload is abandoned since the 
upload was never initiated within a specificed time",
+"message.volume.state.uploaded": "Volume is uploaded",
+"message.volume.state.uploaderror": "Volume upload encountered some error",
+"message.volume.state.uploadinprogress": "Volume upload is in progress",
+"message.volume.state.uploadop": "The volume upload operation is in progress 
or in short the volume is on secondary storage",
 "message.waiting.for.builtin.templates.to.load": "Waiting for builtin 
templates to load...",
 "message.xstools61plus.update.failed": "Failed to update Original XS Version 
is 6.1+ field. Error:",
 "message.you.must.have.at.least.one.physical.network": "You must have at least 
one physical network",

Reply via email to