From: Jozef Zigmund <[email protected]>
This UI prepares to apply new UI design for Image factory. Old wizard of
template builder was changed to form on one page.
This PATCH depends on "image/template revamp (rev. 4)" set of patches
---
src/app/controllers/templates_controller.rb | 26 +++++++-
src/app/views/templates/_basics.haml | 28 ++++-----
src/app/views/templates/_build_images.haml | 5 ++
src/app/views/templates/_image_formats.haml | 7 ++
src/app/views/templates/_packages.haml | 6 --
src/app/views/templates/_platform.haml | 12 ++++
src/app/views/templates/_scripting.haml | 10 +++
src/app/views/templates/_services.haml | 23 +++++++
src/app/views/templates/_software.haml | 85 +++++++++++++++++++++++++++
src/app/views/templates/new.haml | 29 +++------
src/app/views/templates/summary.haml | 5 --
11 files changed, 186 insertions(+), 50 deletions(-)
create mode 100644 src/app/views/templates/_build_images.haml
create mode 100644 src/app/views/templates/_image_formats.haml
delete mode 100644 src/app/views/templates/_packages.haml
create mode 100644 src/app/views/templates/_platform.haml
create mode 100644 src/app/views/templates/_scripting.haml
create mode 100644 src/app/views/templates/_services.haml
create mode 100644 src/app/views/templates/_software.haml
diff --git a/src/app/controllers/templates_controller.rb
b/src/app/controllers/templates_controller.rb
index d9ac23c..974b433 100644
--- a/src/app/controllers/templates_controller.rb
+++ b/src/app/controllers/templates_controller.rb
@@ -15,9 +15,29 @@ class TemplatesController < ApplicationController
def new
update_xml
- if params[:next]
- redirect_to :action => 'services', :id => @image_descriptor
+ @repository_manager = RepositoryManager.new
+ @image_descriptor = params[:id] ? Template.find(params[:id]) : Template.new
+ @groups = @repository_manager.all_groups(params[:repository])
+ @hardware_profiles = HardwareProfile.find(:all)
+ @all_targets = Image.available_targets
+ if params[:tab].to_s == 'packages'
+ @selected_tab = 'packages'
+ @packages = @repository_manager.all_packages(params[:repository])
+ else
+ @selected_tab = 'groups'
+ end
+
+ if request.xhr?
+ render :partial => @selected_tab
+ return
+ end
+ if params[:build_and_monitor]
+ update_xml
+ redirect_to :action => 'summary', :id => @image_descriptor.id,
:build=>"build", :targets =>params[:targets]
end
+ #if params[:next]
+ # redirect_to :action => 'services', :id => @image_descriptor
+ #end
end
def packages
@@ -83,7 +103,7 @@ class TemplatesController < ApplicationController
end
else
if params[:back]
- redirect_to :action => 'software', :id => @image_descriptor
+ redirect_to :action => 'new', :id => @image_descriptor
elsif params[:done]
redirect_to :controller => 'dashboard', :action => 'index'
end
diff --git a/src/app/views/templates/_basics.haml
b/src/app/views/templates/_basics.haml
index b89970d..9e0e7d8 100644
--- a/src/app/views/templates/_basics.haml
+++ b/src/app/views/templates/_basics.haml
@@ -1,16 +1,12 @@
-%ul
- %li
- %label Name
- = text_field_tag 'xml[name]', @image_descriptor.xml.name
- %span Provide a unique name for template master. Users will see this name
when they choose this image to instantiate.
- %li
- %label Platform
- = select_tag("xml[platform]", @image_descriptor.xml.platforms.map{|repid,
rep| "<option value=\"#{repid}\" selected=\"#{repid ==
@image_descriptor.xml.platform ? 'selected' : ''}\">#{rep['name']}</option>"})
- %span Choose the software operating system.
- %li
- %label Description
- = text_area_tag("xml[description]", @image_descriptor.xml.description,
:rows => 4)
- %span Provide a description of your template master. Be descriptive to
help users to identify the images created with this master.
-.submit
- = submit_tag "Cancel"
- = submit_tag "Next"
+#clear
+ %h3 Basic Template Properties
+ %ul
+ %li
+ %label Name
+ = text_field_tag("xml[name]", @image_descriptor.xml.name)
+ %li
+ %label Description
+ = text_field_tag("xml[description]", @image_descriptor.xml.description,
:rows =>4)
+ %li
+ %label Template Category
+ = select_tag("xml[category]", "<option>User - private</option>")
diff --git a/src/app/views/templates/_build_images.haml
b/src/app/views/templates/_build_images.haml
new file mode 100644
index 0000000..728c676
--- /dev/null
+++ b/src/app/views/templates/_build_images.haml
@@ -0,0 +1,5 @@
+#clear
+ .submit
+ = submit_tag("Build", :disabled => true)
+ = submit_tag("Build & Monitor", :name=> "build_and_monitor")
+ = submit_tag("Build & Launch", :disabled => true)
diff --git a/src/app/views/templates/_image_formats.haml
b/src/app/views/templates/_image_formats.haml
new file mode 100644
index 0000000..c661694
--- /dev/null
+++ b/src/app/views/templates/_image_formats.haml
@@ -0,0 +1,7 @@
+#clear
+ %h3 Build Options
+ %label Image formats
+ - @all_targets.each do |target_id, target|
+ %br
+ = check_box_tag 'targets[]', target_id, false
+ = target['name']
diff --git a/src/app/views/templates/_packages.haml
b/src/app/views/templates/_packages.haml
deleted file mode 100644
index 1e0c2a5..0000000
--- a/src/app/views/templates/_packages.haml
+++ /dev/null
@@ -1,6 +0,0 @@
-%ul{:class => 'packages_to_select selection_list'}
- - @packages.each do |pkg|
- %li
- = pkg[:name]
- %a{:class => 'select_package action_link', :href => url_for(:action =>
'select_package', :id => params[:id], :package => pkg[:name], :repository =>
pkg[:repository_id])}
- Select
diff --git a/src/app/views/templates/_platform.haml
b/src/app/views/templates/_platform.haml
new file mode 100644
index 0000000..a74c812
--- /dev/null
+++ b/src/app/views/templates/_platform.haml
@@ -0,0 +1,12 @@
+#clear
+ %h3 Platform
+ %ul
+ %li
+ %label Operating System
+ = select_tag("xml[platform]",
@image_descriptor.xml.platforms.map{|repid, rep| "<option value=\"#{repid}\"
selected=\"#{repid == @image_descriptor.xml.platform ? 'selected' :
''}\">#{rep['name']}</option>"}.join.html_safe)
+ %li
+ %label H/W Profile
+ = select_tag("xml[hw_profile]",
options_for_select(@hardware_profiles.collect{|p| [ p.name, p.id ]}),
{:included_blank => :true})
+ %li
+ %label Locale
+ =select_tag("xml[locale]", options_for_select(I18n.available_locales,
I18n.locale.to_sym))
diff --git a/src/app/views/templates/_scripting.haml
b/src/app/views/templates/_scripting.haml
new file mode 100644
index 0000000..f58c556
--- /dev/null
+++ b/src/app/views/templates/_scripting.haml
@@ -0,0 +1,10 @@
+#clear
+ %h3 Configuration Scripting
+ %ul
+ %li
+ =check_box_tag("choose_file")
+ =text_field_tag("choose_file","Choose a file")
+ =submit_tag("Browse", :disabled =>true)
+ %li
+ =check_box_tag("puppet")
+ %label Use Puppet
diff --git a/src/app/views/templates/_services.haml
b/src/app/views/templates/_services.haml
new file mode 100644
index 0000000..90ba092
--- /dev/null
+++ b/src/app/views/templates/_services.haml
@@ -0,0 +1,23 @@
+#clear
+ %h3 Cloud Provider Services
+ %ul
+ %li
+ %label S3-Compatible Storage
+ = check_box_tag 'xml[services][amazon3_storage]', '1',
@image_descriptor.xml.services.include?('amazon3_storage')
+ = label_tag 'xml[services][amazon3_storage]', 'Enable Amazon S3
storage', :class => "plain"
+ %li
+ %label Inter-node Messaging
+ = check_box_tag 'xml[services][inter_node_messaging]', '1',
@image_descriptor.xml.services.include?('inter_node_messaging')
+ = label_tag 'xml[services][inter_node_messaging]', 'Enable inter-node
messaging', :class => "plain"
+ %li
+ %label High Availability
+ = check_box_tag 'xml[services][availability]', '1',
@image_descriptor.xml.services.include?('availability')
+ = label_tag 'xml[services][availability]', 'Enable high availability
services', :class => "plain"
+ %li
+ %label JBoss
+ = check_box_tag 'xml[services][jboss]', '1',
@image_descriptor.xml.services.include?('jboss')
+ = label_tag 'xml[services][jboss]', 'Enable JBoss infrastructure',
:class => "plain"
+ %li
+ %label Cooling Tower
+ = check_box_tag 'xml[services][cooling_tower]', '1',
@image_descriptor.xml.services.include?('cooling_tower')
+ = label_tag 'xml[services][cooling_tower]', 'Enable Cooling Tower',
:class => "plain"
diff --git a/src/app/views/templates/_software.haml
b/src/app/views/templates/_software.haml
new file mode 100644
index 0000000..5f94341
--- /dev/null
+++ b/src/app/views/templates/_software.haml
@@ -0,0 +1,85 @@
+- content_for :scripts do
+ :javascript
+ $(document).ready(function() {
+ // FIXME: don't know, how to disable first ajax load.
+ // On ajax load, new data are only appended to existing content
+ // workaround is to delete existing content before load
+ $(".groups_to_select").remove();
+ $("#dashboard-tabs").tabs({
+ spinner: "Loading...",
+ load: function(event, ui) {
+ $("a.select_group").click(function(ev) {
+ $("#selected_packages").load($(ev.target).attr('href'),
loadCallback);
+ return false;
+ });
+ $("a.select_package").click(function(ev) {
+ $("#selected_packages").load($(ev.target).attr('href'),
loadCallback);
+ return false;
+ });
+ }
+ });
+ // when JS is enabled, hide the Dashboard content -- it'll be loaded
+ // by jquery UI tab using ajax
+ $("#dashboard-content").hide();
+ loadCallback();
+ });
+ function loadCallback() {
+ $("a.remove_group").click(function(ev) {
+ $("#selected_packages").load($(ev.target).attr('href'), loadCallback);
+ return false;
+ });
+ createTree();
+ };
+ function createTree() {
+ $("li.group").each(function() {
+ var group = $(this);
+ group.addClass("closed_folder");
+ $(".groupname", group).toggle(
+ function() {
+ group.removeClass("closed_folder");
+ group.addClass("opened_folder");
+ $("ul > li", group).removeClass("hidden");
+ }, function() {
+ group.removeClass("opened_folder");
+ group.addClass("closed_folder");
+ $("ul > li", group).addClass("hidden");
+ }
+ );
+ })
+ $("li.group > ul > li").addClass("hidden");
+ };
+ function get_repository(ev) {
+ var rep = $(ev.target).val();
+ $("#dashboard-tabs > ul > li > a").each(function(index) {
+ var link = $(this).data('load.tabs');
+ if (link.search(/repository=[^$&]*/) == -1) {
+ link = link + "&repository=" + rep;
+ } else {
+ link = link.replace(/repository=[^$&]*/, "repository="+rep);
+ }
+ $("#dashboard-tabs").tabs('url', index, link);
+ });
+ $("#dashboard-tabs").tabs('load', $("#dashboard-tabs").tabs('option',
'selected'));
+ };
+
+- menu = [ { :text => "Groups", :tab => "groups" }, |
+ { :text => "Packages", :tab => "packages" }, ] |
+#clear
+ %h3 Software
+ = hidden_field_tag 'xml[set_packages]', true
+ .pkglist_wrapper
+ .pkglist
+ #dashboard-tabs{ :class => "ui-tabs ui-widget ui-widget-content
ui-corner-all" }
+ %ul{ :class => "ui-tabs ui-widget ui-widget-content ui-corner-all
ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header" }
+ - menu.each do |item|
+ - selection_style = "ui-tabs-selected ui-state-active" if
item[:tab] == @selected_tab
+ %li{ :class => "#{selection_style} ui-state-default
ui-corner-top", :style => 'clear: none' }
+ = "<a href=\"#{url_for(:action => "software", :id =>
@image_descriptor, :tab => item[:tab])}\"><span>#{item[:text]}</span></a>"
+ %li{ :class => "select_repository"}
+ = select_tag("repository", (["<option value='all'
selected='selected'>All</option>"] + @repository_manager.repositories.map{|rep|
"<option value=\"#{rep.id}\">#{rep.name}</option>"}).join.html_safe, {:onchange
=> "get_repository(event)"})
+ - unless request.xhr?
+ = render :partial => @selected_tab
+ .pkglist{:style => "margin-left: 30px", :class => "left-pkglist"}
+ %div{:class => "ui-tabs ui-widget ui-widget-content ui-corner-all
ui-helper-reset ui-helper-clearfix ui-widget-header"}
+ Selected packages
+ = render :partial => 'selected_packages'
diff --git a/src/app/views/templates/new.haml b/src/app/views/templates/new.haml
index 85c97c6..6114b11 100644
--- a/src/app/views/templates/new.haml
+++ b/src/app/views/templates/new.haml
@@ -1,22 +1,11 @@
-= render :partial => "nav"
-
#image_descriptor_form{:class => 'dcloud_form'}
+ %h2 Template Builder - Basic Template
= error_messages_for 'image_descriptor'
-
- - form_for @image_descriptor, :url => {:action => controller.action_name,
:id => @image_descriptor} do
- %ul
- %li
- %label Name
- = text_field_tag 'xml[name]', @image_descriptor.xml.name
- .description Provide a unique name for template master. Users will see
this name when they choose this image to instantiate.
- %li
- %label Platform
- = select_tag("xml[platform]",
@image_descriptor.xml.platforms.map{|repid, rep| "<option value=\"#{repid}\"
selected=\"#{repid == @image_descriptor.xml.platform ? 'selected' :
''}\">#{rep['name']}</option>"})
- .description Choose the software operating system.
- %li
- %label Description
- = text_area_tag("xml[description]", @image_descriptor.xml.description,
:rows => 4)
- .description Provide a description of your template master. Be
descriptive to help users to identify the images created with this master.
- .submit
- = submit_tag "Cancel", :name => "cancel"
- = submit_tag "Next", :name => "next"
+ -form_for @image_descriptor, :url =>{:action => controller.action_name, :id
=> @image_descriptor} do
+ = render :partial => "basics"
+ = render :partial => "platform"
+ = render :partial => "services"
+ = render :partial => "software"
+ = render :partial => "scripting"
+ = render :partial => "image_formats"
+ = render :partial => "build_images"
diff --git a/src/app/views/templates/summary.haml
b/src/app/views/templates/summary.haml
index 18d286c..2134f61 100644
--- a/src/app/views/templates/summary.haml
+++ b/src/app/views/templates/summary.haml
@@ -17,8 +17,6 @@
);
});
-= render :partial => "nav"
-
#image_descriptor_form{:class => 'dcloud_form'}
= error_messages_for 'image_descriptor'
@@ -44,9 +42,6 @@
%ul{:class => 'main_panel'}
.image_build_panel
- %h3
- Images
- %input{:type => 'button', :class => "expand_target_list_button",
:value => "Build Images"}
#image_build_form
%ul
%li
--
1.7.2.3
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel