diff --git a/tuskar_boxes/overview/views.py b/tuskar_boxes/overview/views.py index e259b0a..d7f30f2 100644 --- a/tuskar_boxes/overview/views.py +++ b/tuskar_boxes/overview/views.py @@ -149,6 +149,11 @@ class IndexView(views.IndexView): if field: field.initial = 0 free_roles.append(role) + # For now, role is valid if it has image. + if role['role'].image: + role['is_valid'] = True + else: + role['is_valid'] = False data['free_roles'] = free_roles flavor_data = list( _flavor_data(self.request, flavors, flavor_roles)) diff --git a/tuskar_boxes/static/tuskar_boxes/js/tuskar.boxes.js b/tuskar_boxes/static/tuskar_boxes/js/tuskar.boxes.js index d0e7291..b769a7f 100644 --- a/tuskar_boxes/static/tuskar_boxes/js/tuskar.boxes.js +++ b/tuskar_boxes/static/tuskar_boxes/js/tuskar.boxes.js @@ -64,7 +64,7 @@ tuskar.boxes = (function () { // Only activate on a page that has the right classes. return; } - $('div.boxes-role').draggable({ + $('div.boxes-role:not(.boxes-role-invalid)').draggable({ revert: 'invalid', helper: 'clone', zIndex: 1000, diff --git a/tuskar_boxes/static/tuskar_boxes/scss/tuskar_boxes.scss b/tuskar_boxes/static/tuskar_boxes/scss/tuskar_boxes.scss index 1cc17ad..611b3aa 100644 --- a/tuskar_boxes/static/tuskar_boxes/scss/tuskar_boxes.scss +++ b/tuskar_boxes/static/tuskar_boxes/scss/tuskar_boxes.scss @@ -91,6 +91,11 @@ .deploy-role-status .boxes-role { cursor: default; } +.boxes-role-invalid { + border: 1px solid #999; + background: #eee; + color: #666; +} .boxes-role-controller { background-color: #fcaf3e; border-color: #f57900; diff --git a/tuskar_boxes/templates/tuskar_boxes/overview/_role_info.html b/tuskar_boxes/templates/tuskar_boxes/overview/_role_info.html index f5ab702..0fd75a0 100644 --- a/tuskar_boxes/templates/tuskar_boxes/overview/_role_info.html +++ b/tuskar_boxes/templates/tuskar_boxes/overview/_role_info.html @@ -3,8 +3,9 @@ {% load url from future %} {% load form_helpers %}