[Ovirt-devel] [PATCH] Updated tree nav layout to move smart pools above the main pools.

Scott Seago sseago at redhat.com
Mon Jan 19 20:09:52 UTC 2009


Dashboard and networks have their own links in the nav.
Also updating reworked nav icons.

Signed-off-by: Scott Seago <sseago at redhat.com>
---
 src/app/controllers/network_controller.rb    |   13 +++++-
 src/app/controllers/tree_controller.rb       |   53 ++++++++++++++++---------
 src/app/models/pool.rb                       |   12 +++++-
 src/app/views/layouts/_navigation_tabs.rhtml |    9 ++++
 src/app/views/layouts/_tree.rhtml            |   23 +++++++++--
 src/public/images/icon_add_hardwarepool.png  |  Bin 1223 -> 1133 bytes
 src/public/images/icon_add_smartpool.png     |  Bin 1341 -> 948 bytes
 src/public/images/icon_add_vmpool.png        |  Bin 838 -> 741 bytes
 src/public/images/icon_dashboard.gif         |  Bin 14152 -> 0 bytes
 src/public/images/icon_dashboard.png         |  Bin 0 -> 4457 bytes
 src/public/images/icon_hdwarepool.png        |  Bin 1179 -> 4509 bytes
 src/public/images/icon_networks.png          |  Bin 0 -> 4223 bytes
 src/public/images/icon_smartpool.png         |  Bin 641 -> 4233 bytes
 src/public/images/icon_smartpools.png        |  Bin 0 -> 4117 bytes
 src/public/images/icon_smartpools_dir.png    |  Bin 0 -> 4228 bytes
 src/public/javascripts/ovirt.tree.js         |   43 ++++++--------------
 src/public/stylesheets/ovirt-tree/tree.css   |   27 +++++++++++--
 17 files changed, 119 insertions(+), 61 deletions(-)
 delete mode 100644 src/public/images/icon_dashboard.gif
 create mode 100644 src/public/images/icon_dashboard.png
 create mode 100644 src/public/images/icon_networks.png
 create mode 100644 src/public/images/icon_smartpools.png
 create mode 100644 src/public/images/icon_smartpools_dir.png

diff --git a/src/app/controllers/network_controller.rb b/src/app/controllers/network_controller.rb
index 725e60d..e4faf7b 100644
--- a/src/app/controllers/network_controller.rb
+++ b/src/app/controllers/network_controller.rb
@@ -34,8 +34,17 @@ class NetworkController < ApplicationController
    end
 
    def list
-      @networks = Network.find(:all)
-      network_permissions
+     @networks = Network.find(:all)
+     network_permissions
+     respond_to do |format|
+       format.html {
+         render :layout => 'tabs-and-content' if params[:ajax]
+         render :layout => 'help-and-content' if params[:nolayout]
+       }
+       format.xml {
+         render :xml => @pool.to_xml(XML_OPTS)
+       }
+     end
    end
 
    def networks_json
diff --git a/src/app/controllers/tree_controller.rb b/src/app/controllers/tree_controller.rb
index 07d46f7..e2065ca 100644
--- a/src/app/controllers/tree_controller.rb
+++ b/src/app/controllers/tree_controller.rb
@@ -29,12 +29,19 @@ class TreeController < ApplicationController
         @clientHash[tempItem[0]] = itemHash
       }
     end
-    @serverHash = {:pools => build_json(HardwarePool.get_default_pool.full_set_nested(:method => :json_hash_element,
-                       :privilege => Permission::PRIV_VIEW, :user => get_login_user))
-                  }
-    @serverHash[:smart_pools] = adjust_smart_pool_list(build_json(DirectoryPool.get_smart_root.full_set_nested(:method => :json_hash_element,
-         :privilege => Permission::PRIV_VIEW, :user => get_login_user,
-         :smart_pool_set => true)))
+    pools = build_json(
+                HardwarePool.get_default_pool.full_set_nested(
+                    :method => :json_hash_element,
+                    :privilege => Permission::PRIV_VIEW,
+                    :user => get_login_user))
+    smart_pools = adjust_smart_pool_list(
+                      build_json(
+                          DirectoryPool.get_smart_root.full_set_nested(
+                              :method => :json_hash_element,
+                              :privilege => Permission::PRIV_VIEW,
+                              :user => get_login_user,
+                              :smart_pool_set => true)))
+    @serverHash = {:pools => smart_pools + pools }
     @ids.each { |item|
       if @clientHash.has_key?(item.to_s)
         @clientHash.delete(item.to_s)
@@ -69,19 +76,27 @@ class TreeController < ApplicationController
   end
 
   def adjust_smart_pool_list(list)
-    mySmartPools = Array.new
-    otherSmartPools = Array.new
-    list.each {|listItem|
-      if (listItem[:name] == get_login_user)
-        if listItem.has_key?(:children)
-          listItem[:children].each {|item|
-            mySmartPools.push(item)
-          }
+    # list should have a single element. If it doesn't, don't transform anything here
+    if list.size == 1
+      smart_root = list[0]
+      smart_root[:name] = "Smart Pools"
+      smart_root[:type] = "SmartPoolRoot"
+      mySmartPools = Array.new
+      otherSmartPools = Array.new
+      smart_root[:children].each {|listItem|
+        if (listItem[:name] == get_login_user)
+          if listItem.has_key?(:children)
+            listItem[:children].each {|item|
+              item[:parent_id] = smart_root[:id]
+              mySmartPools.push(item)
+            }
+          end
+        else
+          otherSmartPools.push(listItem)
         end
-      else
-        otherSmartPools.push(listItem)
-      end
-    }
-    mySmartPools + otherSmartPools
+      }
+      smart_root[:children] = mySmartPools + otherSmartPools
+    end
+    list
   end
 end
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb
index 614325a..27cc7ab 100644
--- a/src/app/models/pool.rb
+++ b/src/app/models/pool.rb
@@ -243,7 +243,9 @@ class Pool < ActiveRecord::Base
     current_id = opts.delete(:current_id)
     opts.delete(:order)
     subtree_list = full_set(opts)
-    subtree_list -= [self] if smart_pool_set
+    if (smart_pool_set and !subtree_list.include?(self))
+      subtree_list.unshift(self)
+    end
     subtree_list = Pool.send(type, subtree_list) if type
     return_tree_list = []
     ref_hash = {}
@@ -260,7 +262,13 @@ class Pool < ActiveRecord::Base
           pool_parent = pool.parent
           parent_element = pool_parent.send(method)
           ref_hash[pool_parent.id] = parent_element
-          return_tree_list << parent_element
+          smart_root = ref_hash[pool_parent.parent_id]
+          if smart_root
+            smart_root[:children] ||= []
+            smart_root[:children] << parent_element
+          else
+            return_tree_list << parent_element
+          end
           parent_element[:children] ||= []
           parent_element[:children] << new_element
         else
diff --git a/src/app/views/layouts/_navigation_tabs.rhtml b/src/app/views/layouts/_navigation_tabs.rhtml
index 8d9e36a..70af098 100644
--- a/src/app/views/layouts/_navigation_tabs.rhtml
+++ b/src/app/views/layouts/_navigation_tabs.rhtml
@@ -60,4 +60,13 @@
   <ul id="dashboard_nav_tabs" class="ui-tabs-nav">
     <li id="nav_summary" class="ui-tabs-selected"><%= link_to "Tasks", {:action => 'index', :nolayout => :true}, :title => "content area" %></li>
   </ul>
+<% elsif controller.controller_name == "network"  %>
+  <script>
+    $(document).ready(function(){
+      $tabs = $("#network_nav_tabs").tabs();
+    });
+  </script>
+  <ul id="network_nav_tabs" class="ui-tabs-nav">
+    <li id="nav_summary" class="ui-tabs-selected"><%= link_to "Networks", {:action => 'list', :nolayout => :true}, :title => "content area" %></li>
+  </ul>
 <% end %>
\ No newline at end of file
diff --git a/src/app/views/layouts/_tree.rhtml b/src/app/views/layouts/_tree.rhtml
index 6129f0e..fa3effc 100644
--- a/src/app/views/layouts/_tree.rhtml
+++ b/src/app/views/layouts/_tree.rhtml
@@ -28,6 +28,20 @@
               e.preventDefault();
           }
       })
+      $('div.nav-networks a').bind('click', function(e){
+          if(this === e.target){
+              var myURL = $(this).attr('href');
+              $('.current').removeClass('current');
+              $(this).parent().addClass('current');
+              $.ajax({
+                url: this.href,
+                dataType: 'html',
+                success: handleTabsAndContent,
+                error: function(xhr) {$.jGrowl(xhr.status + ' ' + xhr.statusText);}
+              });
+              e.preventDefault();
+          }
+      })
       $('#nav_tree_form ul.ovirt-tree li').livequery(
         function(){
           $(this)
@@ -36,6 +50,7 @@
             $('#nav_tree_form ul.ovirt-tree li div').removeClass('current');
             var thisHref = (urlObj[$(this).attr('class')] !=null) ? urlObj[$(this).attr('class')] + '/' + this.id :null;
             $('div.nav-dashboard').removeClass('current');
+            $('div.nav-networks').removeClass('current');
             $(this).toggleClass('current');
             currentNode = this.id;
             if ($tabs != null) {
@@ -87,14 +102,14 @@
 <div class="nav-dashboard <%= selected %>">
   <%= link_to "Dashboard", dashboard_url, { :id => "dashboard"} %>
 </div>
+<% network_selected = "current" if controller.controller_name == "network" %>
+<div class="nav-networks <%= network_selected %>">
+  <%= link_to "Networks", {:controller => "network", :action => "list", :ajax => true}, { :id => "networks"} %>
+</div>
 <form id="nav_tree_form">
   <div class="nav-tree">
     <ul id="nav_tree" class="ovirt-tree"></ul>
   </div>
-  <div class="nav-smart-pool">
-    <span class="nav-smart-pool-header">Smart Pools</span> <!--FIXME: replace with i18n text -->
-    <ul id="smart_nav_tree" class="ovirt-tree"></ul>
-  </div>
 </form>
 
 <!-- Template content -->
diff --git a/src/public/images/icon_add_hardwarepool.png b/src/public/images/icon_add_hardwarepool.png
index 3e7431c9602cc829b712d12cccec89e87b90a09f..6eae0d566f10503c7a6a7f980a9d2b6d0e6353d0 100644
GIT binary patch
delta 1112
zcmV-e1gHDQ3GE1wB!3xnMObuGZ)S9NVRB^vL1b at YWgtmyVP|DhWnpA_ami&o000CJ
zNkl<Zc-rijUuauZ9LK*|lQd1cc3bnOu78%bBD1y%bJKwj>tL3xL<eOs6sd?$g2M-K
zRrVx4$lL_`Buu90i!kQISU2m6Yhk*@bi>XKK_ at OvY7=w2<bSrgH_82z_&cX<yiL=l
zjSmIcfx|iX+;j5z{l52i&hNyO%jK|MWdqi++=s7AF&iIDCR4tjD~QC$p6NqMoaTL7
z?G_}3$O-CR{L?=?x*AZiz&05N3*qlxxW)T#^>pCS+aIH9V;!>DETni0v#}|NQ$g0g
zK?a;E2X0<zL4R7+^L at 9=2~E#JBe=!cfQ|KTIJWOV_~x~f^g7;Fr~X0hdsL%T-yi;N
zbflC)rUHu=J at lWu!P^sucP?7=!oZhYfh^5VM8cT7>KkjY>$_fh at fA!@$KV at 0$EFP$
zjVLKQoAcV|ffcPCcy2d`vvoSrGr|Ot*S`V-Z*ObO&wm^H$-l^mOG6_gC1p<;q+YI6
zP;9VS>b-DLFe|&Bc#>B#!b?VYnWH7)r~CHg`+aAA;O%EGKZU|wp$H+&1kM))8%u9*
z?}7p)x0=Zq?Z$v(QroR&C|VZcjEJQF3-lj5j_R6C%Ys{)8ZkWl{p$Al(rC}-`@-Y|
zW};ze8Gjk(N;|4)%;R~Gzmp{iQYy6sJT!C(x~`Q6_Z{uZ_n+_Sf~x6ckOooC;PUAJ
zg2B6RI-LBy)8XK4Ob|Hu!Z#ObYiiK7Rl<#t- at 4~%96kOHLV}2 at N((B at 75rPrlPNyN
zir;?~v&mU>Jkp8Ijz{wz`+Q$RBdDgTyq4v8ZGV*&I~pCh6S;?9gHxCe{*FviM1{2y
zcJ8eUHk%#e<2P{Y_AfYipa%&tjx>D&m4P*t+A?L2iV{4oO?bTZ0d%yupzeOyAp14Q
zDG8Gl3vO2f%oZy`6CpIWG$X~}ngUf(xe?{SWvkh2AG`C{BH0sC8WXVupU~dkiKgal
z7=QoyIwT6Z#>TC43uTGRt at 5gr1;0Y)cz2=fiZp`_<Rz0`NoP<~U4yQ!{fH;x(3Ck)
zN|xur<$Hei@{fV;BM0^_E4xCn>Nz^&DdE)B*1=-2 at bn-PTqBQF_RW<tzB#4IGt_MU
zC>lPwwS6bHx$9ADw_!$3<8DOYbC_3If`1>H@?x;*Tb^ueHtU?{+ML((TkZCm18zP~
z2co}?9}IaO>K7v+z8$MKJHd7}+s6!kcFTDvnascNbc#p1Mk>i_lKs at HYlhDoz-}s|
z)V^sP-`~AA$I at qgy%Ra|Fh}5pb0SS}oerc-mY;h2mdow`<qo%x62{;spMD5I_)(j~
z7J`eZPzqcupBKGStyD+>b_Tyr)%&dXFk0I at _+a4F67Xs+6KjSSF~UvtSfR&jg5Uqs
e at V|xsBftQJOI3E8R*<>?0000<MNUMnLSTYO?=DOL

delta 1203
zcmV;k1Wfzw2*(MKB!2{RLP=Bz2nYy#2xN!=000SaNLh0L01EH`01EH{Laa2H0000L
zbVXQnLvm$dbZKvHAXI5>WdJlUF*q+UI2$jIGynhq9CSrkbW?9;ba!ELWdK2BZ(?O2
zMrm?ocW-iQb09-gGnm#!0{{R7AW1|)R7i>Kmt9O8RTze!X at 7SYSSYk*7qI-4Qe$cb
zO)C9KynrT1T7oudnix&frtzwYjTgpN(<|eJsjZ1znbcIHHzp01xMC}IV at pzPx6nqk
zjfvJ!SP*cR!ou#%?wm7cya2b$vLLK6T<CZ8<(xC~eD6Eo%sHdkw#`b#sud&u4_~Qp
zqz`DCmdx$6Zhw60xkDI{aR71)*Aoqoo&qlQ2mIYjfu%RMHg6ye{?5fa0KC~!%f7ch
zB5zF*N-1I!A*MqkL`DXf4voCtAMl at 9E_|Ny^oR>9nU|J$k(NR#h0|Ncn&MJCo3=3Y
z<Bik6#O5OL8}KeL2E6D0ru*t*_nxO5m@{yq{Wbun4u5Q$v*=)32TCcF4U?lo3}5&4
zmbtC^BZrSNJ|4o?*$&W|TEySl4%n}L*0Wf_w7s~UgKZtywvDB165&Cjx4z)W;iGKY
zT$5badowVnh|679ucqE7qwPkD)eFUHO~V4jgQ1LIfchOfso$}a-kX6|UuSzOpry`d
zgr7aMD}R|EI`<s_pT7LeoHd%JVTOZD^<2mZPL2Kh_y6U<oXGU5C9AV-+fHq`gKZtS
zT at FmCh)hL at 20rJ+@ss2itX&XXRZ))L|82&(C3L$==HcN%rpAVl2^~j{n|z?U`cVM%
zSd5rq%ma6IUB<Fxc5vUZ#$^6dOCv&B#DyfHCx5tdwuga%`*=NG0K6U#0HJW0s)}+h
zesu|HNi4ZUcxw08?0S}CC*LL*j*yq*B*(EDP1Bf&8U(`;00M#QOh>1weWH%K+9#8W
zeZDV|QX+*w3Xz at i!aNsS%01j0eZbEHBa9FHN+KFzwJQfV;PsS{o9m{p?>2Yt{>0ur
zEq_c#CWspbLI|W32$7}jW04ruC2M)Q<`HVEN)X#0PqF<5x)Eb|c#zVPG8|49!NDMv
zRh1ZqfsiJ`6o at R9>n?}G-Fxr%Ikr#6;tYl+0ob~=j*7~S^!;#)SS&_)`G%Pb^%zpj
zfQ2x#f?tzLHK*Hd#->>1bm0cfc!Glb0)HACo0yoKK$<fkL)T})*(*PP<@=uI7xpwP
zXuD|&EL)*0MNwf9PNx&F(RCduOoS8&GmB^5AMl?8)_piObb7<qZEP$prqG?slpg2)
zXczz?1j<(I8)>Dp;%k&r<mS3&l*<{_v#;9S<tk@(pY9p^rEhPr`mqy{(IB>MlYhU?
ziwBUFMA?e->n~s?5)a{V11SYkNOTbecxBn}*#f$O?*4%Pjnwg`<_3FwJVbG^7h4Ey
zrIO!?c-+8}771kl?9Q~e|I;(vZeM46=f|IXKsfvdmb8-1WhN4ff+6#M{%}&$7Mx3s
zrsjr5;5DH2`PKu}Y_8`0wlnj<ODs7|EE}Goh*IEqy5eQQ|Lyqi{xqy8{7-{$Rd%;2
RW=8-3002ovPDHLkV1jQ&K`j6P

diff --git a/src/public/images/icon_add_smartpool.png b/src/public/images/icon_add_smartpool.png
index d7cb7316596b1eafbcad54890971f42737d45a62..6bb07d7cca9839042a779bf8a7203b16bc6cb830 100644
GIT binary patch
delta 934
zcmV;X16lmN3bY519De{Gt`<1}000?uMObuGZ)S9NVRB^vL1b at YWgtmyVP|DhWnpA_
zami&o000A4Nkl<Zc-rh&Ye>^k6#w1*_comx!KP6`nn7X at 3Y?V?*_VQ(h$4z0dO!r4
zU!o5cmA$_8fW8C~1r-q#D%FQnFer)?B*e%E77d-R`P}~7{(q0#`EO0;YHQibFCIAD
zd(S=G-}#+;&i!wUbB@^(9cEGHz-J$vF*c<nJX$06&gPnsZ~cXwY|_$y#{9~Qwva}o
zqq!E6w=V>&H>V9}=Hxg1O#lhO{gM*Wh`1Wgz|;0no1R>>W-FGI?9=AeGX>X2FL+GT
zM*~Oi5nGpi#eX)KG8St~XG*{|seJSSiEKCau7hb_=0eN-BCtR=>;+B(1#__MZ13H_
zPP<5K6R9SP*Or5iHbNa~MDD6`%~UZH<}4=D(-sHrya|o>53QeG3+_f3MjwESJz&dj
zqv_fvsH$Qj_Q4saomz>#zPS;Bk*?EpP<8a3Q)+!Qn19l;?LzU9=a73^C{z_Xu>-k<
zoAB*py`Ox<nDez@?$KE%lDcyOE=tR?SBDEuowAo6dukO-HZUEB;<^V_lENE(HOMR3
zgS;*0nBp6-MxUk1qP6|y#YzgQfdZ&Yn0D<Ed2z}DgC#S>d|FWNw-XN!cyK6A4%5NR
zj?h$CP=5xVQG(W|RTy)3--ySY#rvdEv{z|3oWExCe8(~;RCgV?w<~c0nHGTAR$_EQ
zkM_5<P-N)|0q;(>;9>(<PQzoH&03Vd)Bz)#0F?1xI}7um=(6zT>j3%(#<VCe|E~R5
zGCw9Lh$f>!C at n0o!-QcfH038B)!;zeXE(fJuz!U>*UspXi6c8?MI9CtiCRjE?Z_WZ
z>IDniZ>9Q^T9IMVgUMcSNhVdmWrC7*;kl;4No1u7n(xt6gYUALiCj=5Ku%dVVA7|D
zXM(^LV>pnYA2wr%`KnZd7ubv{fyht^*fpZyQ(pjG1Hs<zK^d|vP!Jquodlx*Gu23O
zN`JuVp#4?@*BjITL_bG+zl^?d-bx(vsIYQ9KK`!FtzeAaKQ09#>?>2n{CJj8LH{K1
z$s<6N*)sxNP1>z((&(gz at KWc9ZpbyRL%Lqp%o|b#UNtBRaC!ADDn}WC?TmFG+iC4;
z`bD9Z{4~?`q%KqI^WW*K^N!+V{QlIJ%^&?^nFIfy@?C%d0K%5{zV?bS5C8xG07*qo
IM6N<$f}H=uWB>pF

delta 1330
zcmV-21<m at j2fYfA9Df05sV1)g0004VQb$4nuFf3k00009a7bBm000W`000W`0Ya=a
zm;e9-;z>k7R7l6|m3>T=Wf;bP&wCCB5e^>-Y9N`3m1rR-3Uj(tR<2f=)243vM`)|H
za*fTk<x*QZbDGmKoMnErWwYTbW~>|texxLFVj>`#i5`@XBY$w<aK7L7?hk|@QFOLy
z&Fin{eeUPFuIGNA`?(+J4=cVoEq2>x0Wbs1Je}!`e{g(M at wQp<036Moz3Z2+-<aJm
z9l3!%lg6=BasDv&Ptg;VL-E*;a7R$xgZa57vMJ at HB*xoR#W4eq*F)yg{GK?48&Y at 4
z{sb}h#Y_46D1YG}MtAb|@=a2<Kc}*HOanN+Z8`u6v1P<13{5WI{Y=j$%>cvG-yY{I
z7<<-g4I@$2sM at -Qz6wcG=2l&-XhhkYQT0t&qQ~s+vjCvQ<)ciVn^xLB5x at Hy|032M
zJR>3^wPoKgF4>qYhgQe^UUH;H4S3ihBCqZ}*(dn%^M7q9z?Qd>jAe!DwgLc$R>w-#
zs^%`i>Uk(%Gok=X9AZhNqcteyKjy2ME9+Fh0suvuGd~M+S1-+&I2_Rhr4*PHC(Ev3
z8acmo)Jr?E;=+~dreo-ar}>;Y&Jx5?b6HN5U+4I#2AZob$xw?<Q*~Z-Z}NTootJUl
z!7~DIwtqNRep)$Lia$!9e5>{5-b8>lx4&mRa{OrdId at rUv%@tkE;gd+mQ}ZG&xt;5
zXUCEZpoa4WA8_?TebG~I70>!Bxu;+jJ6Et{Nd|3hKd)=sp#1<`$Y#vcxmaToXWI6@
zAg6cEl77jqt7QP}e{DLcQ$mqTx!}?;>OLiHvVVmMGbUnE{{C}*GP`u#;q}RRR?F4L
zCro-6P1CxPl1_BFj;%BgmuYmzEpHmY;SJ*?^`TB8t)X2(rP0>z=1lz%MlZ<EN=Qg3
zyveyI4<m^3ctHFJ3Z*nOw+D at AdK3F4<7p(=VQ{{|OT9ma1ha!7krC(}b=>lA_aG{X
z at _!~BU)tJ5N8fL>KK8Dzer*gAFooa0MgRL2(Hq_KwWq$7!nLC$e>rk6$5ho_>?K>K
zsk_lv1DUV-t^$BHFQ%ZBQbix8EDQ;c{K^_ at C1g-2L7z^0b9=z&axTbv$9CYJ%tb_&
z?>lu{(w2qkxEc=;F)R~T<4I2M$rkG)bAQyt`CHXJoA>@+vhz3qd$XtZUFTSXq6IM?
zz#UAXs^Ams<%O*#4I2tW3qi9)#xo>&9+O_)I_tKbyk|E`sr(!yJbD;2RyNS)4)k(#
zgSQfzzC?M?gYH6U;S3(sO!~rgq`&e+4DR1%8i96v?RHx0%BVfI at 9xgrc3_3*-hWm+
zSC0`LZDQDnXo-#06h=E@=%7MTXrMGe5OgqnC}jdu6b^?$!<7~s4NYD{LO;)X&;I5e
zo7>M<SWO`j`sIQg-EpPp3yYaWF_C5-O^U at D6^7_WSF684R|uFiI-DMAFF0svaY;nd
z95pm;X__fC(lcsoM$H}lc7PFMQh$0LjicM2^($Ws;;uzpouC4s3n+Ety-*+;Xa;(R
z2MGv~56w^zvOQ_S)3)0coOz&%>};$eO!E_A31abj!0-|9>)4$E+yR5ZAsUHM7D6l<
zgM0=NrXWq%EAdL`pn<dpG&h2sVA4ShE;jjb1~i<yMJ$68I+Ugbb+5~Ot}E4PjWqjI
ol*J&#q#^!Jf&tI{F8$xcAIv&N^Zci at 82|tP07*qoM6N<$g4mLJod5s;

diff --git a/src/public/images/icon_add_vmpool.png b/src/public/images/icon_add_vmpool.png
index 6afffd1fb1a02dc763f9a9f1e6fff3c1586f89a2..b0b73b08c3c794d66da088abcbab978c434f15e2 100644
GIT binary patch
delta 717
zcmV;;0y6!^2IU2iB!3xnMObuGZ)S9NVRB^vL1b at YWgtmyVP|DhWnpA_ami&o0007q
zNkl<Zc-rh%O=uHA6#i!avPnHy&_e0KYmfFI2)&BeCPEKhiqcZ>(h6P_sckKyM|%xO
zp%=jx6A?TW4+T#i;-LpY1gmJIT4HQW+Wf6=X5(bD-Ry2cA%7rwFgr85GyA>o&G%-8
zS(b%fnSvf#AG{}~IXjFo*|uCtq;Kq`#p%oZ;j0}{yqr66=59Nz)MPvTI4)?vSWSq2
z{ARi%PrRb0xdvG6z$fNYEfdp7Se-iHHupMO^H1OUPFTHq0oc6`oLiGo2r}+uAaiad
z2U}kw2i(zUXMb}Wj3cu^@Z{7**`9jxM%3%m<1U%1cKv0>AGKB_HXlQ$8gs6{bItMf
z27hb&uV_skGMdc6tqv4FQ6XTacdPcgV`RIZIM<TUs|6sR0V=;5Q8K~_&To^!{w+`3
zXD at Tu+Ww7PzP(n|`XOqHxxDc_wd9v-vdxt|ac#6oOn)^bIZ2q>TiXXnu5AX2Zt_ZE
zma3)DVTWcMkF3jb`KqW#?(E3uMRXO>sD^<UFFIb&jPOsx9j!T3-6KO9l(~`%?~hH<
zH5HKvftxDKs4hxZf|H>ZDrb!d(4+jF)cBcZ*IJz8z^0+VG&#7An5mH?TDRa at lc~Th
z14p}5lYgSkfyST%d#Iwo5WpH at oH5k~0skqKy9EEYnTXV-)Uo!69`BrT46?x^1RNzW
z4k`+*d8t at IG}dj{g>gaclOrY1oE;pr9sIC38uX)Vhu}wC&-RW5 at 6F=U<<pp*o<uHJ
z_04lAW-{nhYuRw-#u57J@@*)N+Y8GWI(tUG+eZ8G6OUFFv6=Ed)qKG_xhTBLWUL1(
z_p`2i&fZ<PH++6<jD<PR`&Z{a`2P$3SAYQkWJuj8Djl^-00000NkvXXu0mjfiuGJ=

delta 815
zcmV+~1JL~C1;z%DB!2{RLP=Bz2nYy#2xN!=000SaNLh0L01EH`01EH{Laa2H0000L
zbVXQnLvm$dbZKvHAXI5>WdJlUF*q+UI2$jIGynhq9CSrkbW?9;ba!ELWdK2BZ(?O2
zMrm?ocW-iQb09-gGnm#!0{{R5pGibPR7i>KmQP3&Q5?rVZ-3^^%$v1CK?&latH(S9
zf!FA&8+hm<i6V4Sp-T~FCSk|C3L$g}QgS8mBprlK9qiyC2qB9yELqKMcXj`~4x{7j
z%<Qgff(QG;GLJXE_xt>Qzj?p6PiU<<Eg7dq{trKsa2cKuLil4HY6T&LILYp)oB71T
z3KI(}vBCYTB7d2Ol`oY1aq3x at 2AH2r0?;*_YABL$)gth4se|y&p}7j%6iMA^071ol
zLp}8Jea%Iax30okFI=AXt58o}!>I@>w(Pk;wl%fZ8>vP$4bBJ+R8%PzKGk#0ANM?e
z2f&NIj!GlL^qyb)Yg0>E$gRe{ifc7LI<2)1esjLv0e`d?zabCv at T(~Txs at UN8M3P&
ztfRrh$`{H3>v$&tx)(q(1KZ0`*z%?fJ9brM6Vy6n*t{Fdef1{I;?i%@+tv4qS<X{3
z)Y#1Hxkr935nln`{A7~O+ii!5nYN$Y0T=;`OFK+W&sGH=sQYGe0H_X+NZN;>DoSq`
z0cgGNoqvQv2pr4AbtO#+NmIh&ZGS63ONHyYaML2xA^0hmvXJ>0Sz<{O$1!o0iE=HJ
zd&~{zml_R1>{md;-Vexs0a>aD&XOj|Hc-mMRTc>)ah!O}5#SO(QvkgOyKA5`pqloL
zc05zVz_tyPk|bOUr6jf^`IFf at Cj8(q0Vr>Q-hTiK;9S7SgFCi?>qwN^|GAP}wt$;B
zZrK4S0-IpuVte+&1uwu)qiyvZtv3kY1=2tnh(9c at -#E`eUpMJ=v8ordoCiZq1?Ots
zOoR{&cGPOJN_}tc;@-#@&6h6va~nT@@pOEY*}3SyT3z^2rM1={mX~=l{&=0reqMht
t at +h$7N_#tmdiF%`WR2?VUY*Y_{4dRk-6#cp%B27R002ovPDHLkV1gShas~hZ

diff --git a/src/public/images/icon_dashboard.gif b/src/public/images/icon_dashboard.gif
deleted file mode 100644
index 5ed7483685461cb65f00718a83b207af6187b545..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14152
zcmeI3X;>3S9EVq{6|q7vZPki(iL{E6Y%Y#$2{&j}yr7Clku}*sB$r7r0kuW2#e-V#
z1QkJz7V!!dkBW+kC<s(7wTQJ85EZQj at hFE}-3WsEp?&6q-)5eDvYXlWKeO}B at 9RwZ
zJkVW0j6g;r%?Q$EX`Rh&olje-tK)HVM?+IbeN)H7XYKc&wBLKue)~~dRYO~4eOtv}
zZRHQ1U%S^@QrlW|yX9ha%Y{E%OqDIi${LMV8;n=#5C8n|VDbG!#ShX-yHblgvkLDX
zD7?G%a{HE|w#`M)_Z8G`ywtMk(sP5kCZ(V$rJy<4+?1JL`JL%m)4`Oa{3l8IPt)^$
zN4k(Tc at 1f&ZX}-mJMnaVd~RL*@%wSPbt{auD~+`)j@({;q~_^nP0YcnW!aUw?8 at i^
zx1zIdY4%ktHQZ3`Em!QhF3Tv>r<<3gUyIy%RhxS5 at mF)m)DrQwV$qhOMH?@Mr4-Cd
zI*-Sm#A8kf^v97j#7&p$wk+3m*)f;sV|;B+QaH&|8 at Z~(Y~^9L;t-}d#FA%M2GW^P
z2W|z at oujgxmt>U(&?^Gy*Zt{TJf2g;{_zsS72jdwNCP72D)AZSD9XI(W#>p_T=29T
z8=m11mX3z)I486_BeeT?;r0_aZS?%KQK8#%1hk{>wj<|k$#%2Na<w(M*k<x<(z!Ni
z9Ggwp(2dy8QiN)y)b?2Ju)Q4v4qZb+gJz=sgqEQ09$tDCA&Mfk=wdQLst__B<>fO_
zsaVLE>k`BcQu&dQ(#f%EGB|d6h$uEnBoH&aJgq(SxL&T3lUf4R%Vi1;t`{;0v2rnq
zQ_q%ejDfyDv{6EakL3kwnbS|HCQ&|%!xXW3e3b9X;<|AKZm!N~Frh`K5DJv*hH}|#
z>W7PSI5?k!_B4j4HTC477EAEi{((JnQvZaENUc_dW0+2-W9fJ-r8)xR2m}I*&BeG}
zCPgqcF$yiAXDT#fy9aqWjz6gpsii8dRH;BM;}VON(OMycVVS76^(>B1^-iSFuwE>b
zB~r>UJ)y!lEH>6VGF9k7b>e<%lF%yEAxfppvwQi0QZ=bls-rZhUog+ZQu!LxH)~%#
zNo^77N%?SRviZ~%!sXyR7o5wT|4Mx~^hSA*QY at 9kyk71e!m-ri9JikGSD>D956mLs
z6)`WYTh{bO|NjXSi+X*jqSdk&+aeZWq>Pl43ay56#(CYDScFTIYB{0xl*)++5{r;Z
zJg~mb|NOr0ucl%_#S-hy<;zd+-O9J}(C7WF4BtH{oCHWN)CF|`832M|x}Yu~13)lL
z7t{r000 at TZg1UeV0KqU_P#2H^AQ+|#>H;zV1jBSeT|fqaV3;nb3&;Qv4ATX50T}>-
zVY;9$AOk=!Oc&GzWB>?;>4Lg|3;@9}T~HU00U#Kr3+e(g00hHyL0v!wfMA#|s0+vd
z5De1=bpaUwf?>L#E+7LyFiaQJ1!MpS{?Bw-_nq`071Z$#9d(YQUsq>Gd)xEYmgc5^
zo;`i?xbaa#{ofD&dT_t)-rYO3w`;1a{;d4t*6%kfZj}Fa{nxTzu3f$Ib7 at KO<)Xq%
z7Yi<!P3QB^ojsFx`lnMTPaMxZ_G6Cm=#j&R4rU+7`eFY*!`?l+Gc$Ij at 7%FHEp^-0
zEt at xOOiBKJ!*@yR*R5TX`0Y2V6XI9Jef`zS70Y8|^txryT8(<CN~w^`qLxS_BP66)
zw3rBA6!zu91 at q^H&Ykl`Nbu}gGiOW>nl^RH=aVM|2Kf8=`gnVJ3Ox{9;O^$?!sl^0
zY>dTpo;bm2{J2j)aU9EVK*xMM+J4kWBS#GX at Pqg1!|Z6bHbdVVVm;Vu(7OW%ywkrQ
zf;hAe=r;&ik2qV-+E@;VAy!?;@WJ+zjhUtdEBb_mMMlEciMB5^XHUTT;h3cK)Y9NV
zh_4gkyUyOJY(rs!T~2t7d0=TOM^;gqwztk;a<W%{>s=EcICQl4I>)8vLW$1=flqSi
z<G@)P#`q=kSCtixH%$~wJ)c#Un at AfwZI^#Padh}r8^(0m at i-!35Pd>e(ahO%GPlx}
z43nQV`X^QKrPX(C#wQP1du9P|4Pn}wQ|o1wXYgJakWj^os4g<qj-#0|rsR(byE_S~
z$^G9OA4wx<W;RDw-RL78FcML|d*&u{H_gnADlb^8sk8bB>2K{A-WVS5u-egYziDN7
u^C;`Y%t=am91=g!1`QeEZAf>t$Cr0nG5oFUViFr`OEPBUdz#{q&;A8^{IuTy

diff --git a/src/public/images/icon_dashboard.png b/src/public/images/icon_dashboard.png
new file mode 100644
index 0000000000000000000000000000000000000000..57b933a8c84d500928f44a6156e4afdcb6dcf190
GIT binary patch
literal 4457
zcmeAS at N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fk|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5n9Wp~AN+NuHtdjF{^%6m9^eS=-fVvqNZ0suv5|gu2OB9k)
z(=+pImEP~(ucVNfVyhHx>TBRz;GCL~=}}db8eHWUl3bOYY?-2DZ^va*VFffGH?<^D
zp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRf0Gw!Z$#{Ilm}X!9>qU&qz1fz|2^|)L75h
z)X2=pL`T8Mz`#P^z+B(hK-bX1%D~jh#83eWl<c?^Y>HCStb$zJpw<C-wn`Z#B?VUc
z`sL;2dgaD?`9<mahL)C=`UXb&Mn<|o6}rWhc_oPzx_QOQAR{1VxTF>*7iAWdWaj57
zfXqxx$}cUkRZ;@VD?klTNrszUP+F7&HaR6(KQ$*cH#M)MSl>|3P#;-6FeHL9(=$qn
z;o9<wp`i>6Z~cnI0-zQH{UWd$6rBYb`6c<q8Tkd+b;6~=`jM^lEGS7f0on at +P`F;8
zuad!zEiOsXM^*vW4vr^??QjQM`6d=+rvl^JEitD!6>I at QE<80UxFoRz>}hBK!5w7f
zSXz>iUsN2BUz`aFN}xO_gcWR3lC2>A1al!l?wC^o;X$}LnV at jC%1O*iw^gdpO-W5l
zEX^rV(ueBM2gM3Zi;X_2fgtmfi&7Iy@{5ox2u>|TwE)E|m at L>VWX&MMN-|4wQjv^;
zSqx1rB)b)1o(&=-LyLj=F(kDpx0qTs;WXO at Io_?DAwlJw56lP2C7yX{`QT)ZswUGh
zrO36SBr&B3mJKlFoij at +amxk)OAc at vz+rkoa()UhnL-jU7Q;)5a2XzwniHO11S~_a
z>UGUc%)}=jS_G2?CkPvG(n2Z#fUyA)0~Rd6GEE;|s6kT`wEUqJ1r9A*84fdd)Dl=o
z5Jis$7g50kQ#2Y}u#g~%9t|#{f(fQ*G`L_PK@>e2Tto#EOcB1|;zD$bQuBcA<8ol9
zr{$vbQw9d+{hlt4Ar-gggy!Z1hf37tz0bWKC!rl2!=59n)zW{$>5f57*T>r%BsqU`
zaJ5PPJ@~`X$zj0}9mXjdAGq)IXiSu!tf+I?Ysw at CGmahyh0`iE9n9M;qRh5$D&79}
zuhpFD+tr!n;m!NbPM$aKd+q$s^S(cxqS$gk;Qgad+N+exH9x*M_{el0!@PjHyB}ty
zo}c!sxwx;o at Zp&zuJCowL((6I+sFUjm$&n%b9XbF^Q3^ztW^?i7Z(=ye$$@!?x at fD
zj&s&`Q)LfkL_Y7Yo+WDd&-df2T*gJ4jjReE at ia~0PVbA at ELrBm@>rsM=Xucui<Ss{
z?owM@@a);#S2mlTR~&zM{(eBH=qj%T8d|Kq5rM~5(t?U at -d@crTDDQ{?RU0<-$mMw
z{<AD}YZvHtEnNJYF^_lE1h+%Kc;kK~WIJ at b_;U)qwA}o3u1iD7T(>u|VV>)L?`J+;
zRH4w3 at m|WIdI76hqCl5HONLIH_1 at Ya#WR{EB(Lz#2>zSdpmH**_VjTzy_%g(C0lB^
zt&cZu-CS@(_64td;lF-?bMtN3+$0)gDm!LK9KM?%QO;_;#N!cL?f&`3yH7a9Y)Dbv
zc`Js$Pbm9A?4FgcdAT!o%O1KZ+?$~ErD3AMqeUI>{w01nVd>~8@#+5lC;yKq_-W76
z(Vn2fxrr^(E5!Ea$@1L+ru#YO=iX{aeZRi_(LAnc^BWE=-)#6_^WtHv&8Ib6FX!Cd
zvTgzEwT`cLu8aKLz3ck8r!I}tsjCydmDl>g`?2E<w_l3K**~wi<tw;l%j|1jQXA#A
z>dbaFkUAG-?I+j0=+#oCH|uV<ZO=Blyx at z%oaFC at p<O2VN~&V6nwF{k6Q4fV`1lsz
z-EG^x<=5tS%|5=0_57tewVCWLfg&Gl{5xG`-CDl6dJEjz8NB_c(iZ8JSIrmvOjDWG
z`tb4RQ`Z+h-EKDH?EEvu_t(W<OILn-R$=DUs!5;H!$01ebd9t4o)WLUiJ+r^#~%;j
zpQpFamD<>1dr<K9 at mU{5W78crFMsFCmM-=2N+_=zqfO-bGZBwJO=H`XzSmQV?;^7s
z%O?A}h97#r<b*HVGCy7!t5tZb!Dr<<b9v>rA7AH2JwNm5Ox5*g68{BH``7$Eeb)5H
zhD|)}dPNH6zXF3Fo7H~yy65~PEkP>w-e#VTnUkKB*F9~Fcz5Zm at 5Ohgp9bw%UX^_J
z-esxAwaX>5uRn{pG-G4M%p+9?_FbNLNz~%cWc$Vay#F1I<O;6*fB*jD<P%R;tv~zq
z at 8Yd#yb|Z)6iQ+%T%|L;Klc1z`(N>#N|KbxId>)=hP*xbDT^k0%m593c)I$ztaD0e
F0su%bp+W!v

literal 0
HcmV?d00001

diff --git a/src/public/images/icon_hdwarepool.png b/src/public/images/icon_hdwarepool.png
index 76e0a288ebacf3ff615763f12bb2b3f53a27abc4..1e55305f45e55b87d0733c504a325aa52b7eb71f 100644
GIT binary patch
literal 4509
zcmeAS at N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fk|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5n9Wp~AN+NuHtdjF{^%6m9^eS=-fVvqNZ0suv5|gu2OB9k)
z(=+pImEP~(ucVNfVyhHx>TBRz;GCL~=}}db8eHWUl3bOYY?-2DZ^va*VFffGH?<^D
zp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRf0Gw!Z$#{Ilm}X!9>qU&qz1fz|2^|)L75h
z)X2=pL`T8Mz`#P^z+B(hK-bX1%D~jh#83eWl<c?^Y>HCStb$zJpw<C-wn`Z#B?VUc
z`sL;2dgaD?`9<mahL)C=`UXb&Mn<|o6}rWhc_oPzx_QOQAR{1VxTF>*7iAWdWaj57
zfXqxx$}cUkRZ;@VD?klTNrszUP+F7&HaR6(KQ$*cH#M)MSl>|3P#;-6FeHL9(=$qn
z;o9<wp`i>6Z~cnI0-zQH{UWd$6rBYb`6c<q8Tkd+b;6~=`jM^lEGS7f0on at +P`F;8
zuad!zEiOsXM^*vW4vr^??QjQM`6d=+rvl^JEitD!6>I at QE<80UxFoRz>}hBK!5w7f
zSXz>iUsN2BUz`aFN}xO_gcWR3lC2>A1al!l?wC^o;X$}LnV at jC%1O*iw^gdpO-W5l
zEX^rV(ueBM2gM3Zi;X_2fgtmfi&7Iy@{5ox2u>|TwE)E|m at L>VWX&MMN-|4wQjv^;
zSqx1rB)b)1o(&=-LyLj=F(kDpx0qTs;WXO at Io_?DAwlJw56lP2C7yX{`QT)ZswUGh
zrO36SBr&B3mJKlFoij at +amxk)OAc at vz+rkoa()UhnL-jU7Q;)5a2XzwniHO11S~_a
z>UGUc%)}=jS_G2?CkPvG(n2Z#fUyA)0~Rd6GEE;|s6kT`wEUqJ1r9A*84fdd)Dl=o
z5Jis$7g50kQ#2Y}u#g~%9t|#{f(fQ*G`L_PK@>e2Tto#EOcB1|;zD$bQuBcA<8ol9
zr{$vbQw9d+&z>%hAr-f#OnvJg9V&Bte{TN#Mx%^w)>FHh(tur(*|R^g>Npz37z-zT
zS!yV?xbyv-$F21T=LyxOK638K7mrnPR`28R?pc={JTp3`Ano<xmcC6z-tTj(=f8SC
z=Tel{$!DH*me036uQ~Vq``+h&)~yWDI+$YAxHa~-d)o@>>~E}UpB`!bKYQ^~TTInY
z3*Phh`_9E2aW*-(rh&6+i|K{pO<S#d(()P3rSbC|ZkQ5z at YgA!BTFS--&g;!vYoA+
zf6oWE1 at -6C`|bY9#FR14%A3-BU{~Oyg(BP at al2c-yq%r at t?J7D%)gvnB1d1&l-E0V
zwfU^{<M2PV%pZ2ViK#UWcz5>6l(X*~qBrp8t^R0sc7E;Ot>xcjJNL*WKAw1SVX?^J
ztslA`U7EPP at 00utuQW&3txgA at 8C*SDBC~V#{e}fMu1c?SS{KuoRP;*QY)+D7%#3-n
zg>Otgn&s+v^}!}i8`i~X>D-#vR))V<mv)N0{rgRw+!n_cvxLYQJ4DmE8=4jsw%U|#
z-YNAaGSXMcx_+DDmTkTL{o%)B3Qu167_x%7c>moNhd3+QvUT%vRnlCaEQ(Klbc4OX
zd}|)}+n4VSojKD#`(WF$g-0_FKV)v+A-BK%=uy{{V9yNKnPx=?eT$tI+U;|grsDDQ
zkJyVZUszx43S(b3eX5XZ%b&Fsb>#xpzpWN#S$&V4(mmsEirmH<vOo6N?K|=O>!&)^
zxz8 at V-)HN8GxNe$D}!vm*`ncjf0>ux<=UO_ at LpO`rOG9x|MpUUSzqrg<*_mBIM}GZ
z+Dl#iyrc4hWvgtqHOv&<y?f7&tu^xX$EIzN`ptcG4o7$IpJ!Ts3oK$HB7TTo&;Qf7
z(OEyq_sjx^Z7X<It-N9$5VJAK-=d*W&i+bm|MiGM&Z4+OcXt<-{E%-<*s3V#uW&=y
zWnQBx>#9YccwZgd<SP*KHEfM1>yhwlKU)6%b1Y#mPkQ)$^@JC!Wu>Ll#7_xrcX+xm
zhw;CQdES<LT&|}M`MjDT>b0;#tz5XR-F-sjX@}rb6ZYujJ4kEW8UOzL=f&#wwryLT
z7KVHkiY>RgJx`2(O-b}iwh2iyMJ9`$NnUy`S*vw^@b<@-Lq4UX|2MvI^J1UabmqvN
z4c4bK?Ix}?<oI(bh$Z;${m;s;3T~Y0+Pdjh at 8h!M%cpOz*!+3r(bkPFFE(-(S|04~
zuWsjmb7fQUsRQY^&INJm{$tmB^0V`ThIQmw!z;V5z6$%<lyiNB%Cr?Oi}v0<{ya)Y
zjH8KR{d(Tz{xa%It-9Fu_p(Rku3LMYKZ|{3mT&FHr^h{(zb_1U>T39P>jmGhKODQV
zr)*C8C+FIdD)5f?;o*M2+{V0L&;HI2+w91Gbfeq+W%aBQ3 at 0+2XYc*}Qvoz!;_2$=
Jvd$@?2>^%N$yfjY

literal 1179
zcmV;M1Z4Y(P)<h;3K|Lk000e1NJLTq000yK000&U1^@s6z(KqQ00004b3#c}2nYxW
zd<bNS00009a7bBm000W`000W`0Ya=am;e9(6?8>dbVG7wVRUJ4ZXi@?ZDjy7FEKbT
zFgP18k2C-P0338hSaefwW^{L9a%BKPWN%_+AVz6&Wp{6KYjYq&Q!|*>Mgsr<1N2Em
zK~y-6m6hFZlT{qYKTrGgbz?8kZf@;LX_4S$8U=$ylR;b-rbZKPyfHzdF(G;<g3*6K
zMXpVJiSf#WAc=E|U?VIcNF9h%K$wiJ+h7~*+`6 at W+UK0-JYKXb9Z1k$^1D2re7@)9
zcQh)sZfj3B(6=hscEHHa0pM*|O)fL at 0dQ<AnHc0hlvaW5Yif%eYzoI%6==h^su86W
z`S~<U>1ndlDVEaHZ;vGtAKe$YZfno0ZJnDxd+ at Ps_&qw(Qsq_(OW9b;#w-<?`u!}K
zu`92|8^tK_AutOZN}L!xRSR at Bhhy)@xAn$bn;WnJ+pcK<Y#dG<&8btod8NJHWxu;;
z_uf#XBf8=0$mLgJ@#vOVJUV at SG&R0#Xut6KJ^-XrD5a{Frlqj$vSleVLGJuF?Ag7S
zb at 5o$=-e+!`Uj2x3;>6;^-uTN&%FEwez#tYx(u|Gjb+;y=}8ucj@|{Ut!1#o;nXRb
z5@{(kO~c`ER9n+D%(<!i!T@&d+691aD~m^?t(>}W1>NJt=k-)=vx`}B$*(!E|2^vJ
zo9+pVghM0}Kb3(>N*a7_o_n&3ixamP85v=5b_!W4pnLq(0nzAs01Ej$dBeC1cKrB{
zSeC2+m0~uVC)(1)QyV+jvc4T5Es8>tEtEL<$q=d3IKe;=fM6g1Ksu8l5)SeGcgK*H
z#F7;tfY0sX+_jtdJT5%C6HU{Y&lyZ+vH&ELKeLouV$;K2bZvU1YS!QXEmBIP5J(|z
z0~>s9HiiORoB5kRQ`5|){-Tu2;&glP1HnKGUaz0w;a|CU=@0sLKFdOOo}ytOgg{Dx
z5H*I&kvGTM*c53&Jn>LX<g*lvJU4Dk(Ax3<y35Vv#3UV&4h+LUNE2ZSM2%s=t?T|f
zBQNBOOr#e8=<Mtw+_9G7-_DcI=Lv<{%ZF6RBSje|gjofimP+;B8QIJ);&8d~17@*A
zeO*1<xA!o=Fpo6Li;Y5|0$XW#_~e<P-j{ZE-!rml3M^ZpEJb5OBQBQ<uqhM at NMRzR
zK$w+197`rX2bw>fojTaw`8aD^*U;eivREiGK9d1J2!XN{FHS$tK==ogQh2 at YvY{;7
zRj$n?9iTGjhGs{G`zE6s4rFI0v2B~W<{$w;S`uX|4zE6nSt{KI77e5nNFgbR9Kf6U
z@{O-d<iW9I;+@);(9_#(&&{P-vnGfw1hy(qAb?`gz>*dvWdQ6*oESXi_}9m|vUc<j
z92xlH%a6%qZedBQdH`mrv;qd;ydUlQXlnfWXzHt2JUV!F<Z|G`@X&^EC_-JGk2A^B
tD_~IhQ~po&^mcCt-U3>I{dax={{T7tRKXhk?-u|7002ovPDHLkV1iS09jpKV

diff --git a/src/public/images/icon_networks.png b/src/public/images/icon_networks.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2a2b878e8c3d6b8bfc93bad0991cccfad7a3985
GIT binary patch
literal 4223
zcmeAS at N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fk|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5n9Wp~AN+NuHtdjF{^%6m9^eS=-fVvqNZ0suv5|gu2OB9k)
z(=+pImEP~(ucVNfVyhHx>TBRz;GCL~=}}db8eHWUl3bOYY?-2DZ^va*VFffGH?<^D
zp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRf0Gw!Z$#{Ilm}X!9>qU&qz1fz|2^|)L75h
z)X2=pL`T8Mz`#P^z+B(hK-bX1%D~jh#83eWl<c?^Y>HCStb$zJpw<C-wn`Z#B?VUc
z`sL;2dgaD?`9<mahL)C=`UXb&Mn<|o6}rWhc_oPzx_QOQAR{1VxTF>*7iAWdWaj57
zfXqxx$}cUkRZ;@VD?klTNrszUP+F7&HaR6(KQ$*cH#M)MSl>|3P#;-6FeHL9(=$qn
z;o9<wp`i>6Z~cnI0-zQH{UWd$6rBYb`6c<q8Tkd+b;6~=`jM^lEGS7f0on at +P`F;8
zuad!zEiOsXM^*vW4vr^??QjQM`6d=+rvl^JEitD!6>I at QE<80UxFoRz>}hBK!5w7f
zSXz>iUsN2BUz`aFN}xO_gcWR3lC2>A1al!l?wC^o;X$}LnV at jC%1O*iw^gdpO-W5l
zEX^rV(ueBM2gM3Zi;X_2fgtmfi&7Iy@{5ox2u>|TwE)E|m at L>VWX&MMN-|4wQjv^;
zSqx1rB)b)1o(&=-LyLj=F(kDpx0qTs;WXO at Io_?DAwlJw56lP2C7yX{`QT)ZswUGh
zrO36SBr&B3mJKlFoij at +amxk)OAc at vz+rkoa()UhnL-jU7Q;)5a2XzwniHO11S~_a
z>UGUc%)}=jS_G2?CkPvG(n2Z#fUyA)0~Rd6GEE;|s6kT`wEUqJ1r9A*84fdd)Dl=o
z5Jis$7g50kQ#2Y}u#g~%9t|#{f(fQ*G`L_PK@>e2Tto#EOcB1|;zD$bQuBcA<8ol9
zr{$vbQw9d6tDY{7Ar-f_OpWyjPLw$Q|8nlBeWzY7JJ;KyVdAlfce#*Psj`-9z+IP;
z#DoBrS>lZ)qH!e?IUQ4l?v?~za19W5yVB~CxlmEX*g0qZwJR&r^U|&5*FE3U;ga(-
z@=IU)_osWF|D5~(bN%_sWhYaNe#kq2Hvh18HnY{NF3rBk+;8q1kG`;svVXnr(&4|_
zKTLf6Ik;xu?K_$w!ot3EE{oZ`?_a)g-Tbu0GQrd&cFB$<469ek7|c48vwq1EmOZCi
z6AXTs>=Kx{z<XY9vuEG=EdAsEc3F9B;)$HJAY|FajDVOBp6EzT9Wmi&`_Akr4xJ^c
z<E3O}b?acE%r%W`mop`J*hF5I3bdNk7~2(O%k1_SjZkV`8NyYySFZ1r*M}|7!omeO
zeh7B2RdC+VyUInRsF}N{@%`Ps&Hj at o3%CkatrhF;_U6&bXSy8Hs=@h6MB5-gS=i~J
zz_H`UFI>CUSD<oc!6|1~RTjo3g;lKH64KTD`OeB&S>G=@MoPE at u6Uzq*S+Y#gH>w+
zg!bHHt6Iub at wJG>@RRw}XD7?$YK%Hn&MO~O-?(erBEOGXjao8%- at 2|&O4 at w#NJCT5
zz8Ps at oIfKJ17_OHKjfFKSz;yI!=|k1lk-b!LoMq%-771Z)jj6woIH_X^ycw{M^-^|
z5(1V at +w;xWH`#L6A2(5p2j3q*ZvWWZEXQxn>^W_M&nFh&<f>Q3tJSuNyjEE)w<^o&
zs^9dfcK1K8i#;cO+<#8f at _llLzvn9($U9g_?DWb!T>S56#J#&`BjW;d?<MZc**v{e
zo1cUIuY`omm7L}B;(s!YzdZhJe*aC5zxV0H9e3RmOr$<%f4TnaS6fC={;_KrrRNeX
z^%h@=>6jRB_C3$iQooq@@86%QtVll>S8)8Xr at PX`Tf3e~Sa$90WpB7Ed*BZD4LN?r
zOTT_y-%{GuYOj at NcV$ZG$L442qhFu9Xd5ZozpwWC(pT#>?|%$#U}R|Tp2W38b*c(z
ONWjz8&t;ucLK6U}aTiAb

literal 0
HcmV?d00001

diff --git a/src/public/images/icon_smartpool.png b/src/public/images/icon_smartpool.png
index 4ed0af0d2f2da5b34d13491ebe06f64a9450b5ec..3a6688a7e0fb1e3dd1b4e177cc63c2c5296f1f0d 100644
GIT binary patch
literal 4233
zcmeAS at N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fk|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5n9Wp~AN+NuHtdjF{^%6m9^eS=-fVvqNZ0suv5|gu2OB9k)
z(=+pImEP~(ucVNfVyhHx>TBRz;GCL~=}}db8eHWUl3bOYY?-2DZ^va*VFffGH?<^D
zp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRf0Gw!Z$#{Ilm}X!9>qU&qz1fz|2^|)L75h
z)X2=pL`T8Mz`#P^z+B(hK-bX1%D~jh#83eWl<c?^Y>HCStb$zJpw<C-wn`Z#B?VUc
z`sL;2dgaD?`9<mahL)C=`UXb&Mn<|o6}rWhc_oPzx_QOQAR{1VxTF>*7iAWdWaj57
zfXqxx$}cUkRZ;@VD?klTNrszUP+F7&HaR6(KQ$*cH#M)MSl>|3P#;-6FeHL9(=$qn
z;o9<wp`i>6Z~cnI0-zQH{UWd$6rBYb`6c<q8Tkd+b;6~=`jM^lEGS7f0on at +P`F;8
zuad!zEiOsXM^*vW4vr^??QjQM`6d=+rvl^JEitD!6>I at QE<80UxFoRz>}hBK!5w7f
zSXz>iUsN2BUz`aFN}xO_gcWR3lC2>A1al!l?wC^o;X$}LnV at jC%1O*iw^gdpO-W5l
zEX^rV(ueBM2gM3Zi;X_2fgtmfi&7Iy@{5ox2u>|TwE)E|m at L>VWX&MMN-|4wQjv^;
zSqx1rB)b)1o(&=-LyLj=F(kDpx0qTs;WXO at Io_?DAwlJw56lP2C7yX{`QT)ZswUGh
zrO36SBr&B3mJKlFoij at +amxk)OAc at vz+rkoa()UhnL-jU7Q;)5a2XzwniHO11S~_a
z>UGUc%)}=jS_G2?CkPvG(n2Z#fUyA)0~Rd6GEE;|s6kT`wEUqJ1r9A*84fdd)Dl=o
z5Jis$7g50kQ#2Y}u#g~%9t|#{f(fQ*G`L_PK@>e2Tto#EOcB1|;zD$bQuBcA<8ol9
zr{$vbQw9d6`<^b2Ar-gQO!4&y36yBN|J!=;V&lHFvnx^qtUQfo?kI3+Ibp_nOFlP8
z*hTta(Pgc!O-dQT-PZ)yDrp$3a80|Rbc;i5QHYo8<a0geepnZmKD$@^Yu)6DkEfKM
zV3vP==l!1VmhXRxT0Gwn^lRNz(csYARh5r=MfYZiYTcH-xM<TV#;ol*QZr5+mHpbj
zar4T<Io~6GI&R~5_u-8#)9lTca at fs|8v54mUb|q0()uI(oxX=3b8Aeo-Yn@|xOCG(
z*_v(gIm_gqmcC6}mu-B&eS4TZQ~zG3?tN{W7jZ7qxH>Vr^suSgMb%YSnsX%onz?Uu
z-?TG(LA at l4Me~YUr^>gCHUBSccln<w`Ag*}v(+T=mg(Vp>)LOBzIXo`v+DkoUaw6%
z6*^>e?r=Xoe)x;X-LnGQw=(ugNpzl&vb}8Dvu8(NM8Otc1O1Md7Uy>^UH<P#uEsHO
ziHFbkAM0;aU;f|dx)VoP{w;@0?H!vro&9$iic9U^{ix#WGr>P%q3Nq%@lUH*&780>
z{lUkL^?Lgfv|AtCYQM=Ushpn~R`trz(SPlizm-cl_qDHb*9+gbKWn=9stpVhpKq=V
zV&u8lyZ*ishx;=hc5}|E|KAtfyvHS#;1IfGTGV`YGndTEJ*861Dh&S^w(OWDqms~k
zb#}Rrc|?d&P=b!@{75-1x%LU??w@`tQ*QY=g`-NwW@)g*1FOUm!@Fk6J2|#H8*P1F
z#5lj?=E;yCWr^ie12)W<AQ-K%Vc{}%PrZXn*IBGP&HAQzWe<augk!TYo16M{LorXk
z9{-mYN;}yeZ0OcpA at pX8darboXNgt(!%c^#Ez~XSX({zN_gV4Nw%KMYZKgeV-{#Er
zOvq&Ml~1c)e-4u=-xbRI&^5tC&GB;Ua+W*(hIwT{vL1$ae%L7cu|IbeIkjtM-ZrLp
z^De2dJpQEcI79WqM<2$gXSN>|zqTaq(#)0Cul;%FK0dSH`(ndrJMpzYIUd$??L0s0
czvcmkFT1KLwrfdW1`Q5)y85}Sb4q9e00%B0H2?qr

literal 641
zcmV-{0)G98P)<h;3K|Lk000e1NJLTq000gE000gM1^@s7XiptS00001b5ch_0Itp)
z=>Px#32;bRa{vGe>i_@>>j8p`4O##I0wzgBK~yNuZIDYylwlNxpYI#zqK at T2S=JyC
z*&>E6I%yZEa3L*)iWaScHm%y#Sj12vM9^iELAzSCYGDjC>WH_Ll*&tLv#6;-Yf=*(
zLq~sS=07cl{z>v(edpsn?|FFPUrEF#`N at p<B=)fr2A^FZ9B_&;-y<D&ygAEwlUu?8
zXWrl1=*kUkH{2rM&r55dNVKW#5S_qN>OgCO?qQ8bXY*%b6TKMABl7yX+X_>W+dJjd
z*#@*RiZ;R2Aa*aK{hv_)UHA6OiHbRtXp~Y6$A425SX5T*=MN#m*9wJ=6mE2hu{<L2
z at jmNMwFkFJ)<{x!wGGEoGp)_9P`ZGv)t8kTdg_;h$1A~@vNp1=1N6KM<$wn7mdfF3
zFQ5UFj=o>i-<nYc0CrI at H=iq6OkAGbzzhWd#X3#<*edoCFI&t6sZ=xvv=Mpt{VFNj
zTZvLOW at A&Fyz*v4-#T?Ys*z~RIWboUM2ta+ww#gP$94a8qr#0YscHzYx#B2xS2=pq
z9{AY=O9LQ+xQ`&^H<9HpWKszhC*Lw0dVu;i65(s;k~nQi{Ks}-x7+fmN+FUvmPrfm
z`s1WBPU?fx%3|+(QZJ6=d;I%6>lQ(il?+3llCb?WH5XqfAlDo~YI=;a;xx=Hu(FnA
ze0B{0UzvkKhmBHOn)qa=6{`O}igp}Qv4t#=AB9Z%9;({limDB+sD%Hy>P!?7TS%jw
bB^KcyJ~ZgpH4FC800000NkvXXu0mjf6L=r`

diff --git a/src/public/images/icon_smartpools.png b/src/public/images/icon_smartpools.png
new file mode 100644
index 0000000000000000000000000000000000000000..8dc3aa10ad4720ed1f4a25090ace122183ce8362
GIT binary patch
literal 4117
zcmeAS at N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fk|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5n9Wp~AN+NuHtdjF{^%6m9^eS=-fVvqNZ0suv5|gu2OB9k)
z(=+pImEP~(ucVNfVyhHx>TBRz;GCL~=}}db8eHWUl3bOYY?-2DZ^va*VFffGH?<^D
zp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRf0Gw!Z$#{Ilm}X!9>qU&qz1fz|2^|)L75h
z)X2=pL`T8Mz`#P^z+B(hK-bX1%D~jh#83eWl<c?^Y>HCStb$zJpw<C-wn`Z#B?VUc
z`sL;2dgaD?`9<mahL)C=`UXb&Mn<|o6}rWhc_oPzx_QOQAR{1VxTF>*7iAWdWaj57
zfXqxx$}cUkRZ;@VD?klTNrszUP+F7&HaR6(KQ$*cH#M)MSl>|3P#;-6FeHL9(=$qn
z;o9<wp`i>6Z~cnI0-zQH{UWd$6rBYb`6c<q8Tkd+b;6~=`jM^lEGS7f0on at +P`F;8
zuad!zEiOsXM^*vW4vr^??QjQM`6d=+rvl^JEitD!6>I at QE<80UxFoRz>}hBK!5w7f
zSXz>iUsN2BUz`aFN}xO_gcWR3lC2>A1al!l?wC^o;X$}LnV at jC%1O*iw^gdpO-W5l
zEX^rV(ueBM2gM3Zi;X_2fgtmfi&7Iy@{5ox2u>|TwE)E|m at L>VWX&MMN-|4wQjv^;
zSqx1rB)b)1o(&=-LyLj=F(kDpx0qTs;WXO at Io_?DAwlJw56lP2C7yX{`QT)ZswUGh
zrO36SBr&B3mJKlFoij at +amxk)OAc at vz+rkoa()UhnL-jU7Q;)5a2XzwniHO11S~_a
z>UGUc%)}=jS_G2?CkPvG(n2Z#fUyA)0~Rd6GEE;|s6kT`wEUqJ1r9A*84fdd)Dl=o
z5Jis$7g50kQ#2Y}u#g~%9t|#{f(fQ*G`L_PK@>e2Tto#EOcB1|;zD$bQuBcA<8ol9
zr{$vbQw9d6Y)==*kcwMdruh2^2MQe9f7eX)lGru2SrQ@{+9q*RG~AlalX>KJBqUvG
zzPQ`%u&l4vJ=?-B2}z6CO^$T4^e-y9;Fh(9v71q8%C?YOTS~U4{=QauJ51~4e9 at Fi
zC(q3`|NZvK_j`RGj at 7gL-st`P`l at HHG80UN<n(^li^}DFo>O<QR{zo0miKaRrJ2g*
z{;%G!^V~hlmp5ANKmMH9y2^EC$+CqXG<I$mnV(ZUH%q8>&Ata8-z>go$<@5HR`@4N
z?VHrK>sl_AO22)x+vb{1=?l-<o7vlC<Yoj1|BA|$ZTXWeIP*sN67y*jCr_ at bOExUn
zI;~>o<M7U>J2$S|Y at T?oePOEjfv`Ad-+IkDThX?&uNwEB?mh8GCx-d at sY7#WV;?@a
zmR9oT?&H_n{djl|UOaT*QR7 at KRR-Snjgp><qCeZbzPa(eH%o5a9-pozU$N_U_1sCU
z3DG|!wH?mQoWSj?ym#r7&h1P2epfnu-Y}_fsq5aklY+CtHp~i8EQ at Io{B~#4$<Q at 5
z^Y$G-S{`rSu5lpKcy&T0TcEJxo5YsAS(beVj&#(;U48dawt6yyu6nZOQGxRrCW(vI
z9=Ug`qxQvK`Ie$NyLiKdzeTk$Ilboba{S at q`q#!&roJUjE%x2JvMD#k|3_;tTFB3#
zfAsK{Pr-jLNA2IDuh)Iv^9$F}zfV>6KDgGfWM*!&rct7i=-edXrzfJcT(i$|$^Q&V
zZL)gyW~tF{m!QjYkJ}tS-+KK`s@(ex{kh6})~zXgZg~EqZCr8*hh*Y^L*3QsZ^U}P
zzxbOSmN6?Vcx_S9#1qC<Hi{ST&R~04*!;=v at S)!unT7x99$;vRv_Hco7|9OmsC&Bl
KxvX<aXaWFgIQ7o}

literal 0
HcmV?d00001

diff --git a/src/public/images/icon_smartpools_dir.png b/src/public/images/icon_smartpools_dir.png
new file mode 100644
index 0000000000000000000000000000000000000000..408aabc8f0cf0a74a30f58e1cd1d495011a71d7f
GIT binary patch
literal 4228
zcmeAS at N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fk|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5n9Wp~AN+NuHtdjF{^%6m9^eS=-fVvqNZ0suv5|gu2OB9k)
z(=+pImEP~(ucVNfVyhHx>TBRz;GCL~=}}db8eHWUl3bOYY?-2DZ^va*VFffGH?<^D
zp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRf0Gw!Z$#{Ilm}X!9>qU&qz1fz|2^|)L75h
z)X2=pL`T8Mz`#P^z+B(hK-bX1%D~jh#83eWl<c?^Y>HCStb$zJpw<C-wn`Z#B?VUc
z`sL;2dgaD?`9<mahL)C=`UXb&Mn<|o6}rWhc_oPzx_QOQAR{1VxTF>*7iAWdWaj57
zfXqxx$}cUkRZ;@VD?klTNrszUP+F7&HaR6(KQ$*cH#M)MSl>|3P#;-6FeHL9(=$qn
z;o9<wp`i>6Z~cnI0-zQH{UWd$6rBYb`6c<q8Tkd+b;6~=`jM^lEGS7f0on at +P`F;8
zuad!zEiOsXM^*vW4vr^??QjQM`6d=+rvl^JEitD!6>I at QE<80UxFoRz>}hBK!5w7f
zSXz>iUsN2BUz`aFN}xO_gcWR3lC2>A1al!l?wC^o;X$}LnV at jC%1O*iw^gdpO-W5l
zEX^rV(ueBM2gM3Zi;X_2fgtmfi&7Iy@{5ox2u>|TwE)E|m at L>VWX&MMN-|4wQjv^;
zSqx1rB)b)1o(&=-LyLj=F(kDpx0qTs;WXO at Io_?DAwlJw56lP2C7yX{`QT)ZswUGh
zrO36SBr&B3mJKlFoij at +amxk)OAc at vz+rkoa()UhnL-jU7Q;)5a2XzwniHO11S~_a
z>UGUc%)}=jS_G2?CkPvG(n2Z#fUyA)0~Rd6GEE;|s6kT`wEUqJ1r9A*84fdd)Dl=o
z5Jis$7g50kQ#2Y}u#g~%9t|#{f(fQ*G`L_PK@>e2Tto#EOcB1|;zD$bQuBcA<8ol9
zr{$vbQw9d6Tb?eCAr-f_O!fB=36wd$KR<1bN%_^QF at _smx9bQpYie^@vAPOKmaJ$F
z36NFNS{Pi?+0=J+VY2J;CZ?_4f+ZSWygq at 6{L9vAzPoj5o!;(q>t4T^U1z-c^1D~>
zma)r!e*V4g{oeEMzt`=*KRa>OvP5I4+a?=Szu3Gxk-6}382 at b!gVTYsv(`T~j^J2x
z-zUD}SDN{U-$CzYt`mPzTa*?XP+LCj_ at s|#*nN8?+pb^C+mkp;G)`Ejqc!|YjGoQB
zkcJZ*6y20B^7J27vb9*Id$wZ9lb$bGl0TPe8$4B?dH7`vThit1oTUf<hdtA7D&b>}
zldp-p`o^XHV5GJvgSeJf_e`G|6F>SKEd8)*X4CoPg1qUOeCHYUCK=0~D!aqgt}*-X
zh47Zz;uS0GlS<s3pX_w$Q=M#iVA7td?U84H*GhOLoSGrPskNfyZR-J%WS{Bmc2x=b
z;uo()H8#5Ymh+eP+Mnn!JiW1=EkE8qY}&Skd)8gOaBb^bC(otQw_?^`%(ts!-*`b~
zQR94zYYZCQo4<4B9gXliEa6 at 0*MCH2)odAw*K&=k|0*px!eWvtQ}fIA%84108$Yn*
zEX}(S+Z*t7u0+-CrK|5RJrGoun>j_r&_z)wQF~q6;)8wp=dCW*{1DMPZSmtzKvnWb
z#i*ADn(TS}@7os4tMOVW5nJu>L&<S!$lghDA{(ARVYDc-F#P#c_)+T7g0KsGKPOqn
zYaEsLx3A$A<mqE6d|UZo*Frzxue-iXbc>9ZOWCn(>b6~bm^#-t98Z40d2x at YnCEge
zi?qKRLqi#@Y&pbiwpxXRKH6~AgXKv?fX{rHXv>^QT&D9Hbe8^2soNi4U9s)ke)$=9
z^Q3P at pL(!P$Uykn49;2V>-Tv%)$VLKsc?MSH0=zVs at ZE_^C#7YtZ0b~o&KSCB8#)l
z$-021Z_B?lA6>NVyk7Q<e$Mrt^>xk(+<xn)Z~5W;Oy<)31=m@*cdh)tXFn4UgZg!k
UgMV2|)j{I|p00i_>zopr0BEclmjD0&

literal 0
HcmV?d00001

diff --git a/src/public/javascripts/ovirt.tree.js b/src/public/javascripts/ovirt.tree.js
index 13720b2..77d6c55 100644
--- a/src/public/javascripts/ovirt.tree.js
+++ b/src/public/javascripts/ovirt.tree.js
@@ -8,26 +8,19 @@ function processTree (){
       $.each(response.deleted, function(name, value){
           //FIXME: special case for other peoples smart pools
           //come up with better way or split out somewhere.
-          if($('#' + value.id).hasClass('SmartPool')) {
-            if($("#smart_nav_tree > li > div.SmartPool").size() > 1) {
-                $("#smart_nav_tree > li:first div").click();
-            } else {
-              $('#nav_tree > li:first > div').click();
+
+          //check if the li is the only one.  If so, remove its container as well
+          if ($('#' + value.id).parent("li").siblings().size() === 0 ) {
+            if($('#' + value.id).is(':visible')) {
+              $('#' + value.id).parent("li").parent("ul").siblings("div").click();
             }
+            $('#' + value.id).parent("li").parent("ul").remove();
           } else {
-            //check if the li is the only one.  If so, remove its container as well
-            if ($('#' + value.id).parent("li").siblings().size() === 0 ) {
-              if($('#' + value.id).is(':visible')) {
-                $('#' + value.id).parent("li").parent("ul").siblings("div").click();
-              }
-              $('#' + value.id).parent("li").parent("ul").remove();
-            } else {
-              if($('#' + value.id).is(':visible')) {
-                  $('#' + value.id).parent()
-                  .siblings('li:first')
-                  .children('div')
-                  .click();
-                }
+            if($('#' + value.id).is(':visible')) {
+                $('#' + value.id).parent()
+                .siblings('li:first')
+                .children('div')
+                .click();
               }
           }
           $('#' + value.id).parent().remove();
@@ -35,12 +28,10 @@ function processTree (){
 
       if(processRecursive) {
         $("#nav_tree").html(recursiveTreeTempl.process({"pools" : response.pools}));
-        $("#smart_nav_tree").html(recursiveTreeTempl.process({"pools" : response.smart_pools}));
         processRecursive = false;
       } else {
           // Loop through the items and decide if we need updated/new html for each item.
           processChildren(response.pools, treeItemTempl);
-          processChildren(response.smart_pools, treeItemTempl);
       }
     }
   });
@@ -64,16 +55,8 @@ function processChildren(list, templateObj){
        if ($('#' + data.parent_id).siblings('ul').size() > 0) {
          $('#' + data.parent_id).siblings('ul').append(result);
        } else {
-         if (data.type === "SmartPool"){  //handle current user smart pools
-           if($('#smart_nav_tree > li:has(ul)').size() > 0) {
-             $(result).insertBefore('#smart_nav_tree > li:has(ul):first');
-           } else {
-             $('#smart_nav_tree').append(result);
-           }
-         } else {
-           $('#' + data.parent_id).parent().append('<ul>' + result + '</ul>');
-           $('#' + data.parent_id).siblings('span').addClass('expanded');
-         }
+         $('#' + data.parent_id).parent().append('<ul>' + result + '</ul>');
+         $('#' + data.parent_id).siblings('span').addClass('expanded');
        }
       }
     else {
diff --git a/src/public/stylesheets/ovirt-tree/tree.css b/src/public/stylesheets/ovirt-tree/tree.css
index 7d5411f..de019f4 100644
--- a/src/public/stylesheets/ovirt-tree/tree.css
+++ b/src/public/stylesheets/ovirt-tree/tree.css
@@ -1,12 +1,12 @@
 #nav_tree {
-   padding: 20px;
+   padding: 0px 20px;
 }
 
 .nav-tree {
     width: 222px;
     position: absolute;
     overflow: auto;
-    top: 25px;
+    top: 50px;
     bottom: 140px;
 }
 
@@ -44,6 +44,15 @@
     background-image: url('../../images/icon_smartpool.png');
 }
 
+.SmartPoolRoot {
+    padding: 4px 0 4px 28px !important;
+    background-image: url('../../images/icon_smartpools.png');
+}
+.DirectoryPool {
+    padding: 4px 0 4px 28px !important;
+    background-image: url('../../images/icon_smartpools_dir.png');
+}
+
 .hitarea {
 	width: 16px;
 	margin-left: -16px;
@@ -81,11 +90,21 @@
 }
 
 .nav-dashboard {
-    background-image: url('../../images/icon_dashboard.gif');
+    background-image: url('../../images/icon_dashboard.png');
     background-repeat: no-repeat;
     background-position: left;
     padding: 0px 0 0px 28px;
     position: absolute;
     height: 25px;
     top: 0;
-}
\ No newline at end of file
+}
+
+.nav-networks {
+    background-image: url('../../images/icon_networks.png');
+    background-repeat: no-repeat;
+    background-position: left;
+    padding: 0px 0 0px 28px;
+    position: absolute;
+    height: 25px;
+    top: 25px;
+}
-- 
1.6.0.6




More information about the ovirt-devel mailing list