Hi Socorro,
The UI looks good.
I only think we can make the resume icon darker when it is on livetile
but we can do it during code freeze phase.
Also following the same idea of "Reset" button we could make the
"Pause"
button always visible and enable/disable it according to VM state.
So we would have 3 persistent buttons
| Reset | Power on/off | Pause |
And the Action drop down width could be increase to fit the 3 buttons width
| Reset | Power on/off | Pause |
| Actions |
Socorro, could you work on patches to do those changes?
I will merge the patch as it is by now.
Thanks,
Aline Manera
On 01/06/2015 16:19, Socorro Stoppler wrote:
> From: Socorro Stoppler <socorrob(a)us.ibm.com>
>
> Adding UI support for pause/resume VM
>
> Signed-off-by: Socorro Stoppler <socorrob(a)us.ibm.com>
> ---
> ui/css/theme-default/button.css | 20 +++++
> ui/css/theme-default/list.css | 24 +++++-
> ui/images/theme-default/ac22_pause.png | Bin 0 -> 1219 bytes
> ui/images/theme-default/ac22_pause_grey.png | Bin 0 -> 1175 bytes
> ui/images/theme-default/ac24_resume.png | Bin 0 -> 1341 bytes
> ui/images/theme-default/ac24_resume_grey.png | Bin 0 -> 1282 bytes
> ui/js/src/kimchi.api.js | 22 ++++++
> ui/js/src/kimchi.guest_main.js | 109
> +++++++++++++++++++++++----
> ui/pages/guest.html.tmpl | 4 +
> 9 files changed, 161 insertions(+), 18 deletions(-)
> create mode 100644 ui/images/theme-default/ac22_pause.png
> create mode 100644 ui/images/theme-default/ac22_pause_grey.png
> create mode 100644 ui/images/theme-default/ac24_resume.png
> create mode 100644 ui/images/theme-default/ac24_resume_grey.png
>
> diff --git a/ui/css/theme-default/button.css
> b/ui/css/theme-default/button.css
> index 0df53a6..93dd4ed 100644
> --- a/ui/css/theme-default/button.css
> +++ b/ui/css/theme-default/button.css
> @@ -94,6 +94,16 @@
> center no-repeat;
> }
>
> +.btn.pause-gray .icon {
> + background: url(../images/theme-default/ac22_pause_grey.png) center
> + center no-repeat;
> +}
> +
> +.btn.resume-gray .icon {
> + background: url(../images/theme-default/ac24_resume_grey.png)
> center
> + center no-repeat;
> +}
> +
> .btn .text {
> padding: 0 10px;
> }
> @@ -226,6 +236,16 @@
> center no-repeat;
> }
>
> +.icon.pause {
> + background: url(../images/theme-default/ac22_pause.png) center
> + center no-repeat;
> +}
> +
> +.icon.resume {
> + background: url(../images/theme-default/ac24_resume.png) center
> + center no-repeat;
> +}
> +
> .icon.search {
> background: url(../images/theme-default/icon-search.png) no-repeat
> center center;
> diff --git a/ui/css/theme-default/list.css
> b/ui/css/theme-default/list.css
> index e51912d..9b4f88f 100644
> --- a/ui/css/theme-default/list.css
> +++ b/ui/css/theme-default/list.css
> @@ -101,6 +101,16 @@
> position: relative;
> }
>
> +.list-vm .tile.paused .imgactive {
> + max-height: 110px;
> + max-width: 170px;
> + height: auto;
> + width: auto;
> + display:inline;
> + border: none;
> + position: relative;
> +}
> +
> .list-vm .tile.running .imgactive{
> max-height: 110px;
> max-width: 170px;
> @@ -226,6 +236,7 @@
>
> .guest-actions .top {
> padding: 7px 10px;
> + width: 200px;
> }
>
> .guest-actions .top button {
> @@ -253,12 +264,10 @@
> margin: 10px;
> }
>
> -
> -.list-vm .tile:not(.shutoff) img {
> +.list-vm .tile:not(.shutoff) && .tile:not(.paused) img {
> box-shadow: -1px -1px 2px rgb(0, 0, 0, .25), 3px 3px 3px #fff;
> }
>
> -
> .list-vm .shutoff {
> position: relative;
> box-shadow: none !important;
> @@ -268,6 +277,15 @@
> opacity: 0.4;
> }
>
> +.list-vm .paused {
> + position: relative;
> + box-shadow: none !important;
> +}
> +
> +.list-vm .paused img {
> + opacity: 0.1;
> +}
> +
> .list-title {
> color: #666;
> font-weight: bold;
> diff --git a/ui/images/theme-default/ac22_pause.png
> b/ui/images/theme-default/ac22_pause.png
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..9258aee87f0e2f430cf1fb12a4588f763f3c0a62
> GIT binary patch
> literal 1219
> zcmbVMO>Em#9CtTbM!QYZ3R7EwV!5LOiP*7Yo5gCV96yIfTDmTcw6Ieh`=v3h{fzyx
> zq`hSAssY^&+X3-;7(IbDF^V*#0ostNNpJ&chiPJ(*f=3gfS^*?io$c-6b{vpux!5%
> z|9-#!$NT^N=IF@FyE^+iDT>;a83s8r_K~M&M+bTTG<W|x8G5l^z+<R{tA-CL)j~x`
> zXB=Y!=AdCszxFL0q^RvBJ72(s>><TO4r_!Mw&r+*O;LkGHP0|7A*PFP!giC)FJE3`
> zXxmCMN2P2m>uIoT56}2;Y-S{H&P<vKiy3-}9;_)uz=7DHYtED#D77TBrmK*7xXm&2
> z8U#-!nRTZM*-=_UKBOf!9yMb;Ps=jPi;^t!FVI4a7q}R?<tQ&IlB@_X(i;~;toc?+
> z$$|8SEwV~7WsE(A<EqsvTaB~GpWygJA`xl`LX;q)!L*BwTGS2tTM7UMrf+-LMlKyH
> z8bwsWNrrg39)ja#vzx+hu#qT|GOlKL9M8r$#|h(FLkBnq|8ZkWbdaC+AeVyys`w^3
>
zk5Ye&Omg>VLm`lOqa5~aawx_WKxV~(F3x}?L%y(<Z7H#MN&~u_5<ptiMV?RbaS4!>
> zrVD8v@O(>SE3PK#KozA#S`-LU7gZ6cs;KfBkmKouAhfs{H^7E#!j@f|*xleBd?Z)V
> zd}v_g=MkD}RlsN&VHA{+M{8p;{oGO8wNN#9K0KcFXaV%?<Iqa`$f4KrtJquEkBR>k
> z_d3`5KRM%wGhA34|0<T&7OB8+x>@>UvDrM(B^~3F);Mrp0;H{e&j2-FyH#9mHixz+
> zsjfH1Eo=U_E3<{C2X?pDPc)w0Q`h${U)cTry;r_#-0i-(^1+#R+i$(o+oLyy)rrPR
> zGqQa6RQ*y<Z%_B&waD#}Gs^kZ<Eed1jiuqwm$peKfB56{kCElaPu<xWX*Tygy#8yQ
> z9UWc(m4ngZo|4tA&$sX2aW%f${zc=`{>0DYC!VN3CJ3Lly+xgTeKuD)G@tA0Klky%
> zS!JL@nLTnk9qqeZzOi_&{C$L3`Rl_Qi*JAZ>Yq=2M&<4|=XMg!2b~wc+G{MR(t(fO
> w>*#y%<Tu#??U}`^+b$Q*9#iveH;<`QTL-02da<sDMK=7cWb_g6NosuVZ*kO>5C8xG
>
> literal 0
> HcmV?d00001
>
> diff --git a/ui/images/theme-default/ac22_pause_grey.png
> b/ui/images/theme-default/ac22_pause_grey.png
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..7cde85bcb26ca808b9b02d5336872f10556585a0
> GIT binary patch
> literal 1175
> zcmbVMUue{J98c{SYPo?ZqV0n};)|2JOMXc%y~}#Gy(HIO+0}Br&chc?lV97|CciBC
> z)w`CVuHZZen`;>q!NH~v?x9Y7Dzb+TRHmS);FB+cii#l4hoNGz{?hikJroBENq)cY
> zFW=AS`#;Bfx;rB48`m=o6UlXI1-drUXUp1;>HE>d^Q&~(O7s%x#RH^l_=st@a6bY$
> z#~4HfWLRTgUPmnqQ$JuAOQe+lTrsf|H$t6w#qlVbVOm-%o?#9n0{YRQ?WWlmzt6G2
> zw$kjLM4r!kDjKpo$9>d0-d!}uhs~75w(bHg6@?Nwh!~*ajJSbPNwbT*3f+gt919jz
> z$Z(ona;lW?0V?(pNW{gM$wLTaIS!?SEW;=ecqni@z2z8`l!UAZ&0zUrsWsmkPzqXh
> z*%p=3><}TI!g1wtIbIgy*dOFzDwPU31R+K>V!@b8j7rQ6w$~Um6qvs45gWT8WHkEm
> zC`q%_)1?p`FP~o_c7x?a(Ufr&!{cC_=Nu=DYf(EO1@w;_t7-?uF%NMC6yQ<cr1cos
> zUIWwIeb`W_NWD>Z`!+3#F`{8})Il!EX=#>ziCea%@M1>QbU7nvSxJ{5%s?@rQAyQ>
> zEYu*Zajb?-3eBR(C#7sshY;#gQphxC+ck+-)ufnJ#Tqu}2E=epRI_VSyUSSdgIGoN
> zkwLIu#CW9E0X;*Q;9v-QK<$;mjy<+(;d1b4Se~V5HRRg|k(Kqa0~YhE*sIv*rT>b1
> z32XhIoN?3{E^Ll}HB0S?c3`+&X?-fJ3=eYY#Q1bH&XxYUOvmcaoYr2f-0PoTSZJ+J
> zGaKuFVj6^FlarIb%*@=_c<offl__vP^D+Rfmu6?npH+9yD5o}m%``PNmBebKF#qJ%
> zwr}PRFLb?o`wG|fbgrw;O`ZPatR9U<r+E2BU)xQvuUdEVLEBd+HjQdmH|(hH-!gr<
> z+Sf6Ag+FlTSN+W9@AgUu?sylUrsSi4bUlxpeCF-_aZPc)@rz)Bzwqs$H?Lnl-1+nE
> zZNlC5ogI&|9~C0kBj>)K9Pawz@pRkY`;PY=8`;oyq>edy=*0QyXoDR7Dsp<a_FHEE
> F#Cyajgunm*
>
> literal 0
> HcmV?d00001
>
> diff --git a/ui/images/theme-default/ac24_resume.png
> b/ui/images/theme-default/ac24_resume.png
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..6f1f16f52f2c000a7413e22a0105c5d0b09c7a2b
> GIT binary patch
> literal 1341
> zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)h!3HFsG`&3vq$EpRBT9nv(@M${i&7aJQ}UBi
> z6+Ckj(^G>|6H_V+Po~;1FfgZOhD4M^`1)8S=jZArg4F0$<Q4#RGcefLR}>^BXQ!4Z
> zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di
> zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU
> ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um
> zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT
> zY?Xj6g?J&iz}FXUa9%MqpnyT9Uy)d#Z>VRWpPLKv7g%+1Nl+@n8CX>phg24%>IbD3
> z=a&{G1LGr28KxN+cK9s<DFnL4%D*TR7%7Q4F8Rr&xv6<2o-VdZKpDN1%oHmVGXql#
> zXG>!vb2k%L6GKBMLt|4HCnFbUS0gt=7ehms8QAn18<-kc7?=Qc8Ua<hnpheen>)I>
> zSh!jkI9dYZ2Bz0Duec;JFF6%vZzj-Qs9rO?daay`QWHz^i$e1Ab6_bTAS1sdzc?em
> zK*2fKOhF?&GcP5-yjT+yJrLizq!wkCrKY$Q<>xAZ!`CVki~T0%g!~QBn?g>Q=>r|3
> z4@w+Ji3KJEOo1RKJm~{D@XV8%2h1@=z^w7aYe@nF17ohIi(^Q|tu52`dL3~PIG%1+
> z{qdYj)BS{nN)a4Uzgfz@U5|{==-~Rr(X?J+hS&Y0>>I9~a|+n7!)e0@qjPDSCqysa
> zelqu;f#OV^&$nmJ^%d*n=n)W<QMqBXLNn7=f3xbe`~%;@s_sSHJo4k~OgVK%Rrc$T
> zR+%%`o}PbiUixvh#eaiq9=uWhwou#SM&C=8Uq&o5x)^q~e*7C)>7$^?RXt(u(xzEy
> zOPU;}B=89}ep{<6u&4Nh>w+5DRCa}Vt_$zQ-(mgo)$`M{6pJ-XGfMySzIu_fqb8xM
> zIo&>rjjbj2?e)nA^GjETTIn!NmEN#PGO#~*Y439ez4xkDnXXRN&Pke}eTMr4>oZ;x
> zKDC3Jd3;tjEd1V+bK{)Y%G$QIDJfg_xop@z_u<1l?(CE;R_hhlnjVf9c&{M6XkYI=
> z$N!Fd8jm^dX^2q>UEnA^L2H7Q^pY(86$;1V><mnqe;9lYxu>o-;m`U@4@9nbC@(Pk
> bs(gUqpHO<9rrQcmP=V&@>gTe~DWM4fDsR{!
>
> literal 0
> HcmV?d00001
>
> diff --git a/ui/images/theme-default/ac24_resume_grey.png
> b/ui/images/theme-default/ac24_resume_grey.png
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..1714ba2d00294e99222f833b8cf5e33da31448f9
> GIT binary patch
> literal 1282
> zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)h!3HFsG`&3vq$EpRBT9nv(@M${i&7aJQ}UBi
> z6+Ckj(^G>|6H_V+Po~;1FfgZOhD4M^`1)8S=jZArg4F0$<Q4#RGcefLR}>^BXQ!4Z
> zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di
> zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU
> ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um
> zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT
> zY?Xj6g?J&iz}FXUa9%MqpnyT9Uy)d#Z>VRWpPLKv7g%+1Nl+@n8CX>phg24%>IbD3
> z=a&{G1LGr28KxN+cK9s<DFnL4%D*TR7%7Q4F8Rr&xv6<2o-VdZKpDN1%oHmVGXql#
> zXG>!vb2k%L6GKBMLt|4HCnFbUS0gt=7ehms8QAn1xSBb;n7f#|S-2V*8oHV|I=Y#<
> zS~!~;n_HL~7+4y?^m^tMmn7yTr^4*b1lkMLYl2s=m2**QVo82cNPd0}ECmE)<d@_Z
> zXXF<sI0u_4XoP3xrR0|vYl5N&;#-&0qRg_?6t|-MTm^9WT4iFf-^84dzae^4$O$uj
> zpkwqwi32IIz=VJ)5X6KheIN&(c~bL$Ii?7hH7ag6?Pg$LH1c$D45_%aXWGTy76pMe
> z#*54EzIj}xurI?=?19(<x7iySHaBM<W7^hSeW!Y#j`idYMV)ys4*D7$JRonE*5IhM
> zRONpX$ECYRU+uDc`!t~V)3Qvv1uJ>(TJRk9Wv+EDZnJyEl{9T%m!aDtjZ3lzucwwy
> zndkU9=XRJJn_^3`-z1gDJsMmxyH<Q*>Nrw(reMu$E6&J{ZI{m9FXEiM!sA2qLEql4
> zs%w7|zTdl|J2^M+!yb)}zAv@<{Ec(`CoA{--l4?RW_EbR_l}&24;eYxZZ#R+pPI&d
> z%xQ`#>*>!j(GTAm-0<OWJhe&0QQ7NqNc)}Uh8%(S3rsu0FXRj4E66fk{VliT+D?am
> zJVmW*?k+Ywy~(S-d0FN!6W0ZWZ4v(^pOtgWf7`vVwxRwd<J#Omaudp{ISm*X#7kc9
> TIKK2Js8sTF^>bP0l+XkKJo~{m
>
> literal 0
> HcmV?d00001
>
> diff --git a/ui/js/src/kimchi.api.js b/ui/js/src/kimchi.api.js
> index 9207d7e..a7c3b2d 100644
> --- a/ui/js/src/kimchi.api.js
> +++ b/ui/js/src/kimchi.api.js
> @@ -296,6 +296,28 @@ var kimchi = {
> });
> },
>
> + suspendVM : function(vm, suc, err) {
> + kimchi.requestJSON({
> + url : 'vms/' + encodeURIComponent(vm) + '/suspend',
> + type : 'POST',
> + contentType : 'application/json',
> + dataType : 'json',
> + success : suc,
> + error : err
> + });
> + },
> +
> + resumeVM : function(vm, suc, err) {
> + kimchi.requestJSON({
> + url : 'vms/' + encodeURIComponent(vm) + '/resume',
> + type : 'POST',
> + contentType : 'application/json',
> + dataType : 'json',
> + success : suc,
> + error : err
> + });
> + },
> +
> /**
> * Retrieve the information of a given VM by its name.
> *
> diff --git a/ui/js/src/kimchi.guest_main.js
> b/ui/js/src/kimchi.guest_main.js
> index 260e907..57150e7 100644
> --- a/ui/js/src/kimchi.guest_main.js
> +++ b/ui/js/src/kimchi.guest_main.js
> @@ -15,6 +15,7 @@
> * See the License for the specific language governing permissions and
> * limitations under the License.
> */
> +
> kimchi.sampleGuestObject = {
> "name": "",
> "uuid": "",
> @@ -43,7 +44,6 @@ kimchi.sampleGuestObject = {
> "access": "full"
> };
>
> -
> kimchi.vmstart = function(event) {
> var button=$(this);
> if (!button.hasClass('loading')) {
> @@ -65,6 +65,48 @@ kimchi.vmstart = function(event) {
> }
> };
>
> +kimchi.vmsuspend = function(event) {
> + var button=$(this);
> + if (!button.hasClass('pause-gray')) {
> + button.addClass('pause-gray');
> + var vm=$(this).closest('li[name=guest]');
> + var vm_id=vm.attr("id");
> + kimchi.suspendVM(vm_id, function(result) {
> + button.removeClass('pause-gray');
> + kimchi.listVmsAuto();
> + }, function(err) {
> + button.removeClass('pause-gray');
> + kimchi.message.error(err.responseJSON.reason);
> + }
> + );
> + } else {
> + event.preventDefault();
> + event.stopPropagation();
> + return;
> + }
> +};
> +
> +kimchi.vmresume = function(event) {
> + var button=$(this);
> + if (!button.hasClass('resume-gray')) {
> + button.addClass('resume-gray');
> + var vm=$(this).closest('li[name=guest]');
> + var vm_id=vm.attr("id");
> + kimchi.resumeVM(vm_id, function(result) {
> + button.removeClass('resume-gray');
> + kimchi.listVmsAuto();
> + }, function(err) {
> + button.removeClass('resume-gray');
> + kimchi.message.error(err.responseJSON.reason);
> + }
> + );
> + } else {
> + event.preventDefault();
> + event.stopPropagation();
> + return;
> + }
> +};
> +
> kimchi.vmpoweroff = function(event) {
> var button=$(this);
> if (!button.hasClass('loading')) {
> @@ -265,9 +307,11 @@ kimchi.listVmsAuto = function() {
>
> kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu) {
> var result=kimchi.guestElem.clone();
> -
> +
> //Setup the VM list entry
> var vmRunningBool=(vmObject.state=="running");
> + var vmSuspendedBool = (vmObject.state=="paused");
> + var vmPoweredOffBool = (vmObject.state=="shutoff");
> var vmPersistent = (vmObject.persistent == true);
> result.attr('id',vmObject.name);
> result.data(vmObject);
> @@ -296,20 +340,29 @@ kimchi.createGuestLi = function(vmObject,
> prevScreenImage, openMenu) {
> });
> imgLoad.attr('src',load_src);
>
> - //Link the stopped tile to the start action, the running tile to
> open the console
> + //Link the stopped tile to the start action, the running tile to
> open the console, and the paused tile to resume
> if(!(vmObject.isCloning || vmObject.isCreating)){
> - if (vmRunningBool) {
> - liveTile.off("click", kimchi.vmstart);
> - liveTile.on("click", kimchi.openVmConsole);
> - }
> - else {
> + if (vmPoweredOffBool) {
> liveTile.off("click", kimchi.openVmConsole);
> + liveTile.off("click", kimchi.vmresume);
> liveTile.on("click", kimchi.vmstart);
> liveTile.hover(function(event){$(this).find('.overlay').show()},
> function(event){$(this).find('.overlay').hide()});
> + } else if (vmSuspendedBool) {
> + liveTile.off("click", kimchi.vmstart);
> + liveTile.off("click", kimchi.openVmConsole);
> + liveTile.on("click", kimchi.vmresume);
> + if(vmObject.state="paused") {
> +
>
liveTile.find('.overlay').attr('src',"/images/theme-default/ac24_resume.png");
> +
liveTile.find('.overlay').attr('alt',"Resume");
> + }
> + liveTile.hover(function(event){$(this).find('.overlay').show()},
> function(event){$(this).find('.overlay').hide()});
> + } else {
> + liveTile.off("click", kimchi.vmstart);
> + liveTile.off("click", kimchi.vmresume);
> + liveTile.on("click", kimchi.openVmConsole);
> }
> }
>
> -
> //Setup the gauges
> var stats=vmObject.stats;
> var gaugeValue=0;
> @@ -325,13 +378,29 @@ kimchi.createGuestLi = function(vmObject,
> prevScreenImage, openMenu) {
> guestActions.find(".shutoff-disabled").prop("disabled",
> !vmRunningBool);
> guestActions.find(".running-disabled").prop("disabled",
> vmRunningBool);
> guestActions.find(".non-persistent-disabled").prop("disabled",
> !vmPersistent);
> - guestActions.find(".reset-disabled").prop("disabled",
> !vmRunningBool || !vmPersistent);
> + guestActions.find(".reset-disabled").prop("disabled",
> vmPoweredOffBool || !vmPersistent);
> +
> + if (vmSuspendedBool) { //VM is paused
> + //Hide Start
> + guestActions.find(".running-hidden").hide();
> + //Hide Pause
> + guestActions.find(".pause-hidden").hide();
> + }
>
> - if (vmRunningBool) {
> + if (vmRunningBool) { //VM IS running
> + //Hide Start
> guestActions.find(".running-hidden").hide();
> + //Hide Resume
> + guestActions.find(".resume-hidden").hide();
> }
> - else {
> +
> + if (vmPoweredOffBool) { //VM is powered off
> + //Hide PowerOff
> guestActions.find(".shutoff-hidden").hide();
> + //Hide Pause
> + guestActions.find(".pause-hidden").hide();
> + //Hide Resume
> + guestActions.find(".resume-hidden").hide();
> }
>
> var consoleActions=guestActions.find("[name=vm-console]");
> @@ -348,12 +417,22 @@ kimchi.createGuestLi = function(vmObject,
> prevScreenImage, openMenu) {
> if(!(vmObject.isCloning || vmObject.isCreating)){
> guestActions.find("[name=vm-start]").on({click :
> kimchi.vmstart});
> guestActions.find("[name=vm-poweroff]").on({click :
> kimchi.vmpoweroff});
> - if (vmRunningBool) { //If the guest is not running, do not
> enable reset
> + if ((vmRunningBool) || (vmSuspendedBool)) {
> + //If the guest is not running, do not enable reset;
> otherwise, reset is enabled (when running or paused)
> guestActions.find("[name=vm-reset]").on({click :
> kimchi.vmreset});
> - }
> - if (vmRunningBool) { //If the guest is not running, do not
> enable shutdown
> +
> + //If the guest is not running, do not enable
> shutdown;otherwise, shutdown is enabled (when running or paused)
> guestActions.find("[name=vm-shutdown]").on({click :
> kimchi.vmshutdown});
> }
> +
> + if (vmSuspendedBool) {
> + guestActions.find("[name=vm-resume]").on({click :
> kimchi.vmresume});
> + }
> +
> + if (vmRunningBool) {
> + guestActions.find("[name=vm-pause]").on({click :
> kimchi.vmsuspend});
> + }
> +
> guestActions.find("[name=vm-edit]").on({click :
> kimchi.vmedit});
> guestActions.find("[name=vm-delete]").on({click :
> kimchi.vmdelete});
> guestActions.find("[name=vm-clone]").click(function(){
> diff --git a/ui/pages/guest.html.tmpl b/ui/pages/guest.html.tmpl
> index 8896ac5..57563c1 100644
> --- a/ui/pages/guest.html.tmpl
> +++ b/ui/pages/guest.html.tmpl
> @@ -53,6 +53,8 @@
> <button class="btn reset-disabled"
> name="vm-reset" href="javascript:void(0);"
title="$_("Reset")"><span
> class="icon reset"></span></button>
> <button class="btn running-hidden"
> name="vm-start" href="javascript:void(0);"
title="$_("Start")"><span
> class="icon power-down"></span></button>
> <button class="btn shutoff-hidden"
> name="vm-poweroff" href="javascript:void(0);"
title="$_("Power
> Off")"><span class="icon
power-up"></span></button>
> + <button class="btn pause-hidden" name="vm-pause"
> href="javascript:void(0);"
title="$_("Pause")"><span class="icon
> pause"></span></button>
> + <button class="btn resume-hidden"
name="vm-resume"
> href="javascript:void(0);"
title="$_("Resume")"><span class="icon
> resume"></span></button>
> </div>
> <div class="bottom">
> <div name="actionmenu" class="btn dropdown
> popable vm-action" style="width: 70px">
> @@ -65,6 +67,8 @@
> <button class="button-big
> shutoff-hidden" name="vm-shutdown"><span
class="text">$_("Shut
> Down")</span></button>
> <button class="button-big
> running-hidden" name="vm-start"><span
> class="text">$_("Start")</span></button>
> <button class="button-big
> shutoff-hidden" name="vm-poweroff"><span
class="text">$_("Power
> Off")</span></button>
> + <button class="button-big pause-hidden"
> name="vm-pause"><span
class="text">$_("Pause")</span></button>
> + <button class="button-big resume-hidden"
> name="vm-resume"><span
class="text">$_("Resume")</span></button>
> <button class="button-big red
> non-persistent-disabled"
name="vm-delete">$_("Delete")</button>
> </div>
> </div>
_______________________________________________
Kimchi-devel mailing list
Kimchi-devel(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel