From c1a42b69a06960fcdc1e114e8bcf15c55d934c71 Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Thu, 13 Mar 2014 12:51:44 +0600 Subject: [PATCH] SONAR-5134 Display the list of found rules on a left side bar --- .../_coding_rules_actions_template.hbs.erb | 13 +++++ .../templates/_coding_rules_layout.hbs.erb | 2 +- .../_coding_rules_list_item_template.hbs.erb | 9 ++-- sonar-server/src/main/webapp/fonts/sonar.eot | Bin 7840 -> 8580 bytes sonar-server/src/main/webapp/fonts/sonar.svg | 2 + sonar-server/src/main/webapp/fonts/sonar.ttf | Bin 7684 -> 8424 bytes sonar-server/src/main/webapp/fonts/sonar.woff | Bin 8504 -> 9340 bytes .../javascripts/coding-rules/app.coffee | 1 + .../webapp/javascripts/coding-rules/app.js | 6 ++- .../javascripts/coding-rules/mockjax.coffee | 21 ++++++-- .../javascripts/coding-rules/mockjax.js | 26 +++++++--- .../coding-rules/views/actions-view.coffee | 36 +++++++++++++ .../coding-rules/views/actions-view.js | 48 +++++++++++++++++- .../views/coding-rules-list-item-view.coffee | 4 +- .../views/coding-rules-list-item-view.js | 3 +- .../quality-profile-filter-view.coffee | 13 +++++ .../filters/quality-profile-filter-view.js | 18 +++++++ .../src/main/webapp/stylesheets/icons.css | 8 +++ .../src/main/webapp/stylesheets/icons.less | 8 +++ .../src/main/webapp/stylesheets/navigator.css | 24 ++++----- .../webapp/stylesheets/navigator/base.css | 24 ++++----- .../webapp/stylesheets/navigator/base.less | 31 +++++------ 22 files changed, 236 insertions(+), 61 deletions(-) diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/coding_rules/templates/_coding_rules_actions_template.hbs.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/coding_rules/templates/_coding_rules_actions_template.hbs.erb index 3cea3eb051c..ff660ae4a24 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/coding_rules/templates/_coding_rules_actions_template.hbs.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/coding_rules/templates/_coding_rules_actions_template.hbs.erb @@ -1,4 +1,17 @@ diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/coding_rules/templates/_coding_rules_list_item_template.hbs.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/coding_rules/templates/_coding_rules_list_item_template.hbs.erb index cdd992740be..df21c196d5f 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/coding_rules/templates/_coding_rules_list_item_template.hbs.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/coding_rules/templates/_coding_rules_list_item_template.hbs.erb @@ -1,7 +1,10 @@ diff --git a/sonar-server/src/main/webapp/fonts/sonar.eot b/sonar-server/src/main/webapp/fonts/sonar.eot index 38a3bbfe0727ac7ddb5799d5be519e1c19404903..2197934d123ab14443143a0bbcd3432ecc829a1d 100755 GIT binary patch delta 1079 zcmaJ=Pe>GD6o23B%=gVUqu;JNyS6*E>pHV*DN)+)7HF7>|EQ1t)1*}+4~4;Y zFp7x6rl3QI@YJD0WLXe(=@JFiA&9b@9XzB=P#whG?agW~NHiZG@BM!7_r3S#eKYr( zCic;ZDuDU$Bu$9TZx3}&Hebj*8kuMUAUXg%7)YHRMe9NQ8m&BV`uxdUxMddc2LOFy zus?Nz{5}u`*xZBh#2^x~BGw_khS(TPkDWU+3^x!zM11A+$nn&W=Xf_jXcywPbn4tF z)ROIpFCq>Pr_vkyU-fRAN8%n9iH(k&9RnAJApF|uA>$kGpc{cOh#&xgur1oEt=SRV zu)dM1-DvIIcAI_J?zNBFm+VhJD)ZTV9!P%9Bl0X?;){HNf9CJ_Oa6jC=eKz)XPBQ@ zdxZ+CTacVR-7P$ktpz2RDc33(Wic9yHj$mlgg@!?`?R=2##nTfO!^al$@NN7P)ch` zsi-v9a+<}Q>y+gg@6K41nUqn@TjBTlOLeGl-Ar>OxDX$*4pKVWPX*EmHJE z$|j3$F?=gZnTYX~Rtri-b6-%(kd-JyX(2AUGgi?r#&0@3I|UdmrpgVI*)=*>jh&)` ziL#K+TG4=xAfOwjCsb7L<}PksHxeSzU$sl zswib@)#X!7iFk*$DP$PIpuduFMR8Sb(Xw?oN=zYq+@Wm=X+ED8GIIM%Wm#@fOE_0c zdL%{R}~aUs}xn`rK-9?;Q-U3qI>o9+^eNyyzv((qVwm#`*v~YueBQWB#BsK zdOI<#$9i9#bWnOm>zK-}vnBbeJK(!)nH_D<~rY6+yB~zs>c$nahOz+v$NB#g@ C1i?Q5 delta 343 zcmZp1USP|%K#qZdMQ$RS8H=8`&8>+JHT8!KCck1}V3c8CV3?DhSX=<41%Uh=K$;^x zr!sA=T-`$;{{RDnC!#3!uOrpe5=B`Nbs+ z%s?py*(Z}j7^_7)fJ`}{gP0lk7#JB8KCpb?`5-#^1*76*UM4yI>-=Z<_weuL-^o9j z--(}fvK^E1=2WH)9Gma*N(;&;S#UJP^V@u7;AR1t$Z+01x*kSP7Lhk+RG91|?>>39 ze6$hE3Dy;CT5QwU)!4UjsByG#*>R + + diff --git a/sonar-server/src/main/webapp/fonts/sonar.ttf b/sonar-server/src/main/webapp/fonts/sonar.ttf index a5c8be5f11a6372ce83e1dc98cd35d1204dee3f4..21baa983b02bbc43d9739694bb365a13dbd89393 100755 GIT binary patch delta 1046 zcmaJ=KTH!*7=N$5d+(0B_FBr_mEK89d)I;xqCl?>Fi22=sL_N$CsPoqgi;I)7=}8K zXoykqG;wf1CI<%s36L0dU?C3b;Gp8>!l0ysIuNLSSN=31#(TMZ-|zSR-tWEp-o2@| zjgt=|`Gwq6J3?4T2)!6gkBvg~0bYa14G!PDR*ZD41O9-JK9w0rU&X)A#SyCMg}Rji zf)kiVz;^)~ne6z)jS+Mo@I2rxYq5&3=XTC(hupg z^iFy$y^>x^kEKqDf(f>t;h;T_`Nd_tz}XiCEgz7pD4_|Gh_~a`l%=K=RgsepnV|7K zGNoGkwEZttBjy-kvK3u;4$4j5HT?+ zVKK&(;bS~QAY%xfDW~P~qd1`q)OWX9Qc_a<0#XVrODIT7b%xK|<-A;f=45s0*P$6?GchfTK=h z<4I_3OTHOSmUU=KV!%5i7TwKvn{Ty%L{(av;UHi*NM1HeAHfnsmcuo&;_jx@H+d;) z7@<&I-O=n*zQQXAm16Df>+M#uOFj}d3{6vmR1yStuwLG2gjRxu>*H~`J}fJW95#w) zy&T7Nh#pB2J-w_TNcefBhx2#({I!B8N?uW{5F~^aGZngD&wg9ox+1mxLIUGl4fOsD zGqfM=SuKU5_9yKOHtnF^XR+tm71BsWdXH{#(|m}Z<~M{n;jOSKR*IJR-81LyfXNu% TC~iWWV}x9AR|1P~^i%jRlC7-= delta 334 zcmaFi*kUt5q5hD;?=- zn8Nt%cK`!}bPZ76ECVRO!OfxtKz>6`esW@@MbIM#2AK#T z-zhh-qJTk@(E!Mw1LP~@CFV+|9*)#|0TkE+v_!oizqo{f87Rdd`()ydYS9iLOAhEB zW(Gb6Mh1lsEFXA2h)(ulRGeJMC?|ZK{|x^g{@wgL`6u%`@v{O|F;3pdC^7i}Bm3r) zj2k#MJMu~k$|zZIG{y7Vd}ZKf0U6A2-afh>Mo+GgGiOwoyg|-=@_)H#BbF1aE7-Ky zrm?HBZ{twoXyLNsO5^I{TE}&XyMxD$=N?cSBM>Vv>M?MDj9_2_+9$kuvAioI0F@0> Axc~qF diff --git a/sonar-server/src/main/webapp/fonts/sonar.woff b/sonar-server/src/main/webapp/fonts/sonar.woff index 380f913c1310b285ee06136f9a106f5c4abe71fe..27ded4b018c6c5b5823dadbe0a8f47afb70bfdc5 100755 GIT binary patch delta 1283 zcmY+EZD?C%6vv;NCGNUxz1>Ty-CXl(>xZJHE0)5LTt8@}t_m>7vywFaF zvjZE3^sLL(^}IXm4Ps5j^L0JH3M5|gdBa$9b>o@e$a?=-?|WG5$McJNa{s>G?8hS3 zCh+Xhled~%{lg;{u~x#ftmlOz=LsG5UPPd~6$?)o=^7;Gy~Ag*hGMuDJ-<8k{DWX1 zJc69lGY|S~O~PR;yZ7RiJc$=a=RV?QJ)GOLbdCAA!JX~xk>0lU4t9fkbBBYt*dCMH zV{O>Y?Kvb2)sO9cd*7A)cMp7T6B|1lCmZh^JaF)xL-!AV&~$fY(DWxCD+kJRHt<g?JH4JXEly zq%IaPifU;cRDxn08%EU#g!sDhYnAIZ2*#qJaUN=ZoU7=+o%MHiZhhN^3}a0dza=~y zE5cPM<`!l#3hXjmhJ~rw@wwP|ZVaM)u z)v^3&KB8V=K{ZGNa14$F+$Z>Hd0I(89O5*Qo65;5~>^!YC--Cim*tRn%NR7s)amXQ0LWoHqY`j3wcoG9P;QCO!9S) z)bh*hW9xG(Lst9##!vAxbP)$J6BFTxLo;i;HJj$rJWOqJcHv#?(t5SGv{Tw?ZCd;J z@2A&lYiopC`=j10)PzUEL*Xys7vTrtTj3kwwvZQkgq>uE@h9~ZYjg5ByO~++!ZWYD sai{x?aP%KyHRC`+e(W>9zjueOIsgCw delta 421 zcmXw#O-MpP5P)aX!oS}7`?Tcgdm2PPSQu0XDG<@fgMwZnC?6%MqzMXnvr}}ny>{%< zDZxuor|eP$9fP_?SSKNZpvY!}7QWe?kJ({&zL(Cz;%*`uO{CKa0A(HwfJ^QIVTw;| zOd9Hv9YC_*{ydE(Qd2QFJH+VN^}v-M>sm8c05qR;KS+*UAWSo8thRdB6-B5P;y6v|Urz!LAjBy(%8t1HGe{ z^n#vKM#HoptN0MT69h=F2NZAMivS)&@xVF_eSlGm0^ojewf?`eZQmS`*|9Ii-hB&1 JZUz0z @codingRules = new Backbone.Collection + @codingRules.sorting = sort: 'CREATION_DATE', asc: false # Construct status bar diff --git a/sonar-server/src/main/webapp/javascripts/coding-rules/app.js b/sonar-server/src/main/webapp/javascripts/coding-rules/app.js index d24f093b716..ff1c02cbb00 100644 --- a/sonar-server/src/main/webapp/javascripts/coding-rules/app.js +++ b/sonar-server/src/main/webapp/javascripts/coding-rules/app.js @@ -125,7 +125,11 @@ return this.layout.headerRegion.show(this.codingRulesHeaderView); }); App.addInitializer(function() { - return this.codingRules = new Backbone.Collection; + this.codingRules = new Backbone.Collection; + return this.codingRules.sorting = { + sort: 'CREATION_DATE', + asc: false + }; }); App.addInitializer(function() { this.codingRulesActionsView = new CodingRulesActionsView({ diff --git a/sonar-server/src/main/webapp/javascripts/coding-rules/mockjax.coffee b/sonar-server/src/main/webapp/javascripts/coding-rules/mockjax.coffee index 7f1533dc29c..72f71095b65 100644 --- a/sonar-server/src/main/webapp/javascripts/coding-rules/mockjax.coffee +++ b/sonar-server/src/main/webapp/javascripts/coding-rules/mockjax.coffee @@ -55,13 +55,15 @@ define ['jquery.mockjax'], -> 'severity.MINOR': 'Minor' 'severity.INFO': 'Info' - 'coding_rules.page': 'Coding Rules' + 'coding_rules.activate_quality_profile': 'Activate Quality Profile' + 'coding_rules.deactivate_quality_profile': 'Deactivate' + 'coding_rules.found': 'Found' 'coding_rules.new_search': 'New Search' 'coding_rules.no_results': 'No Coding Rules' - 'coding_rules.found': 'Found' + 'coding_rules.order': 'Order' + 'coding_rules.ordered_by': 'Ordered By' + 'coding_rules.page': 'Coding Rules' 'coding_rules.quality_profiles': 'Quality Profiles' - 'coding_rules.activate_quality_profile': 'Activate Quality Profile' - 'coding_rules.deactivate_quality_profile': 'Deactivate' 'coding_rules.filters.availableSince': 'Available Since' 'coding_rules.filters.description': 'Description' @@ -81,6 +83,9 @@ define ['jquery.mockjax'], -> 'coding_rules.filters.status': 'Status' 'coding_rules.filters.tag': 'Tag' + 'coding_rules.sort.creation_date': 'Creation Date' + 'coding_rules.sort.name': 'Name' + # GET /api/codingrules/search jQuery.mockjax @@ -185,3 +190,11 @@ define ['jquery.mockjax'], -> { id: 'qp3', text: 'Quality Profile 3', parent: null }, ] + + # GET /api/qualityprofiles/show + jQuery.mockjax + url: "#{baseUrl}/api/qualityprofiles/show" + responseText: JSON.stringify + qualityprofile: + id: 'sonarway', text: 'Sonar Way', parent: null + diff --git a/sonar-server/src/main/webapp/javascripts/coding-rules/mockjax.js b/sonar-server/src/main/webapp/javascripts/coding-rules/mockjax.js index c0b195ad61c..6c65ea7c283 100644 --- a/sonar-server/src/main/webapp/javascripts/coding-rules/mockjax.js +++ b/sonar-server/src/main/webapp/javascripts/coding-rules/mockjax.js @@ -63,13 +63,15 @@ 'severity.MAJOR': 'Major', 'severity.MINOR': 'Minor', 'severity.INFO': 'Info', - 'coding_rules.page': 'Coding Rules', + 'coding_rules.activate_quality_profile': 'Activate Quality Profile', + 'coding_rules.deactivate_quality_profile': 'Deactivate', + 'coding_rules.found': 'Found', 'coding_rules.new_search': 'New Search', 'coding_rules.no_results': 'No Coding Rules', - 'coding_rules.found': 'Found', + 'coding_rules.order': 'Order', + 'coding_rules.ordered_by': 'Ordered By', + 'coding_rules.page': 'Coding Rules', 'coding_rules.quality_profiles': 'Quality Profiles', - 'coding_rules.activate_quality_profile': 'Activate Quality Profile', - 'coding_rules.deactivate_quality_profile': 'Deactivate', 'coding_rules.filters.availableSince': 'Available Since', 'coding_rules.filters.description': 'Description', 'coding_rules.filters.in_quality_profile': 'In Quality Profile', @@ -86,7 +88,9 @@ 'coding_rules.filters.repository': 'Repository', 'coding_rules.filters.severity': 'Severity', 'coding_rules.filters.status': 'Status', - 'coding_rules.filters.tag': 'Tag' + 'coding_rules.filters.tag': 'Tag', + 'coding_rules.sort.creation_date': 'Creation Date', + 'coding_rules.sort.name': 'Name' } }) }); @@ -157,7 +161,7 @@ } }) }); - return jQuery.mockjax({ + jQuery.mockjax({ url: "" + baseUrl + "/api/qualityprofiles/list", responseText: JSON.stringify({ more: false, @@ -182,6 +186,16 @@ ] }) }); + return jQuery.mockjax({ + url: "" + baseUrl + "/api/qualityprofiles/show", + responseText: JSON.stringify({ + qualityprofile: { + id: 'sonarway', + text: 'Sonar Way', + parent: null + } + }) + }); }); }).call(this); diff --git a/sonar-server/src/main/webapp/javascripts/coding-rules/views/actions-view.coffee b/sonar-server/src/main/webapp/javascripts/coding-rules/views/actions-view.coffee index 8220be5a30c..b9472b9a23c 100644 --- a/sonar-server/src/main/webapp/javascripts/coding-rules/views/actions-view.coffee +++ b/sonar-server/src/main/webapp/javascripts/coding-rules/views/actions-view.coffee @@ -13,6 +13,42 @@ define [ 'all': 'render' + ui: + orderChoices: '.navigator-actions-order-choices' + + + events: + 'click .navigator-actions-order': 'toggleOrderChoices' + 'click @ui.orderChoices': 'sort' + + + onRender: -> + unless @collection.sorting.sortText + @collection.sorting.sortText = @$('[data-sort=' + @collection.sorting.sort + ']:first').text() + @render() + + + toggleOrderChoices: (e) -> + e.stopPropagation() + @ui.orderChoices.toggleClass 'open' + if @ui.orderChoices.is '.open' + jQuery('body').on 'click.coding_rules_actions', => + @ui.orderChoices.removeClass 'open' + + + sort: (e) -> + e.stopPropagation() + @ui.orderChoices.removeClass 'open' + jQuery('body').off 'click.coding_rules_actions' + el = jQuery(e.target) + sort = el.data 'sort' + asc = el.data 'asc' + if sort != null && asc != null + @collection.sorting = sort: sort, sortText: el.text(), asc: asc + @options.app.fetchFirstPage() + + serializeData: -> _.extend super, paging: @collection.paging + sorting: @collection.sorting diff --git a/sonar-server/src/main/webapp/javascripts/coding-rules/views/actions-view.js b/sonar-server/src/main/webapp/javascripts/coding-rules/views/actions-view.js index d2cefc37634..18a3cb256bd 100644 --- a/sonar-server/src/main/webapp/javascripts/coding-rules/views/actions-view.js +++ b/sonar-server/src/main/webapp/javascripts/coding-rules/views/actions-view.js @@ -19,9 +19,55 @@ 'all': 'render' }; + CodingRulesStatusView.prototype.ui = { + orderChoices: '.navigator-actions-order-choices' + }; + + CodingRulesStatusView.prototype.events = { + 'click .navigator-actions-order': 'toggleOrderChoices', + 'click @ui.orderChoices': 'sort' + }; + + CodingRulesStatusView.prototype.onRender = function() { + if (!this.collection.sorting.sortText) { + this.collection.sorting.sortText = this.$('[data-sort=' + this.collection.sorting.sort + ']:first').text(); + return this.render(); + } + }; + + CodingRulesStatusView.prototype.toggleOrderChoices = function(e) { + var _this = this; + e.stopPropagation(); + this.ui.orderChoices.toggleClass('open'); + if (this.ui.orderChoices.is('.open')) { + return jQuery('body').on('click.coding_rules_actions', function() { + return _this.ui.orderChoices.removeClass('open'); + }); + } + }; + + CodingRulesStatusView.prototype.sort = function(e) { + var asc, el, sort; + e.stopPropagation(); + this.ui.orderChoices.removeClass('open'); + jQuery('body').off('click.coding_rules_actions'); + el = jQuery(e.target); + sort = el.data('sort'); + asc = el.data('asc'); + if (sort !== null && asc !== null) { + this.collection.sorting = { + sort: sort, + sortText: el.text(), + asc: asc + }; + return this.options.app.fetchFirstPage(); + } + }; + CodingRulesStatusView.prototype.serializeData = function() { return _.extend(CodingRulesStatusView.__super__.serializeData.apply(this, arguments), { - paging: this.collection.paging + paging: this.collection.paging, + sorting: this.collection.sorting }); }; diff --git a/sonar-server/src/main/webapp/javascripts/coding-rules/views/coding-rules-list-item-view.coffee b/sonar-server/src/main/webapp/javascripts/coding-rules/views/coding-rules-list-item-view.coffee index 456c61e35b5..bf0ed4d62c5 100644 --- a/sonar-server/src/main/webapp/javascripts/coding-rules/views/coding-rules-list-item-view.coffee +++ b/sonar-server/src/main/webapp/javascripts/coding-rules/views/coding-rules-list-item-view.coffee @@ -33,4 +33,6 @@ define [ serializeData: -> - _.extend super, qualityProfile: @options.app.getActiveQualityProfile() + _.extend super, + qualityProfile: @options.app.getActiveQualityProfile() + qualityProfileName: @options.app.activeInFilter.view.renderValue() diff --git a/sonar-server/src/main/webapp/javascripts/coding-rules/views/coding-rules-list-item-view.js b/sonar-server/src/main/webapp/javascripts/coding-rules/views/coding-rules-list-item-view.js index 7cb2d9709bc..6dc0c2324c1 100644 --- a/sonar-server/src/main/webapp/javascripts/coding-rules/views/coding-rules-list-item-view.js +++ b/sonar-server/src/main/webapp/javascripts/coding-rules/views/coding-rules-list-item-view.js @@ -45,7 +45,8 @@ CodingRulesListItemView.prototype.serializeData = function() { return _.extend(CodingRulesListItemView.__super__.serializeData.apply(this, arguments), { - qualityProfile: this.options.app.getActiveQualityProfile() + qualityProfile: this.options.app.getActiveQualityProfile(), + qualityProfileName: this.options.app.activeInFilter.view.renderValue() }); }; diff --git a/sonar-server/src/main/webapp/javascripts/coding-rules/views/filters/quality-profile-filter-view.coffee b/sonar-server/src/main/webapp/javascripts/coding-rules/views/filters/quality-profile-filter-view.coffee index 3e0503ff788..ab1c4bd0c93 100644 --- a/sonar-server/src/main/webapp/javascripts/coding-rules/views/filters/quality-profile-filter-view.coffee +++ b/sonar-server/src/main/webapp/javascripts/coding-rules/views/filters/quality-profile-filter-view.coffee @@ -26,3 +26,16 @@ define [ else @model.unset 'parentQualityProfile' + + createRequest: (v) -> + jQuery.ajax + url: baseUrl + '/api/qualityprofiles/show' + type: 'GET' + data: key: v + .done (r) => + @choices.add new Backbone.Model + id: r.qualityprofile.id, + text: r.qualityprofile.text, + parent: r.qualityprofile.parent, + checked: true + diff --git a/sonar-server/src/main/webapp/javascripts/coding-rules/views/filters/quality-profile-filter-view.js b/sonar-server/src/main/webapp/javascripts/coding-rules/views/filters/quality-profile-filter-view.js index 65d5574d9d9..18c145e5821 100644 --- a/sonar-server/src/main/webapp/javascripts/coding-rules/views/filters/quality-profile-filter-view.js +++ b/sonar-server/src/main/webapp/javascripts/coding-rules/views/filters/quality-profile-filter-view.js @@ -44,6 +44,24 @@ } }; + QualityProfileFilterView.prototype.createRequest = function(v) { + var _this = this; + return jQuery.ajax({ + url: baseUrl + '/api/qualityprofiles/show', + type: 'GET', + data: { + key: v + } + }).done(function(r) { + return _this.choices.add(new Backbone.Model({ + id: r.qualityprofile.id, + text: r.qualityprofile.text, + parent: r.qualityprofile.parent, + checked: true + })); + }); + }; + return QualityProfileFilterView; })(AjaxSelectFilters.AjaxSelectFilterView); diff --git a/sonar-server/src/main/webapp/stylesheets/icons.css b/sonar-server/src/main/webapp/stylesheets/icons.css index d660974798a..a01708fc0dc 100644 --- a/sonar-server/src/main/webapp/stylesheets/icons.css +++ b/sonar-server/src/main/webapp/stylesheets/icons.css @@ -199,6 +199,14 @@ top: -0.1em; content: "\f00c"; } +.icon-lang:before { + content: "\f024"; + font-size: 14px; +} +.icon-quality-profile:before { + content: "\f022"; + font-size: 14px; +} /* * Spinner */ diff --git a/sonar-server/src/main/webapp/stylesheets/icons.less b/sonar-server/src/main/webapp/stylesheets/icons.less index d5cf86cfc9c..6d201a1c168 100644 --- a/sonar-server/src/main/webapp/stylesheets/icons.less +++ b/sonar-server/src/main/webapp/stylesheets/icons.less @@ -208,6 +208,14 @@ top: -0.1em; content: "\f00c"; } +.icon-lang:before { + content: "\f024"; + font-size: @iconFontSize; +} +.icon-quality-profile:before { + content: "\f022"; + font-size: @iconFontSize; +} /* diff --git a/sonar-server/src/main/webapp/stylesheets/navigator.css b/sonar-server/src/main/webapp/stylesheets/navigator.css index b1f659991c2..31e93180fd7 100644 --- a/sonar-server/src/main/webapp/stylesheets/navigator.css +++ b/sonar-server/src/main/webapp/stylesheets/navigator.css @@ -250,21 +250,10 @@ } .navigator-results-list > li { padding: 5px 0; + border-top: 1px solid transparent; cursor: pointer; transition: all 0.3s ease; } -.navigator-results-list > li:first-child { - border-top: 1px solid transparent; -} -.navigator-results-list > li:first-child.active { - border-top-color: #4B9FD5; -} -.navigator-results-list > li:last-child { - border-bottom: 1px solid transparent; -} -.navigator-results-list > li:last-child.active { - border-bottom-color: #4B9FD5; -} .navigator-results-list > li .line { padding: 5px 10px; line-height: 1.2; @@ -288,8 +277,17 @@ background-color: #CAE3F2; border-color: #4B9FD5; } +.navigator-results-list > li.with-context { + border-right: 6px solid #e1e1e1; +} +.navigator-results-list > li:last-child { + border-bottom: 1px solid transparent; +} +.navigator-results-list > li:last-child.active { + border-bottom-color: #4B9FD5; +} .navigator-results-list > li + li { - border-top: 1px solid #e1e1e1; + border-top-color: #e1e1e1; } .navigator-results-list > li.active + li { border-top-color: #4B9FD5; diff --git a/sonar-server/src/main/webapp/stylesheets/navigator/base.css b/sonar-server/src/main/webapp/stylesheets/navigator/base.css index 1ea09e69349..f8ed869af85 100644 --- a/sonar-server/src/main/webapp/stylesheets/navigator/base.css +++ b/sonar-server/src/main/webapp/stylesheets/navigator/base.css @@ -250,21 +250,10 @@ } .navigator-results-list > li { padding: 5px 0; + border-top: 1px solid transparent; cursor: pointer; transition: all 0.3s ease; } -.navigator-results-list > li:first-child { - border-top: 1px solid transparent; -} -.navigator-results-list > li:first-child.active { - border-top-color: #4B9FD5; -} -.navigator-results-list > li:last-child { - border-bottom: 1px solid transparent; -} -.navigator-results-list > li:last-child.active { - border-bottom-color: #4B9FD5; -} .navigator-results-list > li .line { padding: 5px 10px; line-height: 1.2; @@ -288,8 +277,17 @@ background-color: #CAE3F2; border-color: #4B9FD5; } +.navigator-results-list > li.with-context { + border-right: 6px solid #e1e1e1; +} +.navigator-results-list > li:last-child { + border-bottom: 1px solid transparent; +} +.navigator-results-list > li:last-child.active { + border-bottom-color: #4B9FD5; +} .navigator-results-list > li + li { - border-top: 1px solid #e1e1e1; + border-top-color: #e1e1e1; } .navigator-results-list > li.active + li { border-top-color: #4B9FD5; diff --git a/sonar-server/src/main/webapp/stylesheets/navigator/base.less b/sonar-server/src/main/webapp/stylesheets/navigator/base.less index d14c1742820..6b5bc5ad837 100644 --- a/sonar-server/src/main/webapp/stylesheets/navigator/base.less +++ b/sonar-server/src/main/webapp/stylesheets/navigator/base.less @@ -299,25 +299,10 @@ & > li { padding: @navigatorPadding / 2 0; + border-top: 1px solid transparent; cursor: pointer; .trans; - &:first-child { - border-top: 1px solid transparent; - - &.active { - border-top-color: #4B9FD5; - } - } - - &:last-child { - border-bottom: 1px solid transparent; - - &.active { - border-bottom-color: #4B9FD5; - } - } - .line { padding: @navigatorPadding / 2 @navigatorPadding; line-height: 1.2; @@ -346,10 +331,22 @@ background-color: #CAE3F2; border-color: #4B9FD5; } + + &.with-context { + border-right: 6px solid @navigatorBorderLightColor; + } + + &:last-child { + border-bottom: 1px solid transparent; + + &.active { + border-bottom-color: #4B9FD5; + } + } } & > li + li { - border-top: 1px solid @navigatorBorderLightColor; + border-top-color: @navigatorBorderLightColor; } & > li.active + li { -- 2.39.5