]> source.dussan.org Git - sonarqube.git/commitdiff
Quality Gates: some improvements of the rendering
authorStas Vilchik <vilchiks@gmail.com>
Fri, 28 Feb 2014 17:30:08 +0000 (18:30 +0100)
committerStas Vilchik <vilchiks@gmail.com>
Fri, 28 Feb 2014 17:30:08 +0000 (18:30 +0100)
30 files changed:
plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties
sonar-server/src/main/webapp/WEB-INF/app/views/issues/templates/_header.hbs.erb
sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/index.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/templates/_quality_gate_actions_template.hbs.erb
sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/templates/_quality_gate_detail_condition_template.hbs.erb
sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/templates/_quality_gate_detail_conditions_empty_template.hbs.erb [new file with mode: 0644]
sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/templates/_quality_gate_detail_header_template.hbs.erb
sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/templates/_quality_gate_edit_template.hbs.erb
sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/templates/_quality_gate_new_template.hbs.erb [deleted file]
sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/templates/_quality_gate_sidebar_list_item_template.hbs.erb
sonar-server/src/main/webapp/javascripts/quality-gate/router.coffee
sonar-server/src/main/webapp/javascripts/quality-gate/router.js
sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-detail-condition-view.coffee
sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-detail-condition-view.js
sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-detail-conditions-empty-view.coffee [new file with mode: 0644]
sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-detail-conditions-view.coffee
sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-detail-conditions-view.js
sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-detail-projects-view.coffee
sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-detail-projects-view.js
sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-edit-view.coffee
sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-edit-view.js
sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-new-view.coffee [deleted file]
sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-new-view.js [deleted file]
sonar-server/src/main/webapp/stylesheets/navigator.css
sonar-server/src/main/webapp/stylesheets/navigator/base.css
sonar-server/src/main/webapp/stylesheets/navigator/base.less
sonar-server/src/main/webapp/stylesheets/quality-gates.css
sonar-server/src/main/webapp/stylesheets/quality-gates.less
sonar-server/src/main/webapp/stylesheets/ui.css
sonar-server/src/main/webapp/stylesheets/ui.less

index b7df17c848540f32c07f8c06cc79fe0cba2a4b02..b5081cf1c548b1dd8b481c0cb070dc4bd5afbbc3 100644 (file)
@@ -1645,6 +1645,7 @@ quality_gates.add=Add Quality Gate
 quality_gates.conditions=Conditions
 quality_gates.projects=Projects
 quality_gates.add_condition=Add Condition
+quality_gates.no_conditions=No Conditions
 quality_gates.introduction=Only project measures are checked against thresholds. Modules, packages and classes are ignored.
 quality_gates.health_icons=Project health icons represent:
 quality_gates.projects_for_default=You must not select specific projects for the default quality gate
