'navigator/filters/date-filter-view',
'coding-rules/views/filters/quality-profile-filter-view',
'coding-rules/views/filters/inheritance-filter-view',
+ 'coding-rules/views/filters/activation-filter-view',
'coding-rules/views/filters/characteristic-filter-view',
'coding-rules/mockjax',
DateFilterView,
QualityProfileFilterView,
InheritanceFilterView
+ ActivationFilterView
CharacteristicFilterView
) ->
App.fetchList false
- App.getActiveQualityProfile = ->
- value = @activeInFilter.get('value')
- if value? && value.length == 1 then value[0] else null
-
-
- App.getInactiveQualityProfile = ->
- value = @inactiveInFilter.get('value')
+ App.getQualityProfile = ->
+ value = @qualityProfileFilter.get('value')
if value? && value.length == 1 then value[0] else null
choices: @characteristics
multiple: false
- @activeInFilter = new BaseFilters.Filter
- name: t 'coding_rules.filters.in_quality_profile'
- property: 'in_quality_profile'
+ @qualityProfileFilter = new BaseFilters.Filter
+ name: t 'coding_rules.filters.quality_profile'
+ property: 'quality_profile'
type: QualityProfileFilterView
multiple: false
- @filters.add @activeInFilter
+ @filters.add @qualityProfileFilter
+
@filters.add new BaseFilters.Filter
- name: t 'coding_rules.filters.key'
- property: 'key'
- type: StringFilterView
+ name: t 'coding_rules.filters.activation'
+ property: 'activation'
+ type: ActivationFilterView
+ enabled: false
+ optional: true
+ multiple: false
+ qualityProfileFilter: @qualityProfileFilter
+ choices:
+ 'active': t 'coding_rules.filters.activation.active'
+ 'inactive': t 'coding_rules.filters.activation.inactive'
+
+ @filters.add new BaseFilters.Filter
+ name: t 'coding_rules.filters.availableSince'
+ property: 'availableSince'
+ type: DateFilterView
enabled: false
optional: true
enabled: false
optional: true
+ @filters.add new BaseFilters.Filter
+ name: t 'coding_rules.filters.inheritance'
+ property: 'inheritance'
+ type: InheritanceFilterView
+ enabled: false
+ optional: true
+ multiple: false
+ qualityProfileFilter: @qualityProfileFilter
+ choices:
+ 'not_inhertited': t 'coding_rules.filters.inheritance.not_inherited'
+ 'inhertited': t 'coding_rules.filters.inheritance.inherited'
+ 'overriden': t 'coding_rules.filters.inheritance.overriden'
+
+ @filters.add new BaseFilters.Filter
+ name: t 'coding_rules.filters.key'
+ property: 'key'
+ type: StringFilterView
+ enabled: false
+ optional: true
+
@filters.add new BaseFilters.Filter
name: t 'coding_rules.filters.repository'
property: 'repositories'
optional: true
choices: @statuses
- @filters.add new BaseFilters.Filter
- name: t 'coding_rules.filters.availableSince'
- property: 'availableSince'
- type: DateFilterView
- enabled: false
- optional: true
-
- @inactiveInFilter = new BaseFilters.Filter
- name: t 'coding_rules.filters.out_of_quality_profile'
- property: 'out_of_quality_profile'
- type: QualityProfileFilterView
- multiple: false
- enabled: false
- optional: true
- @filters.add @inactiveInFilter
-
- @filters.add new BaseFilters.Filter
- name: t 'coding_rules.filters.inheritance'
- property: 'inheritance'
- type: InheritanceFilterView
- enabled: false
- optional: true
- multiple: false
- qualityProfileFilter: @activeInFilter
- choices:
- 'any': t 'coding_rules.filters.inheritance.any'
- 'not_inhertited': t 'coding_rules.filters.inheritance.not_inherited'
- 'inhertited': t 'coding_rules.filters.inheritance.inherited'
- 'overriden': t 'coding_rules.filters.inheritance.overriden'
@filterBarView = new CodingRulesFilterBarView
app: @
'coding_rules.change_severity_in': 'Change Severity In'
'coding_rules.extend_description': 'Extend Description'
'coding_rules.deactivate_in': 'Deactivate In'
- 'coding_rules.deactivate_quality_profile': 'Deactivate'
+ 'coding_rules.deactivate': 'Deactivate'
'coding_rules.deactivate_in_quality_profile': 'Deactivate In Quality Profile'
'coding_rules.found': 'Found'
'coding_rules._inherits': 'inherits'
'coding_rules._rules': 'rules'
'coding_rules.select_tag': 'Select Tag'
+ 'coding_rules.filters.activation': 'Activation'
+ 'coding_rules.filters.activation.active': 'Active'
+ 'coding_rules.filters.activation.inactive': 'Inactive'
+ 'coding_rules.filters.activation.help': 'Activation criterion is available when a quality profile is selected'
'coding_rules.filters.availableSince': 'Available Since'
'coding_rules.filters.characteristic': 'Characteristic'
'coding_rules.filters.description': 'Description'
- 'coding_rules.filters.in_quality_profile': 'In Quality Profile'
+ 'coding_rules.filters.quality_profile': 'Quality Profile'
'coding_rules.filters.inheritance': 'Inheritance'
- 'coding_rules.filters.inheritance.inactive': 'Inheritance criteria is available when an inherited quality profile is selected'
- 'coding_rules.filters.inheritance.any': 'Any'
+ 'coding_rules.filters.inheritance.inactive': 'Inheritance criterion is available when an inherited quality profile is selected'
'coding_rules.filters.inheritance.not_inherited': 'Not Inherited'
'coding_rules.filters.inheritance.inherited': 'Inherited'
'coding_rules.filters.inheritance.overriden': 'Overriden'
'coding_rules.filters.key': 'Key'
'coding_rules.filters.language': 'Language'
'coding_rules.filters.name': 'Name'
- 'coding_rules.filters.out_of_quality_profile': 'Out of Quality Profile'
'coding_rules.filters.repository': 'Repository'
'coding_rules.filters.severity': 'Severity'
'coding_rules.filters.status': 'Status'
creationDate: '2013-10-15'
fCreationDate: 'Oct 15, 2013'
status: 'DEPRECATED'
- repository: 'squid'
+ repositoryName: 'SonarQube'
+ repositoryKey: 'squid'
characteristic: 'Reliability'
subcharacteristic: 'Data related reliability'
key: 'S1190'
public int[][] getMatrix() { /* ... */ } // Compliant
</pre>'''
- extra: '''<p>This note is here <b>only for test purposes</b>.</p>'''
+ extra: '''This note is here <b>only for test purposes</b>.'''
extraRaw: '''This note is here *only for test purposes*.'''
qualityProfiles: [
name: 'SonarWay'
key: 'sonarway'
severity: 'MINOR'
- canDeactivate: true
- canUpdate: true
parameters: [
{ key: 'someParameter', value: 8 }
]
+ note:
+ username: 'Admin Admin'
+ html: '''<p>This note is here <b>only for test purposes</b>.</p>'''
+ raw: '''This note is here *only for test purposes*.'''
+ fCreationDate: 'less than a minute'
},
{
name: 'Quality Profile 1'
key: 'qualityprofile1'
severity: 'MAJOR'
- canDeactivate: false
- canUpdate: false
parameters: [
{ key: 'someParameter', value: 6 }
]
inherits: 'sonarway'
- note:
- username: 'Admin Admin'
- html: '''<p>This note is here <b>only for test purposes</b>.</p>'''
- raw: '''This note is here *only for test purposes*.'''
- fCreationDate: 'less than a minute'
}
]
jQuery.mockjax
url: "#{baseUrl}/api/codingrules/extend_description"
responseText: JSON.stringify
- extra: '''<p>This note is here <i>only for test purposes</i>.</p>'''
+ extra: '''This note is here <i>only for test purposes</i>.'''
extraRaw: '''This note is here *only for test purposes*.'''
index: (query) ->
params = this.parseQuery(query)
- idObj = _.findWhere(params, { key: 'id' })
- if (idObj)
- f = this.app.favoriteFilter
- @app.canSave = false
- f.set('id', idObj.value)
- f.fetch
- success: =>
- params = _.extend({}, @parseQuery(f.get('query')), params)
- @loadResults(params)
- else
- @loadResults(params)
+ @loadResults(params)
loadResults: (params) ->
serializeData: ->
- activeQualityProfile: @options.app.getActiveQualityProfile()
- activeQualityProfileName: @options.app.activeInFilter.view.renderValue()
- inactiveQualityProfile: @options.app.getInactiveQualityProfile()
- inactiveQualityProfileName: @options.app.inactiveInFilter.view.renderValue()
\ No newline at end of file
+ qualityProfile: @options.app.getQualityProfile()
+ qualityProfileName: @options.app.qualityProfileFilter.view.renderValue()
\ No newline at end of file
paging: @options.app.codingRules.paging
qualityProfiles: @options.app.qualityProfiles
- activeQualityProfile: @options.app.getActiveQualityProfile()
- activeQualityProfileName: @options.app.activeInFilter.view.renderValue()
- activateOnQualityProfiles: _.reject @options.app.qualityProfiles, (q) => q.key == @options.app.getInactiveQualityProfile()
+ qualityProfile: @options.app.getQualityProfile()
+ qualityProfileName: @options.app.qualityProfileFilter.view.renderValue()
- inactiveQualityProfile: @options.app.getInactiveQualityProfile()
- inactiveQualityProfileName: @options.app.inactiveInFilter.view.renderValue()
- deactivateOnQualityProfiles: _.reject @options.app.qualityProfiles, (q) => q.key == @options.app.getActiveQualityProfile()
+ activateOnQualityProfiles: @options.app.qualityProfiles
+ deactivateOnQualityProfiles: _.reject @options.app.qualityProfiles, (q) => q.key == @options.app.getQualityProfile()
severities: ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO']
"<i class='icon-severity-#{state.id.toLowerCase()}'></i> #{state.text}"
@ui.severitySelect.val @model.get 'severity'
- @ui.severitySelect.select2
- width: '200px'
- minimumResultsForSearch: 999
- formatResult: format
- formatSelection: format
- escapeMarkup: (m) -> m
+# @ui.severitySelect.select2
+# width: '200px'
+# minimumResultsForSearch: 999
+# formatResult: format
+# formatSelection: format
+# escapeMarkup: (m) -> m
getParent: ->
@ui.extendDescriptionForm.hide()
@ui.extendDescriptionSpinner.hide()
- qp = @options.app.getActiveQualityProfile()
- @$('.coding-rules-detail-quality-profile').first().addClass 'active' if qp?
-
changeTags: ->
@ui.tagsEdit.show()
activateQualityProfile: ->
@options.app.codingRulesQualityProfileActivationView.model = @model
- @options.app.codingRulesQualityProfileActivationView.show()
\ No newline at end of file
+ @options.app.codingRulesQualityProfileActivationView.show()
+
+
+ serializeData: ->
+ contextQualityProfile = @options.app.getQualityProfile()
+ qualityProfile = _.findWhere @model.get('qualityProfiles'), key: contextQualityProfile
+
+ _.extend super,
+ contextQualityProfile: contextQualityProfile
+ contextQualityProfileName: @options.app.qualityProfileFilter.view.renderValue()
+ qualityProfile: qualityProfile
\ No newline at end of file
app: @options.app
model: @model
@options.app.layout.detailsRegion.show detailView
-
-
- serializeData: ->
- _.extend super,
- qualityProfile: @options.app.getActiveQualityProfile()
- qualityProfileName: @options.app.activeInFilter.view.renderValue()
--- /dev/null
+define [
+ 'coding-rules/views/filters/inheritance-filter-view'
+], (
+ InheritanceFilterView
+) ->
+
+ class ActivationFilterView extends InheritanceFilterView
+ tooltip: 'coding_rules.filters.activation.help'
+
+
+ onChangeQualityProfile: ->
+ qualityProfile = @qualityProfileFilter.get 'value'
+ if _.isArray(qualityProfile) && qualityProfile.length == 1 then @makeActive() else @makeInactive()
\ No newline at end of file
) ->
class InheritanceFilterView extends ChoiceFilters.ChoiceFilterView
+ tooltip: 'coding_rules.filters.inheritance.inactive'
+
initialize: ->
super
makeInactive: ->
- @model.set inactive: true, title: t 'coding_rules.filters.inheritance.inactive'
+ @model.set inactive: true, title: t @tooltip
@model.trigger 'change:enabled'
@choices.each (model) -> model.set 'checked', false
@detailsView.updateLists()
@detailsView.updateValue()
- @$el.addClass('navigator-filter-inactive').prop 'title', t 'coding_rules.filters.inheritance.inactive'
+ @$el.addClass('navigator-filter-inactive').prop 'title', t @tooltip
showDetails: ->
value = value.split(',') if _.isString(value)
if @choices && value.length > 0
@model.set value: value, enabled: true
- @onChangeQualityProfile
+ @onChangeQualityProfile()
else
@clear()
text-transform: uppercase;
}
+.coding-rules-detail-context-actions {
+ margin-bottom: @navigatorPadding;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.coding-rules-detail-context-actions-quality-profile {
+ vertical-align: middle;
+ margin-right: @navigatorPadding;
+ font-weight: bold;
+}
+
+.coding-rules-detail-context-actions-item {
+ display: inline-block;
+ vertical-align: middle;
+ margin-right: @navigatorPadding;
+
+ .limited {
+ max-width: 180px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .limited-big {
+ width: 480px;
+ }
+}
+
.coding-rules-detail-properties {
margin: @navigatorPadding 0;
font-size: 0;
margin-left: @navigatorPadding;
}
+.coding-rules-detail-tags-change {
+ cursor: pointer;
+
+ &:hover {
+ span { text-decoration: underline; }
+ }
+}
+
+.coding-rules-detail-tag-edit {
+ line-height: 1;
+}
+
.coding-rules-detail-description {
margin: 2 * @navigatorPadding 0;
}
// Quality Profiles
+.coding-rules-detail-quality-profiles-section {
+
+}
+
.coding-rules-detail-quality-profiles-header {
margin-top: 3 * @navigatorPadding;
}
.coding-rules-detail-quality-profile {
margin-left: 2 * @navigatorPadding;
-
- &.active {
-
- .coding-rules-detail-quality-profile-name {
- background-color: @highlighted;
- color: #fff;
- }
- }
}
.coding-rules-detail-quality-profile + .coding-rules-detail-quality-profile {
- margin-top: 2 * @navigatorPadding;
- padding-top: 2 * @navigatorPadding;
+ margin-top: @navigatorPadding;
+ padding-top: @navigatorPadding;
border-top: 1px solid @navigatorBorderLightColor;
}
.coding-rules-detail-quality-profile-name {
+ width: 15%;
font-weight: bold;
+ white-space: nowrap;
}
-.coding-rules-detail-quality-profile-actions {
- padding: @navigatorPadding / 2;
+.coding-rules-detail-quality-profile-severity {
+ width: 10%;
}
.coding-rules-detail-quality-profile-parameters {
- padding: 0 @navigatorPadding / 2;
- .coding-rules-detail-parameter-name,
- .coding-rules-detail-parameter-description {
- vertical-align: middle;
- }
+}
- .coding-rules-detail-parameter-description input {
- width: 200px;
- }
+.coding-rules-detail-quality-profile-actions {
+ width: 25%;
+ text-align: right;
+}
+
+.coding-rules-detail-quality-profile-note {
+ padding-top: 4px;
}
.coding-rules-detail-quality-profile-inheritance {
- vertical-align: middle;
- margin-left: @navigatorPadding;
+ margin-top: 4px;
font-size: @smallFontSize;
font-weight: normal;
top: -1px;
font-size: @iconSmallFontSize;
}
- strong { font-weight: bold; }
-}
-
-.coding-rules-detail-quality-profile-note {
- margin: @navigatorPadding * 2 0;
- padding: 0 @navigatorPadding / 2;
}
.coding-rules-detail-quality-profiles-activation {
-<a class="coding-rules-bulk-change-dropdown-link" data-action="activate"
- {{#if inactiveQualityProfile}}data-param="{{inactiveQualityProfile}}"{{/if}}>
+<a class="coding-rules-bulk-change-dropdown-link" data-action="activate">
{{t 'coding_rules.activate_in'}}
- {{#if inactiveQualityProfile}}<strong>{{inactiveQualityProfileName}}</strong>{{/if}}
</a>
<a class="coding-rules-bulk-change-dropdown-link" data-action="deactivate"
- {{#if activeQualityProfile}}data-param="{{activeQualityProfile}}"{{/if}}>
+ {{#if qualityProfile}}data-param="{{qualityProfile}}"{{/if}}>
{{t 'coding_rules.deactivate_in'}}
- {{#if activeQualityProfile}}<strong>{{activeQualityProfileName}}</strong>{{/if}}
+ {{#if qualityProfile}}<strong>{{qualityProfileName}}</strong>{{/if}}
</a>
-{{#if activeQualityProfile}}
+{{#if qualityProfile}}
<a class="coding-rules-bulk-change-dropdown-link" data-action="change-severity">
- {{t 'coding_rules.change_severity_in'}} <strong>{{activeQualityProfileName}}</strong>
+ {{t 'coding_rules.change_severity_in'}} <strong>{{qualityProfileName}}</strong>
</a>
{{/if}}
\ No newline at end of file
{{/eq}}
{{#eq action 'change-severity'}}
- {{#if activeQualityProfile}}
+ {{#if qualityProfile}}
<div class="modal-field">
<label for="coding-rules-bulk-change-severity">{{t 'coding_rules.change_severity'}}</label>
<select id="coding-rules-bulk-change-severity">
-<div class="coding-rules-detail-quality-profile-name">
- {{name}}
- {{#if parent}}
- <span class="coding-rules-detail-quality-profile-inheritance">
- <i class="icon-inheritance"></i> {{parent.name}}
- </span>
- {{/if}}
-</div>
-
-<ul class="coding-rules-detail-parameters coding-rules-detail-quality-profile-parameters">
- <li class="coding-rules-detail-parameter">
- <h3 class="coding-rules-detail-parameter-name">{{t 'severity'}}</h3>
- <div class="coding-rules-detail-parameter-description">
- <select class="coding-rules-detail-quality-profile-severity">
- {{#each severities}}
- <option value="{{this}}">{{t 'severity' this}}</option>
- {{/each}}
- </select>
+<table class="width100">
+ <tbody>
+ <tr>
+ <td class="coding-rules-detail-quality-profile-name">
+ {{name}}
{{#if parent}}
- {{#notEq severity parent.severity}}
- <span class="coding-rules-detail-parameter-original">
- {{t 'coding_rules.original'}} {{severityIcon parent.severity}}{{t 'severity' parent.severity}}
- </span>
- {{/notEq}}
+ <div class="coding-rules-detail-quality-profile-inheritance">
+ <i class="icon-inheritance"></i> {{parent.name}}
+ </div>
{{/if}}
- </div>
- </li>
- {{#each parameters}}
- <li class="coding-rules-detail-parameter">
- <h3 class="coding-rules-detail-parameter-name">{{key}}</h3>
- <div class="coding-rules-detail-parameter-description">
- <input type="text" value="{{value}}">
- {{#if ../parent}}
- {{#notEq value original}}
- <span class="coding-rules-detail-parameter-original">
- {{t 'coding_rules.original'}} {{original}}
- </span>
- {{/notEq}}
- {{/if}}
- </div>
- </li>
- {{/each}}
-</ul>
+ </td>
-<div class="button-group coding-rules-detail-quality-profile-actions">
- <button class="coding-rules-detail-quality-profile-update" disabled>{{t 'update'}}</button>
- {{#unless note}}
- <button class="coding-rules-detail-quality-profile-note-add">{{t 'coding_rules.add_note'}}</button>
- {{/unless}}
- {{#if parent}}
- <button class="button-red">{{t 'coding_rules.revert_to_parent_definition'}}</button>
- {{/if}}
- <button class="button-red">{{t 'coding_rules.deactivate_quality_profile'}}</button>
-</div>
+ <td class="coding-rules-detail-quality-profile-severity">
+ {{severityIcon severity}} {{t "severity" severity}}
+ {{#if parent}}{{#notEq severity parent.severity}}
+ <div class="coding-rules-detail-quality-profile-inheritance">
+ {{t 'coding_rules.original'}} {{severityIcon parent.severity}}{{t 'severity' parent.severity}}
+ </div>
+ {{/notEq}}{{/if}}
+ </td>
-{{#if note}}
- <div class="coding-rules-detail-quality-profile-note">
- <blockquote class="rule-desc">
- <cite>
- <b>{{note.username}}</b> ({{note.fCreationDate}}) |
- <a class="coding-rules-detail-quality-profile-note-edit link-action">{{t 'edit'}}</a>
- <a class="coding-rules-detail-quality-profile-note-delete link-action">{{t 'delete'}}</a>
- </cite>
- {{{note.html}}}
- </blockquote>
- </div>
-{{/if}}
+ <td class="coding-rules-detail-quality-profile-parameters">
+ {{#each parameters}}
+ {{key}}: {{value}}
+ {{#if ../parent}}{{#notEq value original}}
+ <div class="coding-rules-detail-quality-profile-inheritance">
+ {{t 'coding_rules.original'}} {{original}}
+ </div>
+ {{/notEq}}{{/if}}
+ {{/each}}
+ </td>
-<div class="coding-rules-detail-quality-profile-note-form admin">
- <table class="width100 table">
- <tbody>
- <tr>
- <td class="width100" colspan="2">
- <textarea class="coding-rules-detail-quality-profile-note-text" rows="4" style="width: 100%;">{{#if note}}{{note.raw}}{{/if}}</textarea>
- </td>
- </tr>
- <tr>
- <td>
- <button class="coding-rules-detail-quality-profile-note-submit">
- {{#if note}}{{t 'update'}}{{else}}{{t 'coding_rules.add_note'}}{{/if}}
+ <td class="coding-rules-detail-quality-profile-actions">
+ <div class="button-group">
+ <button class="coding-rules-detail-quality-profile-update">{{t 'change'}}</button>
+ {{#if parent}}
+ <button class="coding-rules-detail-quality-profile-revert button-red">
+ {{t 'coding_rules.revert_to_parent_definition'}}
+ </button>
+ {{/if}}
+ <button class="coding-rules-detail-quality-profile-deactivate button-red">
+ {{t 'coding_rules.deactivate'}}
</button>
- <a class="coding-rules-detail-quality-profile-note-cancel action">{{t 'cancel'}}</a>
- </td>
- <td class="right">
- <%= render :partial => 'markdown/tips' -%>
- </td>
+ </div>
+ </td>
+ </tr>
+
+ {{#if note}}
+ <tr>
+ <td colspan="4" class="coding-rules-detail-quality-profile-note">{{{note.html}}}</td>
</tr>
- </tbody>
- </table>
-</div>
\ No newline at end of file
+ {{/if}}
+ </tbody>
+</table>
\ No newline at end of file
+{{#if contextQualityProfile}}
+ <div class="coding-rules-detail-context-actions admin">
+ <table class="width100">
+ <tbody>
+ <tr>
+ <td>
+ <span class="coding-rules-detail-context-actions-quality-profile">{{contextQualityProfileName}}</span>
+ {{#if qualityProfile}}
+ {{#with qualityProfile}}
+ <span class="coding-rules-detail-context-actions-item">
+ {{severityIcon severity}} {{t "severity" severity}}
+ </span>
+
+ {{#each parameters}}
+ <span class="coding-rules-detail-context-actions-item">
+ <span class="limited">{{key}}</span><span class="limited">:</span>
+ <span class="limited">{{value}}</span>
+ </span>
+ {{/each}}
+
+ {{#if note}}<span class="coding-rules-detail-context-actions-item">{{{note.html}}}</span>{{/if}}
+ {{/with}}
+ {{/if}}
+ </td>
+
+ <td class="coding-rules-detail-quality-profile-actions">
+ <div class="button-group">
+ {{#if qualityProfile}}
+ <button class="coding-rules-detail-quality-profile-update">{{t 'change'}}</button>
+ {{#if parent}}
+ <button class="coding-rules-detail-quality-profile-revert button-red">
+ {{t 'coding_rules.revert_to_parent_definition'}}
+ </button>
+ {{/if}}
+ <button class="coding-rules-detail-quality-profile-deactivate button-red">
+ {{t 'coding_rules.deactivate'}}
+ </button>
+ {{else}}
+ <button class="coding-rules-detail-quality-profile-activate">
+ {{t 'coding_rules.activate'}}
+ </button>
+ {{/if}}
+ </div>
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+{{/if}}
+
<h3 class="coding-rules-detail-header">{{name}}</h3>
<ul class="coding-rules-detail-properties">
<span class="coding-rules-detail-status">{{status}}</span>
</li>
{{/notEq}}
- <li class="coding-rules-detail-property coding-rules-detail-tag-list">
+ <li class="coding-rules-detail-property coding-rules-detail-tag-list coding-rules-detail-tags-change">
<i class="icon-tags"></i>
- {{join tags ', '}}
- <a class="link-action coding-rules-detail-tags-change">{{t 'change'}}</a>
+ <span>{{join tags ', '}}</span>
</li>
<li class="coding-rules-detail-property coding-rules-detail-tag-edit">
<input class="coding-rules-detail-tag-input" type="text" value="{{join tags ','}}">
- <a class="link-action coding-rules-detail-tag-edit-done">{{t 'done'}}</a>
+
+ <div class="button-group">
+ <button class="coding-rules-detail-tag-edit-done">{{t 'done'}}</button>
+ </div>
</li>
<li class="coding-rules-detail-property">{{characteristic}} > {{subcharacteristic}}</li>
<li class="coding-rules-detail-property">{{t 'coding_rules.available_since'}} {{fCreationDate}}</li>
- <li class="coding-rules-detail-property">{{t 'coding_rules.repository'}} {{repository}}</li>
+ <li class="coding-rules-detail-property">{{t 'coding_rules.repository'}} {{repositoryName}} ({{repositoryKey}})</li>
<li class="coding-rules-detail-property">{{t 'coding_rules.key'}} {{key}}</li>
</ul>
<div class="coding-rules-detail-description coding-rules-detail-description-extra">
<div id="coding-rules-detail-description-extra">
- {{#if extra}}<div class="rule-desc marginbottom10">{{{extra}}}</div>{{/if}}
+ {{#if extra}}
+ <div class="rule-desc marginbottom10">{{{extra}}}</div>{{/if}}
<div class="button-group">
<button id="coding-rules-detail-extend-description">{{t 'coding_rules.extend_description'}}</button>
</div>
<tbody>
<tr>
<td class="width100" colspan="2">
- <textarea id="coding-rules-detail-extend-description-text" rows="4" style="width: 100%;">{{extraRaw}}</textarea>
+ <textarea id="coding-rules-detail-extend-description-text" rows="4"
+ style="width: 100%;">{{extraRaw}}</textarea>
</td>
</tr>
<tr>
{{#each parameters}}
<li class="coding-rules-detail-parameter">
<h3 class="coding-rules-detail-parameter-name">{{key}}</h3>
+
<div class="coding-rules-detail-parameter-description">
{{description}}
{{/if}}
-<h3 class="coding-rules-detail-title">{{t 'coding_rules.quality_profiles'}}</h3>
-<div class="button-group coding-rules-detail-quality-profiles-activation">
- <button id="coding-rules-quality-profile-activate">{{t 'coding_rules.activate_in_quality_profile'}}</button>
-</div>
-<div id="coding-rules-detail-quality-profiles"></div>
\ No newline at end of file
+<div class="coding-rules-detail-quality-profiles-section">
+ <h3 class="coding-rules-detail-title">{{t 'coding_rules.quality_profiles'}}</h3>
+
+ <div class="button-group coding-rules-detail-quality-profiles-activation">
+ <button id="coding-rules-quality-profile-activate">{{t 'coding_rules.activate_in_quality_profile'}}</button>
+ </div>
+ <div id="coding-rules-detail-quality-profiles"></div>
+</div>
\ No newline at end of file
<div class="line line-small">
- {{#if qualityProfile}}
- <i class="icon-quality-profile"></i> {{qualityProfileName}}
- {{severityIcon severity}}{{t "severity" severity}}
- {{/if}}
<span class="coding-rules-detail-status">{{language}}</span>
-
<div class="line-right">{{#notEq status 'READY'}}{{status}}{{/notEq}}</div>
</div>
<div class="line line-nowrap" title="{{name}}">{{name}}</div>
\ No newline at end of file