From a2a5fe4db60846908019a965f40bf57ebe98547c Mon Sep 17 00:00:00 2001
From: Radomir Dopieralski <openstack@sheep.art.pl>
Date: Thu, 18 Dec 2014 09:21:13 +0100
Subject: [PATCH] Fix alignment of the edit role icon in the plan edit view

* Aligment done with grid, not pull-right
* Correct color for the icon
* Showing/hiding done with CSS not JS
* Repeated part of the template moved to an include

Change-Id: I3e1c81b885f9b0df11d7826d8c26dcf24d622e01
---
 .../static/tuskar_boxes/js/tuskar.boxes.js    |  2 --
 .../tuskar_boxes/scss/tuskar_boxes.scss       | 33 ++++++++++++-------
 .../tuskar_boxes/overview/_role_info.html     | 26 +++++++++++++++
 .../overview/role_nodes_edit.html             | 25 ++------------
 4 files changed, 49 insertions(+), 37 deletions(-)
 create mode 100644 tuskar_boxes/templates/tuskar_boxes/overview/_role_info.html

diff --git a/tuskar_boxes/static/tuskar_boxes/js/tuskar.boxes.js b/tuskar_boxes/static/tuskar_boxes/js/tuskar.boxes.js
index c7a4228..5b8fc52 100644
--- a/tuskar_boxes/static/tuskar_boxes/js/tuskar.boxes.js
+++ b/tuskar_boxes/static/tuskar_boxes/js/tuskar.boxes.js
@@ -82,7 +82,6 @@ tuskar.boxes = (function () {
           ui.draggable.find('input.boxes-flavor'
               ).val($(this).closest('.boxes-flavor').data('flavor'));
           $count.trigger('change');
-          ui.draggable.find('a[name^=role-edit]').removeClass('hidden');
           window.setTimeout(update_boxes, 0);
         }
     });
@@ -95,7 +94,6 @@ tuskar.boxes = (function () {
           ui.draggable.appendTo(this);
           ui.draggable.find('input.boxes-flavor').val('');
           ui.draggable.find('input.number-picker').trigger('change').val(0);
-          ui.draggable.find('a[name^=role-edit]').addClass('hidden');
           window.setTimeout(update_boxes, 0);
         }
     });
diff --git a/tuskar_boxes/static/tuskar_boxes/scss/tuskar_boxes.scss b/tuskar_boxes/static/tuskar_boxes/scss/tuskar_boxes.scss
index 6a3750a..ba9ebd2 100644
--- a/tuskar_boxes/static/tuskar_boxes/scss/tuskar_boxes.scss
+++ b/tuskar_boxes/static/tuskar_boxes/scss/tuskar_boxes.scss
@@ -38,6 +38,26 @@
     min-width: 120px;
     display: inline-block;
     padding: 4px 0 0 4px;
+    .boxes-role {
+        display: inline-block;
+        text-align: center;
+        width: 120px;
+        margin: 0 4px 4px 0;
+        border: 1px solid #999;
+        background: #eee;
+        color: #666;
+        .deploy-role-icon, .deploy-role-count, .form-control {
+            display: none;
+        }
+        .deploy-role-label {
+            display: block;
+            width: 100%;
+            .deployment-roles-label {
+                margin: 0;
+                font-weight: normal;
+            }
+        }
+    }
 }
 .boxes-role {
     opacity: 0.75;
@@ -53,18 +73,6 @@
 .deploy-role-status .boxes-role {
     cursor: default;
 }
-.boxes-available-roles .boxes-role {
-    display: inline-block;
-    text-align: center;
-    width: 120px;
-    margin: 0 4px 4px 0;
-    border: 1px solid #999;
-    background: #eee;
-    color: #666;
-}
-.boxes-available-roles .boxes-role .form-control {
-    display: none;
-}
 .boxes-role-controller {
     background-color: #fcaf3e;
     border-color: #f57900;
@@ -88,6 +96,7 @@
 .boxes-role .number_picker {
   border-color: inherit;
 }
+.boxes-role .deploy-role-icon a,
 .boxes-role .number_picker,
 .boxes-role .number_picker a {
   color: inherit;
diff --git a/tuskar_boxes/templates/tuskar_boxes/overview/_role_info.html b/tuskar_boxes/templates/tuskar_boxes/overview/_role_info.html
new file mode 100644
index 0000000..efe6aed
--- /dev/null
+++ b/tuskar_boxes/templates/tuskar_boxes/overview/_role_info.html
@@ -0,0 +1,26 @@
+{% spaceless %}
+{% load i18n %}
+{% load url from future %}
+{% load form_helpers %}
+<div
+  class="boxes-role-{{ role.name|slugify }} boxes-role"
+  data-name="{{ role.name|slugify }}"
+>
+  <div class="row">
+    <div class="col-xs-3 deploy-role-count">
+      {{ role.field|add_bootstrap_class }}
+      {{ role.flavor_field|add_bootstrap_class }}
+    </div>
+    <div class="col-xs-6 deploy-role-label">
+      <div class="deployment-roles-label">{{ role.name|title }}</div>
+    </div>
+    <div class="col-xs-3 deploy-role-icon">
+      <a name="role-edit-{{role.name|slugify}}"
+      href="{% url 'horizon:infrastructure:roles:update' role_id=role.id %}"
+      class="btn">
+        <b class="fa fa-lg fa-fw fa-pencil"></b>
+      </a>
+    </div>
+  </div>
+</div>
+{% endspaceless %}
diff --git a/tuskar_boxes/templates/tuskar_boxes/overview/role_nodes_edit.html b/tuskar_boxes/templates/tuskar_boxes/overview/role_nodes_edit.html
index 22ab9fd..29869d3 100644
--- a/tuskar_boxes/templates/tuskar_boxes/overview/role_nodes_edit.html
+++ b/tuskar_boxes/templates/tuskar_boxes/overview/role_nodes_edit.html
@@ -8,18 +8,7 @@
 
 <div class="boxes-available-roles">
 {% for role in free_roles %}{% spaceless %}
-    <div class="boxes-role-{{ role.name|slugify }} boxes-role" data-name="{{ role.name|slugify }}">
-        {{ role.field|add_bootstrap_class }}
-        {{ role.flavor_field|add_bootstrap_class }}
-        {{ role.name|title }}
-      <a
-        name="role-edit-{{role.name|slugify}}"
-        href="{% url 'horizon:infrastructure:roles:update' role_id=role.id %}"
-        class="btn pull-right hidden">
-        <b class="fa fa-lg fa-fw fa-pencil"></b>
-      </a>
-
-    </div>
+  {% include "tuskar_boxes/overview/_role_info.html" with role=role %}
 {% endspaceless %}{% endfor %}
 </div>
 
@@ -51,17 +40,7 @@
         <div class="col-xs-5">
             <div class="boxes-drop-roles">
             {% for role in flavor.roles %}{% spaceless %}
-                <div class="boxes-role-{{ role.name|slugify }} boxes-role" data-name="{{ role.name|slugify }}">
-                    {{ role.field|add_bootstrap_class }}
-                    {{ role.flavor_field|add_bootstrap_class }}
-                    {{ role.name|title }}
-                  <a
-                    name="role-edit-{{role.name|slugify}}"
-                    href="{% url 'horizon:infrastructure:roles:update' role_id=role.id %}"
-                    class="btn pull-right">
-                    <b class="fa fa-lg fa-fw fa-pencil"></b>
-                  </a>
-                </div>
+              {% include "tuskar_boxes/overview/_role_info.html" with role=role %}
             {% endspaceless %}{% endfor %}
             </div>
             <div class="btn-group boxes-drop-group">