index bd8551e64f8e72e933901abc5262b460853d2b64..bf8043f5ae259121241fc6f5b9c19fac27ceada2 100644 (file)
@@ -1,7 +1,7 @@
 <script id="issues-header-template" type="text/x-handlebars-template">
   <h1 class="navigator-header-title">{{#if name}}{{name}}{{else}}<%= message ('issues') -%>{{/if}}</h1>
 
-    <div class="navigator-header-actions">
+    <div class="navigator-header-actions button-group">
       <button id="issues-new-search"><%= message ('issue_filter.new_search') -%></button>
 
       {{#if appState.canManageFilters}}
index 673ec7b1976360b1772ae25c06a074a3a1262834..b3f04ae1e0a002b53ba4b32132f60145cda3c4dd 100644 (file)
 
 <%= render :partial => '/quality_gates/templates/quality_gate_sidebar_list_item_template.hbs' -%>
 <%= render :partial => '/quality_gates/templates/quality_gate_actions_template.hbs' -%>
-<%= render :partial => '/quality_gates/templates/quality_gate_new_template.hbs' -%>
 <%= render :partial => '/quality_gates/templates/quality_gate_edit_template.hbs' -%>
 <%= render :partial => '/quality_gates/templates/quality_gate_detail_template.hbs' -%>
 <%= render :partial => '/quality_gates/templates/quality_gate_detail_header_template.hbs' -%>
 <%= render :partial => '/quality_gates/templates/quality_gate_detail_conditions_template.hbs' -%>
+<%= render :partial => '/quality_gates/templates/quality_gate_detail_conditions_empty_template.hbs' -%>
 <%= render :partial => '/quality_gates/templates/quality_gate_detail_condition_template.hbs' -%>
 <%= render :partial => '/quality_gates/templates/quality_gate_detail_projects_template.hbs' -%>
 
index 552d9e205733cde827e19fa344522329f3044e9d..7284e1d254513053125fdf66a7115208b2b3ee0d 100644 (file)
@@ -1,7 +1,7 @@
 <script id="quality-gate-actions-template" type="text/x-handlebars-template">
   <h1 class="navigator-header-title"><%= message('quality_gates.page') -%></h1>
 
-  <div class="navigator-header-actions">
+  <div class="navigator-header-actions button-group">
     <button id="quality-gate-add"><%= message('add_verb') -%></button>
   </div>
 </script>
index bf7f19f389bb72e9d057b45e58888c38b4cd1375..4b747169c6209c7d60506f8a419a255a96aa316e 100644 (file)
   </td>
   <td class="quality-gate-condition-actions" width="120px" nowrap>
     {{#if id}}
-      <button class="update-condition" disabled><%= message('update_verb') -%></button>
-      <a class="action link-red delete-condition"><%= message('delete') -%></a>
+      <div class="button-group">
+        <button class="update-condition" disabled><%= message('update_verb') -%></button>
+        <button class="button-red delete-condition"><%= message('delete') -%></button>
+      </div>
     {{else}}
-      <button class="add-condition"><%= message('add_verb') -%></button>
-      <a class="action cancel-add-condition"><%= message('cancel') -%></a>
+      <div class="button-group">
+        <button class="add-condition"><%= message('add_verb') -%></button>
+        <a class="action cancel-add-condition"><%= message('cancel') -%></a>
+      </div>
     {{/if}}
   </td>
 </script>
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/templates/_quality_gate_detail_conditions_empty_template.hbs.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/templates/_quality_gate_detail_conditions_empty_template.hbs.erb
new file mode 100644 (file)
index 0000000..29e5ecd
--- /dev/null
@@ -0,0 +1,5 @@
+<script id="quality-gate-detail-conditions-empty-template" type="text/x-handlebars-template">
+  <td colspan="6">
+    <%= message('quality_gates.no_conditions') -%>
+  </td>
+</script>
index 718a6de2ef436c4deacb2a49576dfc640f7cec67..87293b4146c1c1a07397ffcd4e9cbb28db5e0959 100644 (file)
@@ -1,13 +1,13 @@
 <script id="quality-gate-detail-header-template" type="text/x-handlebars-template">
   <h1 class="navigator-header-title">{{name}}</h1>
 
-  <div class="navigator-header-actions">
+  <div class="navigator-header-actions button-group">
     <button id="quality-gate-rename"><%= message('rename') -%></button>
     {{#if default}}
       <button id="quality-gate-unset-as-default"><%= message('unset_as_default') -%></button>
     {{else}}
       <button id="quality-gate-set-as-default"><%= message('set_as_default') -%></button>
     {{/if}}
-    <a id="quality-gate-delete" class="link-action link-red"><%= message('delete') -%></a>
+    <button id="quality-gate-delete" class="button-red"><%= message('delete') -%></button>
   </div>
 </script>
index 6ebe5db1a5a2bd541297e7c40d22617a1aa6e669..476885dc75d39dd9f38a880c3a360a9364253500 100644 (file)
@@ -1,22 +1,24 @@
 <script id="quality-gate-edit-template" type="text/x-handlebars-template">
-  <div class="modal-head">
-    <h2><%= message('quality_gates.add') -%></h2>
-  </div>
+  <form>
+    <div class="modal-head">
+      <h2><%= message('quality_gates.add') -%></h2>
+    </div>
 
-  <div class="modal-body">
-    <div class="modal-error"></div>
-    <div class="modal-field">
-      <label for="quality-gate-edit-name"><%= message('name') -%> <em class="mandatory">*</em></label>
-      <input id="quality-gate-edit-name" value="{{name}}" type="text" size="50" maxlength="100">
+    <div class="modal-body">
+      <div class="modal-error"></div>
+      <div class="modal-field">
+        <label for="quality-gate-edit-name"><%= message('name') -%> <em class="mandatory">*</em></label>
+        <input id="quality-gate-edit-name" value="{{name}}" type="text" size="50" maxlength="100">
+      </div>
     </div>
-  </div>
 
-  <div class="modal-foot">
-    {{#if id}}
-      <button id="quality-gate-save"><%= message('save') -%></button>
-    {{else}}
-      <button id="quality-gate-create"><%= message('create') -%></button>
-    {{/if}}
-    <a id="quality-gate-cancel-create" class="action"><%= message('cancel') -%></a>
-  </div>
+    <div class="modal-foot">
+      {{#if id}}
+        <button id="quality-gate-save"><%= message('save') -%></button>
+      {{else}}
+        <button id="quality-gate-create"><%= message('create') -%></button>
+      {{/if}}
+      <a id="quality-gate-cancel-create" class="action"><%= message('cancel') -%></a>
+    </div>
+  </form>
 </script>
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/templates/_quality_gate_new_template.hbs.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/quality_gates/templates/_quality_gate_new_template.hbs.erb
deleted file mode 100644 (file)
index 71b8863..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<script id="quality-gate-new-template" type="text/x-handlebars-template">
-  <div class="quality-gate-header">
-    <div class="quality-gate-header-rename">
-      <input id="quality-gate-renaming-input" type="text" value="">
-
-      <div class="navigator-header-actions">
-        <button id="quality-gate-save"><%= message('save') -%></button>
-        <button id="quality-gate-cancel-save"><%= message('cancel') -%></button>
-      </div>
-    </div>
-  </div>
-</script>
index eafcd7dfd26f03882c3b260504a4c443ed3961ba..06b6eed6d2ee3f779173c743adb306f4b717aaa2 100644 (file)
@@ -1,3 +1,3 @@
 <script id="quality-gate-sidebar-list-item-template" type="text/x-handlebars-template">
-  <div class="line">{{name}} {{#if default}}<span class="subtitle"><%= message('default') -%></span>{{/if}}</div>
+  <div class="line">{{name}} {{#if default}}<span class="subtitle">(<%= message('default') -%>)</span>{{/if}}</div>
 </script>
index 010c084bff85d86c35de0215da67f4fc33096a14..b42539c7373a339c1a79f10156c0f63d5bcb3121 100644 (file)
@@ -3,13 +3,11 @@ define [
   'quality-gate/models/quality-gate',
   'quality-gate/views/quality-gate-detail-view',
   'quality-gate/views/quality-gate-detail-header-view',
-  'quality-gate/views/quality-gate-new-view'
 ], (
   Backbone,
   QualityGate,
   QualityGateDetailView,
-  QualityGateDetailHeaderView,
-  QualityGateNewView
+  QualityGateDetailHeaderView
 ) ->
 
   class QualityGateRouter extends Backbone.Router
index 881ceb6c8b656acf671f0edcf7cbe8fc53f066f2..998123bce298bc9a4dd7f76938ef000577eefaa9 100644 (file)
@@ -3,7 +3,7 @@
   var __hasProp = {}.hasOwnProperty,
     __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
 
-  define(['backbone', 'quality-gate/models/quality-gate', 'quality-gate/views/quality-gate-detail-view', 'quality-gate/views/quality-gate-detail-header-view', 'quality-gate/views/quality-gate-new-view'], function(Backbone, QualityGate, QualityGateDetailView, QualityGateDetailHeaderView, QualityGateNewView) {
+  define(['backbone', 'quality-gate/models/quality-gate', 'quality-gate/views/quality-gate-detail-view', 'quality-gate/views/quality-gate-detail-header-view'], function(Backbone, QualityGate, QualityGateDetailView, QualityGateDetailHeaderView) {
     var QualityGateRouter, _ref;
     return QualityGateRouter = (function(_super) {
       __extends(QualityGateRouter, _super);
index 7467feaa6e59f2c54d8589948eb8b7ef41ffc624..db44b30614522d9374fe67244f6d15490cb8e2fb 100644 (file)
@@ -30,6 +30,7 @@ define [
       'click .delete-condition': 'deleteCondition'
       'click .add-condition': 'saveCondition'
       'click .cancel-add-condition': 'cancelAddCondition'
+      'keyup :input': 'enableUpdate'
       'change :input': 'enableUpdate'
 
 
index 5a15393ba6e4b0e36799d07ff7806f48666d044b..3a82a59b3e2e1dca2f1d41b62513fdbd634da79c 100644 (file)
@@ -37,6 +37,7 @@
         'click .delete-condition': 'deleteCondition',
         'click .add-condition': 'saveCondition',
         'click .cancel-add-condition': 'cancelAddCondition',
+        'keyup :input': 'enableUpdate',
         'change :input': 'enableUpdate'
       };
 
diff --git a/sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-detail-conditions-empty-view.coffee b/sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-detail-conditions-empty-view.coffee
new file mode 100644 (file)
index 0000000..35bad09
--- /dev/null
@@ -0,0 +1,11 @@
+define [
+  'backbone.marionette',
+  'handlebars',
+], (
+  Marionette,
+  Handlebars,
+) ->
+
+  class QualityGateDetailConditionsView extends Marionette.ItemView
+    tagName: 'tr'
+    template: Handlebars.compile jQuery('#quality-gate-detail-conditions-empty-template').html()
index 2e2c93884599d9753abdc39af3ebe624e9a1c2fa..cbd14813682d9bef8763fe1199744d2987d383d5 100644 (file)
@@ -2,17 +2,20 @@ define [
   'backbone.marionette',
   'handlebars',
   'quality-gate/models/condition',
-  'quality-gate/views/quality-gate-detail-condition-view'
+  'quality-gate/views/quality-gate-detail-condition-view',
+  'quality-gate/views/quality-gate-detail-conditions-empty-view'
 ], (
   Marionette,
   Handlebars,
   Condition,
-  QualityGateDetailConditionView
+  QualityGateDetailConditionView,
+  QualityGateDetailConditionsEmptyView
 ) ->
 
   class QualityGateDetailConditionsView extends Marionette.CompositeView
     template: Handlebars.compile jQuery('#quality-gate-detail-conditions-template').html()
     itemView: QualityGateDetailConditionView
+    emptyView: QualityGateDetailConditionsEmptyView
     itemViewContainer: '.quality-gate-conditions tbody'
 
 
index 91fbbdfefb4886f1f92d3952e3bd985ca36f9a18..eeb9d18fa5d7c27380bd5ebf5eb5f8b11e1b89b8 100644 (file)
@@ -3,7 +3,7 @@
   var __hasProp = {}.hasOwnProperty,
     __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
 
-  define(['backbone.marionette', 'handlebars', 'quality-gate/models/condition', 'quality-gate/views/quality-gate-detail-condition-view'], function(Marionette, Handlebars, Condition, QualityGateDetailConditionView) {
+  define(['backbone.marionette', 'handlebars', 'quality-gate/models/condition', 'quality-gate/views/quality-gate-detail-condition-view', 'quality-gate/views/quality-gate-detail-conditions-empty-view'], function(Marionette, Handlebars, Condition, QualityGateDetailConditionView, QualityGateDetailConditionsEmptyView) {
     var QualityGateDetailConditionsView, _ref;
     return QualityGateDetailConditionsView = (function(_super) {
       __extends(QualityGateDetailConditionsView, _super);
@@ -17,6 +17,8 @@
 
       QualityGateDetailConditionsView.prototype.itemView = QualityGateDetailConditionView;
 
+      QualityGateDetailConditionsView.prototype.emptyView = QualityGateDetailConditionsEmptyView;
+
       QualityGateDetailConditionsView.prototype.itemViewContainer = '.quality-gate-conditions tbody';
 
       QualityGateDetailConditionsView.prototype.ui = {
index 353074e6e3a2676bfa42666faea43c6660628d79..b0b9a63167e8dd8b530a2fb662fb6017dea53c52 100644 (file)
@@ -13,7 +13,6 @@ define [
 
     onRender: ->
       unless @model.get('default')
-        @$el.css 'max-width', 600
         new SelectList
           el: @$('#select-list-projects')
           width: '100%'
index ea37af52df2528558df3c1632bf08fa35585823a..88e40868d93c82a25e37ac2a5563205f84f0610f 100644 (file)
@@ -17,7 +17,6 @@
 
       QualityGateDetailProjectsView.prototype.onRender = function() {
         if (!this.model.get('default')) {
-          this.$el.css('max-width', 600);
           return new SelectList({
             el: this.$('#select-list-projects'),
             width: '100%',
index 34d94fef340df1b51286de1e35fb7e3b7cf930ef..72cf1b8b476cbfb6f6b942b82daac15d01726816 100644 (file)
@@ -16,8 +16,7 @@ define [
 
 
     events:
-      'click #quality-gate-create': 'createQualityGate'
-      'click #quality-gate-save': 'saveQualityGate'
+      'submit form': 'onSubmit'
       'click #quality-gate-cancel-create': 'hide'
 
 
@@ -51,6 +50,13 @@ define [
       .done => @hide()
 
 
+    onSubmit: (e) ->
+      e.preventDefault()
+      if @model.isNew()
+        @createQualityGate()
+      else
+        @saveQualityGate()
+
     createQualityGate: ->
       data = name: @ui.nameInput.val()
       @saveRequest('create', data).done (r) =>
index 6b4c397c3ce32f47ca20d248d663322679120a29..be300f07ac01e01526b1b180e18b1c3de9ae3401 100644 (file)
@@ -22,8 +22,7 @@
       };
 
       QualityGateEditView.prototype.events = {
-        'click #quality-gate-create': 'createQualityGate',
-        'click #quality-gate-save': 'saveQualityGate',
+        'submit form': 'onSubmit',
         'click #quality-gate-cancel-create': 'hide'
       };
 
         });
       };
 
+      QualityGateEditView.prototype.onSubmit = function(e) {
+        e.preventDefault();
+        if (this.model.isNew()) {
+          return this.createQualityGate();
+        } else {
+          return this.saveQualityGate();
+        }
+      };
+
       QualityGateEditView.prototype.createQualityGate = function() {
         var data,
           _this = this;
diff --git a/sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-new-view.coffee b/sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-new-view.coffee
deleted file mode 100644 (file)
index 681c63c..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-define [
-  'backbone.marionette',
-  'handlebars',
-], (
-  Marionette,
-  Handlebars,
-) ->
-
-  class QualityGateNewView extends Marionette.ItemView
-    className: 'quality-gate'
-    template: Handlebars.compile jQuery('#quality-gate-new-template').html()
-
-
-    ui:
-      input: '#quality-gate-renaming-input'
-      header: '.quality-gate-header'
-
-
-    events:
-      'click #quality-gate-save': 'save'
-      'click #quality-gate-cancel-save': 'cancel'
-
-
-    onDomRefresh: ->
-      @ui.input.focus()
-
-
-    save: ->
-      @showHeaderSpinner()
-      name = @ui.input.val()
-      jQuery.ajax
-        url: "#{baseUrl}/api/qualitygates/create"
-        type: 'POST'
-        data: name: name
-      .done (r) =>
-        @model.set r
-        @options.app.qualityGates.add @model
-        @options.app.router.navigate "show/#{@model.id}", trigger: true
-
-
-    cancel: ->
-      @options.app.openFirstQualityGate()
-
-
-    showHeaderSpinner: ->
-      @ui.header.addClass 'navigator-fetching'
-
-
-    hideHeaderSpinner: ->
-      @ui.header.removeClass 'navigator-fetching'
diff --git a/sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-new-view.js b/sonar-server/src/main/webapp/javascripts/quality-gate/views/quality-gate-new-view.js
deleted file mode 100644 (file)
index f6c1024..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-// Generated by CoffeeScript 1.6.3
-(function() {
-  var __hasProp = {}.hasOwnProperty,
-    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
-
-  define(['backbone.marionette', 'handlebars'], function(Marionette, Handlebars) {
-    var QualityGateNewView, _ref;
-    return QualityGateNewView = (function(_super) {
-      __extends(QualityGateNewView, _super);
-
-      function QualityGateNewView() {
-        _ref = QualityGateNewView.__super__.constructor.apply(this, arguments);
-        return _ref;
-      }
-
-      QualityGateNewView.prototype.className = 'quality-gate';
-
-      QualityGateNewView.prototype.template = Handlebars.compile(jQuery('#quality-gate-new-template').html());
-
-      QualityGateNewView.prototype.ui = {
-        input: '#quality-gate-renaming-input',
-        header: '.quality-gate-header'
-      };
-
-      QualityGateNewView.prototype.events = {
-        'click #quality-gate-save': 'save',
-        'click #quality-gate-cancel-save': 'cancel'
-      };
-
-      QualityGateNewView.prototype.onDomRefresh = function() {
-        return this.ui.input.focus();
-      };
-
-      QualityGateNewView.prototype.save = function() {
-        var name,
-          _this = this;
-        this.showHeaderSpinner();
-        name = this.ui.input.val();
-        return jQuery.ajax({
-          url: "" + baseUrl + "/api/qualitygates/create",
-          type: 'POST',
-          data: {
-            name: name
-          }
-        }).done(function(r) {
-          _this.model.set(r);
-          _this.options.app.qualityGates.add(_this.model);
-          return _this.options.app.router.navigate("show/" + _this.model.id, {
-            trigger: true
-          });
-        });
-      };
-
-      QualityGateNewView.prototype.cancel = function() {
-        return this.options.app.openFirstQualityGate();
-      };
-
-      QualityGateNewView.prototype.showHeaderSpinner = function() {
-        return this.ui.header.addClass('navigator-fetching');
-      };
-
-      QualityGateNewView.prototype.hideHeaderSpinner = function() {
-        return this.ui.header.removeClass('navigator-fetching');
-      };
-
-      return QualityGateNewView;
-
-    })(Marionette.ItemView);
-  });
-
-}).call(this);
index a341ca6b61596982424bff38e347664a1aca220c..7744da7d84d137b38e07831652cbf822f000d318 100644 (file)
   font-style: italic;
 }
 .navigator-header-actions {
-  display: inline-block;
-  vertical-align: middle;
   margin-left: 16px;
 }
-.navigator-header-actions > button {
-  position: relative;
-  z-index: 2;
-  display: inline-block;
-  vertical-align: middle;
-  margin: 0;
-  padding: 2px 8px;
-  font-size: 11px;
-  font-weight: normal;
-  cursor: pointer;
-}
-.navigator-header-actions > button:hover,
-.navigator-header-actions > button:focus {
-  z-index: 3;
-}
-.navigator-header-actions > button + button {
-  margin-left: -1px;
-}
 .navigator-header-actions > a {
   vertical-align: middle;
   margin: 0 8px;
index 4e062c3ebe6bfd265b0934b183ecb5f46028a6a3..d0fdac56c55f64caabdcff641729efbc428f076d 100644 (file)
   font-style: italic;
 }
 .navigator-header-actions {
-  display: inline-block;
-  vertical-align: middle;
   margin-left: 16px;
 }
-.navigator-header-actions > button {
-  position: relative;
-  z-index: 2;
-  display: inline-block;
-  vertical-align: middle;
-  margin: 0;
-  padding: 2px 8px;
-  font-size: 11px;
-  font-weight: normal;
-  cursor: pointer;
-}
-.navigator-header-actions > button:hover,
-.navigator-header-actions > button:focus {
-  z-index: 3;
-}
-.navigator-header-actions > button + button {
-  margin-left: -1px;
-}
 .navigator-header-actions > a {
   vertical-align: middle;
   margin: 0 8px;
index 2456f8a51a0fc722879f1eed7d36410ea0513677..df11c997f481429230673d84860f5b6afb869634 100644 (file)
 }
 
 .navigator-header-actions {
-  display: inline-block;
-  vertical-align: middle;
   margin-left: 16px;
 
-  & > button {
-    position: relative;
-    z-index: 2;
-    display: inline-block;
-    vertical-align: middle;
-    margin: 0;
-    padding: 2px 8px;
-    font-size: @smallFontSize;
-    font-weight: normal;
-    cursor: pointer;
-
-    &:hover, &:focus {
-      z-index: 3;
-    }
-  }
-
-  & > button + button {
-    margin-left: -1px;
-  }
-
   & > a {
     vertical-align: middle;
     margin: 0 8px;
index 303502edf916ebae1575963efd1116bcbd19e3f0..6110fbb5b0b8148069b58661014b03190889c1b9 100644 (file)
   font-style: italic;
 }
 .navigator-header-actions {
-  display: inline-block;
-  vertical-align: middle;
   margin-left: 16px;
 }
-.navigator-header-actions > button {
-  position: relative;
-  z-index: 2;
-  display: inline-block;
-  vertical-align: middle;
-  margin: 0;
-  padding: 2px 8px;
-  font-size: 11px;
-  font-weight: normal;
-  cursor: pointer;
-}
-.navigator-header-actions > button:hover,
-.navigator-header-actions > button:focus {
-  z-index: 3;
-}
-.navigator-header-actions > button + button {
-  margin-left: -1px;
-}
 .navigator-header-actions > a {
   vertical-align: middle;
   margin: 0 8px;
   padding: 0 10px;
   border-right-color: #cdcdcd;
 }
+.quality-gates-navigator .navigator-actions .navigator-header-title {
+  font-size: 13px;
+  font-weight: bold;
+  text-transform: uppercase;
+}
 .quality-gates-navigator .navigator-results {
   top: 67px;
 }
+.quality-gates-navigator .navigator-results .subtitle {
+  text-transform: lowercase;
+}
 .quality-gates-navigator .navigator-details {
   top: 67px;
   padding: 10px;
 .quality-gate-section-name {
   margin-bottom: 10px;
   font-weight: bold;
+  text-transform: uppercase;
 }
 .quality-gate-introduction {
   margin-bottom: 20px;
index 5bd981b339219f54352800b8ca70d90e977f4754..c16f58b053b6528d0b1e3e6a9b32a1ee1e2f0e92 100644 (file)
     height: @navigatorHeaderHeight;
     padding: 0 @navigatorPadding;
     border-right-color: @navigatorBorderColor;
+
+    .navigator-header-title {
+      font-size: 13px;
+      font-weight: bold;
+      text-transform: uppercase;
+    }
   }
 
   .navigator-results {
     top: @navigatorTopOffset + @navigatorHeaderHeight;
+
+    .subtitle {
+      text-transform: lowercase;
+    }
   }
 
   .navigator-details {
@@ -42,6 +52,7 @@
 .quality-gate-section-name {
   margin-bottom: @navigatorPadding;
   font-weight: bold;
+  text-transform: uppercase;
 }
 
 
index 8581c07bfd5b3cb31fd296e89165160de30e4554..14ff2e2fc53335b4486d7da59047f35cfeb331c5 100644 (file)
@@ -107,3 +107,42 @@ input[type=button][disabled]:focus {
   background: #ebebeb;
   cursor: default;
 }
+.button-red:hover,
+.button-red:focus {
+  border-color: #900;
+  background: #cc0000;
+  color: #fff;
+}
+.button-red:active {
+  border-color: #900;
+  background: #ff0000;
+}
+.button-group {
+  display: inline-block;
+  vertical-align: middle;
+  font-size: 0;
+  white-space: nowrap;
+}
+.button-group > button {
+  position: relative;
+  z-index: 2;
+  display: inline-block;
+  vertical-align: middle;
+  margin: 0;
+  padding: 2px 8px;
+  font-size: 11px;
+  font-weight: normal;
+  cursor: pointer;
+}
+.button-group > button:hover,
+.button-group > button:focus {
+  z-index: 3;
+}
+.button-group > button + button {
+  margin-left: -1px;
+}
+.button-group > a {
+  vertical-align: middle;
+  margin: 0 8px;
+  font-size: 11px;
+}
index 5dc200c871ebc1d7aaca525005f0d4c860b33954..6627c09b25be2c903e65bcd9827c7daf8e350870 100644 (file)
@@ -81,3 +81,49 @@ input[type=button] {
     cursor: default;
   }
 }
+
+.button-red {
+  &:hover, &:focus {
+    border-color: #900;
+    background: lighten(#900, 10%);
+    color: #fff;
+  }
+
+  &:active {
+    border-color: #900;
+    background: lighten(#900, 20%);
+  }
+}
+
+.button-group {
+  display: inline-block;
+  vertical-align: middle;
+  font-size: 0;
+  white-space: nowrap;
+
+  & > button {
+    position: relative;
+    z-index: 2;
+    display: inline-block;
+    vertical-align: middle;
+    margin: 0;
+    padding: 2px 8px;
+    font-size: @smallFontSize;
+    font-weight: normal;
+    cursor: pointer;
+
+    &:hover, &:focus {
+      z-index: 3;
+    }
+  }
+
+  & > button + button {
+    margin-left: -1px;
+  }
+
+  & > a {
+    vertical-align: middle;
+    margin: 0 8px;
+    font-size: @smallFontSize;
+  }
+}