Mohammed Morsi
2009-Jul-24 18:02 UTC
[Ovirt-devel] [PATCH server] add collapsable sections to vm form
the vm form is getting cluttered, this patch simply add collapsable sections to the form, making the 'storage' and 'network' sections collapsed by default credit goes to jayg for contributing alot to this patch in terms of simplification and cleanup --- src/app/helpers/application_helper.rb | 4 +- src/app/views/vm/_form.rhtml | 35 ++++++++++++++++++++++---------- src/public/stylesheets/components.css | 1 + src/public/stylesheets/layout.css | 11 ++++++++- 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/src/app/helpers/application_helper.rb b/src/app/helpers/application_helper.rb index 0c6562e..7922c6f 100644 --- a/src/app/helpers/application_helper.rb +++ b/src/app/helpers/application_helper.rb @@ -72,8 +72,8 @@ module ApplicationHelper def check_box_tag_with_label(label, name, value = "1", checked = false) %{ - <div class="i"><label for="#{name}">#{_(label)}</label> - #{check_box_tag name, value, checked}</div> + <div class="i">#{check_box_tag name, value, checked} + <label for="#{name}">#{_(label)}</label></div> } end diff --git a/src/app/views/vm/_form.rhtml b/src/app/views/vm/_form.rhtml index 034c3df..8373bf4 100644 --- a/src/app/views/vm/_form.rhtml +++ b/src/app/views/vm/_form.rhtml @@ -6,15 +6,19 @@ <%= hidden_field 'vm', 'vm_resource_pool_id' %> <%= hidden_field_tag 'hardware_pool_id', @hardware_pool.id if @hardware_pool %> + <div class="form_heading clickable open">General</div> + <div class="vm_form_section"> <%= text_field_with_label "Name:", "vm", "description", {:style=>"width:250px;"} %> <%= text_field_with_label "UUID:", "vm", "uuid", {:style=>"width:250px;"} %> <%= select_with_label "Operating System:", 'vm', 'provisioning_and_boot_settings', @provisioning_options, :style=>"width:250px;" %> <% if controller.action_name == "edit" %><b style="color: #FF0000">*Warning* Editing provision could overwrite vm</b><% end %> + <div class="clear_row" style="height:15px;"></div> + </div> + <div class="clear_row"></div> - <div class="form_heading">Resources</div> - <div class="clear_row"></div> - <div class="clear_row"></div> + <div class="form_heading clickable open">Resources</div> + <div class="vm_form_section"> <div style="float:left;width:150px;" > <%= text_field_with_label "CPUs:", "vm", "num_vcpus_allocated", {:style=>"width:100px; margin-bottom:2px;"}, {:style=>"padding-right: 50px;"} %> <div class="field_helptext">max to create: <%=create_resources[:cpus]%> </div> @@ -27,6 +31,11 @@ </div> <div style="clear:both;"></div> <div class="clear_row"></div> + </div> + <div class="clear_row"></div> + + <div class="form_heading clickable closed">Storage</div> + <div class="vm_form_section" style="display:none;"> <div class="field_title">Storage: </div> <div style="height:150px; overflow:auto; border:#CCCCCC solid 1px;"> <ul id="storage_volumes_tree" class="ovirt-tree"></ul> @@ -35,10 +44,11 @@ <!-- FIXME: fill in total here --> <div style="background:#F3F3F3; padding:6px; border-left:#CCCCCC solid 1px; border-right:#CCCCCC solid 1px; border-bottom:#CCCCCC solid 1px; ">Total:</div> <div class="clear_row" style="height:15px;"></div> - <div class="clear_row"></div> - <div class="clear_row"></div> + </div> + <div class="clear_row"></div> - <div class="form_heading">Network</div> + <div class="form_heading clickable closed">Network</div> + <div class="vm_form_section" style="display:none;"> <div class="clear_row"></div> <div class="clear_row"></div> <div style="float:left;"> @@ -47,12 +57,11 @@ <div style="float:left;"> <%= select_with_label "Network:", 'vm', 'network_id', @networks.insert(0, ""), :style=>"width:250px;" %> </div> - <div style="clear:both;"></div> - <div class="clear_row"></div> <div class="clear_row"></div> <%= check_box_tag_with_label "Forward vm's vnc port locally", "forward_vnc", 1, @vm.forward_vnc %> - <div class="clear_row"></div> + </div> + <div class="clear_row"></div> <%= check_box_tag_with_label "Start VM Now? (pending current resource availability)", "start_now", nil if create or @vm.state == Vm::STATE_STOPPED %> <%= check_box_tag_with_label "Restart VM Now? (pending current resource availability)", "restart_now", nil if @vm.state == Vm::STATE_RUNNING %> @@ -103,7 +112,11 @@ ${htmlList(pools, id)} channel: 'STORAGE_VOLUME', refresh: VmCreator.returnToVmForm }); + + $('#vm_form .form_heading').bind('click', function(e){ + if(this === e.target){ + $(this).toggleClass('open').toggleClass('closed').next().slideToggle('slow'); + } + }); }); </script> - - diff --git a/src/public/stylesheets/components.css b/src/public/stylesheets/components.css index 41ad3d0..074cc09 100644 --- a/src/public/stylesheets/components.css +++ b/src/public/stylesheets/components.css @@ -339,3 +339,4 @@ height: 11px; } +.vm_form_section {padding-left: 2em;} \ No newline at end of file diff --git a/src/public/stylesheets/layout.css b/src/public/stylesheets/layout.css index f232c6c..9ecfe44 100644 --- a/src/public/stylesheets/layout.css +++ b/src/public/stylesheets/layout.css @@ -124,8 +124,14 @@ a { color:#000000; text-decoration: none;} font-size: 130%; } + /* ----- General Effects ----- */ +.clickable {cursor:pointer;} +.open {background:url(../images/dir_open.png) left center no-repeat;} +.closed {background:url(../images/dir_closed.png) left center no-repeat;} + +.hidden {display:none;} /* ----- Right side of Header -------- */ @@ -427,9 +433,10 @@ a { color:#000000; text-decoration: none;} } .form_heading { - font-size:115%; color: #666666; + font-size:1.15em; + color: #666666; border-top:#CCCCCC 1px dotted; - padding-top: 10px; + padding: 1.2em 0em 1em 1.5em; } .field_title { -- 1.6.0.6
Mohammed Morsi
2009-Jul-24 18:02 UTC
[Ovirt-devel] [PATCH server] provide default vm allocated cpu and memory values
--- src/db/migrate/041_vm_cpu_and_memory_defaults.rb | 29 ++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) create mode 100644 src/db/migrate/041_vm_cpu_and_memory_defaults.rb diff --git a/src/db/migrate/041_vm_cpu_and_memory_defaults.rb b/src/db/migrate/041_vm_cpu_and_memory_defaults.rb new file mode 100644 index 0000000..f33bc52 --- /dev/null +++ b/src/db/migrate/041_vm_cpu_and_memory_defaults.rb @@ -0,0 +1,29 @@ +# Copyright (C) 2009 Red Hat, Inc. +# Written by Mohammed Morsi <mmorsi at redhat.com> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. A copy of the GNU General Public License is +# also available at http://www.gnu.org/copyleft/gpl.html. + +class VmCpuAndMemoryDefaults < ActiveRecord::Migration + def self.up + change_column :vms, :num_vcpus_allocated, :integer, :default => 1 + change_column :vms, :memory_allocated, :integer, :default => 262144 #256MB + end + + def self.down + change_column :vms, :num_vcpus_allocated, :integer, :default => nil + change_column :vms, :memory_allocated, :integer, :default => nil + end +end -- 1.6.0.6
Jason Guiditta
2009-Jul-24 18:28 UTC
[Ovirt-devel] Re: [PATCH server] add collapsable sections to vm form
On Fri, 2009-07-24 at 14:02 -0400, Mohammed Morsi wrote:> the vm form is getting cluttered, this patch simply add > collapsable sections to the form, making the 'storage' > and 'network' sections collapsed by default > > credit goes to jayg for contributing alot to > this patch in terms of simplification and cleanup > --- > src/app/helpers/application_helper.rb | 4 +- > src/app/views/vm/_form.rhtml | 35 ++++++++++++++++++++++---------- > src/public/stylesheets/components.css | 1 + > src/public/stylesheets/layout.css | 11 ++++++++- > 4 files changed, 36 insertions(+), 15 deletions(-) > > diff --git a/src/app/helpers/application_helper.rb b/src/app/helpers/application_helper.rb > index 0c6562e..7922c6f 100644 > --- a/src/app/helpers/application_helper.rb > +++ b/src/app/helpers/application_helper.rb > @@ -72,8 +72,8 @@ module ApplicationHelper > > def check_box_tag_with_label(label, name, value = "1", checked = false) > %{ > - <div class="i"><label for="#{name}">#{_(label)}</label> > - #{check_box_tag name, value, checked}</div> > + <div class="i">#{check_box_tag name, value, checked} > + <label for="#{name}">#{_(label)}</label></div> > } > end > > diff --git a/src/app/views/vm/_form.rhtml b/src/app/views/vm/_form.rhtml > index 034c3df..8373bf4 100644 > --- a/src/app/views/vm/_form.rhtml > +++ b/src/app/views/vm/_form.rhtml > @@ -6,15 +6,19 @@ > <%= hidden_field 'vm', 'vm_resource_pool_id' %> > <%= hidden_field_tag 'hardware_pool_id', @hardware_pool.id if @hardware_pool %> > > + <div class="form_heading clickable open">General</div> > + <div class="vm_form_section"> > <%= text_field_with_label "Name:", "vm", "description", {:style=>"width:250px;"} %> > <%= text_field_with_label "UUID:", "vm", "uuid", {:style=>"width:250px;"} %> > <%= select_with_label "Operating System:", 'vm', 'provisioning_and_boot_settings', @provisioning_options, :style=>"width:250px;" %> > <% if controller.action_name == "edit" %><b style="color: #FF0000">*Warning* Editing provision could overwrite vm</b><% end %> > + > <div class="clear_row" style="height:15px;"></div> > + </div> > + <div class="clear_row"></div> > > - <div class="form_heading">Resources</div> > - <div class="clear_row"></div> > - <div class="clear_row"></div> > + <div class="form_heading clickable open">Resources</div> > + <div class="vm_form_section"> > <div style="float:left;width:150px;" > > <%= text_field_with_label "CPUs:", "vm", "num_vcpus_allocated", {:style=>"width:100px; margin-bottom:2px;"}, {:style=>"padding-right: 50px;"} %> > <div class="field_helptext">max to create: <%=create_resources[:cpus]%> </div> > @@ -27,6 +31,11 @@ > </div> > <div style="clear:both;"></div> > <div class="clear_row"></div> > + </div> > + <div class="clear_row"></div> > + > + <div class="form_heading clickable closed">Storage</div> > + <div class="vm_form_section" style="display:none;"> > <div class="field_title">Storage: </div> > <div style="height:150px; overflow:auto; border:#CCCCCC solid 1px;"> > <ul id="storage_volumes_tree" class="ovirt-tree"></ul> > @@ -35,10 +44,11 @@ > <!-- FIXME: fill in total here --> > <div style="background:#F3F3F3; padding:6px; border-left:#CCCCCC solid 1px; border-right:#CCCCCC solid 1px; border-bottom:#CCCCCC solid 1px; ">Total:</div> > <div class="clear_row" style="height:15px;"></div> > - <div class="clear_row"></div> > - <div class="clear_row"></div> > + </div> > + <div class="clear_row"></div> > > - <div class="form_heading">Network</div> > + <div class="form_heading clickable closed">Network</div> > + <div class="vm_form_section" style="display:none;"> > <div class="clear_row"></div> > <div class="clear_row"></div> > <div style="float:left;"> > @@ -47,12 +57,11 @@ > <div style="float:left;"> > <%= select_with_label "Network:", 'vm', 'network_id', @networks.insert(0, ""), :style=>"width:250px;" %> > </div> > - <div style="clear:both;"></div> > - <div class="clear_row"></div> > <div class="clear_row"></div> > > <%= check_box_tag_with_label "Forward vm's vnc port locally", "forward_vnc", 1, @vm.forward_vnc %> > - <div class="clear_row"></div> > + </div> > + <div class="clear_row"></div> > > <%= check_box_tag_with_label "Start VM Now? (pending current resource availability)", "start_now", nil if create or @vm.state == Vm::STATE_STOPPED %> > <%= check_box_tag_with_label "Restart VM Now? (pending current resource availability)", "restart_now", nil if @vm.state == Vm::STATE_RUNNING %> > @@ -103,7 +112,11 @@ ${htmlList(pools, id)} > channel: 'STORAGE_VOLUME', > refresh: VmCreator.returnToVmForm > }); > + > + $('#vm_form .form_heading').bind('click', function(e){ > + if(this === e.target){ > + $(this).toggleClass('open').toggleClass('closed').next().slideToggle('slow'); > + } > + }); > }); > </script> > - > - > diff --git a/src/public/stylesheets/components.css b/src/public/stylesheets/components.css > index 41ad3d0..074cc09 100644 > --- a/src/public/stylesheets/components.css > +++ b/src/public/stylesheets/components.css > @@ -339,3 +339,4 @@ > height: 11px; > } > > +.vm_form_section {padding-left: 2em;} > \ No newline at end of file > diff --git a/src/public/stylesheets/layout.css b/src/public/stylesheets/layout.css > index f232c6c..9ecfe44 100644 > --- a/src/public/stylesheets/layout.css > +++ b/src/public/stylesheets/layout.css > @@ -124,8 +124,14 @@ a { color:#000000; text-decoration: none;} > font-size: 130%; > } > > + /* ----- General Effects ----- */ > +.clickable {cursor:pointer;} > > +.open {background:url(../images/dir_open.png) left center no-repeat;} > > +.closed {background:url(../images/dir_closed.png) left center no-repeat;} > + > +.hidden {display:none;} > > /* ----- Right side of Header -------- */ > > @@ -427,9 +433,10 @@ a { color:#000000; text-decoration: none;} > } > > .form_heading { > - font-size:115%; color: #666666; > + font-size:1.15em; > + color: #666666; > border-top:#CCCCCC 1px dotted; > - padding-top: 10px; > + padding: 1.2em 0em 1em 1.5em; > } > > .field_title {ACK, much better!