changeset 231:ba401daa2732

Click anywhere on JVM entry cell to go to jvm-info state Reviewed-by: jkang Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-September/025181.html
author Andrew Azores <aazores@redhat.com>
date Mon, 25 Sep 2017 14:16:48 -0400
parents eebc90a53b7f
children 3403192235d0
files src/app/components/jvm-list/jvm-list.controller.js src/app/components/jvm-list/jvm-list.controller.spec.js src/app/components/jvm-list/jvm-list.html
diffstat 3 files changed, 56 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/app/components/jvm-list/jvm-list.controller.js	Thu Sep 28 14:20:44 2017 -0400
+++ b/src/app/components/jvm-list/jvm-list.controller.js	Mon Sep 25 14:16:48 2017 -0400
@@ -31,7 +31,7 @@
 import systemInfoService from 'components/system-info/system-info.service.js';
 
 class JvmListController {
-  constructor (jvmListService, systemInfoService, $location, $timeout, $translate) {
+  constructor (jvmListService, systemInfoService, $location, $state, $timeout, $translate) {
     'ngInject';
     this.jvmListService = jvmListService;
     this.systemInfoService = systemInfoService;
@@ -50,7 +50,8 @@
     };
     this.jvmConfig = {
       showSelectBox: false,
-      useExpandingRows: false
+      useExpandingRows: false,
+      onClick: item => $state.go('jvmInfo', { systemId: item.systemId, jvmId: item.jvmId })
     };
 
     this.emptyStateConfig = {
@@ -120,10 +121,14 @@
           this.systemsOpen[system.systemId] = false;
           this.systemInfoService.getSystemInfo(system.systemId).then(
             resp => {
+              let jvms = system.jvms;
+              jvms.forEach(jvm => {
+                jvm.systemId = system.systemId;
+              });
               this.allItems.push({
                 systemId: system.systemId,
                 hostname: resp.data.response[0].hostname,
-                jvms: system.jvms,
+                jvms: jvms,
                 timeCreated: resp.data.response[0].timeCreated,
                 pageConfig: {
                   pageNumber: 1,
--- a/src/app/components/jvm-list/jvm-list.controller.spec.js	Thu Sep 28 14:20:44 2017 -0400
+++ b/src/app/components/jvm-list/jvm-list.controller.spec.js	Mon Sep 25 14:16:48 2017 -0400
@@ -29,7 +29,7 @@
 
   beforeEach(angular.mock.module('jvmList.controller'));
 
-  let rootScope, controller, jvmListSvc, systemInfoSvc, promise, location, timeout, translate;
+  let rootScope, controller, jvmListSvc, systemInfoSvc, promise, location, state, timeout, translate;
 
   let fooItem = {
     hostname: 'foo',
@@ -87,6 +87,9 @@
     location = {
       hash: sinon.stub().returns('')
     };
+    state = {
+      go: sinon.spy()
+    };
     timeout = sinon.spy();
     translate = sinon.stub().returns({
       then: sinon.stub().yields({})
@@ -102,6 +105,7 @@
       jvmListService: jvmListSvc,
       systemInfoService: systemInfoSvc,
       $location: location,
+      $state: state,
       $timeout: timeout,
       $translate: translate
     });
@@ -132,6 +136,20 @@
     });
   });
 
+  describe('jvmConfig', () => {
+    it('should navigate to state on click', () => {
+      state.go.should.not.be.called();
+      let fn = controller.jvmConfig.onClick;
+      fn.should.be.a.Function();
+      fn({
+        systemId: 'foo-systemId',
+        jvmId: 'foo-jvmId'
+      });
+      state.go.should.be.calledOnce();
+      state.go.should.be.calledWith('jvmInfo', sinon.match({ systemId: 'foo-systemId', jvmId: 'foo-jvmId' }));
+    });
+  });
+
   describe('changeLocationHash', () => {
     it('should add system hostname to url when opened', () => {
       let prevLocationHash = '';
@@ -193,10 +211,12 @@
       let data = {
         response: [
           {
-            systemId: 'foo'
+            systemId: 'foo',
+            jvms: []
           },
           {
-            systemId: 'bar'
+            systemId: 'bar',
+            jvms: []
           }
         ]
       };
@@ -217,10 +237,12 @@
       let data = {
         response: [
           {
-            systemId: 'foo'
+            systemId: 'foo',
+            jvms: []
           },
           {
-            systemId: 'bar'
+            systemId: 'bar',
+            jvms: []
           }
         ]
       };
@@ -238,7 +260,8 @@
       let data = {
         response: [
           {
-            systemId: 'foo'
+            systemId: 'foo',
+            jvms: []
           }
         ]
       };
@@ -259,6 +282,23 @@
       controller.listConfig.itemsAvailable.should.be.False();
       done();
     });
+
+    it('should append systemId to jvm items', done => {
+      let data = {
+        response: [
+          {
+            systemId: 'foo',
+            jvms: [{}]
+          }
+        ]
+      };
+      promise.resolve({ data: data });
+      rootScope.$apply();
+      controller.allItems[0].jvms[0].should.have.ownProperty('systemId');
+      controller.allItems[0].jvms[0].systemId.should.equal('foo');
+      controller.listConfig.itemsAvailable.should.be.True();
+      done();
+    });
   });
 
   describe('constructToolbarSettings', () => {
--- a/src/app/components/jvm-list/jvm-list.html	Thu Sep 28 14:20:44 2017 -0400
+++ b/src/app/components/jvm-list/jvm-list.html	Mon Sep 25 14:16:48 2017 -0400
@@ -41,12 +41,12 @@
         <list-expanded-content>
 
           <pf-list-view
-                custom-scope="{ systemId: $parent.item.systemId }"
                 items="$parent.item.jvms"
                 page-config="$parent.item.pageConfig"
                 config="$ctrl.jvmConfig">
 
             <div class="list-view-pf-left">
+              <span class="fa fa-angle-right"></span>
               <span class="pficon pficon-virtual-machine list-view-pf-icon-med"></span>
             </div>
             <div class="list-view-pf-description">
@@ -56,7 +56,7 @@
               <div class="list-view-pf-additional-info">
                 <div class="list-view-pf-additional-info-item" ng-click="$event.stopPropagation()">
                   <span class="pficon pficon-container-node"></span>
-                  <a ui-sref="jvmInfo({ systemId: $parent.$ctrl.customScope.systemId, jvmId: $parent.item.jvmId })" translate>jvmList.jvmEntry.JVM_INFO_LINK</a>
+                  <a ui-sref="jvmInfo({ systemId: $parent.item.systemId, jvmId: $parent.item.jvmId })" translate>jvmList.jvmEntry.JVM_INFO_LINK</a>
                 </div>
                 <div class="list-view-pf-additional-info-item">
                     <span class="pficon" ng-class="item.isAlive ? 'pficon-ok' : 'pficon-error-circle-o'"></span>