# nodeJS dependencies
node_modules/
+# generated css
+src/main/webapp/stylesheets/
+
+# generated js
+src/main/webapp/javascripts/coding-rules/
+src/main/webapp/javascripts/quality-gate/
+src/main/webapp/javascripts/tests/common/
+src/main/webapp/javascripts/tests/translateSpec.js
+
# js build
src/main/webapp/javascripts/build/
+
--- /dev/null
+module.exports = (grunt) ->
+ grunt.initConfig
+ pkg: grunt.file.readJSON('package.json')
+
+ less:
+ dev:
+ files:
+ '<%= pkg.assets %>stylesheets/sonar.css': [
+ '<%= pkg.assets %>less/yui-reset-font.less'
+ '<%= pkg.assets %>less/jquery-ui.less'
+ '<%= pkg.assets %>less/select2.less'
+ '<%= pkg.assets %>less/select2-sonar.less'
+ '<%= pkg.assets %>less/layout.less'
+ '<%= pkg.assets %>less/style.less'
+ '<%= pkg.assets %>less/icons.less'
+ '<%= pkg.assets %>less/ui.less'
+ '<%= pkg.assets %>less/sonar-colorizer.less'
+ '<%= pkg.assets %>less/dashboard.less'
+ '<%= pkg.assets %>less/select-list.less'
+ '<%= pkg.assets %>less/navigator.less'
+ '<%= pkg.assets %>less/*.less'
+ ]
+
+ coffee:
+ dev:
+ files: [
+ expand: true
+ cwd: '<%= pkg.assets %>coffee'
+ src: ['**/*.coffee']
+ dest: '<%= pkg.assets %>javascripts'
+ ext: '.js'
+ ]
+
+
+ watch:
+ options:
+ spawn: false
+
+ less:
+ files: '<%= pkg.assets %>less/**/*.less'
+ tasks: ['less:dev']
+
+ coffee:
+ files: '<%= pkg.assets %>coffee/**/*.coffee'
+ tasks: ['coffee:dev']
+
+
+ # Load grunt-contrib-* plugins
+ grunt.loadNpmTasks 'grunt-contrib-less'
+ grunt.loadNpmTasks 'grunt-contrib-coffee'
+ grunt.loadNpmTasks 'grunt-contrib-watch'
+
+
+ # Define tasks
+ grunt.registerTask 'default', ['less:dev', 'coffee:dev']
"karma-jasmine": "*",
"karma-phantomjs-launcher": "*",
"karma-coverage": "*",
- "karma-junit-reporter": "*"
+ "karma-junit-reporter": "*",
+ "grunt": "~0.4.2",
+ "grunt-contrib-less": "~0.10.0",
+ "grunt-contrib-coffee": "~0.10.1",
+ "grunt-contrib-handlebars": "~0.7.0",
+ "grunt-contrib-requirejs": "~0.4.3",
+ "grunt-contrib-watch": "~0.5.3"
},
"engines": {
"node": "~0.8 || ~0.10"
},
"scripts": {
"test": "./node_modules/.bin/karma start --single-run"
- }
+ },
+ "assets": "src/main/webapp/"
}
end
%>
<title><%= title -%></title>
- <% if ENV['RAILS_ENV'] == 'production'
- %>
- <%= stylesheet_link_tag 'sonar', :media => 'all' -%>
- <%= yield :style -%>
+ <%= stylesheet_link_tag 'sonar', :media => 'all' -%>
+ <%= yield :style -%>
+
+ <% if ENV['RAILS_ENV'] == 'production' %>
<%= javascript_include_tag 'sonar' -%>
<% else %>
- <%= stylesheet_link_tag 'yui-reset-font', :media => 'all' %>
- <%= stylesheet_link_tag 'jquery-ui', :media => 'all' %>
- <%= stylesheet_link_tag 'select2', :media => 'all' %>
- <%= stylesheet_link_tag 'select2-sonar', :media => 'all' %>
- <%= stylesheet_link_tag 'layout', :media => 'all' %>
- <%= stylesheet_link_tag 'style', :media => 'all' %>
- <%= stylesheet_link_tag 'icons', :media => 'all' %>
- <%= stylesheet_link_tag 'ui', :media => 'all' %>
- <%= stylesheet_link_tag 'sonar-colorizer', :media => 'all' %>
- <%= stylesheet_link_tag 'dashboard', :media => 'all' %>
- <%= stylesheet_link_tag 'select-list', :media => 'all' %>
- <%= stylesheet_link_tag 'navigator', :media => 'all' %>
- <%= stylesheet_link_tag 'quality-gates', :media => 'all' %>
- <%= stylesheet_link_tag 'coding-rules', :media => 'all' %>
- <%= yield :style -%>
<%= javascript_include_tag 'third-party/jquery' %>
<%= javascript_include_tag 'third-party/jquery-ui' %>
<%= javascript_include_tag 'third-party/d3' %>
--- /dev/null
+requirejs.config
+ baseUrl: "#{baseUrl}/javascripts"
+
+ paths:
+ 'backbone': 'third-party/backbone'
+ 'backbone.marionette': 'third-party/backbone.marionette'
+ 'handlebars': 'third-party/handlebars'
+ 'jquery.mockjax': 'third-party/jquery.mockjax'
+
+ shim:
+ 'backbone.marionette':
+ deps: ['backbone']
+ exports: 'Marionette'
+ 'backbone':
+ exports: 'Backbone'
+ 'handlebars':
+ exports: 'Handlebars'
+
+
+requirejs [
+ 'backbone', 'backbone.marionette',
+
+ 'coding-rules/layout',
+ 'coding-rules/router',
+
+ # views
+ 'coding-rules/views/header-view',
+ 'coding-rules/views/actions-view',
+ 'coding-rules/views/filter-bar-view',
+ 'coding-rules/views/coding-rules-list-view',
+ 'coding-rules/views/coding-rules-bulk-change-view',
+ 'coding-rules/views/coding-rules-quality-profile-activation-view',
+
+ # filters
+ 'navigator/filters/base-filters',
+ 'navigator/filters/choice-filters',
+ 'navigator/filters/string-filters',
+ 'navigator/filters/date-filter-view',
+ 'coding-rules/views/filters/quality-profile-filter-view',
+ 'coding-rules/views/filters/inheritance-filter-view',
+
+ 'coding-rules/mockjax'
+], (
+ Backbone, Marionette,
+
+ CodingRulesLayout,
+ CodingRulesRouter,
+
+ # views
+ CodingRulesHeaderView,
+ CodingRulesActionsView,
+ CodingRulesFilterBarView,
+ CodingRulesListView,
+ CodingRulesBulkChangeView,
+ CodingRulesQualityProfileActivationView,
+
+ # filters
+ BaseFilters,
+ ChoiceFilters,
+ StringFilterView,
+ DateFilterView,
+ QualityProfileFilterView,
+ InheritanceFilterView
+) ->
+
+ # Create a generic error handler for ajax requests
+ jQuery.ajaxSetup
+ error: (jqXHR) ->
+ text = jqXHR.responseText
+ errorBox = jQuery('.modal-error')
+ if jqXHR.responseJSON?.errors?
+ text = _.pluck(jqXHR.responseJSON.errors, 'msg').join '. '
+ if errorBox.length > 0
+ errorBox.show().text text
+ else
+ alert text
+
+
+ # Add html class to mark the page as navigator page
+ jQuery('html').addClass('navigator-page coding-rules-page');
+
+
+ # Create an Application
+ App = new Marionette.Application
+
+
+ App.getQuery = ->
+ @filterBarView.getQuery()
+
+
+ App.restoreSorting = ->
+
+
+
+ App.storeQuery = (query, sorting) ->
+ if sorting
+ _.extend query,
+ sort: sorting.sort
+ asc: '' + sorting.asc
+ queryString = _.map query, (v, k) -> "#{k}=#{encodeURIComponent(v)}"
+ @router.navigate queryString.join('|'), replace: true
+
+
+
+ App.fetchList = (firstPage) ->
+ query = @getQuery()
+ fetchQuery = _.extend { pageIndex: @pageIndex }, query
+
+ if @codingRules.sorting
+ _.extend fetchQuery,
+ sort: @codingRules.sorting.sort,
+ asc: @codingRules.sorting.asc
+
+ @storeQuery query, @codingRules.sorting
+
+ @layout.showSpinner 'resultsRegion'
+ jQuery.ajax
+ url: "#{baseUrl}/api/codingrules/search"
+ data: fetchQuery
+ .done (r) =>
+ if firstPage
+ @codingRules.reset r.codingrules
+ else
+ @codingRules.add r.codingrules
+ @codingRules.paging = r.paging
+ @codingRulesListView = new CodingRulesListView
+ app: @
+ collection: @codingRules
+ @layout.resultsRegion.show @codingRulesListView
+ @codingRulesListView.selectFirst()
+
+
+
+ App.fetchFirstPage = ->
+ @pageIndex = 1
+ App.fetchList true
+
+
+ App.fetchNextPage = ->
+ if @pageIndex < @codingRules.paging.pages
+ @pageIndex++
+ 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')
+ if value? && value.length == 1 then value[0] else null
+
+
+ # Construct layout
+ App.addInitializer ->
+ @layout = new CodingRulesLayout app: @
+ jQuery('body').append @layout.render().el
+
+
+ # Construct header
+ App.addInitializer ->
+ @codingRulesHeaderView = new CodingRulesHeaderView app: @
+ @layout.headerRegion.show @codingRulesHeaderView
+
+
+ # Define coding rules
+ App.addInitializer ->
+ @codingRules = new Backbone.Collection
+ @codingRules.sorting = sort: 'CREATION_DATE', asc: false
+
+
+ # Construct status bar
+ App.addInitializer ->
+ @codingRulesActionsView = new CodingRulesActionsView
+ app: @
+ collection: @codingRules
+ @layout.actionsRegion.show @codingRulesActionsView
+
+
+ # Construct bulk change view
+ App.addInitializer ->
+ @codingRulesBulkChangeView = new CodingRulesBulkChangeView app: @
+
+
+ # Construct quality profile activation view
+ App.addInitializer ->
+ @codingRulesQualityProfileActivationView = new CodingRulesQualityProfileActivationView app: @
+
+
+ # Define filters
+ App.addInitializer ->
+ @filters = new BaseFilters.Filters
+
+ @filters.add new BaseFilters.Filter
+ name: t 'coding_rules.filters.name'
+ property: 'name'
+ type: StringFilterView
+
+ @filters.add new BaseFilters.Filter
+ name: t 'coding_rules.filters.language'
+ property: 'languages'
+ type: ChoiceFilters.ChoiceFilterView
+ choices: @languages
+
+ @filters.add new BaseFilters.Filter
+ name: t 'coding_rules.filters.severity'
+ property: 'severities'
+ type: ChoiceFilters.ChoiceFilterView
+ choices:
+ 'BLOCKER': t 'severity.BLOCKER'
+ 'CRITICAL': t 'severity.CRITICAL'
+ 'MAJOR': t 'severity.MAJOR'
+ 'MINOR': t 'severity.MINOR'
+ 'INFO': t 'severity.INFO'
+ choiceIcons:
+ 'BLOCKER': 'severity-blocker'
+ 'CRITICAL': 'severity-critical'
+ 'MAJOR': 'severity-major'
+ 'MINOR': 'severity-minor'
+ 'INFO': 'severity-info'
+
+ @filters.add new BaseFilters.Filter
+ name: t 'coding_rules.filters.tag'
+ property: 'tags'
+ type: ChoiceFilters.ChoiceFilterView
+ choices: @tags
+
+ @activeInFilter = new BaseFilters.Filter
+ name: t 'coding_rules.filters.in_quality_profile'
+ property: 'in_quality_profile'
+ type: QualityProfileFilterView
+ multiple: false
+ @filters.add @activeInFilter
+
+
+ @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.description'
+ property: 'description'
+ type: StringFilterView
+ enabled: false
+ optional: true
+
+ @filters.add new BaseFilters.Filter
+ name: t 'coding_rules.filters.repository'
+ property: 'repositories'
+ type: ChoiceFilters.ChoiceFilterView
+ enabled: false
+ optional: true
+ choices: @repositories
+
+ @filters.add new BaseFilters.Filter
+ name: t 'coding_rules.filters.status'
+ property: 'statuses'
+ type: ChoiceFilters.ChoiceFilterView
+ enabled: false
+ 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: @
+ collection: @filters,
+ extra: sort: '', asc: false
+ @layout.filtersRegion.show @filterBarView
+
+
+ # Start router
+ App.addInitializer ->
+ @router = new CodingRulesRouter app: @
+ Backbone.history.start()
+
+
+ # Call app before start the application
+ appXHR = jQuery.ajax
+ url: "#{baseUrl}/api/codingrules/app"
+
+ jQuery.when(appXHR)
+ .done (r) ->
+ App.appState = new Backbone.Model
+ App.state = new Backbone.Model
+ App.qualityProfiles = r.qualityprofiles
+ App.languages = r.languages
+ App.repositories = r.repositories
+ App.statuses = r.statuses
+ App.tags = r.tags
+ window.messages = r.messages
+
+ # Remove the initial spinner
+ jQuery('#coding-rules-page-loader').remove()
+
+ # Start the application
+ App.start()
\ No newline at end of file
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'common/handlebars-extensions'
+], (
+ Marionette
+) ->
+
+ class AppLayout extends Marionette.Layout
+ className: 'navigator coding-rules-navigator'
+ template: getTemplate '#coding-rules-layout'
+ spinner: '<i class="spinner"></i>'
+
+
+ regions:
+ headerRegion: '.navigator-header'
+ actionsRegion: '.navigator-actions'
+ resultsRegion: '.navigator-results'
+ detailsRegion: '.navigator-details'
+ filtersRegion: '.navigator-filters'
+
+
+ onRender: ->
+ # Adjust details region height
+ @$(@detailsRegion.el).css 'bottom', jQuery('#footer').outerHeight()
+
+
+ showSpinner: (region) ->
+ @$(@[region].el).html @spinner
--- /dev/null
+define ['jquery.mockjax'], ->
+
+ jQuery.mockjaxSettings.contentType = 'text/json';
+ jQuery.mockjaxSettings.responseTime = 250;
+
+ # GET /api/codingrules/app
+ jQuery.mockjax
+ url: "#{baseUrl}/api/codingrules/app"
+ responseText: JSON.stringify
+ qualityprofiles: [
+ { key: 'sonarway', name: 'Sonar Way', parent: null },
+ { key: 'qualityprofile1', name: 'Quality Profile 1', parent: 'sonarway' },
+ { key: 'qualityprofile2', name: 'Quality Profile 2', parent: 'sonarway' },
+ { key: 'qualityprofile3', name: 'Quality Profile 3', parent: null },
+ ]
+ languages:
+ java: 'Java'
+ javascript: 'JavaScript'
+ repositories:
+ 'checkstyle': 'Checkstyle'
+ 'common-java': 'Common SonarQube'
+ 'findbugs': 'FindBugs'
+ 'pmd': 'PMD'
+ 'pmd-unit-tests': 'PMD Unit Tests'
+ 'squid': 'SonarQube'
+ statuses:
+ 'BETA': 'Beta'
+ 'DEPRECATED': 'Deprecated'
+ 'READY': 'Ready'
+ tags:
+ 'brain-overload': 'brain-overload'
+ 'bug': 'bug'
+ 'comment': 'comment'
+ 'convention': 'convention'
+ 'error-handling': 'error-handling'
+ 'formatting': 'formatting'
+ 'java8': 'java8'
+ 'multithreading': 'multithreading'
+ 'naming': 'naming'
+ 'pitfall': 'pitfall'
+ 'security': 'security'
+ 'size': 'size'
+ 'unused': 'unused'
+ 'unused-code': 'unused-code'
+ messages:
+ 'all': 'All'
+ 'any': 'Any'
+ 'apply': 'Apply'
+ 'bulk_change': 'Bulk Change'
+ 'cancel': 'Cancel'
+ 'change': 'Change'
+ 'delete': 'Delete'
+ 'done': 'Done'
+ 'edit': 'Edit'
+ 'moreCriteria': '+ More Criteria'
+ 'search_verb': 'Search'
+ 'severity': 'Severity'
+ 'update': 'Update'
+
+ 'severity.BLOCKER': 'Blocker'
+ 'severity.CRITICAL': 'Critical'
+ 'severity.MAJOR': 'Major'
+ 'severity.MINOR': 'Minor'
+ 'severity.INFO': 'Info'
+
+ 'coding_rules.activate': 'Activate'
+ 'coding_rules.activate_quality_profile': 'Activate Quality Profile'
+ 'coding_rules.add_note': 'Add Note'
+ 'coding_rules.available_since': 'Available Since'
+ 'coding_rules.bulk_change': 'Bulk Change'
+ 'coding_rules.extend_description': 'Extend Description'
+ 'coding_rules.deactivate_quality_profile': 'Deactivate'
+ 'coding_rules.found': 'Found'
+ 'coding_rules.inherits': 'Inherits'
+ 'coding_rules.key': 'Key:'
+ 'coding_rules.new_search': 'New Search'
+ 'coding_rules.no_results': 'No Coding Rules'
+ 'coding_rules.order': 'Order'
+ 'coding_rules.ordered_by': 'Ordered By'
+ 'coding_rules.original': 'Original:'
+ 'coding_rules.page': 'Coding Rules'
+ 'coding_rules.parameters': 'Parameters'
+ 'coding_rules.parameters.default_value': 'Default Value:'
+ 'coding_rules.quality_profiles': 'Quality Profiles'
+ 'coding_rules.quality_profile': 'Quality Profile'
+ 'coding_rules.repository': 'Repository:'
+ 'coding_rules.revert_to_parent_definition': 'Revert to Parent Definition'
+ 'coding_rules._rules': 'rule(s)'
+ 'coding_rules.select_tag': 'Select Tag'
+
+ 'coding_rules.filters.availableSince': 'Available Since'
+ 'coding_rules.filters.description': 'Description'
+ 'coding_rules.filters.in_quality_profile': 'In 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.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'
+ 'coding_rules.filters.tag': 'Tag'
+
+ 'coding_rules.sort.creation_date': 'Creation Date'
+ 'coding_rules.sort.name': 'Name'
+
+
+ # GET /api/codingrules/search
+ jQuery.mockjax
+ url: "#{baseUrl}/api/codingrules/search"
+ responseText: JSON.stringify
+ codingrules: [
+ {
+ name: 'Array designators "[]" should be located after the type in method signatures'
+ language: 'Java'
+ severity: 'MAJOR'
+ status: 'DEPRECATED'
+ },
+ {
+ name: 'Avoid Array Loops'
+ language: 'Java'
+ severity: 'CRITICAL'
+ status: 'READY'
+ },
+ {
+ name: 'Bad practice - Abstract class defines covariant compareTo() method'
+ language: 'Java'
+ severity: 'MAJOR'
+ status: 'READY'
+ },
+ {
+ name: 'Correctness - Use of class without a hashCode() method in a hashed data structure'
+ language: 'Java'
+ severity: 'MINOR'
+ status: 'BETA'
+ },
+ {
+ name: 'Useless Operation On Immutable'
+ language: 'Java'
+ severity: 'MAJOR'
+ status: 'READY'
+ }
+ ]
+ paging:
+ total: 5
+ fTotal: '5'
+
+
+
+ # GET /api/codingrules/show
+ jQuery.mockjax
+ url: "#{baseUrl}/api/codingrules/show"
+ responseText: JSON.stringify
+ codingrule:
+ name: 'Array designators "[]" should be located after the type in method signatures'
+ language: 'Java'
+ tags: ['bug', 'comment', 'java8']
+ creationDate: '2013-10-15'
+ fCreationDate: 'Oct 15, 2013'
+ status: 'DEPRECATED'
+ repository: 'squid'
+ key: 'S1190'
+ parameters: [
+ { key: 'someParameter', type: 'INT', default: 4, description: 'Some parameter description' }
+ { key: 'boolParameter', type: 'BOOL', description: 'Bool parameter description' }
+ ]
+ description: '''
+ <p>
+ According to the Java Language Specification:
+ </p>
+
+ <pre>For compatibility with older versions of the Java SE platform,
+ the declaration of a method that returns an array is allowed to place (some or all of)
+ the empty bracket pairs that form the declaration of the array type after
+ the formal parameter list. This obsolescent syntax should not be used in new code.
+ </pre>
+
+ <p>The following code snippet illustrates this rule:</p>
+
+ <pre>public int getVector()[] { /* ... */ } // Non-Compliant
+
+ public int[] getVector() { /* ... */ } // Compliant
+
+ public int[] getMatrix()[] { /* ... */ } // Non-Compliant
+
+ public int[][] getMatrix() { /* ... */ } // Compliant
+ </pre>'''
+ extra: '''<p>This note is here <b>only for test purposes</b>.</p>'''
+ 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 }
+ ]
+ },
+ {
+ 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'
+ }
+ ]
+
+
+
+ # POST /api/codingrules/extend_description
+ jQuery.mockjax
+ url: "#{baseUrl}/api/codingrules/extend_description"
+ responseText: JSON.stringify
+ extra: '''<p>This note is here <i>only for test purposes</i>.</p>'''
+ extraRaw: '''This note is here *only for test purposes*.'''
+
+
+ # POST /api/codingrules/bulk_change
+ jQuery.mockjax
+ url: "#{baseUrl}/api/codingrules/bulk_change"
+
+
+ # POST /api/codingrules/set_tags
+ jQuery.mockjax
+ url: "#{baseUrl}/api/codingrules/set_tags"
+
+
+ # POST /api/codingrules/activate
+ jQuery.mockjax
+ url: "#{baseUrl}/api/codingrules/activate"
+
+
+ # POST /api/codingrules/note
+ jQuery.mockjax
+ url: "#{baseUrl}/api/codingrules/note"
+ responseText: JSON.stringify
+ 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'
+
+
+ # GET /api/qualityprofiles/list
+ jQuery.mockjax
+ url: "#{baseUrl}/api/qualityprofiles/list"
+ responseText: JSON.stringify
+ more: false
+ results: [
+ { id: 'sonarway', text: 'Sonar Way', parent: null },
+ { id: 'qp1', text: 'Quality Profile 1', parent: 'sonarway' },
+ { id: 'qp2', text: 'Quality Profile 2', parent: 'sonarway' },
+ { 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
+
--- /dev/null
+define [
+ 'backbone',
+], (
+ Backbone,
+) ->
+
+ class AppRouter extends Backbone.Router
+
+ routes:
+ '': 'index'
+ ':query': 'index'
+
+
+ initialize: (options) ->
+ @app = options.app
+
+
+ parseQuery: (query, separator) ->
+ (query || '').split(separator || '|').map (t) ->
+ tokens = t.split('=')
+ key: tokens[0], value: decodeURIComponent(tokens[1])
+
+
+ emptyQuery: ->
+ @navigate '', trigger: true, replace: true
+
+
+ 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) ->
+ @app.filterBarView.restoreFromQuery(params)
+ @app.restoreSorting(params)
+ @app.fetchFirstPage()
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'common/handlebars-extensions'
+], (
+ Marionette
+) ->
+
+ class CodingRulesStatusView extends Marionette.ItemView
+ template: getTemplate '#coding-rules-status-template'
+
+
+ collectionEvents:
+ 'all': 'render'
+
+
+ ui:
+ orderChoices: '.navigator-actions-order-choices'
+
+
+ events:
+ 'click .navigator-actions-order': 'toggleOrderChoices'
+ 'click @ui.orderChoices': 'sort'
+ 'click .navigator-actions-bulk': 'bulkChange'
+
+
+ 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()
+
+
+ bulkChange: ->
+ @options.app.codingRulesBulkChangeView.show()
+
+
+ serializeData: ->
+ _.extend super,
+ paging: @collection.paging
+ sorting: @collection.sorting
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'common/handlebars-extensions'
+], (
+ Marionette
+) ->
+
+ class CodingRulesBulkChangeView extends Marionette.ItemView
+ className: 'modal'
+ template: getTemplate '#coding-rules-bulk-change-template'
+
+
+ events:
+ 'submit form': 'onSubmit'
+ 'click #coding-rules-cancel-bulk-change': 'hide'
+ 'click label': 'enableAction'
+ 'change select': 'enableAction'
+
+
+ onRender: ->
+ @$el.dialog
+ dialogClass: 'no-close',
+ width: '600px',
+ draggable: false,
+ autoOpen: false,
+ modal: true,
+ minHeight: 50,
+ resizable: false,
+ title: null
+
+ @$('#coding-rules-bulk-change-activate-on, #coding-rules-bulk-change-deactivate-on').select2
+ width: '250px'
+ minimumResultsForSearch: 1
+
+ format = (state) ->
+ return state.text unless state.id
+ "<i class='icon-severity-#{state.id.toLowerCase()}'></i> #{state.text}"
+ @$('#coding-rules-bulk-change-severity').select2
+ width: '250px'
+ minimumResultsForSearch: 999
+ formatResult: format
+ formatSelection: format
+ escapeMarkup: (m) -> m
+
+
+ show: ->
+ @render()
+ @$el.dialog 'open'
+
+
+ hide: ->
+ @$el.dialog 'close'
+
+
+ prepareQuery: ->
+ query = @options.app.getQuery()
+ activateIn = []
+ deactivateIn = []
+ severity = null
+ if @$('#coding-rules-bulk-change-activate-qp').is(':checked')
+ activateIn.push @options.app.getInactiveQualityProfile()
+ if @$('#coding-rules-bulk-change-activate').is(':checked')
+ activateIn.push @$('#coding-rules-bulk-change-activate-on').val()
+ if @$('#coding-rules-bulk-change-deactivate-qp').is(':checked')
+ deactivateIn.push @options.app.getActiveQualityProfile()
+ if @$('#coding-rules-bulk-change-deactivate').is(':checked')
+ deactivateIn.push @$('#coding-rules-bulk-change-deactivate-on').val()
+ if @$('#coding-rules-bulk-change-set-severity').is(':checked')
+ severity = @$('#coding-rules-bulk-change-severity').val()
+ actions = []
+ if activateIn.length > 0
+ actions.push 'bulk_activate'
+ _.extend query, bulk_activate_in: activateIn.join(',')
+ if deactivateIn.length > 0
+ actions.push 'bulk_deactivate'
+ _.extend query, bulk_deactivate_in: deactivateIn.join(',')
+ if severity
+ actions.push 'bulk_set_severity'
+ _.extend query, bulk_severity: severity
+ _.extend query, bulk_actions: actions
+
+ onSubmit: (e) ->
+ e.preventDefault()
+ jQuery.ajax
+ type: 'POST'
+ url: "#{baseUrl}/api/codingrules/bulk_change"
+ data: @prepareQuery()
+ .done =>
+ @options.app.fetchFirstPage()
+ @hide()
+
+
+
+ enableAction: (e) ->
+ jQuery(e.target).siblings('input[type=checkbox]').prop 'checked', true
+
+
+ serializeData: ->
+ 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()
+
+ inactiveQualityProfile: @options.app.getInactiveQualityProfile()
+ inactiveQualityProfileName: @options.app.inactiveInFilter.view.renderValue()
+ deactivateOnQualityProfiles: _.reject @options.app.qualityProfiles, (q) => q.key == @options.app.getActiveQualityProfile()
+
+ severities: ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO']
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'common/handlebars-extensions'
+], (
+ Marionette
+) ->
+
+ class CodingRulesDetailQualityProfilesView extends Marionette.ItemView
+ className: 'coding-rules-detail-quality-profile'
+ template: getTemplate '#coding-rules-detail-quality-profile-template'
+
+
+ ui:
+ severitySelect: '.coding-rules-detail-quality-profile-severity'
+
+ note: '.coding-rules-detail-quality-profile-note'
+ noteForm: '.coding-rules-detail-quality-profile-note-form'
+ noteText: '.coding-rules-detail-quality-profile-note-text'
+ noteAdd: '.coding-rules-detail-quality-profile-note-add'
+ noteEdit: '.coding-rules-detail-quality-profile-note-edit'
+ noteDelete: '.coding-rules-detail-quality-profile-note-delete'
+ noteCancel: '.coding-rules-detail-quality-profile-note-cancel'
+ noteSubmit: '.coding-rules-detail-quality-profile-note-submit'
+
+
+ events:
+ 'click @ui.noteAdd': 'editNote'
+ 'click @ui.noteEdit': 'editNote'
+ 'click @ui.noteDelete': 'deleteNote'
+ 'click @ui.noteCancel': 'cancelNote'
+ 'click @ui.noteSubmit': 'submitNote'
+
+
+ editNote: ->
+ @ui.note.hide()
+ @ui.noteForm.show()
+ @ui.noteText.focus()
+
+
+ deleteNote: ->
+ @ui.noteText.val ''
+ @submitNote().done =>
+ @model.unset 'note'
+ @render()
+
+
+ cancelNote: ->
+ @ui.note.show()
+ @ui.noteForm.hide()
+
+
+ submitNote: ->
+ @ui.note.html '<i class="spinner"></i>'
+ @ui.noteForm.html '<i class="spinner"></i>'
+ jQuery.ajax
+ type: 'POST'
+ url: "#{baseUrl}/api/codingrules/note"
+ dataType: 'json'
+ data: text: @ui.noteText.val()
+ .done (r) =>
+ @model.set 'note', r.note
+ @render()
+
+
+ onRender: ->
+ @ui.noteForm.hide()
+
+ format = (state) ->
+ return state.text unless state.id
+ "<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
+
+
+ getParent: ->
+ return null unless @model.get 'inherits'
+ @options.qualityProfiles.findWhere(key: @model.get('inherits')).toJSON()
+
+
+ enhanceParameters: ->
+ parent = @getParent()
+ parameters = @model.get 'parameters'
+ return parameters unless parent
+ parameters.map (p) ->
+ _.extend p, original: _.findWhere(parent.parameters, key: p.key).value
+
+
+ serializeData: ->
+ _.extend super,
+ parent: @getParent()
+ parameters: @enhanceParameters()
+ severities: ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO']
\ No newline at end of file
--- /dev/null
+define [
+ 'backbone.marionette'
+ 'coding-rules/views/coding-rules-detail-quality-profile-view'
+], (
+ Marionette,
+ CodingRulesDetailQualityProfileView
+) ->
+
+ class CodingRulesDetailQualityProfilesView extends Marionette.CollectionView
+ itemView: CodingRulesDetailQualityProfileView
+
+ itemViewOptions: ->
+ qualityProfiles: @collection
\ No newline at end of file
--- /dev/null
+define [
+ 'backbone',
+ 'backbone.marionette',
+ 'coding-rules/views/coding-rules-detail-quality-profiles-view'
+ 'common/handlebars-extensions'
+], (
+ Backbone,
+ Marionette,
+ CodingRulesDetailQualityProfilesView
+) ->
+
+ class CodingRulesDetailView extends Marionette.Layout
+ template: getTemplate '#coding-rules-detail-template'
+
+
+ regions:
+ qualityProfilesRegion: '#coding-rules-detail-quality-profiles'
+
+
+ ui:
+ tagsChange: '.coding-rules-detail-tags-change'
+ tagInput: '.coding-rules-detail-tag-input'
+ tagsEdit: '.coding-rules-detail-tag-edit'
+ tagsEditDone: '.coding-rules-detail-tag-edit-done'
+ tagsList: '.coding-rules-detail-tag-list'
+
+ descriptionExtra: '#coding-rules-detail-description-extra'
+ extendDescriptionLink: '#coding-rules-detail-extend-description'
+ extendDescriptionForm: '#coding-rules-detail-extend-description-form'
+ extendDescriptionSubmit: '#coding-rules-detail-extend-description-submit'
+ extendDescriptionText: '#coding-rules-detail-extend-description-text'
+ extendDescriptionSpinner: '#coding-rules-detail-extend-description-spinner'
+ cancelExtendDescription: '#coding-rules-detail-extend-description-cancel'
+
+ qualityProfileActivate: '#coding-rules-quality-profile-activate'
+
+
+ events:
+ 'click @ui.tagsChange': 'changeTags'
+ 'click @ui.tagsEditDone': 'editDone'
+
+ 'click @ui.extendDescriptionLink': 'showExtendDescriptionForm'
+ 'click @ui.cancelExtendDescription': 'hideExtendDescriptionForm'
+ 'click @ui.extendDescriptionSubmit': 'submitExtendDescription'
+
+ 'click @ui.qualityProfileActivate': 'activateQualityProfile'
+
+
+ initialize: (options) ->
+ @qualityProfilesView = new CodingRulesDetailQualityProfilesView
+ collection: new Backbone.Collection options.model.get 'qualityProfiles'
+
+
+ onRender: ->
+ @qualityProfilesRegion.show @qualityProfilesView
+
+ @ui.tagInput.select2
+ tags: _.difference @options.app.tags, @model.get 'tags'
+ width: '500px'
+ @ui.tagsEdit.hide()
+
+ @ui.extendDescriptionForm.hide()
+ @ui.extendDescriptionSpinner.hide()
+
+ qp = @options.app.getActiveQualityProfile()
+ @$('.coding-rules-detail-quality-profile').first().addClass 'active' if qp?
+
+
+ changeTags: ->
+ @ui.tagsEdit.show()
+ @ui.tagsList.hide()
+
+
+ editDone: ->
+ @ui.tagsEdit.html '<i class="spinner"></i>'
+ tags = @ui.tagInput.val()
+ jQuery.ajax
+ type: 'POST'
+ url: "#{baseUrl}/api/codingrules/set_tags"
+ data: tags: tags
+ .done =>
+ @model.set 'tags', tags.split ','
+ @render()
+
+
+ showExtendDescriptionForm: ->
+ @ui.descriptionExtra.hide()
+ @ui.extendDescriptionForm.show()
+
+
+ hideExtendDescriptionForm: ->
+ @ui.descriptionExtra.show()
+ @ui.extendDescriptionForm.hide()
+
+
+ submitExtendDescription: ->
+ @ui.extendDescriptionForm.hide()
+ @ui.extendDescriptionSpinner.show()
+ jQuery.ajax
+ type: 'POST'
+ url: "#{baseUrl}/api/codingrules/extend_description"
+ dataType: 'json'
+ data: text: @ui.extendDescriptionText.val()
+ .done (r) =>
+ @model.set extra: r.extra, extraRaw: r.extraRaw
+ @render()
+
+
+ activateQualityProfile: ->
+ @options.app.codingRulesQualityProfileActivationView.model = @model
+ @options.app.codingRulesQualityProfileActivationView.show()
\ No newline at end of file
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'common/handlebars-extensions'
+], (
+ Marionette,
+) ->
+
+ class CodingRulesListEmptyView extends Marionette.ItemView
+ tagName: 'li'
+ className: 'navigator-results-no-results'
+ template: getTemplate '#coding-rules-list-empty-template'
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'coding-rules/views/coding-rules-detail-view',
+ 'common/handlebars-extensions'
+], (
+ Marionette,
+ CodingRulesDetailView
+) ->
+
+ class CodingRulesListItemView extends Marionette.ItemView
+ tagName: 'li'
+ template: getTemplate '#coding-rules-list-item-template'
+ activeClass: 'active'
+
+
+ events: ->
+ 'click': 'showDetail'
+
+
+ showDetail: ->
+ @$el.siblings().removeClass @activeClass
+ @$el.addClass @activeClass
+
+ @options.app.layout.showSpinner 'detailsRegion'
+ jQuery.ajax
+ url: "#{baseUrl}/api/codingrules/show"
+ .done (r) =>
+ @model.set r.codingrule
+ detailView = new CodingRulesDetailView
+ 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 [
+ 'backbone.marionette',
+ 'coding-rules/views/coding-rules-list-item-view',
+ 'coding-rules/views/coding-rules-list-empty-view'
+], (
+ Marionette,
+ CodingRulesListItemView,
+ CodingRulesListEmptyView
+) ->
+
+ class CodingRulesListView extends Marionette.CollectionView
+ tagName: 'ol'
+ className: 'navigator-results-list'
+ itemView: CodingRulesListItemView,
+ emptyView: CodingRulesListEmptyView,
+
+
+ itemViewOptions: ->
+ listView: @, app: @options.app
+
+
+ selectFirst: ->
+ @$el.find('*:first').click()
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'common/handlebars-extensions'
+], (
+ Marionette
+) ->
+
+ class CodingRulesQualityProfileActivationView extends Marionette.ItemView
+ className: 'modal'
+ template: getTemplate '#coding-rules-quality-profile-activation-template'
+
+
+ ui:
+ qualityProfileSelect: '#coding-rules-quality-profile-activation-select'
+ qualityProfileSeverity: '#coding-rules-quality-profile-activation-severity'
+ qualityProfileActivate: '#coding-rules-quality-profile-activation-activate'
+
+
+ events:
+ 'click #coding-rules-quality-profile-activation-cancel': 'hide'
+ 'click @ui.qualityProfileActivate': 'activate'
+
+
+ activate: ->
+ @$('.modal-foot').html '<i class="spinner"></i>'
+ jQuery.ajax
+ type: 'POST'
+ url: "#{baseUrl}/api/codingrules/activate"
+ data: id: 1
+ .done =>
+ jQuery('.navigator-results-list .active').click()
+ @hide()
+
+
+ onRender: ->
+ @$el.dialog
+ dialogClass: 'no-close',
+ width: '600px',
+ draggable: false,
+ autoOpen: false,
+ modal: true,
+ minHeight: 50,
+ resizable: false,
+ title: null
+
+ @ui.qualityProfileSelect.select2
+ width: '250px'
+ minimumResultsForSearch: 5
+
+ format = (state) ->
+ return state.text unless state.id
+ "<i class='icon-severity-#{state.id.toLowerCase()}'></i> #{state.text}"
+
+ @ui.qualityProfileSeverity.val @model.get 'severity'
+ @ui.qualityProfileSeverity.select2
+ width: '250px'
+ minimumResultsForSearch: 999
+ formatResult: format
+ formatSelection: format
+
+
+ show: ->
+ @render()
+ @$el.dialog 'open'
+
+
+ hide: ->
+ @$el.dialog 'close'
+
+
+ getAvailableQualityProfiles: ->
+ _.reject @options.app.qualityProfiles, (profile) =>
+ _.findWhere @model.get('qualityProfiles'), key: profile.key
+
+
+ serializeData: ->
+ _.extend super,
+ qualityProfiles: @getAvailableQualityProfiles()
+ severities: ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO']
--- /dev/null
+define [
+ 'navigator/filters/filter-bar',
+ 'navigator/filters/base-filters',
+ 'navigator/filters/favorite-filters',
+ 'navigator/filters/more-criteria-filters'
+], (
+ FilterBarView,
+ BaseFilters,
+ FavoriteFiltersModule,
+ MoreCriteriaFilters
+) ->
+
+ class CodingRulesFilterBarView extends FilterBarView
+
+ collectionEvents:
+ 'change:enabled': 'changeEnabled'
+
+
+ events:
+ 'click .navigator-filter-submit': 'search'
+
+
+ getQuery: ->
+ query = {}
+ @collection.each (filter) ->
+ _.extend query, filter.view.formatValue()
+ query
+
+
+ onAfterItemAdded: (itemView) ->
+ if itemView.model.get('type') == FavoriteFiltersModule.FavoriteFilterView
+ jQuery('.navigator-header').addClass 'navigator-header-favorite'
+
+
+ addMoreCriteriaFilter: ->
+ disabledFilters = this.collection.where enabled: false
+ if disabledFilters.length > 0
+ @moreCriteriaFilter = new BaseFilters.Filter
+ type: MoreCriteriaFilters.MoreCriteriaFilterView,
+ enabled: true,
+ optional: false,
+ filters: disabledFilters
+ @collection.add @moreCriteriaFilter
+
+
+ changeEnabled: ->
+ if @moreCriteriaFilter?
+ disabledFilters = _.reject @collection.where(enabled: false), (filter) ->
+ filter.get('type') == MoreCriteriaFilters.MoreCriteriaFilterView
+
+ if disabledFilters.length == 0
+ @moreCriteriaFilter.set { enabled: false }, { silent: true }
+ else
+ @moreCriteriaFilter.set { enabled: true }, { silent: true }
+
+ @moreCriteriaFilter.set { filters: disabledFilters }, { silent: true }
+ @moreCriteriaFilter.trigger 'change:filters'
+
+
+ search: ->
+ @options.app.state.set
+ query: this.options.app.getQuery(),
+ search: true
+ @options.app.fetchFirstPage()
+
+
+ fetchNextPage: ->
+ @options.app.fetchNextPage()
--- /dev/null
+define [
+ 'navigator/filters/choice-filters'
+], (
+ ChoiceFilters
+) ->
+
+ class InheritanceFilterView extends ChoiceFilters.ChoiceFilterView
+
+ initialize: ->
+ super
+ @qualityProfileFilter = @model.get 'qualityProfileFilter'
+ @listenTo @qualityProfileFilter, 'change:value', @onChangeQualityProfile
+ @onChangeQualityProfile()
+
+
+ onChangeQualityProfile: ->
+ qualityProfile = @qualityProfileFilter.get 'value'
+ parentQualityProfile = @qualityProfileFilter.get 'parentQualityProfile'
+ if _.isArray(qualityProfile) && qualityProfile.length == 1 && parentQualityProfile
+ @makeActive()
+ else
+ @makeInactive()
+
+
+ makeActive: ->
+ @model.set inactive: false, title: ''
+ @model.trigger 'change:enabled'
+ @$el.removeClass('navigator-filter-inactive').prop 'title', ''
+
+
+ makeInactive: ->
+ @model.set inactive: true, title: t 'coding_rules.filters.inheritance.inactive'
+ @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'
+
+
+ showDetails: ->
+ super unless @$el.is '.navigator-filter-inactive'
+
+
+ restore: (value) ->
+ value = value.split(',') if _.isString(value)
+ if @choices && value.length > 0
+ @model.set value: value, enabled: true
+ @onChangeQualityProfile
+ else
+ @clear()
--- /dev/null
+define [
+ 'navigator/filters/ajax-select-filters'
+], (
+ AjaxSelectFilters
+) ->
+
+ class QualityProfileSuggestions extends AjaxSelectFilters.Suggestions
+
+ url: ->
+ "#{baseUrl}/api/qualityprofiles/list"
+
+
+
+ class QualityProfileFilterView extends AjaxSelectFilters.AjaxSelectFilterView
+
+ initialize: ->
+ super
+ @choices = new QualityProfileSuggestions
+ @listenTo @model, 'change:value', @updateParentQualityProfile
+
+
+ updateParentQualityProfile: ->
+ selected = @getSelected()
+ if selected.length == 1
+ @model.set 'parentQualityProfile', selected[0].get('parent')
+ 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
+
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'common/handlebars-extensions'
+], (
+ Marionette
+) ->
+
+ class CodingRulesHeaderView extends Marionette.ItemView
+ template: getTemplate '#coding-rules-header-template'
+
+
+ events:
+ 'click #coding-rules-new-search': 'newSearch'
+
+
+ newSearch: ->
+ @options.app.router.navigate '', trigger: true
--- /dev/null
+requirejs.config
+ baseUrl: "#{baseUrl}/javascripts"
+
+ paths:
+ 'jquery': 'third-party/jquery'
+ 'backbone': 'third-party/backbone'
+ 'backbone.marionette': 'third-party/backbone.marionette'
+ 'handlebars': 'third-party/handlebars'
+ 'moment': 'third-party/moment'
+ 'select-list': 'common/select-list'
+
+ shim:
+ 'backbone.marionette':
+ deps: ['backbone']
+ exports: 'Marionette'
+ 'backbone':
+ exports: 'Backbone'
+ 'handlebars':
+ exports: 'Handlebars'
+ 'moment':
+ exports: 'moment'
+ 'select-list':
+ exports: 'SelectList'
+
+
+requirejs [
+ 'backbone', 'backbone.marionette', 'handlebars',
+ 'quality-gate/collections/quality-gates',
+ 'quality-gate/views/quality-gate-sidebar-list-view',
+ 'quality-gate/views/quality-gate-actions-view',
+ 'quality-gate/views/quality-gate-edit-view',
+ 'quality-gate/router',
+ 'quality-gate/layout',
+ 'common/handlebars-extensions'
+], (
+ Backbone, Marionette, Handlebars,
+ QualityGates,
+ QualityGateSidebarListItemView,
+ QualityGateActionsView,
+ QualityGateEditView,
+ QualityGateRouter,
+ QualityGateLayout
+) ->
+
+ # Create a generic error handler for ajax requests
+ jQuery.ajaxSetup
+ error: (jqXHR) ->
+ text = jqXHR.responseText
+ errorBox = jQuery('.modal-error')
+ if jqXHR.responseJSON?.errors?
+ text = _.pluck(jqXHR.responseJSON.errors, 'msg').join '. '
+ if errorBox.length > 0
+ errorBox.show().text text
+ else
+ alert text
+
+
+ # Add html class to mark the page as navigator page
+ jQuery('html').addClass('navigator-page quality-gates-page');
+
+
+ # Create a Quality Gate Application
+ App = new Marionette.Application
+
+
+ App.qualityGates = new QualityGates
+
+
+ App.openFirstQualityGate = ->
+ if @qualityGates.length > 0
+ @router.navigate "show/#{@qualityGates.models[0].get('id')}", trigger: true
+ else
+ App.layout.detailsRegion.reset()
+
+
+ App.deleteQualityGate = (id) ->
+ App.qualityGates.remove id
+ App.openFirstQualityGate()
+
+
+ App.unsetDefaults = (id) ->
+ App.qualityGates.each (gate) ->
+ gate.set('default', false) unless gate.id == id
+
+
+ # Construct layout
+ App.addInitializer ->
+ @layout = new QualityGateLayout app: @
+ jQuery('body').append @layout.render().el
+
+
+ # Construct actions bar
+ App.addInitializer ->
+ @codingRulesHeaderView = new QualityGateActionsView
+ app: @
+ @layout.actionsRegion.show @codingRulesHeaderView
+
+
+ # Construct sidebar
+ App.addInitializer ->
+ @qualityGateSidebarListView = new QualityGateSidebarListItemView
+ collection: @qualityGates
+ app: @
+ @layout.resultsRegion.show @qualityGateSidebarListView
+
+
+ # Construct edit view
+ App.addInitializer ->
+ @qualityGateEditView = new QualityGateEditView app: @
+ @qualityGateEditView.render()
+
+
+ # Start router
+ App.addInitializer ->
+ @router = new QualityGateRouter app: @
+ Backbone.history.start()
+
+
+ # Open first quality gate when come to the page
+ App.addInitializer ->
+ initial = Backbone.history.fragment == ''
+ App.openFirstQualityGate() if initial
+
+
+ # Call app, Load metrics and the list of quality gates before start the application
+ appXHR = jQuery.ajax
+ url: "#{baseUrl}/api/qualitygates/app"
+ .done (r) =>
+ App.canEdit = r.edit
+ App.periods = r.periods
+ App.metrics = r.metrics
+ window.messages = r.messages
+
+ qualityGatesXHR = App.qualityGates.fetch()
+
+ jQuery.when(qualityGatesXHR, appXHR)
+ .done ->
+ # Remove the initial spinner
+ jQuery('#quality-gate-page-loader').remove()
+
+ # Start the application
+ App.start()
--- /dev/null
+define [
+ 'backbone',
+ 'quality-gate/models/condition'
+], (
+ Backbone,
+ Condition
+) ->
+
+ class Conditions extends Backbone.Collection
+ model: Condition
--- /dev/null
+define [
+ 'backbone',
+ 'quality-gate/models/quality-gate'
+], (
+ Backbone,
+ QualityGate
+) ->
+
+ class QualityGates extends Backbone.Collection
+ model: QualityGate
+
+
+ url: ->
+ "#{baseUrl}/api/qualitygates/list"
+
+
+ # {
+ # "qualitygates": [
+ # { "id": 42, "name": "QG 1" },
+ # { "id": 43, "name": "QG 2" },
+ # { "id": 44, "name": "QG 3" }
+ # ],
+ # "default": 42
+ # }
+ parse: (r) ->
+ r.qualitygates.map (gate) ->
+ _.extend gate, default: gate.id == r.default
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'common/handlebars-extensions'
+], (
+ Marionette
+) ->
+
+ class AppLayout extends Marionette.Layout
+ className: 'navigator quality-gates-navigator'
+ template: getTemplate '#quality-gates-layout'
+
+
+ regions:
+ headerRegion: '.navigator-header'
+ actionsRegion: '.navigator-actions'
+ resultsRegion: '.navigator-results'
+ detailsRegion: '.navigator-details'
+
+
+ initialize: (options) ->
+ @listenTo options.app.qualityGates, 'all', @updateLayout
+
+
+ updateLayout: ->
+ empty = @options.app.qualityGates.length == 0
+ @$(@headerRegion.el).toggle !empty
+ @$(@detailsRegion.el).toggle !empty
+
+
+ onRender: ->
+ @updateLayout()
+
+ # Adjust details region height
+ @$(@detailsRegion.el).css 'bottom', jQuery('#footer').outerHeight()
--- /dev/null
+define [
+ 'backbone'
+], (
+ Backbone
+) ->
+
+ class Condition extends Backbone.Model
+
+ url: ->
+ "#{baseUrl}/api/qualitygates/create_condition"
+
+
+ save: ->
+ method = unless @isNew() then 'update' else 'create'
+ data =
+ metric: @get('metric').key
+ op: @get('op')
+ warning: @get('warning')
+ error: @get('error')
+
+ unless @get('period') == '0'
+ data.period = @get('period')
+
+ unless @isNew()
+ data.id = @id
+ else
+ data.gateId = @get('gateId')
+
+ jQuery.ajax({
+ url: "#{baseUrl}/api/qualitygates/#{method}_condition"
+ type: 'POST'
+ data: data
+ }).done (r) =>
+ @set 'id', r.id
+
+
+ delete: ->
+ jQuery.ajax
+ url: "#{baseUrl}/api/qualitygates/delete_condition"
+ type: 'POST'
+ data: id: @id
+
--- /dev/null
+define [
+ 'backbone'
+], (
+ Backbone
+) ->
+
+ class QualityGate extends Backbone.Model
+
+ url: ->
+ "#{baseUrl}/api/qualitygates/show?id=#{@get('id')}"
--- /dev/null
+define [
+ 'backbone',
+ 'quality-gate/models/quality-gate',
+ 'quality-gate/views/quality-gate-detail-view',
+ 'quality-gate/views/quality-gate-detail-header-view',
+], (
+ Backbone,
+ QualityGate,
+ QualityGateDetailView,
+ QualityGateDetailHeaderView
+) ->
+
+ class QualityGateRouter extends Backbone.Router
+
+ routes:
+ 'show/:id': 'show'
+
+
+ initialize: (options) ->
+ @app = options.app
+
+
+ show: (id) ->
+ qualityGate = @app.qualityGates.get id
+ if qualityGate
+ @app.qualityGateSidebarListView.highlight id
+
+ qualityGateDetailHeaderView = new QualityGateDetailHeaderView
+ app: @app
+ model: qualityGate
+ @app.layout.headerRegion.show qualityGateDetailHeaderView
+
+ qualityGateDetailView = new QualityGateDetailView
+ app: @app
+ model: qualityGate
+ @app.layout.detailsRegion.show qualityGateDetailView
+ qualityGateDetailView.$el.hide()
+
+ qualityGateDetailHeaderView.showSpinner()
+ qualityGate.fetch().done ->
+ qualityGateDetailView.$el.show()
+ qualityGateDetailHeaderView.hideSpinner()
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'handlebars',
+ 'quality-gate/models/quality-gate'
+], (
+ Marionette,
+ Handlebars,
+ QualityGate
+) ->
+
+ class QualityGateActionsView extends Marionette.ItemView
+ template: Handlebars.compile jQuery('#quality-gate-actions-template').html()
+
+
+ events:
+ 'click #quality-gate-add': 'add'
+
+
+ add: ->
+ qualityGate = new QualityGate()
+ @options.app.qualityGateEditView.method = 'create'
+ @options.app.qualityGateEditView.model = qualityGate
+ @options.app.qualityGateEditView.show()
+
+
+ serializeData: ->
+ _.extend super, canEdit: @options.app.canEdit
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'handlebars'
+], (
+ Marionette,
+ Handlebars
+) ->
+
+ class QualityGateDetailConditionView extends Marionette.ItemView
+ tagName: 'tr'
+ template: Handlebars.compile jQuery('#quality-gate-detail-condition-template').html()
+ spinner: '<i class="spinner"></i>'
+
+
+ modelEvents:
+ 'change:id': 'render'
+
+
+ ui:
+ periodSelect: '[name=period]'
+ operatorSelect: '[name=operator]'
+ warningInput: '[name=warning]'
+ errorInput: '[name=error]'
+ actionsBox: '.quality-gate-condition-actions'
+ updateButton: '.update-condition'
+
+
+ events:
+ 'click @ui.updateButton': 'saveCondition'
+ 'click .delete-condition': 'deleteCondition'
+ 'click .add-condition': 'saveCondition'
+ 'click .cancel-add-condition': 'cancelAddCondition'
+ 'keyup :input': 'enableUpdate'
+ 'change :input': 'enableUpdate'
+
+
+ initialize: ->
+ @populateMetric()
+
+
+ populateMetric: ->
+ metricKey = @model.get('metric')
+ metric = _.findWhere @options.app.metrics, key: metricKey
+ @model.set { metric: metric }, { silent: true }
+
+
+ onRender: ->
+ @ui.periodSelect.val @model.get('period') || '0'
+ @ui.operatorSelect.val @model.get('op')
+ @ui.warningInput.val @model.get('warning')
+ @ui.errorInput.val @model.get('error')
+
+ @ui.periodSelect.select2
+ allowClear: false
+ minimumResultsForSearch: 999
+ width: '200px'
+
+ @ui.operatorSelect.select2
+ allowClear: false
+ minimumResultsForSearch: 999
+ width: '150px'
+
+ @ui.periodSelect.select2('open') if @model.isNew()
+
+
+ showSpinner: ->
+ jQuery(@spinner).prependTo @ui.actionsBox
+ @ui.actionsBox.find(':not(.spinner)').hide()
+
+
+ hideSpinner: ->
+ @ui.actionsBox.find('.spinner').remove()
+ @ui.actionsBox.find(':not(.spinner)').show()
+
+
+ saveCondition: ->
+ @showSpinner()
+ @model.set
+ period: @ui.periodSelect.val()
+ op: @ui.operatorSelect.val()
+ warning: @ui.warningInput.val()
+ error: @ui.errorInput.val()
+ @model.save()
+ .always =>
+ @ui.updateButton.prop 'disabled', true
+ @hideSpinner()
+ .done =>
+ @options.collectionView.updateConditions()
+
+
+ deleteCondition: ->
+ if confirm t('are_you_sure')
+ @showSpinner()
+ @model.delete().done =>
+ @options.collectionView.updateConditions()
+ @close()
+
+
+ cancelAddCondition: ->
+ @close()
+
+
+ enableUpdate: ->
+ @ui.updateButton.prop 'disabled', false
+
+
+ serializeData: ->
+ period = _.findWhere(@options.app.periods, key: '' + this.model.get('period'))
+ _.extend super,
+ canEdit: @options.app.canEdit
+ periods: @options.app.periods
+ periodText: period?.text
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'handlebars',
+], (
+ Marionette,
+ Handlebars,
+) ->
+
+ class QualityGateDetailConditionsView extends Marionette.ItemView
+ tagName: 'tr'
+ template: Handlebars.compile jQuery('#quality-gate-detail-conditions-empty-template').html()
--- /dev/null
+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'
+], (
+ Marionette,
+ Handlebars,
+ Condition,
+ 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'
+
+
+ ui:
+ metricSelect: '#quality-gate-new-condition-metric'
+ introductionShowMore: '.quality-gate-introduction-show-more'
+ introductionMore: '.quality-gate-introduction-more'
+
+
+ events:
+ 'click @ui.introductionShowMore': 'showMoreIntroduction'
+ 'change @ui.metricSelect': 'addCondition'
+
+
+ itemViewOptions: ->
+ app: @options.app
+ collectionView: @
+
+
+ appendHtml: (compositeView, itemView) ->
+ if (compositeView.isBuffering)
+ compositeView.elBuffer.appendChild itemView.el
+ compositeView._bufferedChildren.push itemView
+ else
+ container = @getItemViewContainer compositeView
+ container.prepend itemView.el
+
+
+ onRender: ->
+ @ui.introductionMore.hide()
+ @ui.metricSelect.select2
+ allowClear: false,
+ width: '250px',
+ placeholder: t('alerts.select_metric')
+
+
+ groupedMetrics: ->
+ metrics = @options.app.metrics
+ metrics = _.groupBy metrics, 'domain'
+ metrics = _.map metrics, (metrics, domain) ->
+ domain: domain, metrics: _.sortBy metrics, 'short_name'
+ _.sortBy metrics, 'domain'
+
+
+ serializeData: ->
+ _.extend super,
+ canEdit: @options.app.canEdit
+ metricGroups: @groupedMetrics()
+
+
+ showMoreIntroduction: ->
+ @ui.introductionShowMore.hide()
+ @ui.introductionMore.show()
+
+
+ addCondition: ->
+ metric = @ui.metricSelect.val()
+ @ui.metricSelect.select2('val', '')
+ condition = new Condition
+ metric: metric
+ gateId: @options.gateId
+ @collection.unshift condition
+
+
+ updateConditions: ->
+ conditions = @collection.map (item) -> _.extend item.toJSON(),
+ metric: item.get('metric').key
+ @options.qualityGate.set { conditions: conditions }, { silent: true }
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'handlebars',
+ 'quality-gate/models/quality-gate'
+], (
+ Marionette,
+ Handlebars,
+ QualityGate
+) ->
+
+ class QualityGateDetailHeaderView extends Marionette.ItemView
+ template: Handlebars.compile jQuery('#quality-gate-detail-header-template').html()
+ spinner: '<i class="spinner"></i>'
+
+
+ modelEvents:
+ 'change': 'render'
+
+
+ events:
+ 'click #quality-gate-rename': 'renameQualityGate'
+ 'click #quality-gate-copy': 'copyQualityGate'
+ 'click #quality-gate-delete': 'deleteQualityGate'
+ 'click #quality-gate-set-as-default': 'setAsDefault'
+ 'click #quality-gate-unset-as-default': 'unsetAsDefault'
+
+
+ renameQualityGate: ->
+ @options.app.qualityGateEditView.method = 'rename'
+ @options.app.qualityGateEditView.model = @model
+ @options.app.qualityGateEditView.show()
+
+
+ copyQualityGate: ->
+ copiedModel = new QualityGate @model.toJSON()
+ copiedModel.set 'default', false
+ @options.app.qualityGateEditView.method = 'copy'
+ @options.app.qualityGateEditView.model = copiedModel
+ @options.app.qualityGateEditView.show()
+
+
+ deleteQualityGate: ->
+ if confirm t('are_you_sure')
+ @showSpinner()
+ jQuery.ajax
+ type: 'POST'
+ url: "#{baseUrl}/api/qualitygates/destroy"
+ data: id: @model.id
+ .always =>
+ @hideSpinner()
+ .done =>
+ @options.app.deleteQualityGate @model.id
+
+
+ changeDefault: (set) ->
+ @showSpinner()
+ data = if set then { id: @model.id } else {}
+ method = if set then 'set_as_default' else 'unset_default'
+ jQuery.ajax
+ type: 'POST'
+ url: "#{baseUrl}/api/qualitygates/#{method}"
+ data: data
+ .always =>
+ @hideSpinner()
+ .done =>
+ @options.app.unsetDefaults @model.id
+ @model.set 'default', !@model.get('default')
+
+
+ setAsDefault: ->
+ @changeDefault true
+
+
+ unsetAsDefault: ->
+ @changeDefault false
+
+
+ showSpinner: ->
+ @$el.hide()
+ jQuery(@spinner).insertBefore @$el
+
+
+ hideSpinner: ->
+ @$el.prev().remove()
+ @$el.show()
+
+
+ serializeData: ->
+ _.extend super, canEdit: @options.app.canEdit
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'handlebars',
+ 'select-list'
+], (
+ Marionette,
+ Handlebars
+) ->
+
+ class QualityGateDetailProjectsView extends Marionette.ItemView
+ template: Handlebars.compile jQuery('#quality-gate-detail-projects-template').html()
+
+
+ onRender: ->
+ unless @model.get('default')
+ new SelectList
+ el: @$('#select-list-projects')
+ width: '100%'
+ readOnly: !@options.app.canEdit
+ format: (item) -> item.name
+ searchUrl: "#{baseUrl}/api/qualitygates/search?gateId=#{@options.gateId}"
+ selectUrl: "#{baseUrl}/api/qualitygates/select"
+ deselectUrl: "#{baseUrl}/api/qualitygates/deselect"
+ extra:
+ gateId: @options.gateId
+ selectParameter: 'projectId'
+ selectParameterValue: 'id'
+ labels:
+ selected: t('quality_gates.projects.with')
+ deselected: t('quality_gates.projects.without')
+ all: t('quality_gates.projects.all')
+ noResults: t('quality_gates.projects.noResults')
+ tooltips:
+ select: t('quality_gates.projects.select_hint')
+ deselect: t('quality_gates.projects.deselect_hint')
+
+ serializeData: ->
+ _.extend super, canEdit: @options.app.canEdit
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'handlebars',
+ 'quality-gate/collections/conditions',
+ 'quality-gate/views/quality-gate-detail-header-view',
+ 'quality-gate/views/quality-gate-detail-conditions-view',
+ 'quality-gate/views/quality-gate-detail-projects-view'
+], (
+ Marionette,
+ Handlebars,
+ Conditions,
+ QualityGateDetailHeaderView,
+ QualityGateDetailConditionsView,
+ QualityGateDetailProjectsView
+) ->
+
+ class QualityGateDetailView extends Marionette.Layout
+ template: Handlebars.compile jQuery('#quality-gate-detail-template').html()
+
+
+ regions:
+ conditionsRegion: '#quality-gate-conditions'
+ projectsRegion: '#quality-gate-projects'
+
+
+ modelEvents:
+ 'change': 'render'
+
+
+ onRender: ->
+ @showConditions()
+ @showProjects()
+
+
+ showConditions: ->
+ conditions = new Conditions @model.get('conditions')
+ view = new QualityGateDetailConditionsView
+ app: @options.app
+ collection: conditions
+ gateId: @model.id
+ qualityGate: @model
+ @conditionsRegion.show view
+
+
+ showProjects: ->
+ view = new QualityGateDetailProjectsView
+ app: @options.app
+ model: @model
+ gateId: @model.id
+ @projectsRegion.show view
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'handlebars'
+], (
+ Marionette,
+ Handlebars,
+) ->
+
+ class QualityGateEditView extends Marionette.ItemView
+ className: 'modal'
+ template: Handlebars.compile jQuery('#quality-gate-edit-template').html()
+
+
+ ui:
+ nameInput: '#quality-gate-edit-name'
+
+
+ events:
+ 'submit form': 'onSubmit'
+ 'click #quality-gate-cancel-create': 'hide'
+
+
+ onRender: ->
+ @$el.dialog
+ dialogClass: 'no-close',
+ width: '600px',
+ draggable: false,
+ autoOpen: false,
+ modal: true,
+ minHeight: 50,
+ resizable: false,
+ title: null
+
+
+ show: ->
+ @render()
+ @$el.dialog 'open'
+ @ui.nameInput.focus()
+
+
+ hide: ->
+ @$el.dialog 'close'
+
+
+ saveRequest: (data) ->
+ jQuery.ajax
+ type: 'POST'
+ url: "#{baseUrl}/api/qualitygates/#{@method}"
+ data: data
+ .done => @hide()
+
+
+ onSubmit: (e) ->
+ e.preventDefault()
+ switch @method
+ when 'create' then @createQualityGate()
+ when 'copy' then @copyQualityGate()
+ when 'rename' then @saveQualityGate()
+ else
+
+
+ createQualityGate: ->
+ data = name: @ui.nameInput.val()
+ @saveRequest(data).done (r) =>
+ @model.set id: r.id, name: r.name
+ @options.app.qualityGates.add @model
+ @options.app.router.navigate "show/#{r.id}", trigger: true
+
+
+ saveQualityGate: ->
+ data = id: @model.id, name: @ui.nameInput.val()
+ @saveRequest(data).done (r) =>
+ @model.set name: r.name
+
+
+ copyQualityGate: ->
+ data = id: @model.id, name: @ui.nameInput.val()
+ @saveRequest(data).done (r) =>
+ @model.set id: r.id, name: r.name
+ @options.app.qualityGates.add @model
+ @options.app.router.navigate "show/#{r.id}", trigger: true
+
+
+ serializeData: ->
+ if @model
+ _.extend @model.toJSON(), method: @method
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'handlebars'
+], (
+ Marionette,
+ Handlebars
+) ->
+
+ class QualityGateSidebarListEmptyView extends Marionette.ItemView
+ tagName: 'li'
+ className: 'empty'
+ template: Handlebars.compile jQuery('#quality-gate-sidebar-list-empty-template').html()
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'handlebars'
+], (
+ Marionette,
+ Handlebars
+) ->
+
+ class QualityGateSidebarListItemView extends Marionette.ItemView
+ tagName: 'li'
+ template: Handlebars.compile jQuery('#quality-gate-sidebar-list-item-template').html()
+
+
+ modelEvents:
+ 'change': 'render'
+
+
+ events:
+ 'click': 'showQualityGate'
+
+
+ onRender: ->
+ @$el.toggleClass 'active', @options.highlighted
+
+
+ showQualityGate: ->
+ @options.app.router.navigate "show/#{@model.id}", trigger: true
--- /dev/null
+define [
+ 'backbone.marionette',
+ 'handlebars',
+ 'quality-gate/models/quality-gate',
+ 'quality-gate/views/quality-gate-sidebar-list-item-view',
+ 'quality-gate/views/quality-gate-sidebar-list-empty-view'
+], (
+ Marionette,
+ Handlebars,
+ QualityGate,
+ QualityGateSidebarListItemView,
+ QualityGateSidebarListEmptyView
+) ->
+
+ class QualityGateSidebarListView extends Marionette.CollectionView
+ tagName: 'ol'
+ className: 'navigator-results-list'
+ itemView: QualityGateSidebarListItemView
+ emptyView: QualityGateSidebarListEmptyView
+
+
+ itemViewOptions: (model) ->
+ app: @options.app
+ highlighted: model.get('id') == +@highlighted
+
+
+ highlight: (id) ->
+ @highlighted = id
+ @render()
--- /dev/null
+$ = jQuery
+
+describe 'WORK_DUR suite', ->
+
+ beforeEach ->
+ window.SS = {}
+ window.SS.phrases =
+ 'work_duration':
+ 'x_days': '{0}d', 'x_hours': '{0}h', 'x_minutes': '{0}min'
+
+ @input = $('<input type="text">')
+ @input.appendTo $('body')
+ @input.data 'type', 'WORK_DUR'
+
+
+ it 'converts', ->
+ @input.originalVal '2d 7h 13min'
+ expect(@input.val()).toBe 1393
+
+
+ it 'converts only days', ->
+ @input.originalVal '1d'
+ expect(@input.val()).toBe 480
+
+
+ it 'converts hours with minutes', ->
+ @input.originalVal '2h 30min'
+ expect(@input.val()).toBe 150
+
+
+ it 'restores', ->
+ @input.val 1393
+ expect(@input.originalVal()).toBe '2d 7h 13min'
+
+
+ it 'returns initially incorrect value', ->
+ @input.val 'something'
+ expect(@input.val()).toBe 'something'
+
+
+
+describe 'RATING suite', ->
+
+ beforeEach ->
+ @input = $('<input type="text">')
+ @input.appendTo $('body')
+ @input.data 'type', 'RATING'
+
+
+ it 'converts A', ->
+ @input.originalVal 'A'
+ expect(@input.val()).toBe 1
+
+
+ it 'converts B', ->
+ @input.originalVal 'B'
+ expect(@input.val()).toBe 2
+
+
+ it 'converts E', ->
+ @input.originalVal 'E'
+ expect(@input.val()).toBe 5
+
+
+ it 'does not convert F', ->
+ @input.originalVal 'F'
+ expect(@input.val()).toBe 'F'
+
+
+ it 'restores A', ->
+ @input.val 1
+ expect(@input.originalVal()).toBe 'A'
+
+
+ it 'restores E', ->
+ @input.val 5
+ expect(@input.originalVal()).toBe 'E'
+
+
+ it 'returns initially incorrect value', ->
+ @input.val 'something'
+ expect(@input.val()).toBe 'something'
--- /dev/null
+$ = jQuery
+
+describe 'translation "t" suite', ->
+
+ beforeEach ->
+ window.messages =
+ 'something': 'SOMETHING'
+ 'something_with_underscore': 'SOMETHING_WITH_UNDERSCORE'
+ 'something_with{braces}': 'SOMETHING_WITH{braces}'
+
+ window.SS =
+ phrases:
+ 'something': 'SOMETHING ANOTHER'
+
+
+ afterEach ->
+ window.messages = window.SS = undefined
+
+
+ it 'translates', ->
+ expect(t('something')).toBe 'SOMETHING'
+
+
+ it 'translates with underscore', ->
+ expect(t('something_with_underscore')).toBe 'SOMETHING_WITH_UNDERSCORE'
+
+
+ it 'translates with braces', ->
+ expect(t('something_with{braces}')).toBe 'SOMETHING_WITH{braces}'
+
+
+ it 'fallbacks to "translate"', ->
+ window.messages = undefined
+ expect(t('something')).toBe 'SOMETHING ANOTHER'
+
+
+ it 'returns the key when no translation', ->
+ expect(t('something_another')).toBe 'something_another'
+
+
+
+describe 'translation "translate" suite', ->
+
+ beforeEach ->
+ window.SS =
+ phrases:
+ 'something': 'SOMETHING'
+ 'something_with_underscore': 'SOMETHING_WITH_UNDERSCORE'
+ 'something_with{braces}': 'SOMETHING_WITH{braces}'
+
+
+ afterEach ->
+ window.messages = window.SS = undefined
+
+
+ it 'translates', ->
+ expect(translate('something')).toBe 'SOMETHING'
+
+
+ it 'translates with underscore', ->
+ expect(translate('something_with_underscore')).toBe 'SOMETHING_WITH_UNDERSCORE'
+
+
+ it 'translates with braces', ->
+ expect(translate('something_with{braces}')).toBe 'SOMETHING_WITH{braces}'
+
+
+ it 'returns the key when no translation', ->
+ expect(translate('something_another')).toBe 'something_another'
+
+
+ it 'does not fail when there is no dictionary', ->
+ window.SS = undefined
+ expect(translate('something_another')).toBe 'something_another'
+
+++ /dev/null
-requirejs.config
- baseUrl: "#{baseUrl}/javascripts"
-
- paths:
- 'backbone': 'third-party/backbone'
- 'backbone.marionette': 'third-party/backbone.marionette'
- 'handlebars': 'third-party/handlebars'
- 'jquery.mockjax': 'third-party/jquery.mockjax'
-
- shim:
- 'backbone.marionette':
- deps: ['backbone']
- exports: 'Marionette'
- 'backbone':
- exports: 'Backbone'
- 'handlebars':
- exports: 'Handlebars'
-
-
-requirejs [
- 'backbone', 'backbone.marionette',
-
- 'coding-rules/layout',
- 'coding-rules/router',
-
- # views
- 'coding-rules/views/header-view',
- 'coding-rules/views/actions-view',
- 'coding-rules/views/filter-bar-view',
- 'coding-rules/views/coding-rules-list-view',
- 'coding-rules/views/coding-rules-bulk-change-view',
- 'coding-rules/views/coding-rules-quality-profile-activation-view',
-
- # filters
- 'navigator/filters/base-filters',
- 'navigator/filters/choice-filters',
- 'navigator/filters/string-filters',
- 'navigator/filters/date-filter-view',
- 'coding-rules/views/filters/quality-profile-filter-view',
- 'coding-rules/views/filters/inheritance-filter-view',
-
- 'coding-rules/mockjax'
-], (
- Backbone, Marionette,
-
- CodingRulesLayout,
- CodingRulesRouter,
-
- # views
- CodingRulesHeaderView,
- CodingRulesActionsView,
- CodingRulesFilterBarView,
- CodingRulesListView,
- CodingRulesBulkChangeView,
- CodingRulesQualityProfileActivationView,
-
- # filters
- BaseFilters,
- ChoiceFilters,
- StringFilterView,
- DateFilterView,
- QualityProfileFilterView,
- InheritanceFilterView
-) ->
-
- # Create a generic error handler for ajax requests
- jQuery.ajaxSetup
- error: (jqXHR) ->
- text = jqXHR.responseText
- errorBox = jQuery('.modal-error')
- if jqXHR.responseJSON?.errors?
- text = _.pluck(jqXHR.responseJSON.errors, 'msg').join '. '
- if errorBox.length > 0
- errorBox.show().text text
- else
- alert text
-
-
- # Add html class to mark the page as navigator page
- jQuery('html').addClass('navigator-page coding-rules-page');
-
-
- # Create an Application
- App = new Marionette.Application
-
-
- App.getQuery = ->
- @filterBarView.getQuery()
-
-
- App.restoreSorting = ->
-
-
-
- App.storeQuery = (query, sorting) ->
- if sorting
- _.extend query,
- sort: sorting.sort
- asc: '' + sorting.asc
- queryString = _.map query, (v, k) -> "#{k}=#{encodeURIComponent(v)}"
- @router.navigate queryString.join('|'), replace: true
-
-
-
- App.fetchList = (firstPage) ->
- query = @getQuery()
- fetchQuery = _.extend { pageIndex: @pageIndex }, query
-
- if @codingRules.sorting
- _.extend fetchQuery,
- sort: @codingRules.sorting.sort,
- asc: @codingRules.sorting.asc
-
- @storeQuery query, @codingRules.sorting
-
- @layout.showSpinner 'resultsRegion'
- jQuery.ajax
- url: "#{baseUrl}/api/codingrules/search"
- data: fetchQuery
- .done (r) =>
- if firstPage
- @codingRules.reset r.codingrules
- else
- @codingRules.add r.codingrules
- @codingRules.paging = r.paging
- @codingRulesListView = new CodingRulesListView
- app: @
- collection: @codingRules
- @layout.resultsRegion.show @codingRulesListView
- @codingRulesListView.selectFirst()
-
-
-
- App.fetchFirstPage = ->
- @pageIndex = 1
- App.fetchList true
-
-
- App.fetchNextPage = ->
- if @pageIndex < @codingRules.paging.pages
- @pageIndex++
- 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')
- if value? && value.length == 1 then value[0] else null
-
-
- # Construct layout
- App.addInitializer ->
- @layout = new CodingRulesLayout app: @
- jQuery('body').append @layout.render().el
-
-
- # Construct header
- App.addInitializer ->
- @codingRulesHeaderView = new CodingRulesHeaderView app: @
- @layout.headerRegion.show @codingRulesHeaderView
-
-
- # Define coding rules
- App.addInitializer ->
- @codingRules = new Backbone.Collection
- @codingRules.sorting = sort: 'CREATION_DATE', asc: false
-
-
- # Construct status bar
- App.addInitializer ->
- @codingRulesActionsView = new CodingRulesActionsView
- app: @
- collection: @codingRules
- @layout.actionsRegion.show @codingRulesActionsView
-
-
- # Construct bulk change view
- App.addInitializer ->
- @codingRulesBulkChangeView = new CodingRulesBulkChangeView app: @
-
-
- # Construct quality profile activation view
- App.addInitializer ->
- @codingRulesQualityProfileActivationView = new CodingRulesQualityProfileActivationView app: @
-
-
- # Define filters
- App.addInitializer ->
- @filters = new BaseFilters.Filters
-
- @filters.add new BaseFilters.Filter
- name: t 'coding_rules.filters.name'
- property: 'name'
- type: StringFilterView
-
- @filters.add new BaseFilters.Filter
- name: t 'coding_rules.filters.language'
- property: 'languages'
- type: ChoiceFilters.ChoiceFilterView
- choices: @languages
-
- @filters.add new BaseFilters.Filter
- name: t 'coding_rules.filters.severity'
- property: 'severities'
- type: ChoiceFilters.ChoiceFilterView
- choices:
- 'BLOCKER': t 'severity.BLOCKER'
- 'CRITICAL': t 'severity.CRITICAL'
- 'MAJOR': t 'severity.MAJOR'
- 'MINOR': t 'severity.MINOR'
- 'INFO': t 'severity.INFO'
- choiceIcons:
- 'BLOCKER': 'severity-blocker'
- 'CRITICAL': 'severity-critical'
- 'MAJOR': 'severity-major'
- 'MINOR': 'severity-minor'
- 'INFO': 'severity-info'
-
- @filters.add new BaseFilters.Filter
- name: t 'coding_rules.filters.tag'
- property: 'tags'
- type: ChoiceFilters.ChoiceFilterView
- choices: @tags
-
- @activeInFilter = new BaseFilters.Filter
- name: t 'coding_rules.filters.in_quality_profile'
- property: 'in_quality_profile'
- type: QualityProfileFilterView
- multiple: false
- @filters.add @activeInFilter
-
-
- @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.description'
- property: 'description'
- type: StringFilterView
- enabled: false
- optional: true
-
- @filters.add new BaseFilters.Filter
- name: t 'coding_rules.filters.repository'
- property: 'repositories'
- type: ChoiceFilters.ChoiceFilterView
- enabled: false
- optional: true
- choices: @repositories
-
- @filters.add new BaseFilters.Filter
- name: t 'coding_rules.filters.status'
- property: 'statuses'
- type: ChoiceFilters.ChoiceFilterView
- enabled: false
- 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: @
- collection: @filters,
- extra: sort: '', asc: false
- @layout.filtersRegion.show @filterBarView
-
-
- # Start router
- App.addInitializer ->
- @router = new CodingRulesRouter app: @
- Backbone.history.start()
-
-
- # Call app before start the application
- appXHR = jQuery.ajax
- url: "#{baseUrl}/api/codingrules/app"
-
- jQuery.when(appXHR)
- .done (r) ->
- App.appState = new Backbone.Model
- App.state = new Backbone.Model
- App.qualityProfiles = r.qualityprofiles
- App.languages = r.languages
- App.repositories = r.repositories
- App.statuses = r.statuses
- App.tags = r.tags
- window.messages = r.messages
-
- # Remove the initial spinner
- jQuery('#coding-rules-page-loader').remove()
-
- # Start the application
- App.start()
-// Generated by CoffeeScript 1.6.3
(function() {
requirejs.config({
baseUrl: "" + baseUrl + "/javascripts",
});
};
App.fetchList = function(firstPage) {
- var fetchQuery, query,
- _this = this;
+ var fetchQuery, query;
query = this.getQuery();
fetchQuery = _.extend({
pageIndex: this.pageIndex
return jQuery.ajax({
url: "" + baseUrl + "/api/codingrules/search",
data: fetchQuery
- }).done(function(r) {
- if (firstPage) {
- _this.codingRules.reset(r.codingrules);
- } else {
- _this.codingRules.add(r.codingrules);
- }
- _this.codingRules.paging = r.paging;
- _this.codingRulesListView = new CodingRulesListView({
- app: _this,
- collection: _this.codingRules
- });
- _this.layout.resultsRegion.show(_this.codingRulesListView);
- return _this.codingRulesListView.selectFirst();
- });
+ }).done((function(_this) {
+ return function(r) {
+ if (firstPage) {
+ _this.codingRules.reset(r.codingrules);
+ } else {
+ _this.codingRules.add(r.codingrules);
+ }
+ _this.codingRules.paging = r.paging;
+ _this.codingRulesListView = new CodingRulesListView({
+ app: _this,
+ collection: _this.codingRules
+ });
+ _this.layout.resultsRegion.show(_this.codingRulesListView);
+ return _this.codingRulesListView.selectFirst();
+ };
+ })(this));
};
App.fetchFirstPage = function() {
this.pageIndex = 1;
+++ /dev/null
-define [
- 'backbone.marionette',
- 'common/handlebars-extensions'
-], (
- Marionette
-) ->
-
- class AppLayout extends Marionette.Layout
- className: 'navigator coding-rules-navigator'
- template: getTemplate '#coding-rules-layout'
- spinner: '<i class="spinner"></i>'
-
-
- regions:
- headerRegion: '.navigator-header'
- actionsRegion: '.navigator-actions'
- resultsRegion: '.navigator-results'
- detailsRegion: '.navigator-details'
- filtersRegion: '.navigator-filters'
-
-
- onRender: ->
- # Adjust details region height
- @$(@detailsRegion.el).css 'bottom', jQuery('#footer').outerHeight()
-
-
- showSpinner: (region) ->
- @$(@[region].el).html @spinner
-// 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', 'common/handlebars-extensions'], function(Marionette) {
- var AppLayout, _ref;
+ var AppLayout;
return AppLayout = (function(_super) {
__extends(AppLayout, _super);
function AppLayout() {
- _ref = AppLayout.__super__.constructor.apply(this, arguments);
- return _ref;
+ return AppLayout.__super__.constructor.apply(this, arguments);
}
AppLayout.prototype.className = 'navigator coding-rules-navigator';
+++ /dev/null
-define ['jquery.mockjax'], ->
-
- jQuery.mockjaxSettings.contentType = 'text/json';
- jQuery.mockjaxSettings.responseTime = 250;
-
- # GET /api/codingrules/app
- jQuery.mockjax
- url: "#{baseUrl}/api/codingrules/app"
- responseText: JSON.stringify
- qualityprofiles: [
- { key: 'sonarway', name: 'Sonar Way', parent: null },
- { key: 'qualityprofile1', name: 'Quality Profile 1', parent: 'sonarway' },
- { key: 'qualityprofile2', name: 'Quality Profile 2', parent: 'sonarway' },
- { key: 'qualityprofile3', name: 'Quality Profile 3', parent: null },
- ]
- languages:
- java: 'Java'
- javascript: 'JavaScript'
- repositories:
- 'checkstyle': 'Checkstyle'
- 'common-java': 'Common SonarQube'
- 'findbugs': 'FindBugs'
- 'pmd': 'PMD'
- 'pmd-unit-tests': 'PMD Unit Tests'
- 'squid': 'SonarQube'
- statuses:
- 'BETA': 'Beta'
- 'DEPRECATED': 'Deprecated'
- 'READY': 'Ready'
- tags:
- 'brain-overload': 'brain-overload'
- 'bug': 'bug'
- 'comment': 'comment'
- 'convention': 'convention'
- 'error-handling': 'error-handling'
- 'formatting': 'formatting'
- 'java8': 'java8'
- 'multithreading': 'multithreading'
- 'naming': 'naming'
- 'pitfall': 'pitfall'
- 'security': 'security'
- 'size': 'size'
- 'unused': 'unused'
- 'unused-code': 'unused-code'
- messages:
- 'all': 'All'
- 'any': 'Any'
- 'apply': 'Apply'
- 'bulk_change': 'Bulk Change'
- 'cancel': 'Cancel'
- 'change': 'Change'
- 'delete': 'Delete'
- 'done': 'Done'
- 'edit': 'Edit'
- 'moreCriteria': '+ More Criteria'
- 'search_verb': 'Search'
- 'severity': 'Severity'
- 'update': 'Update'
-
- 'severity.BLOCKER': 'Blocker'
- 'severity.CRITICAL': 'Critical'
- 'severity.MAJOR': 'Major'
- 'severity.MINOR': 'Minor'
- 'severity.INFO': 'Info'
-
- 'coding_rules.activate': 'Activate'
- 'coding_rules.activate_quality_profile': 'Activate Quality Profile'
- 'coding_rules.add_note': 'Add Note'
- 'coding_rules.available_since': 'Available Since'
- 'coding_rules.bulk_change': 'Bulk Change'
- 'coding_rules.extend_description': 'Extend Description'
- 'coding_rules.deactivate_quality_profile': 'Deactivate'
- 'coding_rules.found': 'Found'
- 'coding_rules.inherits': 'Inherits'
- 'coding_rules.key': 'Key:'
- 'coding_rules.new_search': 'New Search'
- 'coding_rules.no_results': 'No Coding Rules'
- 'coding_rules.order': 'Order'
- 'coding_rules.ordered_by': 'Ordered By'
- 'coding_rules.original': 'Original:'
- 'coding_rules.page': 'Coding Rules'
- 'coding_rules.parameters': 'Parameters'
- 'coding_rules.parameters.default_value': 'Default Value:'
- 'coding_rules.quality_profiles': 'Quality Profiles'
- 'coding_rules.quality_profile': 'Quality Profile'
- 'coding_rules.repository': 'Repository:'
- 'coding_rules.revert_to_parent_definition': 'Revert to Parent Definition'
- 'coding_rules._rules': 'rule(s)'
- 'coding_rules.select_tag': 'Select Tag'
-
- 'coding_rules.filters.availableSince': 'Available Since'
- 'coding_rules.filters.description': 'Description'
- 'coding_rules.filters.in_quality_profile': 'In 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.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'
- 'coding_rules.filters.tag': 'Tag'
-
- 'coding_rules.sort.creation_date': 'Creation Date'
- 'coding_rules.sort.name': 'Name'
-
-
- # GET /api/codingrules/search
- jQuery.mockjax
- url: "#{baseUrl}/api/codingrules/search"
- responseText: JSON.stringify
- codingrules: [
- {
- name: 'Array designators "[]" should be located after the type in method signatures'
- language: 'Java'
- severity: 'MAJOR'
- status: 'DEPRECATED'
- },
- {
- name: 'Avoid Array Loops'
- language: 'Java'
- severity: 'CRITICAL'
- status: 'READY'
- },
- {
- name: 'Bad practice - Abstract class defines covariant compareTo() method'
- language: 'Java'
- severity: 'MAJOR'
- status: 'READY'
- },
- {
- name: 'Correctness - Use of class without a hashCode() method in a hashed data structure'
- language: 'Java'
- severity: 'MINOR'
- status: 'BETA'
- },
- {
- name: 'Useless Operation On Immutable'
- language: 'Java'
- severity: 'MAJOR'
- status: 'READY'
- }
- ]
- paging:
- total: 5
- fTotal: '5'
-
-
-
- # GET /api/codingrules/show
- jQuery.mockjax
- url: "#{baseUrl}/api/codingrules/show"
- responseText: JSON.stringify
- codingrule:
- name: 'Array designators "[]" should be located after the type in method signatures'
- language: 'Java'
- tags: ['bug', 'comment', 'java8']
- creationDate: '2013-10-15'
- fCreationDate: 'Oct 15, 2013'
- status: 'DEPRECATED'
- repository: 'squid'
- key: 'S1190'
- parameters: [
- { key: 'someParameter', type: 'INT', default: 4, description: 'Some parameter description' }
- { key: 'boolParameter', type: 'BOOL', description: 'Bool parameter description' }
- ]
- description: '''
- <p>
- According to the Java Language Specification:
- </p>
-
- <pre>For compatibility with older versions of the Java SE platform,
- the declaration of a method that returns an array is allowed to place (some or all of)
- the empty bracket pairs that form the declaration of the array type after
- the formal parameter list. This obsolescent syntax should not be used in new code.
- </pre>
-
- <p>The following code snippet illustrates this rule:</p>
-
- <pre>public int getVector()[] { /* ... */ } // Non-Compliant
-
- public int[] getVector() { /* ... */ } // Compliant
-
- public int[] getMatrix()[] { /* ... */ } // Non-Compliant
-
- public int[][] getMatrix() { /* ... */ } // Compliant
- </pre>'''
- extra: '''<p>This note is here <b>only for test purposes</b>.</p>'''
- 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 }
- ]
- },
- {
- 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'
- }
- ]
-
-
-
- # POST /api/codingrules/extend_description
- jQuery.mockjax
- url: "#{baseUrl}/api/codingrules/extend_description"
- responseText: JSON.stringify
- extra: '''<p>This note is here <i>only for test purposes</i>.</p>'''
- extraRaw: '''This note is here *only for test purposes*.'''
-
-
- # POST /api/codingrules/bulk_change
- jQuery.mockjax
- url: "#{baseUrl}/api/codingrules/bulk_change"
-
-
- # POST /api/codingrules/set_tags
- jQuery.mockjax
- url: "#{baseUrl}/api/codingrules/set_tags"
-
-
- # POST /api/codingrules/activate
- jQuery.mockjax
- url: "#{baseUrl}/api/codingrules/activate"
-
-
- # POST /api/codingrules/note
- jQuery.mockjax
- url: "#{baseUrl}/api/codingrules/note"
- responseText: JSON.stringify
- 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'
-
-
- # GET /api/qualityprofiles/list
- jQuery.mockjax
- url: "#{baseUrl}/api/qualityprofiles/list"
- responseText: JSON.stringify
- more: false
- results: [
- { id: 'sonarway', text: 'Sonar Way', parent: null },
- { id: 'qp1', text: 'Quality Profile 1', parent: 'sonarway' },
- { id: 'qp2', text: 'Quality Profile 2', parent: 'sonarway' },
- { 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
-
-// Generated by CoffeeScript 1.6.3
(function() {
define(['jquery.mockjax'], function() {
jQuery.mockjaxSettings.contentType = 'text/json';
+++ /dev/null
-define [
- 'backbone',
-], (
- Backbone,
-) ->
-
- class AppRouter extends Backbone.Router
-
- routes:
- '': 'index'
- ':query': 'index'
-
-
- initialize: (options) ->
- @app = options.app
-
-
- parseQuery: (query, separator) ->
- (query || '').split(separator || '|').map (t) ->
- tokens = t.split('=')
- key: tokens[0], value: decodeURIComponent(tokens[1])
-
-
- emptyQuery: ->
- @navigate '', trigger: true, replace: true
-
-
- 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) ->
- @app.filterBarView.restoreFromQuery(params)
- @app.restoreSorting(params)
- @app.fetchFirstPage()
-// 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'], function(Backbone) {
- var AppRouter, _ref;
+ var AppRouter;
return AppRouter = (function(_super) {
__extends(AppRouter, _super);
function AppRouter() {
- _ref = AppRouter.__super__.constructor.apply(this, arguments);
- return _ref;
+ return AppRouter.__super__.constructor.apply(this, arguments);
}
AppRouter.prototype.routes = {
};
AppRouter.prototype.index = function(query) {
- var f, idObj, params,
- _this = this;
+ var f, idObj, params;
params = this.parseQuery(query);
idObj = _.findWhere(params, {
key: 'id'
this.app.canSave = false;
f.set('id', idObj.value);
return f.fetch({
- success: function() {
- params = _.extend({}, _this.parseQuery(f.get('query')), params);
- return _this.loadResults(params);
- }
+ success: (function(_this) {
+ return function() {
+ params = _.extend({}, _this.parseQuery(f.get('query')), params);
+ return _this.loadResults(params);
+ };
+ })(this)
});
} else {
return this.loadResults(params);
+++ /dev/null
-define [
- 'backbone.marionette',
- 'common/handlebars-extensions'
-], (
- Marionette
-) ->
-
- class CodingRulesStatusView extends Marionette.ItemView
- template: getTemplate '#coding-rules-status-template'
-
-
- collectionEvents:
- 'all': 'render'
-
-
- ui:
- orderChoices: '.navigator-actions-order-choices'
-
-
- events:
- 'click .navigator-actions-order': 'toggleOrderChoices'
- 'click @ui.orderChoices': 'sort'
- 'click .navigator-actions-bulk': 'bulkChange'
-
-
- 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()
-
-
- bulkChange: ->
- @options.app.codingRulesBulkChangeView.show()
-
-
- serializeData: ->
- _.extend super,
- paging: @collection.paging
- sorting: @collection.sorting
-// 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', 'common/handlebars-extensions'], function(Marionette) {
- var CodingRulesStatusView, _ref;
+ var CodingRulesStatusView;
return CodingRulesStatusView = (function(_super) {
__extends(CodingRulesStatusView, _super);
function CodingRulesStatusView() {
- _ref = CodingRulesStatusView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return CodingRulesStatusView.__super__.constructor.apply(this, arguments);
}
CodingRulesStatusView.prototype.template = getTemplate('#coding-rules-status-template');
};
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');
- });
+ return jQuery('body').on('click.coding_rules_actions', (function(_this) {
+ return function() {
+ return _this.ui.orderChoices.removeClass('open');
+ };
+ })(this));
}
};
+++ /dev/null
-define [
- 'backbone.marionette',
- 'common/handlebars-extensions'
-], (
- Marionette
-) ->
-
- class CodingRulesBulkChangeView extends Marionette.ItemView
- className: 'modal'
- template: getTemplate '#coding-rules-bulk-change-template'
-
-
- events:
- 'submit form': 'onSubmit'
- 'click #coding-rules-cancel-bulk-change': 'hide'
- 'click label': 'enableAction'
- 'change select': 'enableAction'
-
-
- onRender: ->
- @$el.dialog
- dialogClass: 'no-close',
- width: '600px',
- draggable: false,
- autoOpen: false,
- modal: true,
- minHeight: 50,
- resizable: false,
- title: null
-
- @$('#coding-rules-bulk-change-activate-on, #coding-rules-bulk-change-deactivate-on').select2
- width: '250px'
- minimumResultsForSearch: 1
-
- format = (state) ->
- return state.text unless state.id
- "<i class='icon-severity-#{state.id.toLowerCase()}'></i> #{state.text}"
- @$('#coding-rules-bulk-change-severity').select2
- width: '250px'
- minimumResultsForSearch: 999
- formatResult: format
- formatSelection: format
- escapeMarkup: (m) -> m
-
-
- show: ->
- @render()
- @$el.dialog 'open'
-
-
- hide: ->
- @$el.dialog 'close'
-
-
- prepareQuery: ->
- query = @options.app.getQuery()
- activateIn = []
- deactivateIn = []
- severity = null
- if @$('#coding-rules-bulk-change-activate-qp').is(':checked')
- activateIn.push @options.app.getInactiveQualityProfile()
- if @$('#coding-rules-bulk-change-activate').is(':checked')
- activateIn.push @$('#coding-rules-bulk-change-activate-on').val()
- if @$('#coding-rules-bulk-change-deactivate-qp').is(':checked')
- deactivateIn.push @options.app.getActiveQualityProfile()
- if @$('#coding-rules-bulk-change-deactivate').is(':checked')
- deactivateIn.push @$('#coding-rules-bulk-change-deactivate-on').val()
- if @$('#coding-rules-bulk-change-set-severity').is(':checked')
- severity = @$('#coding-rules-bulk-change-severity').val()
- actions = []
- if activateIn.length > 0
- actions.push 'bulk_activate'
- _.extend query, bulk_activate_in: activateIn.join(',')
- if deactivateIn.length > 0
- actions.push 'bulk_deactivate'
- _.extend query, bulk_deactivate_in: deactivateIn.join(',')
- if severity
- actions.push 'bulk_set_severity'
- _.extend query, bulk_severity: severity
- _.extend query, bulk_actions: actions
-
- onSubmit: (e) ->
- e.preventDefault()
- jQuery.ajax
- type: 'POST'
- url: "#{baseUrl}/api/codingrules/bulk_change"
- data: @prepareQuery()
- .done =>
- @options.app.fetchFirstPage()
- @hide()
-
-
-
- enableAction: (e) ->
- jQuery(e.target).siblings('input[type=checkbox]').prop 'checked', true
-
-
- serializeData: ->
- 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()
-
- inactiveQualityProfile: @options.app.getInactiveQualityProfile()
- inactiveQualityProfileName: @options.app.inactiveInFilter.view.renderValue()
- deactivateOnQualityProfiles: _.reject @options.app.qualityProfiles, (q) => q.key == @options.app.getActiveQualityProfile()
-
- severities: ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO']
-// 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', 'common/handlebars-extensions'], function(Marionette) {
- var CodingRulesBulkChangeView, _ref;
+ var CodingRulesBulkChangeView;
return CodingRulesBulkChangeView = (function(_super) {
__extends(CodingRulesBulkChangeView, _super);
function CodingRulesBulkChangeView() {
- _ref = CodingRulesBulkChangeView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return CodingRulesBulkChangeView.__super__.constructor.apply(this, arguments);
}
CodingRulesBulkChangeView.prototype.className = 'modal';
};
CodingRulesBulkChangeView.prototype.onSubmit = function(e) {
- var _this = this;
e.preventDefault();
return jQuery.ajax({
type: 'POST',
url: "" + baseUrl + "/api/codingrules/bulk_change",
data: this.prepareQuery()
- }).done(function() {
- _this.options.app.fetchFirstPage();
- return _this.hide();
- });
+ }).done((function(_this) {
+ return function() {
+ _this.options.app.fetchFirstPage();
+ return _this.hide();
+ };
+ })(this));
};
CodingRulesBulkChangeView.prototype.enableAction = function(e) {
};
CodingRulesBulkChangeView.prototype.serializeData = function() {
- var _this = this;
return {
paging: this.options.app.codingRules.paging,
qualityProfiles: this.options.app.qualityProfiles,
activeQualityProfile: this.options.app.getActiveQualityProfile(),
activeQualityProfileName: this.options.app.activeInFilter.view.renderValue(),
- activateOnQualityProfiles: _.reject(this.options.app.qualityProfiles, function(q) {
- return q.key === _this.options.app.getInactiveQualityProfile();
- }),
+ activateOnQualityProfiles: _.reject(this.options.app.qualityProfiles, (function(_this) {
+ return function(q) {
+ return q.key === _this.options.app.getInactiveQualityProfile();
+ };
+ })(this)),
inactiveQualityProfile: this.options.app.getInactiveQualityProfile(),
inactiveQualityProfileName: this.options.app.inactiveInFilter.view.renderValue(),
- deactivateOnQualityProfiles: _.reject(this.options.app.qualityProfiles, function(q) {
- return q.key === _this.options.app.getActiveQualityProfile();
- }),
+ deactivateOnQualityProfiles: _.reject(this.options.app.qualityProfiles, (function(_this) {
+ return function(q) {
+ return q.key === _this.options.app.getActiveQualityProfile();
+ };
+ })(this)),
severities: ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO']
};
};
+++ /dev/null
-define [
- 'backbone.marionette',
- 'common/handlebars-extensions'
-], (
- Marionette
-) ->
-
- class CodingRulesDetailQualityProfilesView extends Marionette.ItemView
- className: 'coding-rules-detail-quality-profile'
- template: getTemplate '#coding-rules-detail-quality-profile-template'
-
-
- ui:
- severitySelect: '.coding-rules-detail-quality-profile-severity'
-
- note: '.coding-rules-detail-quality-profile-note'
- noteForm: '.coding-rules-detail-quality-profile-note-form'
- noteText: '.coding-rules-detail-quality-profile-note-text'
- noteAdd: '.coding-rules-detail-quality-profile-note-add'
- noteEdit: '.coding-rules-detail-quality-profile-note-edit'
- noteDelete: '.coding-rules-detail-quality-profile-note-delete'
- noteCancel: '.coding-rules-detail-quality-profile-note-cancel'
- noteSubmit: '.coding-rules-detail-quality-profile-note-submit'
-
-
- events:
- 'click @ui.noteAdd': 'editNote'
- 'click @ui.noteEdit': 'editNote'
- 'click @ui.noteDelete': 'deleteNote'
- 'click @ui.noteCancel': 'cancelNote'
- 'click @ui.noteSubmit': 'submitNote'
-
-
- editNote: ->
- @ui.note.hide()
- @ui.noteForm.show()
- @ui.noteText.focus()
-
-
- deleteNote: ->
- @ui.noteText.val ''
- @submitNote().done =>
- @model.unset 'note'
- @render()
-
-
- cancelNote: ->
- @ui.note.show()
- @ui.noteForm.hide()
-
-
- submitNote: ->
- @ui.note.html '<i class="spinner"></i>'
- @ui.noteForm.html '<i class="spinner"></i>'
- jQuery.ajax
- type: 'POST'
- url: "#{baseUrl}/api/codingrules/note"
- dataType: 'json'
- data: text: @ui.noteText.val()
- .done (r) =>
- @model.set 'note', r.note
- @render()
-
-
- onRender: ->
- @ui.noteForm.hide()
-
- format = (state) ->
- return state.text unless state.id
- "<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
-
-
- getParent: ->
- return null unless @model.get 'inherits'
- @options.qualityProfiles.findWhere(key: @model.get('inherits')).toJSON()
-
-
- enhanceParameters: ->
- parent = @getParent()
- parameters = @model.get 'parameters'
- return parameters unless parent
- parameters.map (p) ->
- _.extend p, original: _.findWhere(parent.parameters, key: p.key).value
-
-
- serializeData: ->
- _.extend super,
- parent: @getParent()
- parameters: @enhanceParameters()
- severities: ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO']
\ No newline at end of file
-// 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', 'common/handlebars-extensions'], function(Marionette) {
- var CodingRulesDetailQualityProfilesView, _ref;
+ var CodingRulesDetailQualityProfilesView;
return CodingRulesDetailQualityProfilesView = (function(_super) {
__extends(CodingRulesDetailQualityProfilesView, _super);
function CodingRulesDetailQualityProfilesView() {
- _ref = CodingRulesDetailQualityProfilesView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return CodingRulesDetailQualityProfilesView.__super__.constructor.apply(this, arguments);
}
CodingRulesDetailQualityProfilesView.prototype.className = 'coding-rules-detail-quality-profile';
};
CodingRulesDetailQualityProfilesView.prototype.deleteNote = function() {
- var _this = this;
this.ui.noteText.val('');
- return this.submitNote().done(function() {
- _this.model.unset('note');
- return _this.render();
- });
+ return this.submitNote().done((function(_this) {
+ return function() {
+ _this.model.unset('note');
+ return _this.render();
+ };
+ })(this));
};
CodingRulesDetailQualityProfilesView.prototype.cancelNote = function() {
};
CodingRulesDetailQualityProfilesView.prototype.submitNote = function() {
- var _this = this;
this.ui.note.html('<i class="spinner"></i>');
this.ui.noteForm.html('<i class="spinner"></i>');
return jQuery.ajax({
data: {
text: this.ui.noteText.val()
}
- }).done(function(r) {
- _this.model.set('note', r.note);
- return _this.render();
- });
+ }).done((function(_this) {
+ return function(r) {
+ _this.model.set('note', r.note);
+ return _this.render();
+ };
+ })(this));
};
CodingRulesDetailQualityProfilesView.prototype.onRender = function() {
+++ /dev/null
-define [
- 'backbone.marionette'
- 'coding-rules/views/coding-rules-detail-quality-profile-view'
-], (
- Marionette,
- CodingRulesDetailQualityProfileView
-) ->
-
- class CodingRulesDetailQualityProfilesView extends Marionette.CollectionView
- itemView: CodingRulesDetailQualityProfileView
-
- itemViewOptions: ->
- qualityProfiles: @collection
\ No newline at end of file
-// 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', 'coding-rules/views/coding-rules-detail-quality-profile-view'], function(Marionette, CodingRulesDetailQualityProfileView) {
- var CodingRulesDetailQualityProfilesView, _ref;
+ var CodingRulesDetailQualityProfilesView;
return CodingRulesDetailQualityProfilesView = (function(_super) {
__extends(CodingRulesDetailQualityProfilesView, _super);
function CodingRulesDetailQualityProfilesView() {
- _ref = CodingRulesDetailQualityProfilesView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return CodingRulesDetailQualityProfilesView.__super__.constructor.apply(this, arguments);
}
CodingRulesDetailQualityProfilesView.prototype.itemView = CodingRulesDetailQualityProfileView;
+++ /dev/null
-define [
- 'backbone',
- 'backbone.marionette',
- 'coding-rules/views/coding-rules-detail-quality-profiles-view'
- 'common/handlebars-extensions'
-], (
- Backbone,
- Marionette,
- CodingRulesDetailQualityProfilesView
-) ->
-
- class CodingRulesDetailView extends Marionette.Layout
- template: getTemplate '#coding-rules-detail-template'
-
-
- regions:
- qualityProfilesRegion: '#coding-rules-detail-quality-profiles'
-
-
- ui:
- tagsChange: '.coding-rules-detail-tags-change'
- tagInput: '.coding-rules-detail-tag-input'
- tagsEdit: '.coding-rules-detail-tag-edit'
- tagsEditDone: '.coding-rules-detail-tag-edit-done'
- tagsList: '.coding-rules-detail-tag-list'
-
- descriptionExtra: '#coding-rules-detail-description-extra'
- extendDescriptionLink: '#coding-rules-detail-extend-description'
- extendDescriptionForm: '#coding-rules-detail-extend-description-form'
- extendDescriptionSubmit: '#coding-rules-detail-extend-description-submit'
- extendDescriptionText: '#coding-rules-detail-extend-description-text'
- extendDescriptionSpinner: '#coding-rules-detail-extend-description-spinner'
- cancelExtendDescription: '#coding-rules-detail-extend-description-cancel'
-
- qualityProfileActivate: '#coding-rules-quality-profile-activate'
-
-
- events:
- 'click @ui.tagsChange': 'changeTags'
- 'click @ui.tagsEditDone': 'editDone'
-
- 'click @ui.extendDescriptionLink': 'showExtendDescriptionForm'
- 'click @ui.cancelExtendDescription': 'hideExtendDescriptionForm'
- 'click @ui.extendDescriptionSubmit': 'submitExtendDescription'
-
- 'click @ui.qualityProfileActivate': 'activateQualityProfile'
-
-
- initialize: (options) ->
- @qualityProfilesView = new CodingRulesDetailQualityProfilesView
- collection: new Backbone.Collection options.model.get 'qualityProfiles'
-
-
- onRender: ->
- @qualityProfilesRegion.show @qualityProfilesView
-
- @ui.tagInput.select2
- tags: _.difference @options.app.tags, @model.get 'tags'
- width: '500px'
- @ui.tagsEdit.hide()
-
- @ui.extendDescriptionForm.hide()
- @ui.extendDescriptionSpinner.hide()
-
- qp = @options.app.getActiveQualityProfile()
- @$('.coding-rules-detail-quality-profile').first().addClass 'active' if qp?
-
-
- changeTags: ->
- @ui.tagsEdit.show()
- @ui.tagsList.hide()
-
-
- editDone: ->
- @ui.tagsEdit.html '<i class="spinner"></i>'
- tags = @ui.tagInput.val()
- jQuery.ajax
- type: 'POST'
- url: "#{baseUrl}/api/codingrules/set_tags"
- data: tags: tags
- .done =>
- @model.set 'tags', tags.split ','
- @render()
-
-
- showExtendDescriptionForm: ->
- @ui.descriptionExtra.hide()
- @ui.extendDescriptionForm.show()
-
-
- hideExtendDescriptionForm: ->
- @ui.descriptionExtra.show()
- @ui.extendDescriptionForm.hide()
-
-
- submitExtendDescription: ->
- @ui.extendDescriptionForm.hide()
- @ui.extendDescriptionSpinner.show()
- jQuery.ajax
- type: 'POST'
- url: "#{baseUrl}/api/codingrules/extend_description"
- dataType: 'json'
- data: text: @ui.extendDescriptionText.val()
- .done (r) =>
- @model.set extra: r.extra, extraRaw: r.extraRaw
- @render()
-
-
- activateQualityProfile: ->
- @options.app.codingRulesQualityProfileActivationView.model = @model
- @options.app.codingRulesQualityProfileActivationView.show()
\ No newline at end of file
-// 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', 'backbone.marionette', 'coding-rules/views/coding-rules-detail-quality-profiles-view', 'common/handlebars-extensions'], function(Backbone, Marionette, CodingRulesDetailQualityProfilesView) {
- var CodingRulesDetailView, _ref;
+ var CodingRulesDetailView;
return CodingRulesDetailView = (function(_super) {
__extends(CodingRulesDetailView, _super);
function CodingRulesDetailView() {
- _ref = CodingRulesDetailView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return CodingRulesDetailView.__super__.constructor.apply(this, arguments);
}
CodingRulesDetailView.prototype.template = getTemplate('#coding-rules-detail-template');
};
CodingRulesDetailView.prototype.editDone = function() {
- var tags,
- _this = this;
+ var tags;
this.ui.tagsEdit.html('<i class="spinner"></i>');
tags = this.ui.tagInput.val();
return jQuery.ajax({
data: {
tags: tags
}
- }).done(function() {
- _this.model.set('tags', tags.split(','));
- return _this.render();
- });
+ }).done((function(_this) {
+ return function() {
+ _this.model.set('tags', tags.split(','));
+ return _this.render();
+ };
+ })(this));
};
CodingRulesDetailView.prototype.showExtendDescriptionForm = function() {
};
CodingRulesDetailView.prototype.submitExtendDescription = function() {
- var _this = this;
this.ui.extendDescriptionForm.hide();
this.ui.extendDescriptionSpinner.show();
return jQuery.ajax({
data: {
text: this.ui.extendDescriptionText.val()
}
- }).done(function(r) {
- _this.model.set({
- extra: r.extra,
- extraRaw: r.extraRaw
- });
- return _this.render();
- });
+ }).done((function(_this) {
+ return function(r) {
+ _this.model.set({
+ extra: r.extra,
+ extraRaw: r.extraRaw
+ });
+ return _this.render();
+ };
+ })(this));
};
CodingRulesDetailView.prototype.activateQualityProfile = function() {
+++ /dev/null
-define [
- 'backbone.marionette',
- 'common/handlebars-extensions'
-], (
- Marionette,
-) ->
-
- class CodingRulesListEmptyView extends Marionette.ItemView
- tagName: 'li'
- className: 'navigator-results-no-results'
- template: getTemplate '#coding-rules-list-empty-template'
-// 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', 'common/handlebars-extensions'], function(Marionette) {
- var CodingRulesListEmptyView, _ref;
+ var CodingRulesListEmptyView;
return CodingRulesListEmptyView = (function(_super) {
__extends(CodingRulesListEmptyView, _super);
function CodingRulesListEmptyView() {
- _ref = CodingRulesListEmptyView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return CodingRulesListEmptyView.__super__.constructor.apply(this, arguments);
}
CodingRulesListEmptyView.prototype.tagName = 'li';
+++ /dev/null
-define [
- 'backbone.marionette',
- 'coding-rules/views/coding-rules-detail-view',
- 'common/handlebars-extensions'
-], (
- Marionette,
- CodingRulesDetailView
-) ->
-
- class CodingRulesListItemView extends Marionette.ItemView
- tagName: 'li'
- template: getTemplate '#coding-rules-list-item-template'
- activeClass: 'active'
-
-
- events: ->
- 'click': 'showDetail'
-
-
- showDetail: ->
- @$el.siblings().removeClass @activeClass
- @$el.addClass @activeClass
-
- @options.app.layout.showSpinner 'detailsRegion'
- jQuery.ajax
- url: "#{baseUrl}/api/codingrules/show"
- .done (r) =>
- @model.set r.codingrule
- detailView = new CodingRulesDetailView
- app: @options.app
- model: @model
- @options.app.layout.detailsRegion.show detailView
-
-
- serializeData: ->
- _.extend super,
- qualityProfile: @options.app.getActiveQualityProfile()
- qualityProfileName: @options.app.activeInFilter.view.renderValue()
-// 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', 'coding-rules/views/coding-rules-detail-view', 'common/handlebars-extensions'], function(Marionette, CodingRulesDetailView) {
- var CodingRulesListItemView, _ref;
+ var CodingRulesListItemView;
return CodingRulesListItemView = (function(_super) {
__extends(CodingRulesListItemView, _super);
function CodingRulesListItemView() {
- _ref = CodingRulesListItemView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return CodingRulesListItemView.__super__.constructor.apply(this, arguments);
}
CodingRulesListItemView.prototype.tagName = 'li';
};
CodingRulesListItemView.prototype.showDetail = function() {
- var _this = this;
this.$el.siblings().removeClass(this.activeClass);
this.$el.addClass(this.activeClass);
this.options.app.layout.showSpinner('detailsRegion');
return jQuery.ajax({
url: "" + baseUrl + "/api/codingrules/show"
- }).done(function(r) {
- var detailView;
- _this.model.set(r.codingrule);
- detailView = new CodingRulesDetailView({
- app: _this.options.app,
- model: _this.model
- });
- return _this.options.app.layout.detailsRegion.show(detailView);
- });
+ }).done((function(_this) {
+ return function(r) {
+ var detailView;
+ _this.model.set(r.codingrule);
+ detailView = new CodingRulesDetailView({
+ app: _this.options.app,
+ model: _this.model
+ });
+ return _this.options.app.layout.detailsRegion.show(detailView);
+ };
+ })(this));
};
CodingRulesListItemView.prototype.serializeData = function() {
+++ /dev/null
-define [
- 'backbone.marionette',
- 'coding-rules/views/coding-rules-list-item-view',
- 'coding-rules/views/coding-rules-list-empty-view'
-], (
- Marionette,
- CodingRulesListItemView,
- CodingRulesListEmptyView
-) ->
-
- class CodingRulesListView extends Marionette.CollectionView
- tagName: 'ol'
- className: 'navigator-results-list'
- itemView: CodingRulesListItemView,
- emptyView: CodingRulesListEmptyView,
-
-
- itemViewOptions: ->
- listView: @, app: @options.app
-
-
- selectFirst: ->
- @$el.find('*:first').click()
-// 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', 'coding-rules/views/coding-rules-list-item-view', 'coding-rules/views/coding-rules-list-empty-view'], function(Marionette, CodingRulesListItemView, CodingRulesListEmptyView) {
- var CodingRulesListView, _ref;
+ var CodingRulesListView;
return CodingRulesListView = (function(_super) {
__extends(CodingRulesListView, _super);
function CodingRulesListView() {
- _ref = CodingRulesListView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return CodingRulesListView.__super__.constructor.apply(this, arguments);
}
CodingRulesListView.prototype.tagName = 'ol';
+++ /dev/null
-define [
- 'backbone.marionette',
- 'common/handlebars-extensions'
-], (
- Marionette
-) ->
-
- class CodingRulesQualityProfileActivationView extends Marionette.ItemView
- className: 'modal'
- template: getTemplate '#coding-rules-quality-profile-activation-template'
-
-
- ui:
- qualityProfileSelect: '#coding-rules-quality-profile-activation-select'
- qualityProfileSeverity: '#coding-rules-quality-profile-activation-severity'
- qualityProfileActivate: '#coding-rules-quality-profile-activation-activate'
-
-
- events:
- 'click #coding-rules-quality-profile-activation-cancel': 'hide'
- 'click @ui.qualityProfileActivate': 'activate'
-
-
- activate: ->
- @$('.modal-foot').html '<i class="spinner"></i>'
- jQuery.ajax
- type: 'POST'
- url: "#{baseUrl}/api/codingrules/activate"
- data: id: 1
- .done =>
- jQuery('.navigator-results-list .active').click()
- @hide()
-
-
- onRender: ->
- @$el.dialog
- dialogClass: 'no-close',
- width: '600px',
- draggable: false,
- autoOpen: false,
- modal: true,
- minHeight: 50,
- resizable: false,
- title: null
-
- @ui.qualityProfileSelect.select2
- width: '250px'
- minimumResultsForSearch: 5
-
- format = (state) ->
- return state.text unless state.id
- "<i class='icon-severity-#{state.id.toLowerCase()}'></i> #{state.text}"
-
- @ui.qualityProfileSeverity.val @model.get 'severity'
- @ui.qualityProfileSeverity.select2
- width: '250px'
- minimumResultsForSearch: 999
- formatResult: format
- formatSelection: format
-
-
- show: ->
- @render()
- @$el.dialog 'open'
-
-
- hide: ->
- @$el.dialog 'close'
-
-
- getAvailableQualityProfiles: ->
- _.reject @options.app.qualityProfiles, (profile) =>
- _.findWhere @model.get('qualityProfiles'), key: profile.key
-
-
- serializeData: ->
- _.extend super,
- qualityProfiles: @getAvailableQualityProfiles()
- severities: ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO']
+++ /dev/null
-define [
- 'navigator/filters/filter-bar',
- 'navigator/filters/base-filters',
- 'navigator/filters/favorite-filters',
- 'navigator/filters/more-criteria-filters'
-], (
- FilterBarView,
- BaseFilters,
- FavoriteFiltersModule,
- MoreCriteriaFilters
-) ->
-
- class CodingRulesFilterBarView extends FilterBarView
-
- collectionEvents:
- 'change:enabled': 'changeEnabled'
-
-
- events:
- 'click .navigator-filter-submit': 'search'
-
-
- getQuery: ->
- query = {}
- @collection.each (filter) ->
- _.extend query, filter.view.formatValue()
- query
-
-
- onAfterItemAdded: (itemView) ->
- if itemView.model.get('type') == FavoriteFiltersModule.FavoriteFilterView
- jQuery('.navigator-header').addClass 'navigator-header-favorite'
-
-
- addMoreCriteriaFilter: ->
- disabledFilters = this.collection.where enabled: false
- if disabledFilters.length > 0
- @moreCriteriaFilter = new BaseFilters.Filter
- type: MoreCriteriaFilters.MoreCriteriaFilterView,
- enabled: true,
- optional: false,
- filters: disabledFilters
- @collection.add @moreCriteriaFilter
-
-
- changeEnabled: ->
- if @moreCriteriaFilter?
- disabledFilters = _.reject @collection.where(enabled: false), (filter) ->
- filter.get('type') == MoreCriteriaFilters.MoreCriteriaFilterView
-
- if disabledFilters.length == 0
- @moreCriteriaFilter.set { enabled: false }, { silent: true }
- else
- @moreCriteriaFilter.set { enabled: true }, { silent: true }
-
- @moreCriteriaFilter.set { filters: disabledFilters }, { silent: true }
- @moreCriteriaFilter.trigger 'change:filters'
-
-
- search: ->
- @options.app.state.set
- query: this.options.app.getQuery(),
- search: true
- @options.app.fetchFirstPage()
-
-
- fetchNextPage: ->
- @options.app.fetchNextPage()
-// 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(['navigator/filters/filter-bar', 'navigator/filters/base-filters', 'navigator/filters/favorite-filters', 'navigator/filters/more-criteria-filters'], function(FilterBarView, BaseFilters, FavoriteFiltersModule, MoreCriteriaFilters) {
- var CodingRulesFilterBarView, _ref;
+ var CodingRulesFilterBarView;
return CodingRulesFilterBarView = (function(_super) {
__extends(CodingRulesFilterBarView, _super);
function CodingRulesFilterBarView() {
- _ref = CodingRulesFilterBarView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return CodingRulesFilterBarView.__super__.constructor.apply(this, arguments);
}
CodingRulesFilterBarView.prototype.collectionEvents = {
+++ /dev/null
-define [
- 'navigator/filters/choice-filters'
-], (
- ChoiceFilters
-) ->
-
- class InheritanceFilterView extends ChoiceFilters.ChoiceFilterView
-
- initialize: ->
- super
- @qualityProfileFilter = @model.get 'qualityProfileFilter'
- @listenTo @qualityProfileFilter, 'change:value', @onChangeQualityProfile
- @onChangeQualityProfile()
-
-
- onChangeQualityProfile: ->
- qualityProfile = @qualityProfileFilter.get 'value'
- parentQualityProfile = @qualityProfileFilter.get 'parentQualityProfile'
- if _.isArray(qualityProfile) && qualityProfile.length == 1 && parentQualityProfile
- @makeActive()
- else
- @makeInactive()
-
-
- makeActive: ->
- @model.set inactive: false, title: ''
- @model.trigger 'change:enabled'
- @$el.removeClass('navigator-filter-inactive').prop 'title', ''
-
-
- makeInactive: ->
- @model.set inactive: true, title: t 'coding_rules.filters.inheritance.inactive'
- @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'
-
-
- showDetails: ->
- super unless @$el.is '.navigator-filter-inactive'
-
-
- restore: (value) ->
- value = value.split(',') if _.isString(value)
- if @choices && value.length > 0
- @model.set value: value, enabled: true
- @onChangeQualityProfile
- else
- @clear()
-// 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(['navigator/filters/choice-filters'], function(ChoiceFilters) {
- var InheritanceFilterView, _ref;
+ var InheritanceFilterView;
return InheritanceFilterView = (function(_super) {
__extends(InheritanceFilterView, _super);
function InheritanceFilterView() {
- _ref = InheritanceFilterView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return InheritanceFilterView.__super__.constructor.apply(this, arguments);
}
InheritanceFilterView.prototype.initialize = function() {
+++ /dev/null
-define [
- 'navigator/filters/ajax-select-filters'
-], (
- AjaxSelectFilters
-) ->
-
- class QualityProfileSuggestions extends AjaxSelectFilters.Suggestions
-
- url: ->
- "#{baseUrl}/api/qualityprofiles/list"
-
-
-
- class QualityProfileFilterView extends AjaxSelectFilters.AjaxSelectFilterView
-
- initialize: ->
- super
- @choices = new QualityProfileSuggestions
- @listenTo @model, 'change:value', @updateParentQualityProfile
-
-
- updateParentQualityProfile: ->
- selected = @getSelected()
- if selected.length == 1
- @model.set 'parentQualityProfile', selected[0].get('parent')
- 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
-
-// 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(['navigator/filters/ajax-select-filters'], function(AjaxSelectFilters) {
- var QualityProfileFilterView, QualityProfileSuggestions, _ref, _ref1;
+ var QualityProfileFilterView, QualityProfileSuggestions;
QualityProfileSuggestions = (function(_super) {
__extends(QualityProfileSuggestions, _super);
function QualityProfileSuggestions() {
- _ref = QualityProfileSuggestions.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityProfileSuggestions.__super__.constructor.apply(this, arguments);
}
QualityProfileSuggestions.prototype.url = function() {
__extends(QualityProfileFilterView, _super);
function QualityProfileFilterView() {
- _ref1 = QualityProfileFilterView.__super__.constructor.apply(this, arguments);
- return _ref1;
+ return QualityProfileFilterView.__super__.constructor.apply(this, arguments);
}
QualityProfileFilterView.prototype.initialize = function() {
};
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
- }));
- });
+ }).done((function(_this) {
+ return function(r) {
+ return _this.choices.add(new Backbone.Model({
+ id: r.qualityprofile.id,
+ text: r.qualityprofile.text,
+ parent: r.qualityprofile.parent,
+ checked: true
+ }));
+ };
+ })(this));
};
return QualityProfileFilterView;
+++ /dev/null
-define [
- 'backbone.marionette',
- 'common/handlebars-extensions'
-], (
- Marionette
-) ->
-
- class CodingRulesHeaderView extends Marionette.ItemView
- template: getTemplate '#coding-rules-header-template'
-
-
- events:
- 'click #coding-rules-new-search': 'newSearch'
-
-
- newSearch: ->
- @options.app.router.navigate '', trigger: true
-// 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', 'common/handlebars-extensions'], function(Marionette) {
- var CodingRulesHeaderView, _ref;
+ var CodingRulesHeaderView;
return CodingRulesHeaderView = (function(_super) {
__extends(CodingRulesHeaderView, _super);
function CodingRulesHeaderView() {
- _ref = CodingRulesHeaderView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return CodingRulesHeaderView.__super__.constructor.apply(this, arguments);
}
CodingRulesHeaderView.prototype.template = getTemplate('#coding-rules-header-template');
-// Generated by CoffeeScript 1.6.3
(function() {
var $, convertRating, convertValue, convertWorkDuration, originalVal, restoreRating, restoreValue, restoreWorkDuration, transformPattern;
-// 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(['navigator/filters/string-filters'], function(StringFilterView) {
- var DateFilterView, _ref;
+ var DateFilterView;
return DateFilterView = (function(_super) {
__extends(DateFilterView, _super);
function DateFilterView() {
- _ref = DateFilterView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return DateFilterView.__super__.constructor.apply(this, arguments);
}
DateFilterView.prototype.render = function() {
+++ /dev/null
-requirejs.config
- baseUrl: "#{baseUrl}/javascripts"
-
- paths:
- 'jquery': 'third-party/jquery'
- 'backbone': 'third-party/backbone'
- 'backbone.marionette': 'third-party/backbone.marionette'
- 'handlebars': 'third-party/handlebars'
- 'moment': 'third-party/moment'
- 'select-list': 'common/select-list'
-
- shim:
- 'backbone.marionette':
- deps: ['backbone']
- exports: 'Marionette'
- 'backbone':
- exports: 'Backbone'
- 'handlebars':
- exports: 'Handlebars'
- 'moment':
- exports: 'moment'
- 'select-list':
- exports: 'SelectList'
-
-
-requirejs [
- 'backbone', 'backbone.marionette', 'handlebars',
- 'quality-gate/collections/quality-gates',
- 'quality-gate/views/quality-gate-sidebar-list-view',
- 'quality-gate/views/quality-gate-actions-view',
- 'quality-gate/views/quality-gate-edit-view',
- 'quality-gate/router',
- 'quality-gate/layout',
- 'common/handlebars-extensions'
-], (
- Backbone, Marionette, Handlebars,
- QualityGates,
- QualityGateSidebarListItemView,
- QualityGateActionsView,
- QualityGateEditView,
- QualityGateRouter,
- QualityGateLayout
-) ->
-
- # Create a generic error handler for ajax requests
- jQuery.ajaxSetup
- error: (jqXHR) ->
- text = jqXHR.responseText
- errorBox = jQuery('.modal-error')
- if jqXHR.responseJSON?.errors?
- text = _.pluck(jqXHR.responseJSON.errors, 'msg').join '. '
- if errorBox.length > 0
- errorBox.show().text text
- else
- alert text
-
-
- # Add html class to mark the page as navigator page
- jQuery('html').addClass('navigator-page quality-gates-page');
-
-
- # Create a Quality Gate Application
- App = new Marionette.Application
-
-
- App.qualityGates = new QualityGates
-
-
- App.openFirstQualityGate = ->
- if @qualityGates.length > 0
- @router.navigate "show/#{@qualityGates.models[0].get('id')}", trigger: true
- else
- App.layout.detailsRegion.reset()
-
-
- App.deleteQualityGate = (id) ->
- App.qualityGates.remove id
- App.openFirstQualityGate()
-
-
- App.unsetDefaults = (id) ->
- App.qualityGates.each (gate) ->
- gate.set('default', false) unless gate.id == id
-
-
- # Construct layout
- App.addInitializer ->
- @layout = new QualityGateLayout app: @
- jQuery('body').append @layout.render().el
-
-
- # Construct actions bar
- App.addInitializer ->
- @codingRulesHeaderView = new QualityGateActionsView
- app: @
- @layout.actionsRegion.show @codingRulesHeaderView
-
-
- # Construct sidebar
- App.addInitializer ->
- @qualityGateSidebarListView = new QualityGateSidebarListItemView
- collection: @qualityGates
- app: @
- @layout.resultsRegion.show @qualityGateSidebarListView
-
-
- # Construct edit view
- App.addInitializer ->
- @qualityGateEditView = new QualityGateEditView app: @
- @qualityGateEditView.render()
-
-
- # Start router
- App.addInitializer ->
- @router = new QualityGateRouter app: @
- Backbone.history.start()
-
-
- # Open first quality gate when come to the page
- App.addInitializer ->
- initial = Backbone.history.fragment == ''
- App.openFirstQualityGate() if initial
-
-
- # Call app, Load metrics and the list of quality gates before start the application
- appXHR = jQuery.ajax
- url: "#{baseUrl}/api/qualitygates/app"
- .done (r) =>
- App.canEdit = r.edit
- App.periods = r.periods
- App.metrics = r.metrics
- window.messages = r.messages
-
- qualityGatesXHR = App.qualityGates.fetch()
-
- jQuery.when(qualityGatesXHR, appXHR)
- .done ->
- # Remove the initial spinner
- jQuery('#quality-gate-page-loader').remove()
-
- # Start the application
- App.start()
-// Generated by CoffeeScript 1.6.3
(function() {
requirejs.config({
baseUrl: "" + baseUrl + "/javascripts",
});
requirejs(['backbone', 'backbone.marionette', 'handlebars', 'quality-gate/collections/quality-gates', 'quality-gate/views/quality-gate-sidebar-list-view', 'quality-gate/views/quality-gate-actions-view', 'quality-gate/views/quality-gate-edit-view', 'quality-gate/router', 'quality-gate/layout', 'common/handlebars-extensions'], function(Backbone, Marionette, Handlebars, QualityGates, QualityGateSidebarListItemView, QualityGateActionsView, QualityGateEditView, QualityGateRouter, QualityGateLayout) {
- var App, appXHR, qualityGatesXHR,
- _this = this;
+ var App, appXHR, qualityGatesXHR;
jQuery.ajaxSetup({
error: function(jqXHR) {
var errorBox, text, _ref;
});
appXHR = jQuery.ajax({
url: "" + baseUrl + "/api/qualitygates/app"
- }).done(function(r) {
- App.canEdit = r.edit;
- App.periods = r.periods;
- App.metrics = r.metrics;
- return window.messages = r.messages;
- });
+ }).done((function(_this) {
+ return function(r) {
+ App.canEdit = r.edit;
+ App.periods = r.periods;
+ App.metrics = r.metrics;
+ return window.messages = r.messages;
+ };
+ })(this));
qualityGatesXHR = App.qualityGates.fetch();
return jQuery.when(qualityGatesXHR, appXHR).done(function() {
jQuery('#quality-gate-page-loader').remove();
+++ /dev/null
-define [
- 'backbone',
- 'quality-gate/models/condition'
-], (
- Backbone,
- Condition
-) ->
-
- class Conditions extends Backbone.Collection
- model: Condition
-// 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', 'quality-gate/models/condition'], function(Backbone, Condition) {
- var Conditions, _ref;
+ var Conditions;
return Conditions = (function(_super) {
__extends(Conditions, _super);
function Conditions() {
- _ref = Conditions.__super__.constructor.apply(this, arguments);
- return _ref;
+ return Conditions.__super__.constructor.apply(this, arguments);
}
Conditions.prototype.model = Condition;
+++ /dev/null
-define [
- 'backbone',
- 'quality-gate/models/quality-gate'
-], (
- Backbone,
- QualityGate
-) ->
-
- class QualityGates extends Backbone.Collection
- model: QualityGate
-
-
- url: ->
- "#{baseUrl}/api/qualitygates/list"
-
-
- # {
- # "qualitygates": [
- # { "id": 42, "name": "QG 1" },
- # { "id": 43, "name": "QG 2" },
- # { "id": 44, "name": "QG 3" }
- # ],
- # "default": 42
- # }
- parse: (r) ->
- r.qualitygates.map (gate) ->
- _.extend gate, default: gate.id == r.default
-// 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', 'quality-gate/models/quality-gate'], function(Backbone, QualityGate) {
- var QualityGates, _ref;
+ var QualityGates;
return QualityGates = (function(_super) {
__extends(QualityGates, _super);
function QualityGates() {
- _ref = QualityGates.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGates.__super__.constructor.apply(this, arguments);
}
QualityGates.prototype.model = QualityGate;
+++ /dev/null
-define [
- 'backbone.marionette',
- 'common/handlebars-extensions'
-], (
- Marionette
-) ->
-
- class AppLayout extends Marionette.Layout
- className: 'navigator quality-gates-navigator'
- template: getTemplate '#quality-gates-layout'
-
-
- regions:
- headerRegion: '.navigator-header'
- actionsRegion: '.navigator-actions'
- resultsRegion: '.navigator-results'
- detailsRegion: '.navigator-details'
-
-
- initialize: (options) ->
- @listenTo options.app.qualityGates, 'all', @updateLayout
-
-
- updateLayout: ->
- empty = @options.app.qualityGates.length == 0
- @$(@headerRegion.el).toggle !empty
- @$(@detailsRegion.el).toggle !empty
-
-
- onRender: ->
- @updateLayout()
-
- # Adjust details region height
- @$(@detailsRegion.el).css 'bottom', jQuery('#footer').outerHeight()
-// 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', 'common/handlebars-extensions'], function(Marionette) {
- var AppLayout, _ref;
+ var AppLayout;
return AppLayout = (function(_super) {
__extends(AppLayout, _super);
function AppLayout() {
- _ref = AppLayout.__super__.constructor.apply(this, arguments);
- return _ref;
+ return AppLayout.__super__.constructor.apply(this, arguments);
}
AppLayout.prototype.className = 'navigator quality-gates-navigator';
+++ /dev/null
-define [
- 'backbone'
-], (
- Backbone
-) ->
-
- class Condition extends Backbone.Model
-
- url: ->
- "#{baseUrl}/api/qualitygates/create_condition"
-
-
- save: ->
- method = unless @isNew() then 'update' else 'create'
- data =
- metric: @get('metric').key
- op: @get('op')
- warning: @get('warning')
- error: @get('error')
-
- unless @get('period') == '0'
- data.period = @get('period')
-
- unless @isNew()
- data.id = @id
- else
- data.gateId = @get('gateId')
-
- jQuery.ajax({
- url: "#{baseUrl}/api/qualitygates/#{method}_condition"
- type: 'POST'
- data: data
- }).done (r) =>
- @set 'id', r.id
-
-
- delete: ->
- jQuery.ajax
- url: "#{baseUrl}/api/qualitygates/delete_condition"
- type: 'POST'
- data: id: @id
-
-// 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'], function(Backbone) {
- var Condition, _ref;
+ var Condition;
return Condition = (function(_super) {
__extends(Condition, _super);
function Condition() {
- _ref = Condition.__super__.constructor.apply(this, arguments);
- return _ref;
+ return Condition.__super__.constructor.apply(this, arguments);
}
Condition.prototype.url = function() {
};
Condition.prototype.save = function() {
- var data, method,
- _this = this;
+ var data, method;
method = !this.isNew() ? 'update' : 'create';
data = {
metric: this.get('metric').key,
url: "" + baseUrl + "/api/qualitygates/" + method + "_condition",
type: 'POST',
data: data
- }).done(function(r) {
- return _this.set('id', r.id);
- });
+ }).done((function(_this) {
+ return function(r) {
+ return _this.set('id', r.id);
+ };
+ })(this));
};
Condition.prototype["delete"] = function() {
+++ /dev/null
-define [
- 'backbone'
-], (
- Backbone
-) ->
-
- class QualityGate extends Backbone.Model
-
- url: ->
- "#{baseUrl}/api/qualitygates/show?id=#{@get('id')}"
-// 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'], function(Backbone) {
- var QualityGate, _ref;
+ var QualityGate;
return QualityGate = (function(_super) {
__extends(QualityGate, _super);
function QualityGate() {
- _ref = QualityGate.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGate.__super__.constructor.apply(this, arguments);
}
QualityGate.prototype.url = function() {
+++ /dev/null
-define [
- 'backbone',
- 'quality-gate/models/quality-gate',
- 'quality-gate/views/quality-gate-detail-view',
- 'quality-gate/views/quality-gate-detail-header-view',
-], (
- Backbone,
- QualityGate,
- QualityGateDetailView,
- QualityGateDetailHeaderView
-) ->
-
- class QualityGateRouter extends Backbone.Router
-
- routes:
- 'show/:id': 'show'
-
-
- initialize: (options) ->
- @app = options.app
-
-
- show: (id) ->
- qualityGate = @app.qualityGates.get id
- if qualityGate
- @app.qualityGateSidebarListView.highlight id
-
- qualityGateDetailHeaderView = new QualityGateDetailHeaderView
- app: @app
- model: qualityGate
- @app.layout.headerRegion.show qualityGateDetailHeaderView
-
- qualityGateDetailView = new QualityGateDetailView
- app: @app
- model: qualityGate
- @app.layout.detailsRegion.show qualityGateDetailView
- qualityGateDetailView.$el.hide()
-
- qualityGateDetailHeaderView.showSpinner()
- qualityGate.fetch().done ->
- qualityGateDetailView.$el.show()
- qualityGateDetailHeaderView.hideSpinner()
-// 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', '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;
+ var QualityGateRouter;
return QualityGateRouter = (function(_super) {
__extends(QualityGateRouter, _super);
function QualityGateRouter() {
- _ref = QualityGateRouter.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateRouter.__super__.constructor.apply(this, arguments);
}
QualityGateRouter.prototype.routes = {
+++ /dev/null
-define [
- 'backbone.marionette',
- 'handlebars',
- 'quality-gate/models/quality-gate'
-], (
- Marionette,
- Handlebars,
- QualityGate
-) ->
-
- class QualityGateActionsView extends Marionette.ItemView
- template: Handlebars.compile jQuery('#quality-gate-actions-template').html()
-
-
- events:
- 'click #quality-gate-add': 'add'
-
-
- add: ->
- qualityGate = new QualityGate()
- @options.app.qualityGateEditView.method = 'create'
- @options.app.qualityGateEditView.model = qualityGate
- @options.app.qualityGateEditView.show()
-
-
- serializeData: ->
- _.extend super, canEdit: @options.app.canEdit
-// 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', 'quality-gate/models/quality-gate'], function(Marionette, Handlebars, QualityGate) {
- var QualityGateActionsView, _ref;
+ var QualityGateActionsView;
return QualityGateActionsView = (function(_super) {
__extends(QualityGateActionsView, _super);
function QualityGateActionsView() {
- _ref = QualityGateActionsView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateActionsView.__super__.constructor.apply(this, arguments);
}
QualityGateActionsView.prototype.template = Handlebars.compile(jQuery('#quality-gate-actions-template').html());
+++ /dev/null
-define [
- 'backbone.marionette',
- 'handlebars'
-], (
- Marionette,
- Handlebars
-) ->
-
- class QualityGateDetailConditionView extends Marionette.ItemView
- tagName: 'tr'
- template: Handlebars.compile jQuery('#quality-gate-detail-condition-template').html()
- spinner: '<i class="spinner"></i>'
-
-
- modelEvents:
- 'change:id': 'render'
-
-
- ui:
- periodSelect: '[name=period]'
- operatorSelect: '[name=operator]'
- warningInput: '[name=warning]'
- errorInput: '[name=error]'
- actionsBox: '.quality-gate-condition-actions'
- updateButton: '.update-condition'
-
-
- events:
- 'click @ui.updateButton': 'saveCondition'
- 'click .delete-condition': 'deleteCondition'
- 'click .add-condition': 'saveCondition'
- 'click .cancel-add-condition': 'cancelAddCondition'
- 'keyup :input': 'enableUpdate'
- 'change :input': 'enableUpdate'
-
-
- initialize: ->
- @populateMetric()
-
-
- populateMetric: ->
- metricKey = @model.get('metric')
- metric = _.findWhere @options.app.metrics, key: metricKey
- @model.set { metric: metric }, { silent: true }
-
-
- onRender: ->
- @ui.periodSelect.val @model.get('period') || '0'
- @ui.operatorSelect.val @model.get('op')
- @ui.warningInput.val @model.get('warning')
- @ui.errorInput.val @model.get('error')
-
- @ui.periodSelect.select2
- allowClear: false
- minimumResultsForSearch: 999
- width: '200px'
-
- @ui.operatorSelect.select2
- allowClear: false
- minimumResultsForSearch: 999
- width: '150px'
-
- @ui.periodSelect.select2('open') if @model.isNew()
-
-
- showSpinner: ->
- jQuery(@spinner).prependTo @ui.actionsBox
- @ui.actionsBox.find(':not(.spinner)').hide()
-
-
- hideSpinner: ->
- @ui.actionsBox.find('.spinner').remove()
- @ui.actionsBox.find(':not(.spinner)').show()
-
-
- saveCondition: ->
- @showSpinner()
- @model.set
- period: @ui.periodSelect.val()
- op: @ui.operatorSelect.val()
- warning: @ui.warningInput.val()
- error: @ui.errorInput.val()
- @model.save()
- .always =>
- @ui.updateButton.prop 'disabled', true
- @hideSpinner()
- .done =>
- @options.collectionView.updateConditions()
-
-
- deleteCondition: ->
- if confirm t('are_you_sure')
- @showSpinner()
- @model.delete().done =>
- @options.collectionView.updateConditions()
- @close()
-
-
- cancelAddCondition: ->
- @close()
-
-
- enableUpdate: ->
- @ui.updateButton.prop 'disabled', false
-
-
- serializeData: ->
- period = _.findWhere(@options.app.periods, key: '' + this.model.get('period'))
- _.extend super,
- canEdit: @options.app.canEdit
- periods: @options.app.periods
- periodText: period?.text
-// 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 QualityGateDetailConditionView, _ref;
+ var QualityGateDetailConditionView;
return QualityGateDetailConditionView = (function(_super) {
__extends(QualityGateDetailConditionView, _super);
function QualityGateDetailConditionView() {
- _ref = QualityGateDetailConditionView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateDetailConditionView.__super__.constructor.apply(this, arguments);
}
QualityGateDetailConditionView.prototype.tagName = 'tr';
};
QualityGateDetailConditionView.prototype.saveCondition = function() {
- var _this = this;
this.showSpinner();
this.model.set({
period: this.ui.periodSelect.val(),
warning: this.ui.warningInput.val(),
error: this.ui.errorInput.val()
});
- return this.model.save().always(function() {
- _this.ui.updateButton.prop('disabled', true);
- return _this.hideSpinner();
- }).done(function() {
- return _this.options.collectionView.updateConditions();
- });
+ return this.model.save().always((function(_this) {
+ return function() {
+ _this.ui.updateButton.prop('disabled', true);
+ return _this.hideSpinner();
+ };
+ })(this)).done((function(_this) {
+ return function() {
+ return _this.options.collectionView.updateConditions();
+ };
+ })(this));
};
QualityGateDetailConditionView.prototype.deleteCondition = function() {
- var _this = this;
if (confirm(t('are_you_sure'))) {
this.showSpinner();
- return this.model["delete"]().done(function() {
- _this.options.collectionView.updateConditions();
- return _this.close();
- });
+ return this.model["delete"]().done((function(_this) {
+ return function() {
+ _this.options.collectionView.updateConditions();
+ return _this.close();
+ };
+ })(this));
}
};
+++ /dev/null
-define [
- 'backbone.marionette',
- 'handlebars',
-], (
- Marionette,
- Handlebars,
-) ->
-
- class QualityGateDetailConditionsView extends Marionette.ItemView
- tagName: 'tr'
- template: Handlebars.compile jQuery('#quality-gate-detail-conditions-empty-template').html()
-// 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 QualityGateDetailConditionsView, _ref;
+ var QualityGateDetailConditionsView;
return QualityGateDetailConditionsView = (function(_super) {
__extends(QualityGateDetailConditionsView, _super);
function QualityGateDetailConditionsView() {
- _ref = QualityGateDetailConditionsView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateDetailConditionsView.__super__.constructor.apply(this, arguments);
}
QualityGateDetailConditionsView.prototype.tagName = 'tr';
+++ /dev/null
-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'
-], (
- Marionette,
- Handlebars,
- Condition,
- 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'
-
-
- ui:
- metricSelect: '#quality-gate-new-condition-metric'
- introductionShowMore: '.quality-gate-introduction-show-more'
- introductionMore: '.quality-gate-introduction-more'
-
-
- events:
- 'click @ui.introductionShowMore': 'showMoreIntroduction'
- 'change @ui.metricSelect': 'addCondition'
-
-
- itemViewOptions: ->
- app: @options.app
- collectionView: @
-
-
- appendHtml: (compositeView, itemView) ->
- if (compositeView.isBuffering)
- compositeView.elBuffer.appendChild itemView.el
- compositeView._bufferedChildren.push itemView
- else
- container = @getItemViewContainer compositeView
- container.prepend itemView.el
-
-
- onRender: ->
- @ui.introductionMore.hide()
- @ui.metricSelect.select2
- allowClear: false,
- width: '250px',
- placeholder: t('alerts.select_metric')
-
-
- groupedMetrics: ->
- metrics = @options.app.metrics
- metrics = _.groupBy metrics, 'domain'
- metrics = _.map metrics, (metrics, domain) ->
- domain: domain, metrics: _.sortBy metrics, 'short_name'
- _.sortBy metrics, 'domain'
-
-
- serializeData: ->
- _.extend super,
- canEdit: @options.app.canEdit
- metricGroups: @groupedMetrics()
-
-
- showMoreIntroduction: ->
- @ui.introductionShowMore.hide()
- @ui.introductionMore.show()
-
-
- addCondition: ->
- metric = @ui.metricSelect.val()
- @ui.metricSelect.select2('val', '')
- condition = new Condition
- metric: metric
- gateId: @options.gateId
- @collection.unshift condition
-
-
- updateConditions: ->
- conditions = @collection.map (item) -> _.extend item.toJSON(),
- metric: item.get('metric').key
- @options.qualityGate.set { conditions: conditions }, { silent: true }
-// 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', '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;
+ var QualityGateDetailConditionsView;
return QualityGateDetailConditionsView = (function(_super) {
__extends(QualityGateDetailConditionsView, _super);
function QualityGateDetailConditionsView() {
- _ref = QualityGateDetailConditionsView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateDetailConditionsView.__super__.constructor.apply(this, arguments);
}
QualityGateDetailConditionsView.prototype.template = Handlebars.compile(jQuery('#quality-gate-detail-conditions-template').html());
+++ /dev/null
-define [
- 'backbone.marionette',
- 'handlebars',
- 'quality-gate/models/quality-gate'
-], (
- Marionette,
- Handlebars,
- QualityGate
-) ->
-
- class QualityGateDetailHeaderView extends Marionette.ItemView
- template: Handlebars.compile jQuery('#quality-gate-detail-header-template').html()
- spinner: '<i class="spinner"></i>'
-
-
- modelEvents:
- 'change': 'render'
-
-
- events:
- 'click #quality-gate-rename': 'renameQualityGate'
- 'click #quality-gate-copy': 'copyQualityGate'
- 'click #quality-gate-delete': 'deleteQualityGate'
- 'click #quality-gate-set-as-default': 'setAsDefault'
- 'click #quality-gate-unset-as-default': 'unsetAsDefault'
-
-
- renameQualityGate: ->
- @options.app.qualityGateEditView.method = 'rename'
- @options.app.qualityGateEditView.model = @model
- @options.app.qualityGateEditView.show()
-
-
- copyQualityGate: ->
- copiedModel = new QualityGate @model.toJSON()
- copiedModel.set 'default', false
- @options.app.qualityGateEditView.method = 'copy'
- @options.app.qualityGateEditView.model = copiedModel
- @options.app.qualityGateEditView.show()
-
-
- deleteQualityGate: ->
- if confirm t('are_you_sure')
- @showSpinner()
- jQuery.ajax
- type: 'POST'
- url: "#{baseUrl}/api/qualitygates/destroy"
- data: id: @model.id
- .always =>
- @hideSpinner()
- .done =>
- @options.app.deleteQualityGate @model.id
-
-
- changeDefault: (set) ->
- @showSpinner()
- data = if set then { id: @model.id } else {}
- method = if set then 'set_as_default' else 'unset_default'
- jQuery.ajax
- type: 'POST'
- url: "#{baseUrl}/api/qualitygates/#{method}"
- data: data
- .always =>
- @hideSpinner()
- .done =>
- @options.app.unsetDefaults @model.id
- @model.set 'default', !@model.get('default')
-
-
- setAsDefault: ->
- @changeDefault true
-
-
- unsetAsDefault: ->
- @changeDefault false
-
-
- showSpinner: ->
- @$el.hide()
- jQuery(@spinner).insertBefore @$el
-
-
- hideSpinner: ->
- @$el.prev().remove()
- @$el.show()
-
-
- serializeData: ->
- _.extend super, canEdit: @options.app.canEdit
-// 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', 'quality-gate/models/quality-gate'], function(Marionette, Handlebars, QualityGate) {
- var QualityGateDetailHeaderView, _ref;
+ var QualityGateDetailHeaderView;
return QualityGateDetailHeaderView = (function(_super) {
__extends(QualityGateDetailHeaderView, _super);
function QualityGateDetailHeaderView() {
- _ref = QualityGateDetailHeaderView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateDetailHeaderView.__super__.constructor.apply(this, arguments);
}
QualityGateDetailHeaderView.prototype.template = Handlebars.compile(jQuery('#quality-gate-detail-header-template').html());
};
QualityGateDetailHeaderView.prototype.deleteQualityGate = function() {
- var _this = this;
if (confirm(t('are_you_sure'))) {
this.showSpinner();
return jQuery.ajax({
data: {
id: this.model.id
}
- }).always(function() {
- return _this.hideSpinner();
- }).done(function() {
- return _this.options.app.deleteQualityGate(_this.model.id);
- });
+ }).always((function(_this) {
+ return function() {
+ return _this.hideSpinner();
+ };
+ })(this)).done((function(_this) {
+ return function() {
+ return _this.options.app.deleteQualityGate(_this.model.id);
+ };
+ })(this));
}
};
QualityGateDetailHeaderView.prototype.changeDefault = function(set) {
- var data, method,
- _this = this;
+ var data, method;
this.showSpinner();
data = set ? {
id: this.model.id
type: 'POST',
url: "" + baseUrl + "/api/qualitygates/" + method,
data: data
- }).always(function() {
- return _this.hideSpinner();
- }).done(function() {
- _this.options.app.unsetDefaults(_this.model.id);
- return _this.model.set('default', !_this.model.get('default'));
- });
+ }).always((function(_this) {
+ return function() {
+ return _this.hideSpinner();
+ };
+ })(this)).done((function(_this) {
+ return function() {
+ _this.options.app.unsetDefaults(_this.model.id);
+ return _this.model.set('default', !_this.model.get('default'));
+ };
+ })(this));
};
QualityGateDetailHeaderView.prototype.setAsDefault = function() {
+++ /dev/null
-define [
- 'backbone.marionette',
- 'handlebars',
- 'select-list'
-], (
- Marionette,
- Handlebars
-) ->
-
- class QualityGateDetailProjectsView extends Marionette.ItemView
- template: Handlebars.compile jQuery('#quality-gate-detail-projects-template').html()
-
-
- onRender: ->
- unless @model.get('default')
- new SelectList
- el: @$('#select-list-projects')
- width: '100%'
- readOnly: !@options.app.canEdit
- format: (item) -> item.name
- searchUrl: "#{baseUrl}/api/qualitygates/search?gateId=#{@options.gateId}"
- selectUrl: "#{baseUrl}/api/qualitygates/select"
- deselectUrl: "#{baseUrl}/api/qualitygates/deselect"
- extra:
- gateId: @options.gateId
- selectParameter: 'projectId'
- selectParameterValue: 'id'
- labels:
- selected: t('quality_gates.projects.with')
- deselected: t('quality_gates.projects.without')
- all: t('quality_gates.projects.all')
- noResults: t('quality_gates.projects.noResults')
- tooltips:
- select: t('quality_gates.projects.select_hint')
- deselect: t('quality_gates.projects.deselect_hint')
-
- serializeData: ->
- _.extend super, canEdit: @options.app.canEdit
-// 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', 'select-list'], function(Marionette, Handlebars) {
- var QualityGateDetailProjectsView, _ref;
+ var QualityGateDetailProjectsView;
return QualityGateDetailProjectsView = (function(_super) {
__extends(QualityGateDetailProjectsView, _super);
function QualityGateDetailProjectsView() {
- _ref = QualityGateDetailProjectsView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateDetailProjectsView.__super__.constructor.apply(this, arguments);
}
QualityGateDetailProjectsView.prototype.template = Handlebars.compile(jQuery('#quality-gate-detail-projects-template').html());
+++ /dev/null
-define [
- 'backbone.marionette',
- 'handlebars',
- 'quality-gate/collections/conditions',
- 'quality-gate/views/quality-gate-detail-header-view',
- 'quality-gate/views/quality-gate-detail-conditions-view',
- 'quality-gate/views/quality-gate-detail-projects-view'
-], (
- Marionette,
- Handlebars,
- Conditions,
- QualityGateDetailHeaderView,
- QualityGateDetailConditionsView,
- QualityGateDetailProjectsView
-) ->
-
- class QualityGateDetailView extends Marionette.Layout
- template: Handlebars.compile jQuery('#quality-gate-detail-template').html()
-
-
- regions:
- conditionsRegion: '#quality-gate-conditions'
- projectsRegion: '#quality-gate-projects'
-
-
- modelEvents:
- 'change': 'render'
-
-
- onRender: ->
- @showConditions()
- @showProjects()
-
-
- showConditions: ->
- conditions = new Conditions @model.get('conditions')
- view = new QualityGateDetailConditionsView
- app: @options.app
- collection: conditions
- gateId: @model.id
- qualityGate: @model
- @conditionsRegion.show view
-
-
- showProjects: ->
- view = new QualityGateDetailProjectsView
- app: @options.app
- model: @model
- gateId: @model.id
- @projectsRegion.show view
-// 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', 'quality-gate/collections/conditions', 'quality-gate/views/quality-gate-detail-header-view', 'quality-gate/views/quality-gate-detail-conditions-view', 'quality-gate/views/quality-gate-detail-projects-view'], function(Marionette, Handlebars, Conditions, QualityGateDetailHeaderView, QualityGateDetailConditionsView, QualityGateDetailProjectsView) {
- var QualityGateDetailView, _ref;
+ var QualityGateDetailView;
return QualityGateDetailView = (function(_super) {
__extends(QualityGateDetailView, _super);
function QualityGateDetailView() {
- _ref = QualityGateDetailView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateDetailView.__super__.constructor.apply(this, arguments);
}
QualityGateDetailView.prototype.template = Handlebars.compile(jQuery('#quality-gate-detail-template').html());
+++ /dev/null
-define [
- 'backbone.marionette',
- 'handlebars'
-], (
- Marionette,
- Handlebars,
-) ->
-
- class QualityGateEditView extends Marionette.ItemView
- className: 'modal'
- template: Handlebars.compile jQuery('#quality-gate-edit-template').html()
-
-
- ui:
- nameInput: '#quality-gate-edit-name'
-
-
- events:
- 'submit form': 'onSubmit'
- 'click #quality-gate-cancel-create': 'hide'
-
-
- onRender: ->
- @$el.dialog
- dialogClass: 'no-close',
- width: '600px',
- draggable: false,
- autoOpen: false,
- modal: true,
- minHeight: 50,
- resizable: false,
- title: null
-
-
- show: ->
- @render()
- @$el.dialog 'open'
- @ui.nameInput.focus()
-
-
- hide: ->
- @$el.dialog 'close'
-
-
- saveRequest: (data) ->
- jQuery.ajax
- type: 'POST'
- url: "#{baseUrl}/api/qualitygates/#{@method}"
- data: data
- .done => @hide()
-
-
- onSubmit: (e) ->
- e.preventDefault()
- switch @method
- when 'create' then @createQualityGate()
- when 'copy' then @copyQualityGate()
- when 'rename' then @saveQualityGate()
- else
-
-
- createQualityGate: ->
- data = name: @ui.nameInput.val()
- @saveRequest(data).done (r) =>
- @model.set id: r.id, name: r.name
- @options.app.qualityGates.add @model
- @options.app.router.navigate "show/#{r.id}", trigger: true
-
-
- saveQualityGate: ->
- data = id: @model.id, name: @ui.nameInput.val()
- @saveRequest(data).done (r) =>
- @model.set name: r.name
-
-
- copyQualityGate: ->
- data = id: @model.id, name: @ui.nameInput.val()
- @saveRequest(data).done (r) =>
- @model.set id: r.id, name: r.name
- @options.app.qualityGates.add @model
- @options.app.router.navigate "show/#{r.id}", trigger: true
-
-
- serializeData: ->
- if @model
- _.extend @model.toJSON(), method: @method
-// 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 QualityGateEditView, _ref;
+ var QualityGateEditView;
return QualityGateEditView = (function(_super) {
__extends(QualityGateEditView, _super);
function QualityGateEditView() {
- _ref = QualityGateEditView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateEditView.__super__.constructor.apply(this, arguments);
}
QualityGateEditView.prototype.className = 'modal';
};
QualityGateEditView.prototype.saveRequest = function(data) {
- var _this = this;
return jQuery.ajax({
type: 'POST',
url: "" + baseUrl + "/api/qualitygates/" + this.method,
data: data
- }).done(function() {
- return _this.hide();
- });
+ }).done((function(_this) {
+ return function() {
+ return _this.hide();
+ };
+ })(this));
};
QualityGateEditView.prototype.onSubmit = function(e) {
};
QualityGateEditView.prototype.createQualityGate = function() {
- var data,
- _this = this;
+ var data;
data = {
name: this.ui.nameInput.val()
};
- return this.saveRequest(data).done(function(r) {
- _this.model.set({
- id: r.id,
- name: r.name
- });
- _this.options.app.qualityGates.add(_this.model);
- return _this.options.app.router.navigate("show/" + r.id, {
- trigger: true
- });
- });
+ return this.saveRequest(data).done((function(_this) {
+ return function(r) {
+ _this.model.set({
+ id: r.id,
+ name: r.name
+ });
+ _this.options.app.qualityGates.add(_this.model);
+ return _this.options.app.router.navigate("show/" + r.id, {
+ trigger: true
+ });
+ };
+ })(this));
};
QualityGateEditView.prototype.saveQualityGate = function() {
- var data,
- _this = this;
+ var data;
data = {
id: this.model.id,
name: this.ui.nameInput.val()
};
- return this.saveRequest(data).done(function(r) {
- return _this.model.set({
- name: r.name
- });
- });
+ return this.saveRequest(data).done((function(_this) {
+ return function(r) {
+ return _this.model.set({
+ name: r.name
+ });
+ };
+ })(this));
};
QualityGateEditView.prototype.copyQualityGate = function() {
- var data,
- _this = this;
+ var data;
data = {
id: this.model.id,
name: this.ui.nameInput.val()
};
- return this.saveRequest(data).done(function(r) {
- _this.model.set({
- id: r.id,
- name: r.name
- });
- _this.options.app.qualityGates.add(_this.model);
- return _this.options.app.router.navigate("show/" + r.id, {
- trigger: true
- });
- });
+ return this.saveRequest(data).done((function(_this) {
+ return function(r) {
+ _this.model.set({
+ id: r.id,
+ name: r.name
+ });
+ _this.options.app.qualityGates.add(_this.model);
+ return _this.options.app.router.navigate("show/" + r.id, {
+ trigger: true
+ });
+ };
+ })(this));
};
QualityGateEditView.prototype.serializeData = function() {
+++ /dev/null
-define [
- 'backbone.marionette',
- 'handlebars'
-], (
- Marionette,
- Handlebars
-) ->
-
- class QualityGateSidebarListEmptyView extends Marionette.ItemView
- tagName: 'li'
- className: 'empty'
- template: Handlebars.compile jQuery('#quality-gate-sidebar-list-empty-template').html()
-// 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 QualityGateSidebarListEmptyView, _ref;
+ var QualityGateSidebarListEmptyView;
return QualityGateSidebarListEmptyView = (function(_super) {
__extends(QualityGateSidebarListEmptyView, _super);
function QualityGateSidebarListEmptyView() {
- _ref = QualityGateSidebarListEmptyView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateSidebarListEmptyView.__super__.constructor.apply(this, arguments);
}
QualityGateSidebarListEmptyView.prototype.tagName = 'li';
+++ /dev/null
-define [
- 'backbone.marionette',
- 'handlebars'
-], (
- Marionette,
- Handlebars
-) ->
-
- class QualityGateSidebarListItemView extends Marionette.ItemView
- tagName: 'li'
- template: Handlebars.compile jQuery('#quality-gate-sidebar-list-item-template').html()
-
-
- modelEvents:
- 'change': 'render'
-
-
- events:
- 'click': 'showQualityGate'
-
-
- onRender: ->
- @$el.toggleClass 'active', @options.highlighted
-
-
- showQualityGate: ->
- @options.app.router.navigate "show/#{@model.id}", trigger: true
-// 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 QualityGateSidebarListItemView, _ref;
+ var QualityGateSidebarListItemView;
return QualityGateSidebarListItemView = (function(_super) {
__extends(QualityGateSidebarListItemView, _super);
function QualityGateSidebarListItemView() {
- _ref = QualityGateSidebarListItemView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateSidebarListItemView.__super__.constructor.apply(this, arguments);
}
QualityGateSidebarListItemView.prototype.tagName = 'li';
+++ /dev/null
-define [
- 'backbone.marionette',
- 'handlebars',
- 'quality-gate/models/quality-gate',
- 'quality-gate/views/quality-gate-sidebar-list-item-view',
- 'quality-gate/views/quality-gate-sidebar-list-empty-view'
-], (
- Marionette,
- Handlebars,
- QualityGate,
- QualityGateSidebarListItemView,
- QualityGateSidebarListEmptyView
-) ->
-
- class QualityGateSidebarListView extends Marionette.CollectionView
- tagName: 'ol'
- className: 'navigator-results-list'
- itemView: QualityGateSidebarListItemView
- emptyView: QualityGateSidebarListEmptyView
-
-
- itemViewOptions: (model) ->
- app: @options.app
- highlighted: model.get('id') == +@highlighted
-
-
- highlight: (id) ->
- @highlighted = id
- @render()
-// 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', 'quality-gate/models/quality-gate', 'quality-gate/views/quality-gate-sidebar-list-item-view', 'quality-gate/views/quality-gate-sidebar-list-empty-view'], function(Marionette, Handlebars, QualityGate, QualityGateSidebarListItemView, QualityGateSidebarListEmptyView) {
- var QualityGateSidebarListView, _ref;
+ var QualityGateSidebarListView;
return QualityGateSidebarListView = (function(_super) {
__extends(QualityGateSidebarListView, _super);
function QualityGateSidebarListView() {
- _ref = QualityGateSidebarListView.__super__.constructor.apply(this, arguments);
- return _ref;
+ return QualityGateSidebarListView.__super__.constructor.apply(this, arguments);
}
QualityGateSidebarListView.prototype.tagName = 'ol';
+++ /dev/null
-$ = jQuery
-
-describe 'WORK_DUR suite', ->
-
- beforeEach ->
- window.SS = {}
- window.SS.phrases =
- 'work_duration':
- 'x_days': '{0}d', 'x_hours': '{0}h', 'x_minutes': '{0}min'
-
- @input = $('<input type="text">')
- @input.appendTo $('body')
- @input.data 'type', 'WORK_DUR'
-
-
- it 'converts', ->
- @input.originalVal '2d 7h 13min'
- expect(@input.val()).toBe 1393
-
-
- it 'converts only days', ->
- @input.originalVal '1d'
- expect(@input.val()).toBe 480
-
-
- it 'converts hours with minutes', ->
- @input.originalVal '2h 30min'
- expect(@input.val()).toBe 150
-
-
- it 'restores', ->
- @input.val 1393
- expect(@input.originalVal()).toBe '2d 7h 13min'
-
-
- it 'returns initially incorrect value', ->
- @input.val 'something'
- expect(@input.val()).toBe 'something'
-
-
-
-describe 'RATING suite', ->
-
- beforeEach ->
- @input = $('<input type="text">')
- @input.appendTo $('body')
- @input.data 'type', 'RATING'
-
-
- it 'converts A', ->
- @input.originalVal 'A'
- expect(@input.val()).toBe 1
-
-
- it 'converts B', ->
- @input.originalVal 'B'
- expect(@input.val()).toBe 2
-
-
- it 'converts E', ->
- @input.originalVal 'E'
- expect(@input.val()).toBe 5
-
-
- it 'does not convert F', ->
- @input.originalVal 'F'
- expect(@input.val()).toBe 'F'
-
-
- it 'restores A', ->
- @input.val 1
- expect(@input.originalVal()).toBe 'A'
-
-
- it 'restores E', ->
- @input.val 5
- expect(@input.originalVal()).toBe 'E'
-
-
- it 'returns initially incorrect value', ->
- @input.val 'something'
- expect(@input.val()).toBe 'something'
-// Generated by CoffeeScript 1.6.3
(function() {
var $;
+++ /dev/null
-$ = jQuery
-
-describe 'translation "t" suite', ->
-
- beforeEach ->
- window.messages =
- 'something': 'SOMETHING'
- 'something_with_underscore': 'SOMETHING_WITH_UNDERSCORE'
- 'something_with{braces}': 'SOMETHING_WITH{braces}'
-
- window.SS =
- phrases:
- 'something': 'SOMETHING ANOTHER'
-
-
- afterEach ->
- window.messages = window.SS = undefined
-
-
- it 'translates', ->
- expect(t('something')).toBe 'SOMETHING'
-
-
- it 'translates with underscore', ->
- expect(t('something_with_underscore')).toBe 'SOMETHING_WITH_UNDERSCORE'
-
-
- it 'translates with braces', ->
- expect(t('something_with{braces}')).toBe 'SOMETHING_WITH{braces}'
-
-
- it 'fallbacks to "translate"', ->
- window.messages = undefined
- expect(t('something')).toBe 'SOMETHING ANOTHER'
-
-
- it 'returns the key when no translation', ->
- expect(t('something_another')).toBe 'something_another'
-
-
-
-describe 'translation "translate" suite', ->
-
- beforeEach ->
- window.SS =
- phrases:
- 'something': 'SOMETHING'
- 'something_with_underscore': 'SOMETHING_WITH_UNDERSCORE'
- 'something_with{braces}': 'SOMETHING_WITH{braces}'
-
-
- afterEach ->
- window.messages = window.SS = undefined
-
-
- it 'translates', ->
- expect(translate('something')).toBe 'SOMETHING'
-
-
- it 'translates with underscore', ->
- expect(translate('something_with_underscore')).toBe 'SOMETHING_WITH_UNDERSCORE'
-
-
- it 'translates with braces', ->
- expect(translate('something_with{braces}')).toBe 'SOMETHING_WITH{braces}'
-
-
- it 'returns the key when no translation', ->
- expect(translate('something_another')).toBe 'something_another'
-
-
- it 'does not fail when there is no dictionary', ->
- window.SS = undefined
- expect(translate('something_another')).toBe 'something_another'
-
-// Generated by CoffeeScript 1.6.3
(function() {
var $;
--- /dev/null
+@import 'mixins';
+@import 'variables';
+@import 'navigator/config';
+
+
+.coding-rules-page {
+
+ .navigator-results .spinner {
+ margin: @navigatorPadding;
+ }
+
+}
+
+
+
+/*
+ * Detail
+ */
+
+.coding-rules-detail-header,
+.coding-rules-detail-title {
+ margin-bottom: @navigatorPadding;
+ line-height: 1.5;
+ font-weight: bold;
+}
+
+.coding-rules-detail-title {
+ display: inline-block;
+ text-transform: uppercase;
+}
+
+.coding-rules-detail-status {
+ padding: 3px 4px;
+ background-color: @navigatorBarBackground;
+ color: #777;
+ font-size: @smallFontSize;
+}
+
+.coding-rules-detail-key {
+
+}
+
+.coding-rules-detail-properties {
+ margin: @navigatorPadding 0;
+ font-size: 0;
+}
+
+.coding-rules-detail-property {
+ display: inline-block;
+ vertical-align: middle;
+ font-size: @smallFontSize;
+ height: 22px;
+ line-height: 22px;
+
+ .select2-search-field { line-height: 1; }
+}
+
+.coding-rules-detail-property + .coding-rules-detail-property {
+ margin-left: 2 * @navigatorPadding;
+}
+
+.coding-rules-detail-tag + .coding-rules-detail-tag {
+ margin-left: @navigatorPadding;
+}
+
+.coding-rules-detail-description {
+ margin: 2 * @navigatorPadding 0;
+}
+
+.coding-rules-detail-description-extra {
+ margin-top: -@navigatorPadding;
+}
+
+.coding-rules-detail-parameters {
+ margin: @navigatorPadding 0 @navigatorPadding * 2;
+}
+
+.coding-rules-detail-parameter {
+ margin: @navigatorPadding 0;
+ font-size: 0;
+}
+
+.coding-rules-detail-parameter-name {
+ display: inline-block;
+ visibility: top;
+ width: 150px;
+ font-size: @baseFontSize;
+ font-weight: bold;
+ text-align: right;
+}
+
+.coding-rules-detail-parameter-description {
+ display: inline-block;
+ vertical-align: top;
+ margin-left: 2 * @navigatorPadding;
+ font-size: @baseFontSize;
+}
+
+
+// Quality Profiles
+.coding-rules-detail-quality-profiles-header {
+ margin-top: 3 * @navigatorPadding;
+}
+
+.coding-rules-detail-quality-profiles {
+ font-size: 0;
+}
+
+.coding-rules-detail-quality-profile {
+ border: 1px solid transparent;
+
+ &.active {
+ border-color: @highlighted;
+
+ .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;
+}
+
+.coding-rules-detail-quality-profile-name {
+ padding: @navigatorPadding / 2;
+ background-color: @navigatorBarBackground;
+ line-height: 1;
+ font-weight: bold;
+}
+
+.coding-rules-detail-quality-profile-actions {
+ padding: @navigatorPadding / 2;
+}
+
+.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-inheritance {
+ margin: @navigatorPadding 0;
+ padding: 0 @navigatorPadding / 2;
+
+ strong { font-weight: bold; }
+}
+
+.coding-rules-detail-quality-profile-note {
+ margin: @navigatorPadding 0;
+ padding: 0 @navigatorPadding / 2;
+}
+
+.coding-rules-detail-quality-profiles-activation {
+ margin-top: -3px;
+ margin-left: @navigatorPadding;
+}
--- /dev/null
+/* LAYOUT */
+#dashboard {
+ position: relative;
+ width: 100%;
+}
+
+#dashboard .transparent {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ background: url('../images/transparent.gif') repeat;
+ z-index: 1000;
+}
+
+/* WIDGETS */
+#dashboard .widget {
+ position: relative;
+ overflow-x: auto;
+ overflow-y: hidden;
+ padding: 10px;
+ margin: 0;
+ border: 1px solid #ddd;
+}
+
+#dashboard .block {
+ margin: 0 0 10px 0;
+}
+
+#dashboard .configure_widget {
+ display: block;
+ position: relative;
+}
+
+#dashboard .widget_props {
+ background-color: #FFF6BF;
+ border: 1px solid #FFD324;
+ margin-bottom: 10px;
+ padding: 5px;
+ border-radius: 0 0 3px 3px;
+ -moz-border-radius: 0 0 3px 3px;
+ -webkit-border-radius: 0 0 3px 3px;
+}
+
+#dashboard .widget-title {
+ background-color: #4B9FD5;
+ color: #FEFEFE;
+ padding: 0 5px;
+ height: 24px;
+ line-height: 24px;
+}
+
+#dashboard .widget-title a {
+ color: #FEFEFE;
+}
+
+/*CONFIGURATION*/
+#dashboard #configure {
+ position: relative;
+ height: 260px;
+ margin: 5px 0 10px 0;
+}
+
+#dashboard #widget_defs, #dashboard #edit-layout {
+ background-color: #FFF6BF;
+ border: 2px solid #FFD324;
+ padding: 3px;
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ overflow-x: hidden;
+}
+
+#dashboard #widget_defs {
+ margin-right: 104px;
+ overflow-y: auto;
+ height: 250px;
+}
+
+#dashboard #edit-layout {
+ width: 86px;
+ height: 248px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ padding-top: 5px;
+}
+
+#dashboard #edit-layout p {
+ margin-bottom: 5px;
+}
+
+#dashboard .widget_def {
+ border: 1px solid #FFD324;
+ padding: 5px;
+ margin: 3px;
+ white-space: normal;
+ vertical-align: top;
+ width: 250px;
+ float: left;
+ min-height: 100px;
+}
+
+#dashboard ul.widget_categs li {
+ padding-right: 5px;
+}
+
+#dashboard ul.widget_categs li.selected a {
+ font-weight: bold;
+ text-decoration: none;
+}
+
+#dashboard .select-layout {
+ float: left;
+}
+
+#dashboard .select-layout img {
+ border: 3px solid #FFF6BF;
+}
+
+#dashboard .select-layout.selected img {
+ border: 3px solid #4B9FD5;
+}
+
+.admin_page {
+ position: relative;
+}
+
+.admin_page table {
+ margin-top: 10px;
+ margin-bottom: 50px;
+}
+
+.admin_page .empty {
+ font-style: italic;
+}
+
+.admin_page .operations {
+ width: 260px;
+ text-align: right;
+}
+
+.admin_page .owner {
+ width: 140px;
+ text-align: center;
+}
+
+.admin_page .shared {
+ width: 40px;
+ text-align: center;
+}
+
+.admin_page .order, .admin_page .global {
+ width: 45px;
+ text-align: center;
+}
+
+/*OPERATIONS*/
+#dashboard #dashboard-operations {
+ position: relative;
+ display: inline-block;
+ width: 100%;
+}
+
+#dashboard #dashboard-operations ul.operations {
+ float: left;
+ list-style-type: none;
+ border: 1px solid #cdcdcd;
+ padding: 0;
+ margin: 0;
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+}
+
+#dashboard #dashboard-operations ul.operations li {
+ float: left;
+ margin: 0;
+ padding: 2px 10px;
+ position: relative;
+ background-color: #f4f4f4;
+ font-size: 85%;
+ border-right: 1px solid #cdcdcd;
+}
+
+#dashboard #dashboard-operations ul.operations li.last {
+ border-right-width: 0;
+}
+
+#dashboard #dashboard-operations ul.operations li.selected {
+ background-color: #d4d4d4;
+}
+
+#dashboard #dashboard-operations ul.operations li a {
+ color: #555;
+}
+
+#dashboard .dashboard-column {
+ margin: 0;
+ padding: 0;
+ overflow: visible;
+}
+
+#dashboard .dashboard-column-wrapper {
+ float: left;
+ margin: 0;
+ padding: 0;
+}
+
+#dashboard .column-handle {
+ height: 30px;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ display: inline-block;
+ line-height: 100px;
+ text-align: center;
+ font-size: x-large;
+ vertical-align: middle;
+ background-color: #eee;
+}
+
+#dashboard .block {
+ position: relative;
+ width: 100%;
+}
+
+#dashboard .widget-header {
+ line-height: 16px;
+ padding: 3px 5px;
+ background-color: #efefef;
+ border: 1px solid #ddd;
+ border-bottom: 0;
+}
+
+#dashboard .widget-handle {
+ cursor: move;
+ margin: 0;
+ background-image: url('../images/move.png');
+ background-position: left center;
+ background-repeat: no-repeat;
+ padding-left: 20px;
+}
+
+#dashboard .widget-actions {
+ float: right;
+ overflow: hidden; /* clears float for most browsers */
+ zoom: 1;
+}
+
+#dashboard .widget-actions a {
+ cursor: pointer;
+}
+
+#dashboard .block-hover {
+ outline: 2px dashed #ddd;
+}
+
+#dashboard .shadow-block {
+ box-shadow: 8px 8px 8px #ddd;
+ box-shadow: 8px 8px 8px #ddd;
+ -moz-box-shadow: 8px 8px 8px #ddd;
+ -webkit-box-shadow: 8px 8px 8px #ddd;
+}
--- /dev/null
+@import "variables";
+@import "mixins";
+
+@font-face {
+ font-family: 'sonar';
+ src: url('../fonts/sonar.woff') format('woff'),
+ url('../fonts/sonar.svg#sonar') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+[class^="icon-"], [class*=" icon-"] {
+ font-family: 'sonar';
+ speak: none;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ vertical-align: middle;
+
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+a[class^="icon-"], a[class*=" icon-"] {
+ text-decoration: none !important;
+}
+
+
+/*
+ * Severity
+ */
+
+[class^="icon-severity-"], [class*=" icon-severity"] {
+ position: relative;
+ top: -1px;
+}
+
+.icon-severity-blocker:before,
+.icon-severity-4:before {
+ content: "\f000";
+ color: @severityBlockerColor;
+ font-size: @iconSmallFontSize;
+}
+.icon-severity-critical:before,
+.icon-severity-3:before {
+ content: "\f001";
+ color: @severityCriticalColor;
+ font-size: @iconSmallFontSize;
+}
+.icon-severity-major:before,
+.icon-severity-2:before {
+ content: "\f002";
+ color: @severityMajorColor;
+ font-size: @iconSmallFontSize;
+}
+.icon-severity-minor:before,
+.icon-severity-1:before {
+ content: "\f003";
+ color: @severityMinorColor;
+ font-size: @iconSmallFontSize;
+}
+.icon-severity-info:before,
+.icon-severity-0:before {
+ content: "\f004";
+ color: @severityInfoColor;
+ font-size: @iconSmallFontSize;
+}
+
+
+/*
+ * Status
+ */
+
+[class^="icon-status-"], [class*=" icon-status"] {
+ position: relative;
+ top: -1px;
+}
+
+.icon-status-open:before {
+ content: "\f010";
+ color: @statusOpenColor;
+ font-size: @iconSmallFontSize;
+ line-height: @iconLineHeight;
+}
+.icon-status-confirmed:before {
+ content: "\f011";
+ color: @statusConfirmedColor;
+ font-size: @iconSmallFontSize;
+ line-height: @iconLineHeight;
+}
+.icon-status-reopened:before {
+ content: "\f012";
+ color: @statusReopenedColor;
+ font-size: @iconSmallFontSize;
+ line-height: @iconLineHeight;
+}
+.icon-status-resolved:before {
+ content: "\f013";
+ color: @statusResolvedColor;
+ font-size: @iconSmallFontSize;
+ line-height: @iconLineHeight;
+}
+.icon-status-closed:before {
+ content: "\f014";
+ color: @statusClosedColor;
+ font-size: @iconSmallFontSize;
+ line-height: @iconLineHeight;
+}
+
+
+/*
+ * Alert
+ */
+
+.icon-alert-ok:before {
+ content: "\f013";
+ color: @green;
+ font-size: @iconFontSize;
+}
+.icon-alert-warn:before {
+ content: "\f000";
+ color: @orange;
+ font-size: @iconFontSize;
+}
+.icon-alert-error:before {
+ content: "\f057";
+ color: @red;
+ font-size: @iconFontSize;
+}
+.icon-alert-none:before {
+ content: "\f059";
+ color: @blue;
+ font-size: @iconFontSize;
+}
+
+
+/*
+ * Qualifier
+ */
+
+.icon-qualifier-dir:before {
+ content: "\f07b";
+ font-size: @iconFontSize;
+}
+.icon-qualifier-fil:before {
+ content: "\f0f6";
+ font-size: @iconFontSize;
+}
+.icon-qualifier-lib:before {
+ content: "\e600";
+ font-size: @iconFontSize;
+}
+
+
+/*
+ * Common
+ */
+
+.icon-list:before {
+ content: "\f039";
+}
+.icon-bullet-list:before {
+ content: "\f03a";
+}
+.icon-settings:before {
+ content: "\f015";
+}
+.icon-settings-multiple:before {
+ content: "\f085";
+}
+
+.icon-arrow-down:before {
+ content: "\f0d7";
+ position: relative;
+ top: -2px;
+}
+.icon-arrow-up:before {
+ content: "\f0d8";
+ position: relative;
+ top: -2px;
+}
+.icon-arrow-left:before {
+ content: "\f0d9";
+}
+.icon-arrow-right:before {
+ content: "\f0da";
+}
+
+.icon-emoticon-smiley:before {
+ content: "\f118";
+}
+.icon-emoticon-sad:before {
+ content: "\f119";
+}
+.icon-emoticon-speechless:before {
+ content: "\f11a";
+}
+.icon-rect-check:before {
+ content: "\f046";
+}
+.icon-check:before {
+ content: "\f00c";
+}
+.icon-default:before {
+ position: relative;
+ top: -0.1em;
+ content: "\f00c";
+}
+.icon-lang:before {
+ content: "\f024";
+ font-size: @iconSmallFontSize;
+}
+.icon-quality-profile:before {
+ content: "\f022";
+ font-size: @iconSmallFontSize;
+}
+.icon-tags:before {
+ content: "\f02c";
+ font-size: @iconSmallFontSize;
+}
+.icon-calendar:before {
+ position: relative;
+ top: -0.1em;
+ content: "\f073";
+ font-size: @iconSmallFontSize;
+}
+.icon-favorite:before {
+ content: "\f005";
+ color: @orange;
+ font-size: @iconFontSize;
+}
+.icon-not-favorite:before {
+ content: "\f005";
+ color: @darkGrey;
+ font-size: @iconFontSize;
+}
+.icon-help:before {
+ content: "\f059";
+ color: @blue;
+ font-size: @iconFontSize;
+}
+.icon-info:before {
+ content: "\f05a";
+ color: @blue;
+ font-size: @iconFontSize;
+}
+.icon-uniF060:before {
+ content: "\f060";
+}
+.icon-uniF061:before {
+ content: "\f061";
+}
+.icon-uniF062:before {
+ content: "\f062";
+}
+.icon-uniF063:before {
+ content: "\f063";
+}
+.icon-comment:before {
+ content: "\f075";
+}
+.icon-delete:before {
+ content: "\f00d";
+}
+.icon-compare:before {
+ content: "\f0c5";
+}
+.icon-link:before {
+ content: "\f0c1";
+}
+.icon-inheritance:before {
+ content: "\f126";
+ font-size: @iconFontSize;
+}
+.icon-plus:before {
+ content: "\f067";
+}
+
+
+/*
+ * Spinner
+ */
+
+.spinner {
+ position: relative;
+ vertical-align: middle;
+ .square(16px);
+ border: 2px solid #0cf;
+ border-radius: 50%;
+ .animation(spin 0.75s infinite linear);
+
+ // For IE9 only, because it does not support css animations
+ // Show animated gif
+ .ie9 & {
+ background-image: url(../images/loading.gif);
+ background-repeat: no-repeat;
+ background-position: 0 0;
+ border: none;
+ }
+}
+
+.spinner:before,
+.spinner:after {
+ left: -2px;
+ top: -2px;
+ display: none;
+ position: absolute;
+ content: '';
+ width: inherit;
+ height: inherit;
+ border: inherit;
+ border-radius: inherit;
+}
+
+.spinner,
+.spinner:before,
+.spinner:after {
+ display: inline-block;
+ .box-sizing(border-box);
+ border-color: transparent;
+ border-top-color: @blue;
+ .animation-duration(1.2s);
+}
+.spinner:before {
+ .rotate(120deg);
+}
+.spinner:after {
+ .rotate(240deg);
+}
+
+@-webkit-keyframes spin {
+ from { .rotate(0deg); }
+ to { .rotate(360deg); }
+}
+@keyframes spin {
+ from { .rotate(0deg); }
+ to { .rotate(360deg); }
+}
--- /dev/null
+/*! jQuery UI - v1.10.3 - 2013-06-18
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.button.css, jquery.ui.dialog.css
+* Copyright 2013 jQuery Foundation and other contributors Licensed MIT */
+
+/* Layout helpers
+----------------------------------*/
+
+/* SONAR */
+.no-close .ui-dialog-titlebar-close {
+ display: none;
+}
+
+.ui-dialog .ui-dialog-titlebar {
+ display: none;
+}
+
+.ui-widget-header {
+ color: #ffffff;
+ font-weight: bold;
+}
+
+.ui-widget-header a {
+ color: #ffffff;
+}
+
+.ui-widget-shadow {
+ margin: -5px 0 0 -5px;
+ padding: 5px;
+ background: #000000 50% 50% repeat-x;
+ opacity: .20;
+ -moz-border-radius: 5px;
+ -khtml-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+}
+
+.ui-dialog {
+ position: absolute;
+ width: 300px;
+ overflow: hidden;
+ box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
+ background-color: #FFF
+}
+
+/* /SONAR */
+
+.ui-helper-hidden {
+ display: none;
+}
+.ui-helper-hidden-accessible {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+.ui-helper-reset {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ line-height: 1.3;
+ text-decoration: none;
+ font-size: 100%;
+ list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+ content: "";
+ display: table;
+ border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+ clear: both;
+}
+.ui-helper-clearfix {
+ min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ position: absolute;
+ opacity: 0;
+}
+
+.ui-front {
+ z-index: 100;
+}
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled {
+ cursor: default !important;
+}
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+ display: block;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
+}
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ /* sonar */
+ background-color: #000000;
+ opacity: 0.5;
+ /* /sonar */
+}
+
+.ui-resizable {
+ position: relative;
+}
+.ui-resizable-handle {
+ position: absolute;
+ font-size: 0.1px;
+ display: block;
+}
+.ui-resizable-disabled .ui-resizable-handle,
+.ui-resizable-autohide .ui-resizable-handle {
+ display: none;
+}
+.ui-resizable-n {
+ cursor: n-resize;
+ height: 7px;
+ width: 100%;
+ top: -5px;
+ left: 0;
+}
+.ui-resizable-s {
+ cursor: s-resize;
+ height: 7px;
+ width: 100%;
+ bottom: -5px;
+ left: 0;
+}
+.ui-resizable-e {
+ cursor: e-resize;
+ width: 7px;
+ right: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-w {
+ cursor: w-resize;
+ width: 7px;
+ left: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-se {
+ cursor: se-resize;
+ width: 12px;
+ height: 12px;
+ right: 1px;
+ bottom: 1px;
+}
+.ui-resizable-sw {
+ cursor: sw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ bottom: -5px;
+}
+.ui-resizable-nw {
+ cursor: nw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ top: -5px;
+}
+.ui-resizable-ne {
+ cursor: ne-resize;
+ width: 9px;
+ height: 9px;
+ right: -5px;
+ top: -5px;
+}
+.ui-button {
+ display: inline-block;
+ position: relative;
+ padding: 0;
+ line-height: normal;
+ margin-right: .1em;
+ cursor: pointer;
+ vertical-align: middle;
+ text-align: center;
+ overflow: visible; /* removes extra width in IE */
+}
+.ui-button,
+.ui-button:link,
+.ui-button:visited,
+.ui-button:hover,
+.ui-button:active {
+ text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+.ui-button-icon-only {
+ width: 2.2em;
+}
+/* button elements seem to need a little more width */
+button.ui-button-icon-only {
+ width: 2.4em;
+}
+.ui-button-icons-only {
+ width: 3.4em;
+}
+button.ui-button-icons-only {
+ width: 3.7em;
+}
+
+/* button text element */
+.ui-button .ui-button-text {
+ display: block;
+ line-height: normal;
+}
+.ui-button-text-only .ui-button-text {
+ padding: .4em 1em;
+}
+.ui-button-icon-only .ui-button-text,
+.ui-button-icons-only .ui-button-text {
+ padding: .4em;
+ text-indent: -9999999px;
+}
+.ui-button-text-icon-primary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: .4em 1em .4em 2.1em;
+}
+.ui-button-text-icon-secondary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: .4em 2.1em .4em 1em;
+}
+.ui-button-text-icons .ui-button-text {
+ padding-left: 2.1em;
+ padding-right: 2.1em;
+}
+/* no icon support for input elements, provide padding by default */
+input.ui-button {
+ padding: .4em 1em;
+}
+
+/* button icon element(s) */
+.ui-button-icon-only .ui-icon,
+.ui-button-text-icon-primary .ui-icon,
+.ui-button-text-icon-secondary .ui-icon,
+.ui-button-text-icons .ui-icon,
+.ui-button-icons-only .ui-icon {
+ position: absolute;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-button-icon-only .ui-icon {
+ left: 50%;
+ margin-left: -8px;
+}
+.ui-button-text-icon-primary .ui-button-icon-primary,
+.ui-button-text-icons .ui-button-icon-primary,
+.ui-button-icons-only .ui-button-icon-primary {
+ left: .5em;
+}
+.ui-button-text-icon-secondary .ui-button-icon-secondary,
+.ui-button-text-icons .ui-button-icon-secondary,
+.ui-button-icons-only .ui-button-icon-secondary {
+ right: .5em;
+}
+
+/* button sets */
+.ui-buttonset {
+ margin-right: 7px;
+}
+.ui-buttonset .ui-button {
+ margin-left: 0;
+ margin-right: -.3em;
+}
+
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+input.ui-button::-moz-focus-inner,
+button.ui-button::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+.ui-dialog {
+ position: absolute;
+ top: 0;
+ left: 0;
+ /* sonar
+ padding: .2em;
+ */
+ outline: 0;
+}
+/* sonar
+.ui-dialog .ui-dialog-titlebar {
+ padding: .4em 1em;
+ position: relative;
+}
+.ui-dialog .ui-dialog-title {
+ float: left;
+ margin: .1em 0;
+ white-space: nowrap;
+ width: 90%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+ position: absolute;
+ right: .3em;
+ top: 50%;
+ width: 21px;
+ margin: -10px 0 0 0;
+ padding: 1px;
+ height: 20px;
+}
+*/
+.ui-dialog .ui-dialog-content {
+ position: relative;
+ border: 0;
+ /* sonar
+ padding: .5em 1em;
+ */
+ background: none;
+ overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+ text-align: left;
+ border-width: 1px 0 0 0;
+ background-image: none;
+ margin-top: .5em;
+ padding: .3em 1em .5em .4em;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+ float: right;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+ margin: .5em .4em .5em 0;
+ cursor: pointer;
+}
+.ui-dialog .ui-resizable-se {
+ width: 12px;
+ height: 12px;
+ right: -5px;
+ bottom: -5px;
+ background-position: 16px 16px;
+}
+.ui-draggable .ui-dialog-titlebar {
+ cursor: move;
+}
--- /dev/null
+@media print {
+ /* ------------------- PRINT ------------------- */
+ html, body {
+ font-size: 8pt;
+ }
+
+ a, a:link, a:visited {
+ text-decoration: none;
+ border-bottom: 0;
+ }
+
+ .noprint {
+ display: none !important;
+ }
+
+ .print {
+ display: inline;
+ position: static;
+ left: 0;
+ }
+
+ #hd, #sidebar, #crumbs {
+ display: none;
+ }
+
+ .with_sidebar, .wo_sidebar {
+ padding: 0 !important;
+ margin: 0;
+ }
+
+ #content {
+ margin-left: 0 !important;
+ }
+}
+
+@media screen {
+ .print {
+ display: none;
+ }
+}
+
+body, a {
+ color: #444;
+}
+
+/* LAYOUT */
+#container {
+ height: auto !important;
+ min-width: 940px;
+ min-height: 500px;
+}
+
+#hd {
+ color: #FFF;
+ background: #262626;
+ padding: 0 10px;
+ height: 30px;
+ line-height: 30px;
+ font-size: 93%;
+ margin: 0;
+ position: relative;
+}
+
+#hd a {
+ color: #FFF;
+ text-decoration: none;
+}
+
+#hd a.selected {
+ color: #4B9FD5;
+}
+
+#hd a:focus, #hd a:hover {
+ text-decoration: underline;
+}
+
+#nav-left {
+ float: left;
+ vertical-align: middle;
+}
+
+#nav {
+ float: right;
+ padding: 0 0 0 20px;
+ vertical-align: middle;
+}
+
+#nav-left img, #nav img {
+ vertical-align: text-bottom;
+}
+
+#nav-left > ul> li {
+ float: left;
+ padding: 0 20px 0 0;
+}
+
+#nav > ul> li {
+ float: right;
+ padding: 0 0 0 15px;
+}
+
+#searchResourcesResults {
+ position: absolute;
+ float: right;
+ width: 600px;
+ top: 30px;
+ right: 0;
+}
+
+#crumbs {
+ color: #444;
+ background: #EFEFEF;
+ height: 26px;
+ line-height: 26px;
+ font-size: 93%;
+ margin: 0;
+ padding: 0 10px;
+ border-bottom: 1px solid #CCC;
+}
+
+#crumbs img {
+ vertical-align: text-bottom;
+}
+
+#bc li {
+ float: left;
+ background: #EFEFEF url("../images/bc-gray.png") no-repeat right;
+ border-bottom: 1px solid #CCC;
+ padding: 0 20px 0 0;
+ margin: 0 10px 0 0;
+}
+
+#bc li img {
+ margin-right: -5px;
+}
+
+#bc li a {
+ text-decoration: none;
+}
+
+#bc li a:hover, #bc li a:focus {
+ text-decoration: underline;
+}
+
+#crumbs-ops {
+ float: right;
+ padding: 0 5px 0 0;
+}
+
+#crumbs-ops li {
+ float: left;
+ padding: 0 0 0 10px;
+}
+
+#crumbs-ops li a {
+ text-decoration: none;
+}
+
+#crumbs-ops li a:hover, #crumbs-ops li a:focus {
+ text-decoration: underline;
+}
+
+#hd .dropdown-menu a {
+ color: #000;
+}
+
+#project-settings-menu {
+ float: right;
+ right: 20px;
+}
+
+#nonav {
+ text-align: left;
+ margin: 50px 180px 0;
+}
+
+#body {
+ /* position: relative;*/
+}
+
+#footer {
+ margin: 10px;
+ clear: both;
+}
+
+.with_sidebar {
+ margin: 0 0 0 160px;
+ padding: 10px;
+}
+
+.wo_sidebar {
+ margin: 0 8px;
+}
+
+#sidebar {
+ width: 150px;
+ float: left;
+ margin: 0 0 0 10px;
+ top: 0;
+ left: 0;
+}
+
+ul.sidebar {
+ text-align: left;
+ border-top: none;
+ padding: 10px 0;
+}
+
+ul.sidebar li {
+ list-style-type: none;
+ padding: 3px 10px;
+}
+
+ul.sidebar li a {
+ text-decoration: none;
+}
+
+ul.sidebar li a:hover {
+ text-decoration: underline;
+}
+
+ul.sidebar li.active {
+ background-color: #4b9fd5;
+}
+
+ul.sidebar li.active a, ul.sidebar li.active a:hover {
+ color: #FFF;
+}
+
+ul.sidebar li.active [class^="icon-"],
+ul.sidebar li.active [class*=" icon-"] {
+ color: #FFF;
+}
+
+li.sidebar-title {
+ text-transform: uppercase;
+ font-size: 93%;
+ font-weight: bold;
+}
+
+ul.sidebar li.spacer {
+ border: 0 none;
+ height: 10px;
+ margin: 0;
+ padding: 0;
+}
+
+ul.sidebar select, ul.sidebar input {
+ font-size: 93%;
+}
+
+#logo {
+ text-align: center;
+ padding: 10px 0 0 0;
+}
+
+#logo a {
+ text-decoration: none;
+ border-bottom-width: 0;
+}
+
+#logo img {
+ display: block;
+}
+
+.page {
+ padding: 10px;
+}
+.page-split-left {
+ min-width: 200px;
+ max-width: 200px;
+ width: 200px;
+ margin: 0;
+ display: block;
+ vertical-align: top;
+ border-top: none;
+ border-left: none;
+ float: left;
+}
+
+.page-split-right {
+ display: block;
+ margin: 0;
+ vertical-align: top;
+ padding: 0 0 0 200px;
+}
+
+.gray-sidebar {
+ background-color: #EFEFEF;
+ border: 1px solid #CCC;
+ color: #666;
+ border-top: none;
+}
+
+.blue-sidebar {
+ background-color: #CAE3F2;
+ color: #262626;
+ border: 2px solid #4b9fd5;
+ border-top: none;
+}
+
+.nolayout {
+ padding: 10px;
+}
--- /dev/null
+@import "variables";
+
+.clearfix() {
+ &:before, &:after { display: table; content: ""; line-height: 0; }
+ &:after { clear: both; }
+}
+
+.size(@width, @height) {
+ width: @width;
+ height: @height;
+}
+
+.square(@size) {
+ .size(@size, @size);
+}
+
+.topLeft(@top, @left) {
+ top: @top;
+ left: @left;
+}
+
+.topRight(@top, @right) {
+ top: @top;
+ right: @right;
+}
+
+.bottomLeft(@bottom, @left) {
+ bottom: @bottom;
+ left: @left;
+}
+
+.bottomRight(@bottom, @right) {
+ bottom: @bottom;
+ right: @left;
+}
+
+.rotate(@degrees) {
+ -webkit-transform: rotate(@degrees);
+ -ms-transform: rotate(@degrees);
+ transform: rotate(@degrees);
+}
+.scale(@ratio) {
+ -webkit-transform: scale(@ratio);
+ -ms-transform: scale(@ratio);
+ transform: scale(@ratio);
+}
+.scale2(@w, @h) {
+ -webkit-transform: scale(@w, @h);
+ -ms-transform: scale(@w, @h);
+ transform: scale(@w, @h);
+}
+.translate(@x, @y) {
+ -webkit-transform: translate(@x, @y);
+ -ms-transform: translate(@x, @y);
+ transform: translate(@x, @y);
+}
+.skew(@x, @y) {
+ -webkit-transform: skew(@x, @y);
+ -ms-transform: skew(@x, @y);
+ transform: skew(@x, @y);
+}
+.translate3d(@x, @y, @z) {
+ -webkit-transform: translate3d(@x, @y, @z);
+ transform: translate3d(@x, @y, @z);
+}
+
+.box-sizing(@boxmodel) {
+ -moz-box-sizing: @boxmodel;
+ box-sizing: @boxmodel;
+}
+
+.animation(@animation) {
+ -webkit-animation: @animation;
+ animation: @animation;
+}
+.animation-duration(@duration) {
+ -webkit-animation-duration: @duration;
+ animation-duration: @duration;
+}
+
+.horizontal-gradient(@startColor: #555, @endColor: #333) {
+ background-color: @endColor;
+ background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
+ background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
+ background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
+ background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
+ background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
+ background-repeat: repeat-x;
+}
+.vertical-gradient(@startColor: #555, @endColor: #333) {
+ background-color: mix(@startColor, @endColor, 60%);
+ background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
+ background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
+ background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
+ background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
+ background-repeat: repeat-x;
+}
+.directional-gradient(@startColor: #555, @endColor: #333, @deg: 45deg) {
+ background-color: @endColor;
+ background-repeat: repeat-x;
+ background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
+ background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
+ background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
+ background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
+}
+.vertical-three-colors-gradient(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
+ background-color: mix(@midColor, @endColor, 80%);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
+ background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
+ background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
+ background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
+ background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
+ background-repeat: no-repeat;
+}
+.radial-gradient(@innerColor: #555, @outerColor: #333) {
+ background-color: @outerColor;
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
+ background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
+ background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
+ background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
+ background-repeat: no-repeat;
+}
+.striped-gradient(@color, @angle: 45deg) {
+ background-color: @color;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+}
+
+.trans(@property: all, @options: @defaultTransitionOptions) {
+ transition: @property @options;
+}
+
+.webkit-scrollbar() {
+ &::-webkit-scrollbar {
+ width: 11px;
+ background-color: transparent;
+ background-clip: content-box;
+ }
+ &::-webkit-scrollbar-button {
+ background-color: transparent;
+ }
+ &::-webkit-scrollbar-corner {
+ background-color: transparent;
+ }
+ &::-webkit-scrollbar-thumb {
+ border: solid transparent;
+ border-width: 1px 1px 1px 2px;
+ background-color: #c5c5c5;
+ background-clip: content-box;
+
+ &:hover {
+ background-color: darken(#ccc, 5%);
+ }
+ }
+ &::-webkit-scrollbar-track {
+ border: solid #fff;
+ border-width: 1px 1px 1px 2px;
+ background-color: #fff;
+ background-clip: content-box;
+ }
+ &::-webkit-scrollbar-track-piece {
+ border-left: 1px solid #ccc;
+ background-color: transparent;
+ }
+}
+
+@retina: ~"(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)";
--- /dev/null
+@import "mixins";
+@import "variables";
+
+@import "navigator/config";
+@import "navigator/base";
+@import "navigator/filters";
--- /dev/null
+@import "../variables";
+@import "../mixins";
+
+@import "config";
+
+
+.navigator { }
+
+
+.navigator-element() {
+ position: fixed;
+ z-index: 2;
+ .box-sizing(border-box);
+}
+
+.navigator-header {
+ .navigator-element;
+ top: @navigatorTopOffset;
+ left: 0;
+ .size(100%, @navigatorHeaderHeight);
+}
+
+.navigator-filters {
+ .navigator-element;
+ top: @navigatorTopOffset + @navigatorHeaderHeight;
+ left: 0;
+ .size(100%, @navigatorFiltersHeight);
+}
+
+.navigator-facets {
+ .navigator-element;
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
+ left: 0;
+ .size(100%, @navigatorFacetsHeight);
+}
+
+.navigator-results {
+ .navigator-element;
+ .box-sizing(content-box);
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorStatusHeight;
+ bottom: 0;
+ left: 0;
+ width: @navigatorResultsWidth - 1px;
+}
+
+.navigator-details {
+ .navigator-element;
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
+ bottom: @navigatorBottomOffset;
+ left: @navigatorResultsWidth;
+ right: 0;
+}
+
+.navigator-actions {
+ .navigator-element;
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
+ left: 0;
+ .size(@navigatorResultsWidth, @navigatorStatusHeight);
+}
+
+.navigator-notes {
+ .navigator-element;
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
+ left: 0;
+ .size(100%, @navigatorNotesHeight);
+ display: none;
+}
+
+
+.measures-page {
+ .navigator-results {
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
+ left: 0;
+ bottom: 36px;
+ width: 100%;
+ }
+}
+
+
+.navigator-with-notes {
+
+ .navigator-actions,
+ .navigator-details {
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorNotesHeight;
+ }
+
+ .navigator-results {
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorNotesHeight + @navigatorStatusHeight;
+ }
+
+ .navigator-notes {
+ display: block;
+ }
+
+ .navigator-details .source_title {
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorNotesHeight;
+ }
+
+ .navigator-fetching.navigator-results-list:before {
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorStatusHeight + @navigatorNotesHeight;
+ }
+
+}
+
+
+.navigator-fetching {
+ &:before {
+ content: " ";
+ position: absolute;
+ z-index: 3;
+ top: 0; bottom: 0; left: 0; right: 0;
+ background: #fff url(../images/loading.gif) no-repeat 4px 4px;
+ }
+
+ &#tab-issue-rule {
+ position: relative;
+
+ &:before {
+ z-index: 3;
+ background-color: #EFEFEF;
+ }
+ }
+
+ &.code-issue-actions {
+ position: relative;
+
+ &:before {
+ z-index: 3;
+ background-color: #E4ECF3;
+ }
+ }
+}
+
+
+.navigator-page-loader {
+ padding: @navigatorPadding 0 0 @navigatorPadding;
+}
+
+
+
+// Header
+.navigator-header {
+ padding: 0 @navigatorPadding;
+ border-bottom: 1px solid @navigatorBorderColor;
+ background-color: @navigatorBarBackground;
+ font-size: 0;
+}
+
+.navigator-header-favorite {
+ padding-left: 46px;
+}
+
+.navigator-header-title {
+ display: inline-block;
+ vertical-align: middle;
+ font-size: 20px;
+ line-height: @navigatorHeaderHeight;
+}
+
+.navigator-header-title-note {
+ vertical-align: middle;
+ color: #777;
+ font-size: @smallFontSize;
+}
+
+.navigator-header-description {
+ display: inline-block;
+ vertical-align: middle;
+ margin-left: 16px;
+ font-size: @smallFontSize;
+ font-style: italic;
+}
+
+.navigator-header-actions {
+ margin-left: 20px;
+
+ & > a {
+ vertical-align: middle;
+ margin: 0 8px;
+ font-size: @smallFontSize;
+ }
+}
+
+.navigator-header-menu-toggle {
+ display: inline-block;
+ vertical-align: top;
+ height: 36px;
+ margin-right: 10px;
+ margin-left: -10px;
+ padding: 10px;
+ border-right: 1px solid transparent;
+ .box-sizing(border-box);
+ cursor: pointer;
+ .trans;
+
+ &:hover {
+ background-color: @navigatorHover;
+ }
+
+ &.active {
+ border-color: #cdcdcd;
+ background-color: #fff;
+ }
+
+ [class^="icon-"], [class*=" icon-"] {
+ font-size: 16px;
+ }
+}
+
+
+
+// Notes
+.navigator-notes {
+ padding: 0 @navigatorPadding;
+ border-bottom: 1px solid @navigatorBorderColor;
+ background-color: @navigatorBarBackground;
+
+ color: #777;
+ font-size: @smallFontSize;
+ line-height: @navigatorNotesHeight;
+
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+
+
+// Facets
+.navigator-facets {
+ padding: @navigatorPadding;
+ border-bottom: 1px solid @navigatorBorderColor;
+ background-color: @navigatorBarBackground;
+}
+
+.navigator-facets-list {
+
+}
+
+.navigator-facets-list-item {
+ font-size: 0;
+}
+
+.navigator-facets-list-item + .navigator-facets-list-item {
+ margin-top: @navigatorPadding;
+}
+
+.navigator-facets-list-item-name {
+ display: inline-block;
+ vertical-align: middle;
+ margin-right: @navigatorPadding;
+ font-size: @baseFontSize;
+ font-weight: bold;
+ text-transform: uppercase;
+}
+
+.navigator-facets-list-item-options {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.navigator-facets-list-item-option {
+ display: inline-block;
+ vertical-align: middle;
+ margin: 0 @navigatorPadding;
+ font-size: @baseFontSize;
+ cursor: pointer;
+
+ &:hover {
+ .navigator-facets-list-item-option-name {
+ text-decoration: underline;
+ }
+ }
+
+ &.active {
+ .navigator-facets-list-item-option-name {
+ font-weight: bold;
+ text-decoration: underline;
+ }
+ }
+}
+
+.navigator-facets-list-item-option-name {
+
+}
+
+.navigator-facets-list-item-option-stat {
+ &:before { content: "("; }
+ &:after { content: ")"; }
+}
+
+
+
+// Results
+.navigator-results {
+ border-right: 1px solid @navigatorBorderLightColor;
+ background-color: @white;
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+.navigator-results-list {
+
+ & > li {
+ padding: @navigatorPadding / 2 0;
+ border-top: 1px solid transparent;
+ cursor: pointer;
+ .trans;
+
+ .line {
+ padding: @navigatorPadding / 2 @navigatorPadding;
+ line-height: 1.2;
+ }
+
+ .line-small {
+ font-size: 11px;
+ line-height: 14px;
+ }
+
+ .line-right {
+ float: right;
+ }
+
+ .line-nowrap {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+
+ &:hover {
+ background-color: @navigatorBarBackground;
+ }
+
+ &.active {
+ 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-color: @navigatorBorderLightColor;
+ }
+
+ & > li.active + li {
+ border-top-color: #4B9FD5;
+ }
+
+ &.navigator-fetching {
+
+ & > li .line-nowrap {
+ text-overflow: clip; /* thanks to FF */
+ }
+
+ &:before {
+ position: fixed;
+ z-index: 3;
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorStatusHeight;
+ bottom: 0;
+ left: 0;
+ width: @navigatorResultsWidth - 1px;
+ }
+ }
+}
+
+.navigator-results-no-results {
+ padding-top: 20% !important;
+ background: #fff !important;
+ color: #999;
+ cursor: default !important;
+ text-align: center;
+}
+
+
+
+// Details
+.navigator-details {
+ padding: @navigatorPadding;
+ background-color: @white;
+ overflow: auto;
+
+ .issues-page & {
+ padding-top: 62px;
+ padding-right: 0;
+ }
+
+ &.loading {
+ background: @white url("../images/loading.gif") no-repeat 4px 2px;
+ }
+
+ .code-issue-name {
+ border-bottom: none;
+ }
+
+ .code-issue-actions {
+ background-color: #E4ECF3;
+ }
+
+ .source_title {
+ position: fixed;
+ z-index: 3;
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
+ left: @navigatorResultsWidth;
+ right: 0;
+ padding: @navigatorPadding;
+ border-bottom: 1px solid @navigatorBorderLightColor;
+ background-color: #fff;
+ }
+
+ .source {
+ padding-right: 10px;
+
+ & > table {
+ border: 1px solid #DDD;
+ }
+ }
+
+ .scm .author {
+ display: inline-block;
+ vertical-align: middle;
+ max-width: 100px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+}
+
+
+
+// Status
+.navigator-actions {
+ padding: 0 @navigatorPadding 0 0;
+
+ border-right: 1px solid @navigatorBorderLightColor;
+ border-bottom: 1px solid @navigatorBorderLightColor;
+ background-color: @navigatorBarBackground;
+ font-size: @smallFontSize;
+
+ strong { font-weight: bold; }
+}
+
+.navigator-actions-order {
+ float: left;
+ padding: 0 @navigatorPadding;
+ line-height: @navigatorStatusHeight;
+ cursor: pointer;
+ .trans;
+
+ &:hover {
+ background-color: @navigatorBarBackground;
+ }
+}
+
+.navigator-actions-order-choices {
+ .navigator-element;
+ top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorStatusHeight;
+ left: 0;
+ min-width: @navigatorResultsWidth / 2;
+ background-color: #fff;
+ border-bottom: 1px solid @navigatorBorderLightColor;
+ border-right: 1px solid @navigatorBorderLightColor;
+ overflow: hidden;
+ display: none;
+
+ & > li {
+ height: @navigatorStatusHeight;
+ line-height: @navigatorStatusHeight;
+ padding: 0 10px;
+ cursor: pointer;
+ .trans;
+
+ &:hover {
+ background-color: @navigatorBarBackground;
+ }
+ }
+
+ &.open {
+ display: block;
+ }
+}
+
+.navigator-actions-total {
+ float: right;
+ line-height: @navigatorStatusHeight - 4px;
+}
+
+.navigator-actions-bulk {
+ position: relative;
+ top: -1px;
+ margin-left: 8px;
+ font-size: 16px;
+ text-decoration: none;
+}
+
+
+
+// Footer
+.navigator-page #footer {
+ .navigator-element;
+ bottom: 0;
+ left: @navigatorResultsWidth;
+ right: 0;
+ margin: 0;
+ border-top: 1px solid @navigatorBorderLightColor;
+}
+
+.navigator-page #ftlinks {
+ margin-top: 0;
+}
+
+.measures-page #footer {
+ left: 0;
+}
--- /dev/null
+@import "../variables";
+
+// Layout
+@navigatorTopOffset: 30px;
+@navigatorBottomOffset: 35px;
+
+@navigatorHeaderHeight: 37px;
+@navigatorFiltersHeight: 37px;
+@navigatorFacetsHeight: 90px;
+@navigatorStatusHeight: 30px;
+@navigatorNotesHeight: 20px;
+
+@navigatorResultsWidth: 320px;
+
+@navigatorPadding: 10px;
+
+
+// Colors
+@navigatorBarBackground: @grey;
+@navigatorBorderColor: @darkGrey;
+@navigatorBorderLightColor: lighten(@darkGrey, 8%);
+
+
+@navigatorHover: darken(@grey, 5%);
+@navigatorFilterPadding: @navigatorPadding;
--- /dev/null
+@import "../variables";
+@import "../mixins";
+
+@import "config";
+
+
+.navigator-filters {
+ border-bottom: 1px solid @darkGrey;
+ background-color: @navigatorBarBackground;
+ font-size: 0;
+}
+
+.navigator-filters-list {
+ display: inline-block;
+ vertical-align: middle;
+ margin-bottom: -1px;
+ font-size: 0;
+}
+
+.navigator-filter-submit,
+.navigator-filter-new-search {
+ vertical-align: middle;
+ margin-left: 15px;
+ font-size: @baseFontSize;
+}
+
+.navigator-filter-list-favorite {
+ position: relative;
+ padding-left: 36px;
+ overflow: hidden;
+}
+
+.navigator-filters-actions {
+ display: inline-block;
+ vertical-align: middle;
+ margin-left: 20px;
+ font-size: @baseFontSize;
+}
+
+.navigator-filter {
+ display: inline-block;
+ vertical-align: top;
+ height: @navigatorFiltersHeight - 1px;
+ line-height: @navigatorFiltersHeight - 1px;
+ margin: -1px 0 0;
+ padding: 0 @navigatorFilterPadding;
+ border: 1px solid transparent;
+ white-space: nowrap;
+ cursor: pointer;
+ transition: background 0.3s ease;
+
+ &:hover {
+ background-color: @navigatorHover;
+ }
+
+ &.active {
+ border-color: @darkGrey;
+ background: #fff;
+ }
+}
+
+.navigator-filter-disabled {
+ display: none;
+}
+
+.navigator-filter-optional {
+ padding-right: 0;
+}
+
+.navigator-filter-inline,
+.navigator-filter-read-only,
+.navigator-filter-inactive {
+ cursor: default;
+
+ &:hover,
+ &.active {
+ border-color: transparent;
+ background: transparent;
+ }
+}
+
+.navigator-filter-inline .navigator-filter-label:after {
+ content: "";
+}
+
+.navigator-filter-inactive {
+ opacity: 0.5;
+}
+
+.navigator-filter-label {
+ display: inline-block;
+ vertical-align: middle;
+ margin-right: 5px;
+ color: #333;
+ font-size: @baseFontSize;
+
+ &:after { content: ":"; }
+}
+
+.navigator-filter-value {
+ display: inline-block;
+ vertical-align: middle;
+ max-width: 120px;
+ color: #333;
+ font-size: @baseFontSize;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+
+ &.default {
+ color: #666;
+ }
+}
+
+.navigator-filter-disable {
+ display: inline-block;
+ vertical-align: middle;
+ .square(20px);
+ line-height: 20px;
+ margin: 0 0 0 5px;
+ font-size: 18px;
+ text-align: center;
+ transition: background 0.3s ease;
+
+ &:hover {
+ background-color: darken(@navigatorHover, 7%);
+ }
+}
+
+.navigator-filter-range-input {
+ width: 120px;
+}
+
+.navigator-filter-details {
+ display: none;
+ position: absolute;
+ z-index: 1200;
+ min-width: 100px;
+ border: 1px solid @darkGrey;
+ background: #fff;
+ box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
+ font-size: @baseFontSize;
+ transition: opacity 0.3s ease;
+
+ &.active {
+ display: block;
+ }
+}
+
+.navigator-filter-details-inner {
+ max-width: 300px;
+ padding: 5px @navigatorFilterPadding;
+
+ .select2-container,
+ input {
+ margin: 5px 0;
+ vertical-align: middle;
+ }
+}
+
+.navigator-filter-select-list {
+ min-width: 150px;
+ max-width: 300px;
+ max-height: 182px;
+ padding: 5px 0;
+ overflow-y: auto;
+ .webkit-scrollbar;
+
+ label {
+ display: block;
+ padding: 5px @navigatorFilterPadding;
+ transition: background 0.3s ease;
+ cursor: pointer;
+ white-space: nowrap;
+ overflow: hidden;
+
+ &:hover,
+ &.current {
+ background-color: darken(#fff, 7%);
+ }
+
+ & > input[type=checkbox] {
+ vertical-align: baseline;
+ cursor: pointer;
+ }
+
+ & > img {
+ vertical-align: text-bottom;
+ }
+
+ & > span {
+ display: inline-block;
+ vertical-align: top;
+ width: 86%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ &.special {
+ font-style: italic;
+
+ & > span {
+ text-decoration: underline;
+ }
+ }
+
+ &.inactive {
+ cursor: default;
+ opacity: 0.5;
+
+ &:hover {
+ background-color: transparent;
+ }
+ }
+ }
+
+ .single {
+ padding: 5px @navigatorFilterPadding;
+ }
+
+ .line {
+ height: 1px;
+ margin: 5px 0;
+ background: @darkGrey;
+ }
+}
+
+.navigator-filter-select-list:not(.hidden) + .navigator-filter-select-list {
+ margin-top: 5px;
+ border-top: 1px solid @darkGrey;
+}
+
+.navigator-filter-search {
+ position: relative;
+ margin: @navigatorFilterPadding 26px @navigatorFilterPadding @navigatorFilterPadding;
+
+ input {
+ .size(100%, 26px);
+ padding: 0 7px;
+ border: 1px solid @darkGrey;
+ .box-sizing(border-box);
+ }
+
+ .fetching &:after {
+ content: ' ';
+ position: absolute;
+ top: 6px; right: -21px;
+ display: block;
+ .square(16px);
+ background: #fff url(../images/loading.gif) no-repeat center center;
+ }
+}
+
+.navigator-filter-load-more {
+ display: none;
+ height: 26px;
+ line-height: 26px;
+ background-color: @grey;
+ text-align: center;
+ cursor: pointer;
+ transition: background 0.3s ease;
+
+ &:hover {
+ background-color: darken(@grey, 7%);
+ }
+}
+
+.navigator-filter-favorite {
+ position: absolute;
+ top: -100%; left: 0;
+ border-top: none;
+}
+
+.navigator-filter-favorite-toggle {
+ .size(16px, @navigatorFiltersHeight);
+ background: url('../images/navigator/favorite-filters.png') no-repeat center center;
+
+ @media @retina {
+ background-image: url(../images/navigator/favorite-filters@2x.png);
+ background-size: 16px 14px;
+ }
+}
+
+.navigator-filter-more-criteria {
+ font-size: @baseFontSize;
+}
--- /dev/null
+@import "variables";
+@import "mixins";
+@import "navigator/config";
+
+@qualityGateSidebarWidth: 230px;
+
+.quality-gates-navigator {
+
+ .navigator-header {
+ left: @qualityGateSidebarWidth;
+ border-color: @navigatorBorderColor;
+
+ .spinner { margin-top: 9px; }
+ }
+
+ .navigator-actions {
+ top: @navigatorTopOffset;
+ height: @navigatorHeaderHeight;
+ width: @qualityGateSidebarWidth;
+ padding: 0 @navigatorPadding;
+ border-color: @navigatorBorderColor;
+ border-bottom-color: @navigatorBarBackground;
+
+ .navigator-header-title {
+ font-size: 13px;
+ font-weight: bold;
+ text-transform: uppercase;
+ }
+ }
+
+ .navigator-results {
+ top: @navigatorTopOffset + @navigatorHeaderHeight;
+ width: @qualityGateSidebarWidth - 1px;
+ border-color: @navigatorBorderColor;
+ }
+
+ .navigator-details {
+ top: @navigatorTopOffset + @navigatorHeaderHeight;
+ left: @qualityGateSidebarWidth;
+ padding: @navigatorPadding;
+ }
+
+}
+
+.quality-gates-page #footer {
+ left: @qualityGateSidebarWidth;
+}
+
+
+.quality-gates-nav {
+ background-color: @navigatorBarBackground;
+
+ .navigator-results-list {
+
+ & > li {
+ border-color: transparent;
+
+ &:hover:not(.active):not(.empty) {
+ background-color: @navigatorBorderLightColor;
+ }
+
+ &.active {
+ border-color: #4B9FD5;
+ }
+
+ &.empty {
+ cursor: default;
+ }
+
+ .line {
+ padding-top: 2px;
+ padding-bottom: 2px;
+ }
+
+ .subtitle {
+ text-transform: lowercase;
+ }
+ }
+ }
+}
+
+
+.quality-gate-section + .quality-gate-section {
+ margin-top: @navigatorPadding;
+ padding-top: 2 * @navigatorPadding;
+}
+
+.quality-gate-section-empty + .quality-gate-section {
+ border-top: 1px solid @navigatorBorderLightColor;
+}
+
+.quality-gate-section-name {
+ margin-bottom: @navigatorPadding;
+ font-weight: bold;
+ text-transform: uppercase;
+}
+
+
+.quality-gate-introduction {
+ margin-bottom: 2 * @navigatorPadding;
+}
+
+
+.quality-gate-new-condition {
+ margin-bottom: @navigatorPadding;
+}
+
+.quality-gate-condition-actions {
+ position: relative;
+}
--- /dev/null
+.select-list-container {
+ min-width: 500px;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.select-list-control {
+ margin-bottom: 10px;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.select-list-list-container {
+ border: 1px solid #bfbfbf;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.select-list-list-container.loading .select-list-list {
+ display: none;
+}
+
+.select-list-list-container-readonly {
+ border: none;
+}
+
+.select-list-list-container-readonly .select-list-list {
+ overflow: visible;
+}
+
+.select-list-list-container-readonly .select-list-list > li {
+ border: none;
+}
+
+.select-list-list {
+ overflow-x: hidden;
+}
+
+ .select-list-list > li {
+ position: relative;
+ display: block;
+ margin-top: -1px;
+ padding: 5px 10px;
+ border-top: 1px solid #e0e0e0;
+ color: #404040;
+ transition: -webkit-transform 0.3s ease;
+ transition: -ms-transform 0.3s ease;
+ transition: transform 0.3s ease;
+ }
+
+ .select-list-list > li.removed {
+ -webkit-transform: translateX(100%);
+ -moz-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ -o-transform: translateX(100%);
+ transform: translateX(100%);
+ }
+
+ .select-list-list > li.added {
+ -webkit-transform: translateX(-100%);
+ -moz-transform: translateX(-100%);
+ -ms-transform: translateX(-100%);
+ -o-transform: translateX(-100%);
+ transform: translateX(-100%);
+ }
+
+ .select-list-list > li.progress {
+ background: url(../images/loading.gif) no-repeat 10px 5px;
+ }
+
+ .select-list-list > li.progress .select-list-list-checkbox {
+ visibility: hidden;
+ }
+
+ .select-list-list > li.empty-message {
+ padding: 6px 5px;
+ border: 1px solid #ddd;
+ background-color: #efefef;
+ }
+
+
+.select-list-list-checkbox {
+ display: inline-block;
+ vertical-align: middle;
+ margin-right: 10px;
+}
+
+.select-list-list-item {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.select-list-control {
+ height: 27px;
+}
+
+.select-list-check-control {
+ float: left;
+}
+
+.select-list-check-control.disabled {
+ filter: alpha(opacity=60);
+ opacity: 0.6;
+}
+
+.select-list-check-control.disabled .select-list-control-button {
+ background-color: #fff !important;
+}
+
+.select-list-control-button {
+ position: relative;
+ z-index: 1;
+ display: inline-block;
+ vertical-align: middle;
+ width: 110px;
+ height: 27px;
+ line-height: 25px;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ border: 1px solid #bfbfbf;
+ text-align: center;
+ cursor: pointer;
+ transition: background-color 0.2s ease;
+}
+
+.select-list-control-button:hover {
+ background-color: #f6f6f6;
+}
+
+.select-list-control-button:active,
+.select-list-control-button.active {
+ z-index: 2;
+ background-color: #efefef;
+}
+
+.select-list-control-button + .select-list-control-button {
+ margin-left: -1px;
+}
+
+
+.select-list-search-control {
+ position: relative;
+ float: right;
+ height: 27px;
+}
+
+.select-list-search-control input {
+ width: 170px;
+ height: 100%;
+ line-height: 27px\9;
+ padding: 0 40px 0 10px;
+ border: 1px solid #bfbfbf;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ transition: all 0.3s ease;
+}
+
+.select-list-search-control input:focus {
+ outline: none;
+ box-shadow: none;
+}
+
+.select-list-search-control input::-ms-clear {
+ display: none;
+}
+
+.select-list-search-control-clear {
+ position: absolute;
+ top: 2px;
+ right: 2px;
+ width: 23px;
+ height: 23px;
+ line-height: 24px;
+ background-color: #e0e0e0;
+ color: #fff;
+ cursor: pointer;
+ font-size: 18px;
+ text-align: center;
+ transition: all 0.3s ease;
+}
+
+ .select-list-search-control.disabled .select-list-search-control-clear {
+ filter: alpha(opacity=0);
+ opacity: 0;
+ }
+
+ .select-list-search-control-clear:hover {
+ background-color: #d6d6d6;
+ }
--- /dev/null
+@import "mixins";
+@import "variables";
+
+@imagesPath: '../images/select2.png';
+@imagesPath2x: '../images/select2x2.png';
+@spinnerPath: '../images/spinner.gif';
+
+.select2-container {
+ vertical-align: middle;
+}
+
+.select2-container .select2-choice {
+ height: 20px;
+ line-height: 20px;
+ border-color: @darkGrey;
+ border-radius: 0;
+ background: #fff;
+ text-align: left;
+}
+
+.select2-container .select2-choice,
+.select2-container .select2-choices {
+ .trans(border-color);
+}
+
+.select2-container .select2-choice abbr {
+ top: 4px;
+}
+
+.select2-container .select2-choice div {
+ width: 19px;
+ border: none;
+ border-radius: 0;
+ background: #fff;
+}
+
+.select2-container .select2-choice div b {
+ top: 4px;
+ background-position: 1px -1px;
+}
+
+.select2-dropdown-open .select2-choice div b {
+ background-position: -17px -1px;
+}
+
+
+.select2-container-active .select2-choice,
+.select2-container-active .select2-choices {
+ border-color: @highlighted;
+ box-shadow: none;
+}
+
+.select2-dropdown-open .select2-choice {
+ box-shadow: none;
+}
+
+.select2-drop {
+ border-color: @darkGrey;
+ border-radius: 0;
+}
+
+.select2-drop-active {
+ border-color: @highlighted;
+}
+
+.select2-dropdown-open.select2-drop-above .select2-choice,
+.select2-dropdown-open.select2-drop-above .select2-choices {
+ border-color: @highlighted;
+ border-radius: 0;
+ background: #fff;
+}
+
+.select2-drop.select2-drop-above.select2-drop-active {
+ border-color: @highlighted;
+ border-radius: 0;
+}
+
+.select2-drop.select2-drop-above .select2-search input {
+ margin-top: 0;
+}
+
+.select2-results {
+ margin: 0;
+ padding: 5px 0;
+ border-top: 1px solid @darkGrey;
+}
+
+.select2-results .select2-result-label {
+ height: 20px;
+ line-height: 20px;
+ padding: 0 8px;
+ color: @baseFontColor;
+
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.select2-results .select2-no-results,
+.select2-results .select2-searching,
+.select2-results .select2-selection-limit,
+.select2-more-results.select2-active {
+ height: 20px;
+ line-height: 20px;
+ padding: 0 10px;
+}
+
+.select2-results .select2-highlighted {
+ background: transparent;
+ color: @baseFontColor;
+}
+
+.select2-results .select2-highlighted .select2-result-label {
+ background: darken(@grey, 5%);
+}
+
+.select2-search {
+ padding: 4px;
+}
+
+.select2-search input {
+ height: 20px;
+ padding: 0 7px;
+ border-color: @darkGrey;
+ background: #fff !important;
+}
+
+.select2-container-multi .select2-choices {
+ min-height: 19px;
+ padding-bottom: 1px;
+ border-color: @darkGrey;
+ background: #fff;
+}
+
+.select2-container-multi.select2-container-active .select2-choices {
+ border-color: @highlighted;
+ box-shadow: none;
+}
+
+.select2-container-multi .select2-choices .select2-search-field input {
+ height: 16px;
+ padding: 0 3px;
+}
+
+.select2-container-multi .select2-choices .select2-search-choice {
+ margin: 1px 1px 0 1px;
+ padding: 1px 5px 2px 18px;
+ border-radius: 0;
+ border-color: @darkGrey;
+ background: @grey;
+ box-shadow: none;
+}
+
+.select2-search-choice-close {
+ top: 2px;
+}
+
+.select2-search-choice-close,
+.select2-container .select2-choice abbr,
+.select2-container .select2-choice div b {
+ background-image: url(@imagesPath);
+}
+
+.select2-search input.select2-active,
+.select2-more-results.select2-active,
+.select2-container-multi .select2-choices .select2-search-field input.select2-active {
+ background-image: url(@spinnerPath);
+}
+
+@media @retina {
+ .select2-search-choice-close,
+ .select2-container .select2-choice abbr,
+ .select2-container .select2-choice div b {
+ background-image: url(@imagesPath2x) !important;
+ }
+}
+
+
+
+
+
+
+
--- /dev/null
+/*
+Version: 3.2 Timestamp: Mon Sep 10 10:38:04 PDT 2012
+*/
+.select2-container {
+ position: relative;
+ display: inline-block;
+ /* inline-block for ie7 */
+ zoom: 1;
+ *display: inline;
+ vertical-align: top;
+}
+
+.select2-container,
+.select2-drop,
+.select2-search,
+.select2-search input {
+ /*
+ Force border-box so that % widths fit the parent
+ container without overlap because of margin/padding.
+
+ More Info : http://www.quirksmode.org/css/box.html
+ */
+ -moz-box-sizing: border-box; /* firefox */
+ -ms-box-sizing: border-box; /* ie */
+ -webkit-box-sizing: border-box; /* webkit */
+ -khtml-box-sizing: border-box; /* konqueror */
+ box-sizing: border-box; /* css3 */
+}
+
+.select2-container .select2-choice {
+ background-color: #fff;
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.5, white));
+ background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 50%);
+ background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 50%);
+ background-image: -o-linear-gradient(bottom, #eeeeee 0%, #ffffff 50%);
+ background-image: -ms-linear-gradient(top, #eeeeee 0%, #ffffff 50%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
+ background-image: linear-gradient(top, #eeeeee 0%, #ffffff 50%);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #aaa;
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ position: relative;
+ height: 26px;
+ line-height: 26px;
+ padding: 0 0 0 8px;
+ color: #444;
+ text-decoration: none;
+}
+
+.select2-container.select2-drop-above .select2-choice {
+ border-bottom-color: #aaa;
+ -webkit-border-radius: 0px 0px 4px 4px;
+ -moz-border-radius: 0px 0px 4px 4px;
+ border-radius: 0px 0px 4px 4px;
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.9, white));
+ background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 90%);
+ background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 90%);
+ background-image: -o-linear-gradient(bottom, #eeeeee 0%, white 90%);
+ background-image: -ms-linear-gradient(top, #eeeeee 0%, #ffffff 90%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
+ background-image: linear-gradient(top, #eeeeee 0%, #ffffff 90%);
+}
+
+.select2-container .select2-choice span {
+ margin-right: 26px;
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ -o-text-overflow: ellipsis;
+ -ms-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+}
+
+.select2-container .select2-choice abbr {
+ display: block;
+ position: absolute;
+ right: 26px;
+ top: 8px;
+ width: 12px;
+ height: 12px;
+ font-size: 1px;
+ background: url('select2.png') right top no-repeat;
+ cursor: pointer;
+ text-decoration: none;
+ border: 0;
+ outline: 0;
+}
+
+.select2-container .select2-choice abbr:hover {
+ background-position: right -11px;
+ cursor: pointer;
+}
+
+.select2-drop {
+ background: #fff;
+ color: #000;
+ border: 1px solid #aaa;
+ border-top: 0;
+ position: absolute;
+ top: 100%;
+ -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
+ -moz-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
+ -o-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
+ box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
+ z-index: 9999;
+ width: 100%;
+ margin-top: -1px;
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+
+.select2-drop.select2-drop-above {
+ -webkit-border-radius: 4px 4px 0px 0px;
+ -moz-border-radius: 4px 4px 0px 0px;
+ border-radius: 4px 4px 0px 0px;
+ margin-top: 1px;
+ border-top: 1px solid #aaa;
+ border-bottom: 0;
+ -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
+ -moz-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
+ -o-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
+ box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
+}
+
+.select2-container .select2-choice div {
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ background: #ccc;
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
+ background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
+ background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
+ background-image: -o-linear-gradient(bottom, #ccc 0%, #eee 60%);
+ background-image: -ms-linear-gradient(top, #cccccc 0%, #eeeeee 60%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#eeeeee', GradientType=0);
+ background-image: linear-gradient(top, #cccccc 0%, #eeeeee 60%);
+ border-left: 1px solid #aaa;
+ position: absolute;
+ right: 0;
+ top: 0;
+ display: block;
+ height: 100%;
+ width: 18px;
+}
+
+.select2-container .select2-choice div b {
+ background: url('select2.png') no-repeat 0 1px;
+ display: block;
+ width: 100%;
+ height: 100%;
+}
+
+.select2-search {
+ display: inline-block;
+ white-space: nowrap;
+ z-index: 10000;
+ min-height: 26px;
+ width: 100%;
+ margin: 0;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+.select2-search-hidden {
+ display: block;
+ position: absolute;
+ left: -10000px;
+}
+
+.select2-search input {
+ background: #fff url('select2.png') no-repeat 100% -22px;
+ background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));
+ background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);
+ background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);
+ background: url('select2.png') no-repeat 100% -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);
+ background: url('select2.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);
+ background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #ffffff 85%, #eeeeee 99%);
+ padding: 4px 20px 4px 5px;
+ outline: 0;
+ border: 1px solid #aaa;
+ font-family: sans-serif;
+ font-size: 1em;
+ width: 100%;
+ margin: 0;
+ height: auto !important;
+ min-height: 26px;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ border-radius: 0;
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+}
+
+.select2-drop.select2-drop-above .select2-search input {
+ margin-top: 4px;
+}
+
+.select2-search input.select2-active {
+ background: #fff url('spinner.gif') no-repeat 100%;
+ background: url('spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));
+ background: url('spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);
+ background: url('spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);
+ background: url('spinner.gif') no-repeat 100%, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);
+ background: url('spinner.gif') no-repeat 100%, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);
+ background: url('spinner.gif') no-repeat 100%, linear-gradient(top, #ffffff 85%, #eeeeee 99%);
+}
+
+.select2-container-active .select2-choice,
+.select2-container-active .select2-choices {
+ -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
+ -moz-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
+ -o-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
+ box-shadow: 0 0 5px rgba(0, 0, 0, .3);
+ border: 1px solid #5897fb;
+ outline: none;
+}
+
+.select2-dropdown-open .select2-choice {
+ border: 1px solid #aaa;
+ border-bottom-color: transparent;
+ -webkit-box-shadow: 0 1px 0 #fff inset;
+ -moz-box-shadow: 0 1px 0 #fff inset;
+ -o-box-shadow: 0 1px 0 #fff inset;
+ box-shadow: 0 1px 0 #fff inset;
+ background-color: #eee;
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, white), color-stop(0.5, #eeeeee));
+ background-image: -webkit-linear-gradient(center bottom, white 0%, #eeeeee 50%);
+ background-image: -moz-linear-gradient(center bottom, white 0%, #eeeeee 50%);
+ background-image: -o-linear-gradient(bottom, white 0%, #eeeeee 50%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #eeeeee 50%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);
+ background-image: linear-gradient(top, #ffffff 0%, #eeeeee 50%);
+ -webkit-border-bottom-left-radius: 0;
+ -webkit-border-bottom-right-radius: 0;
+ -moz-border-radius-bottomleft: 0;
+ -moz-border-radius-bottomright: 0;
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.select2-dropdown-open .select2-choice div {
+ background: transparent;
+ border-left: none;
+}
+
+.select2-dropdown-open .select2-choice div b {
+ background-position: -18px 1px;
+}
+
+/* results */
+.select2-results {
+ margin: 4px 4px 4px 0;
+ padding: 0 0 0 4px;
+ position: relative;
+ overflow-x: hidden;
+ overflow-y: auto;
+ max-height: 200px;
+}
+
+.select2-results ul.select2-result-sub {
+ margin: 0 0 0 0;
+}
+
+.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }
+
+.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }
+
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }
+
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }
+
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }
+
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }
+
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }
+
+.select2-results li {
+ list-style: none;
+ display: list-item;
+}
+
+.select2-results li.select2-result-with-children > .select2-result-label {
+ font-weight: bold;
+}
+
+.select2-results .select2-result-label {
+ padding: 3px 7px 4px;
+ margin: 0;
+ cursor: pointer;
+}
+
+.select2-results .select2-highlighted {
+ background: #3875d7;
+ color: #fff;
+}
+
+.select2-results li em {
+ background: #feffde;
+ font-style: normal;
+}
+
+.select2-results .select2-highlighted em {
+ background: transparent;
+}
+
+.select2-results .select2-no-results,
+.select2-results .select2-searching,
+.select2-results .select2-selection-limit {
+ background: #f4f4f4;
+ display: list-item;
+}
+
+/*
+disabled look for already selected choices in the results dropdown
+.select2-results .select2-disabled.select2-highlighted {
+ color: #666;
+ background: #f4f4f4;
+ display: list-item;
+ cursor: default;
+}
+.select2-results .select2-disabled {
+ background: #f4f4f4;
+ display: list-item;
+ cursor: default;
+}
+*/
+.select2-results .select2-disabled {
+ display: none;
+}
+
+.select2-more-results.select2-active {
+ background: #f4f4f4 url('spinner.gif') no-repeat 100%;
+}
+
+.select2-more-results {
+ background: #f4f4f4;
+ display: list-item;
+}
+
+/* disabled styles */
+
+.select2-container.select2-container-disabled .select2-choice {
+ background-color: #f4f4f4;
+ background-image: none;
+ border: 1px solid #ddd;
+ cursor: default;
+}
+
+.select2-container.select2-container-disabled .select2-choice div {
+ background-color: #f4f4f4;
+ background-image: none;
+ border-left: 0;
+}
+
+/* multiselect */
+
+.select2-container-multi .select2-choices {
+ background-color: #fff;
+ background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
+ background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+ background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+ background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+ background-image: -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+ background-image: linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+ border: 1px solid #aaa;
+ margin: 0;
+ padding: 0;
+ cursor: text;
+ overflow: hidden;
+ height: auto !important;
+ height: 1%;
+ position: relative;
+}
+
+.select2-container-multi .select2-choices {
+ min-height: 26px;
+}
+
+.select2-container-multi.select2-container-active .select2-choices {
+ -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
+ -moz-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
+ -o-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
+ box-shadow: 0 0 5px rgba(0, 0, 0, .3);
+ border: 1px solid #5897fb;
+ outline: none;
+}
+
+.select2-container-multi .select2-choices li {
+ float: left;
+ list-style: none;
+}
+
+.select2-container-multi .select2-choices .select2-search-field {
+ white-space: nowrap;
+ margin: 0;
+ padding: 0;
+}
+
+.select2-container-multi .select2-choices .select2-search-field input {
+ color: #666;
+ background: transparent !important;
+ font-family: sans-serif;
+ font-size: 100%;
+ height: 15px;
+ padding: 5px;
+ margin: 1px 0;
+ outline: 0;
+ border: 0;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ -o-box-shadow: none;
+ box-shadow: none;
+}
+
+.select2-container-multi .select2-choices .select2-search-field input.select2-active {
+ background: #fff url('spinner.gif') no-repeat 100% !important;
+}
+
+.select2-default {
+ color: #999 !important;
+}
+
+.select2-container-multi .select2-choices .select2-search-choice {
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ background-color: #e4e4e4;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0);
+ background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
+ background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+ background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+ background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+ background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+ background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+ -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
+ box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
+ color: #333;
+ border: 1px solid #aaaaaa;
+ line-height: 13px;
+ padding: 3px 5px 3px 18px;
+ margin: 3px 0 3px 5px;
+ position: relative;
+ cursor: default;
+}
+
+.select2-container-multi .select2-choices .select2-search-choice span {
+ cursor: default;
+}
+
+.select2-container-multi .select2-choices .select2-search-choice-focus {
+ background: #d4d4d4;
+}
+
+.select2-search-choice-close {
+ display: block;
+ position: absolute;
+ right: 3px;
+ top: 4px;
+ width: 12px;
+ height: 13px;
+ font-size: 1px;
+ background: url('select2.png') right top no-repeat;
+ outline: none;
+}
+
+.select2-container-multi .select2-search-choice-close {
+ left: 3px;
+}
+
+.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {
+ background-position: right -11px;
+}
+
+.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {
+ background-position: right -11px;
+}
+
+/* disabled styles */
+
+.select2-container-multi.select2-container-disabled .select2-choices {
+ background-color: #f4f4f4;
+ background-image: none;
+ border: 1px solid #ddd;
+ cursor: default;
+}
+
+.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
+ background-image: none;
+ background-color: #f4f4f4;
+ border: 1px solid #ddd;
+ padding: 3px 5px 3px 5px;
+}
+
+.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close {
+ display: none;
+}
+
+/* end multiselect */
+
+.select2-result-selectable .select2-match,
+.select2-result-unselectable .select2-result-selectable .select2-match { text-decoration: underline; }
+
+.select2-result-unselectable .select2-match { text-decoration: none; }
+
+.select2-offscreen { position: absolute; left: -10000px; }
+
+/* Retina-ize icons */
+
+@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
+ .select2-search input, .select2-search-choice-close, .select2-container .select2-choice abbr, .select2-container .select2-choice div b {
+ background-image: url(select2x2.png) !important;
+ background-repeat: no-repeat !important;
+ background-size: 60px 40px !important;
+ }
+
+ .select2-search input {
+ background-position: 100% -21px !important;
+ }
+}
--- /dev/null
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+/* CSS optimized by http://www.cleancss.com */
+
+/* ------------------- PROJECTS SEARCH FORM ------------------- */
+#projectSearch {
+ color: #444;
+ margin: 4px 0 0 0;
+}
+
+/*
+ FOOTER
+*/
+#ftlinks {
+ background: #fff;
+ color: #262626;
+ text-align: center;
+ border-top: 1px solid #fff;
+ font-size: 85%;
+ padding: 4px 0;
+ margin-top: 10px;
+}
+
+.ie-warn {
+ color: #EEE;
+ background: #FF5252;
+ padding: 0 5px;
+}
+
+.ie-warn a {
+ color: #EEE;
+ text-decoration: underline;
+}
+
+#ftlinks a {
+ color: #444;
+}
+
+/*
+ GENERAL
+*/
+a {
+ cursor: pointer;
+}
+
+.loading {
+ background: url("../images/loading.gif") no-repeat 4px 2px;
+ color: #444;
+ padding: 3px 25px;
+}
+
+.right {
+ text-align: right;
+}
+
+.left {
+ text-align: left;
+}
+
+.center {
+ text-align: center;
+}
+
+.top {
+ vertical-align: top;
+}
+
+.bottom {
+ vertical-align: bottom;
+}
+
+.middle {
+ vertical-align: middle;
+}
+
+.nowrap {
+ white-space: nowrap;
+}
+
+code {
+ font-size: 93%;
+}
+
+.hidden {
+ display: none;
+ visibility: hidden;
+}
+
+.clear {
+ height: 0;
+ clear: both;
+}
+
+.note {
+ color: #777;
+ font-size: 93%;
+ font-weight: normal;
+ line-height: 13px;
+}
+
+.note img {
+ vertical-align: bottom;
+}
+
+.crossout {
+ text-decoration: line-through;
+}
+
+.small {
+ font-size: 85%;
+}
+
+input[type].small {
+
+}
+
+small {
+ color: #AAA;
+ font-size: 85%;
+ font-style: normal;
+}
+
+em {
+ font-weight: bold;
+}
+
+em.mandatory {
+ color: #990000;
+ font-style: italic;
+}
+
+a.external {
+ background: url('../images/links/external.png') no-repeat 100% 0;
+ padding: 0 16px 0 0;
+}
+
+.fav {
+ display: inline-block;
+ background: url('../images/star.png') no-repeat 100% 0;
+ width: 16px;
+ height: 16px;
+ vertical-align: text-bottom;
+}
+
+.notfav {
+ display: inline-block;
+ background: url('../images/star_off.png') no-repeat 100% 0;
+ width: 16px;
+ height: 16px;
+ vertical-align: text-bottom;
+}
+
+.red-button {
+ color: #990000 !important;
+}
+
+.red-button:hover {
+ color: #FFFFFF !important;
+ border: solid 1px #CD504A !important;
+ background: #B33630 !important;
+ background: -webkit-gradient(linear, left top, left bottom, from(#DC5F59), to(#B33630)) !important;
+ background: -moz-linear-gradient(top, #DC5F59, #B33630) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#DC5F59', endColorstr = '#B33630') !important;
+}
+
+.red-button:active {
+ color: #FFFFFF !important;
+ border: solid 1px #CD504A !important;
+ background: #B33630 !important;
+ background: -webkit-gradient(linear, left top, left bottom, from(#AC2F29), to(#D35650)) !important;
+ background: -moz-linear-gradient(top, #AC2F29, #D35650) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#AC2F29', endColorstr = '#D35650') !important;
+}
+
+.red-button[disabled] {
+ position: relative;
+ top: 0;
+ text-shadow: 1px 1px 0 #FFFFFF;
+ color: #BBBBBB;
+ border: solid 1px #DDD;
+ background: #EBEBEB;
+ background: -webkit-gradient(linear, left top, left bottom, from(#FFFFFF), to(#E1E1E1));
+ background: -moz-linear-gradient(top, #FFFFFF, #E1E1E1);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#FFFFFF', endColorstr = '#E1E1E1');
+ cursor: default;
+}
+
+/* ------------------- PAGE ------------------- */
+h1, .h1 {
+ color: #444;
+ font-size: 16px;
+}
+
+h1 a {
+ color: #444;
+ text-decoration: none;
+ border-bottom: 1px dotted #2B547D;
+}
+
+h2, .h2 {
+ color: #2B547D;
+ font-size: 16px;
+ font-weight: normal;
+}
+
+h2 a {
+ color: #2B547D;
+ text-decoration: none;
+ border-bottom: 1px dotted #2B547D;
+}
+
+h3, .h3 {
+ font-size: 100%;
+ font-weight: bold;
+}
+
+h4, .h4 {
+ font-size: 85%;
+ color: #777;
+}
+
+h1 img, .h1 img, h2 img, .h2 img, h3 img, .h3 img, h4 img, .h4 img {
+ vertical-align: middle;
+}
+
+.subtitle {
+ color: #777;
+ font-size: 85%;
+ margin: 0;
+ padding: 0;
+}
+
+.notes {
+ color: #777;
+ font-size: 11px;
+ margin-bottom: 10px;
+ background-color: #EFEFEF;
+ border: 1px solid #cdcdcd;
+ line-height: 16px;
+ height: 16px;
+ padding: 2px 4px;
+}
+
+.treemap {
+ position: relative;
+ cursor: pointer;
+}
+
+.treemap a {
+ color: #FFF;
+ text-decoration: none;
+ font-size: 12px;
+ padding: 1px;
+}
+.treemap a:hover {
+ text-decoration: underline;
+}
+
+/* ------------------- MESSAGES ------------------- */
+.warning {
+ border: solid 1px #FFD324;
+ background-color: #FFF6BF;
+ color: #514721;
+ margin: 0 0 4px;
+ padding: 4px;
+}
+
+.error {
+ border: 1px solid red;
+ background-color: #FF5252;
+ color: #eee;
+ margin: 0 0 4px;
+ padding: 4px;
+}
+
+.error a {
+ color: #eee;
+}
+
+.notice {
+ border: 1px solid #9c9;
+ background-color: #e2f9e3;
+ color: #060;
+ margin: 0 0 4px;
+ padding: 4px;
+}
+
+.info {
+ background-color: #CAE3F2;
+ padding: 5px;
+ border: 1px solid #4B9FD5;
+}
+
+/* ------------------- SETUP / MIGRATION PAGES ------------------- */
+.migration {
+ background-image: url("../images/sonarqube-24x100.png");
+ background-repeat: no-repeat;
+ background-position: top right;
+}
+
+/* ------------------- LOGIN FORM ------------------- */
+#login_form {
+ border: 2px solid #4b9fd5;
+ width: 230px;
+ text-align: left;
+ background-color: #CAE3F2;
+ padding: 15px 20px;
+}
+
+#login_form h4 {
+ text-align: left;
+ font-weight: bold;
+ color: #036;
+}
+
+#login_form p {
+ padding: 3px 0 10px;
+}
+
+#login_form .desc {
+ font-size: 85%;
+ font-weight: normal;
+}
+
+/* ------------------- DOCUMENTATION --------------------- */
+.doc h2 {
+ margin-top: 8px;
+}
+
+.doc p {
+ margin: 8px 0;
+}
+
+.doc pre, pre.code {
+ color: #777;
+ background-color: #EFEFEF;
+ padding: 10px;
+ margin: 10px 0;
+ border: 1px dashed #777;
+ font-size: 93%;
+ line-height: 1.5em;
+}
+
+.doc li {
+ list-style: disc outside;
+ padding: 2px;
+}
+
+.doc ul {
+ list-style: none outside;
+ padding-left: 30px;
+}
+
+/* ------------------- TABLES ------------------- */
+.odd {
+ background-color: #fff;
+}
+
+.odd.selected, .even.selected, .odd.selected a, .even.selected a, .even.selected span, .odd.selected span {
+ background-color: #4b9fd5;
+ color: #fff;
+}
+
+table.data > thead > tr > th {
+ font-size: 93%;
+ padding: 4px 7px 4px 3px;
+ font-weight: bold;
+ vertical-align: top;
+}
+
+table.data > tfoot > tr > td {
+ font-size: 93%;
+ color: #777;
+ padding: 5px;
+}
+
+table.data > tbody > tr > td {
+ padding: 5px;
+ vertical-align: text-top;
+}
+
+table.data td.small, table.data th.small {
+ padding: 0;
+ white-space: nowrap;
+}
+
+table.data th img, table.data td img {
+ vertical-align: sub;
+}
+
+table.data.zebra tbody tr:nth-child(odd) {
+ background-color: #EFEFEF;
+}
+
+.data thead tr.total {
+ background-color: #EFEFEF;
+ font-weight: normal;
+ border: 1px solid #DDD;
+}
+
+.data thead tr.total th {
+ font-weight: normal;
+}
+
+.data thead tr.blank {
+ background-color: #fff;
+ line-height: 15px;
+}
+
+.data tr.highlight {
+ background-color: #CAE3F2;
+ border-top: 1px solid #4B9FD5;
+ border-bottom: 1px solid #4B9FD5;
+}
+
+.data input, .data select, .data button {
+ vertical-align: baseline;
+}
+
+.data td.category {
+ padding-right: 15px;
+}
+
+.categoryDescription {
+ padding: 10px 5px;
+}
+
+.data td.category.withSubcategories {
+ background-image: url('../images/bullet_arrow_down.gif');
+ background-position: right center;
+ background-repeat: no-repeat;
+}
+
+.data td.subcategory {
+ padding-left: 20px;
+}
+
+.hoverable:hover {
+ background-color: #CAE3F2;
+}
+
+.hoverable:hover a {
+ color: #111;
+}
+
+table.sortable .sortcol {
+ cursor: pointer;
+ padding-left: 15px;
+ background-repeat: no-repeat;
+ background-position: right center;
+ text-decoration: underline;
+}
+
+table.sortable .sortasc {
+ background-image: url('../images/bullet_arrow_up.gif');
+ background-position: left center;
+}
+
+table.sortable .sortdesc {
+ background-image: url('../images/bullet_arrow_down.gif');
+ background-position: left center;
+}
+
+table.sortable .righticon {
+ padding-right: 15px;
+ background-position: right center;
+}
+
+table.sortable .nosort {
+ cursor: default;
+}
+
+table.spaced th {
+ font-weight: bold;
+ color: #333;
+ padding: 4px 5px;
+}
+
+table.spaced td, table.matrix tfoot td {
+ padding: 3px 5px;
+ line-height: 18px;
+}
+
+table.spaced td img {
+ vertical-align: text-bottom;
+}
+
+table.spacedicon th {
+ font-weight: bold;
+ color: #333;
+ padding: 4px 5px;
+}
+
+table.spacedicon td {
+ padding: 0 5px;
+ height: 24px;
+}
+
+.thin {
+ width: 1%;
+}
+
+td.sep {
+ width: 10px;
+}
+
+.spacer {
+ width: 5px;
+ display: inline-block;
+}
+
+.formError {
+ display: inline-block;
+ background-color: #FF9090;
+ color: #000;
+ padding: 0 5px;
+}
+
+table.form td {
+ padding: 2px 5px;
+ vertical-align: top;
+}
+
+table.form td.keyCell {
+ width: 1%;
+ white-space: nowrap;
+ text-align: right;
+ font-weight: bold;
+ vertical-align: top;
+}
+
+table.form td img {
+ vertical-align: bottom;
+}
+
+.admin hr {
+ background: transparent;
+ border-left: none;
+ border-right: none;
+ border-top: none;
+ border-bottom: 1px dashed #FFD324;
+ height: 1px;
+}
+
+table#project-history > tbody > tr > td {
+ vertical-align: top;
+}
+
+/* OPERATIONS */
+#page-operations {
+ display: inline-block;
+ width: 100%;
+}
+
+div.operations {
+ float: right;
+ margin: 0;
+}
+
+ul.operations {
+ float: right;
+ height: 20px;
+ line-height: 20px;
+ list-style-type: none;
+ margin: 0;
+ background-color: #EFEFEF;
+ border: 1px solid #cdcdcd;
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+}
+
+ul.operations li {
+ float: left;
+ margin: 0;
+ padding: 0 8px;
+ font-size: 85%;
+ border-right: 1px solid #cdcdcd;
+}
+
+ul.operations li.selected {
+ background-color: #d4d4d4;
+}
+
+ul.operations li.last {
+ border-right-width: 0;
+}
+
+ul.operations li a {
+ color: #555;
+}
+
+ul.operations li img {
+ vertical-align: middle;
+ margin-right: 5px;
+}
+
+th.operations, td.operations {
+ text-align: right;
+}
+
+/* RESOURCE VIEWER */
+.resourceName h1 {
+ margin: 5px 0;
+}
+
+/* SOURCE */
+.sources2 {
+ width: 100%;
+ border: 0;
+ margin: 0;
+ background-color: #FFF;
+}
+
+.sources2 td.lid {
+ background-color: #EFEFEF;
+ border-right: 1px solid #DDDDDD;
+ text-align: right;
+ padding: 2px 0.5em 0 0.5em;
+ vertical-align: top;
+ font-size: 85%;
+}
+
+.sources2 td.lid a {
+ text-decoration: none;
+ color: #AAA;
+}
+
+.sources2 td.scm {
+ border-right: 1px solid #DDD;
+ background-color: #EFEFEF;
+}
+
+.sources2 td.revision {
+ border-top: 1px solid #DDD;
+ vertical-align: top;
+ padding: 0 0.3em;
+ white-space: nowrap;
+}
+
+.sources2 tr:first-child td.revision {
+ border-top: none;
+}
+
+.sources2 tr.row td.plus {
+ background-color: #EFEFEF;
+ padding: 0;
+ width: 16px;
+}
+
+.sources2 tr.row:hover td.plus {
+ background: url("../images/add.png") no-repeat scroll left 0 #EFEFEF;
+}
+
+.sources2 td.plus a {
+ display: block;
+ cursor: pointer;
+ height: 16px;
+ width: 16px;
+}
+
+.sources2 td.gray {
+ background-color: #EFEFEF;
+ padding: 2px 0.5em 0;
+}
+
+.sources2 td.white {
+ border-left: 1px solid #DDD;
+ background-color: #FFF;
+}
+
+.sources2 span.date, .sources2 span.date a {
+ color: #AAA;
+ font-size: 85%;
+ text-decoration: none;
+}
+
+.sources2 span.author, .sources2 span.author a {
+ font-size: 85%;
+}
+
+.sources2 div.violation, #global_violations div.violation {
+ background-color: #FFF;
+ margin: 0;
+ border: 1px solid #DDD;
+ font-size: 12px;
+}
+
+.rulename, .rulename a {
+ color: #444;
+ font-weight: bold;
+}
+
+.rulename a:hover {
+ text-decoration: underline;
+}
+
+.sources2 td.line {
+ width: 100%;
+}
+
+.sources2 td.line pre {
+ font-size: 12px;
+ font-family: monospace;
+}
+
+.sources2 td.ind {
+ border-right: 1px solid #DDD;
+ padding: 0 0.3em;
+ text-align: center;
+ vertical-align: middle;
+}
+
+.sources2 td.ind a,.sources2 td.ind span {
+ padding: 0 3px;
+}
+
+.sources2 td.ok {
+ background-color: #ACE97C;
+}
+
+.sources2 td.warn {
+ background-color: #FFF6BF;
+}
+
+.sources2 td.ko {
+ background-color: #FF9090;
+}
+
+.sources2 td.new_section {
+ border-width: 1px 0;
+ border-style: solid;
+ border-color: #EEE #DDD;
+ height: 30px;
+ background: url('../images/gray-stripes.png');
+}
+
+.sources2 td.violations {
+ background-color: #FFF;
+ padding: 10px;
+ border-left: 1px solid #DDD;
+}
+
+.source_title {
+ padding: 10px 5px;
+}
+
+.source_title span.h1 {
+ font-size: 16px;
+ margin-right: 10px;
+}
+
+.source_links {
+ font-size: 11px;
+}
+
+.global_violations {
+ width: 100%;
+}
+
+.global_violations > tbody > tr > td {
+ padding-bottom: 10px;
+}
+
+.global_violations td {
+ padding: 3px 0;
+}
+
+.global_violations td img, #source_title img {
+ vertical-align: text-bottom;
+}
+
+.code-issue-create-form {
+ padding: 10px;
+}
+
+.code-global-issues {
+ padding: 10px 10px 0;
+}
+
+.code-issues {
+ background-color: #FFF;
+ padding: 10px 10px 0;
+ line-height: 0;
+}
+
+.code-issue {
+ background-color: #FFF;
+ margin: 0;
+ font-size: 12px;
+ padding: 0 0 10px 0;
+}
+
+.code-issue strong {
+ font-weight: bold;
+}
+
+.code-issue-toggle {
+ cursor: pointer;
+}
+
+.code-issue-name {
+ position: relative;
+ background-color: #E4ECF3;
+ margin: 0;
+ padding: 5px 10px;
+ line-height: 16px;
+ color: #777;
+ border: 1px solid #DDD;
+ border-bottom: medium none;
+}
+
+.code-issue-msg {
+ line-height: 1.5;
+ padding: 5px 10px;
+ border-left: 1px solid #DDD;
+ border-right: 1px solid #DDD;
+ background-color: #EFEFEF;
+}
+
+.code-issue-name img {
+ vertical-align: text-bottom;
+}
+
+.code-issue-name-rule {
+ max-width: 90%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.code-issue-permalink {
+ position: absolute;
+ top: 4px; right: 4px;
+}
+
+.code-issue-name-extra {
+ margin-top: 6px;
+ line-height: 12px;
+}
+
+.code-issue-name-extra li {
+ font-size: 11px !important;
+}
+
+.code-issue-name-right {
+ position: absolute;
+ top: 5px; right: 26px;
+}
+
+.code-issue-comment, .code-issue-msg, .code-issue-actions, .code-issue-form {
+ background-color: #EFEFEF;
+ border: 1px solid #DDD;
+ border-top: none;
+ line-height: 1.5em;
+ margin: 0;
+ padding: 5px 10px;
+}
+
+.code-issue-form input[type=submit],
+.code-issue-form input[type=button],
+.code-issue-form button,
+.code-issue-form .action {
+ vertical-align: middle;
+}
+
+.code-issue-comment h4 {
+ font-size: 11px;
+ margin-bottom: 2px;
+}
+
+.code-issue-comment h4 img {
+ vertical-align: sub;
+}
+
+.code-issue-comment li {
+ list-style: square inside;
+}
+
+.code-issue-comment pre {
+ padding: 10px;
+ border: 1px dashed #DDD;
+ color: #444;
+ font-size: 12px;
+}
+
+.code-issue-details {
+ padding: 0 0 5px;
+ border-left: 1px solid #DDD;
+ border-right: 1px solid #DDD;
+ border-bottom: 1px solid #DDD;
+ background-color: #EFEFEF;
+}
+
+.code-issue-details .ui-tabs-panel {
+ padding: 5px 10px 0;
+ line-height: 1.3;
+}
+
+.code-issue-details .tabs {
+ height: auto;
+ padding: 5px 10px;
+ border-bottom: 1px solid #DDD;
+}
+
+.code-issue-details .tabs li + li {
+ margin-left: 10px;
+}
+
+.code-issue-details .tabs li a:link,
+.code-issue-details .tabs li a:visited {
+ float: none;
+ margin: 0;
+ padding: 0;
+}
+
+.code-issue-details-list {
+
+}
+
+.code-issue-details-list > li {
+ font-size: 0;
+}
+
+.code-issue-details-term,
+.code-issue-details-value {
+ display: inline-block;
+ vertical-align: top;
+ font-size: 12px;
+ line-height: 20px;
+}
+
+.code-issue-details-term {
+ width: 90px;
+}
+
+.code-issue-details-term:after {
+ content: ":";
+}
+
+.code-issue-list {
+ font-size: 0;
+ white-space: nowrap;
+ background-color: #E4ECF3;
+}
+
+.code-issue-list > li {
+ display: inline-block;
+ vertical-align: middle;
+ height: 14px;
+ line-height: 14px;
+ padding: 0 8px;
+ border-left: 1px solid #fff;
+ border-right: 1px solid #bfbfbf;
+ font-size: 12px;
+}
+
+.code-issue-list > li:first-child {
+ padding-left: 0;
+ border-left: none;
+}
+
+.code-issue-list > li:last-child {
+ padding-right: 0;
+ border-right: none;
+}
+
+.code-issue-collapsed .code-issue-msg,
+.code-issue-collapsed .code-issue-details {
+ display: none;
+}
+
+.tab_header {
+ border-bottom: 1px solid #DDD;
+ background-color: #EFEFEF;
+ padding: 5px 10px;
+}
+
+.tab_header td {
+ padding-right: 7px;
+}
+
+.tab_header td.name {
+ text-align: left;
+ white-space: nowrap;
+}
+
+.tab_header td.value {
+ text-align: right;
+ white-space: nowrap;
+ font-weight: bold;
+}
+
+.source_options {
+ margin-top: 5px;
+ padding-top: 5px;
+ border-top: 1px solid #ddd;
+ font-size: 85%;
+}
+
+.source_options td {
+ background: url("../images/sep12.png") no-repeat scroll 0 50% transparent;
+ padding: 0 10px;
+}
+
+.source_options td.first {
+ background: none;
+ padding: 0 10px 0 0;
+}
+
+/* DUPLICATIONS */
+
+.duplications {
+ max-width: 100%;
+}
+
+.duplications td.item {
+ text-align: right;
+ vertical-align: top;
+ padding: 0;
+}
+
+.duplications td.item p {
+ padding: 3px 5px;
+}
+
+.duplications td.fileItem {
+ text-align: left;
+ vertical-align: top;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.duplications td.fileItem p {
+ padding: 3px 5px;
+}
+
+.duplications td.item p.selected, .duplications td.fileItem p.selected {
+ background-color: #EFEFEF;
+ border-top: 1px solid #DDD;
+ border-bottom: 1px solid #DDD;
+ padding: 3px 5px;
+}
+
+.duplications td.fileItem p.selected a {
+ text-decoration: none;
+}
+
+.duplications td.sourceItem {
+ padding: 0;
+ background-color: #EFEFEF;
+ border: 1px solid #DDD;
+ border-left: none;
+}
+
+.duplications td.sourceItem p {
+ padding: 3px;
+}
+
+.duplicationsMessage {
+ padding: 10px;
+}
+
+.discussion {
+ width: 100%;
+ border: 1px solid #DDDDDD;
+}
+
+.discussionComment.first {
+ border-top: none;
+}
+
+.discussionComment {
+ background-color: #EFEFEF;
+ border-top: 1px solid #DDDDDD;
+ line-height: 1.5em;
+ margin: 0;
+ padding: 5px 10px;
+}
+
+.discussionComment h4 {
+ font-size: 90%;
+ margin-bottom: 2px;
+}
+
+.discussionComment h4 img {
+ vertical-align: sub;
+}
+
+.discussionComment li {
+ list-style: square inside;
+}
+
+.discussionComment pre {
+ padding: 10px;
+ border: 1px dashed #DDD;
+ color: #444;
+ font-size: 12px;
+}
+
+div.comment-excerpt {
+ background-color: transparent;
+ margin-top: 5px;
+ margin-bottom: 5px;
+ color: #777777;
+ font-size: 90%;
+}
+
+/* ACTION PLANS */
+table.actionPlans {
+ margin-top: 10px;
+}
+
+table.actionPlans td.progress {
+ width: 300px;
+ padding: 0px 40px;
+}
+
+table.actionPlans td.noprogress {
+ color: #777777;
+ font-size: 93%;
+ padding-left: 43px;
+ padding-right: 40px;
+}
+
+table.actionPlans td.over-due {
+ color: #CC0000;
+ font-weight: bold;
+}
+
+div.progress {
+ width: 100%;
+ margin: 4px;
+}
+
+div.progress table {
+ width: 100%;
+}
+
+div.progress td {
+ height: 10px;
+}
+
+div.progress td a {
+ display: block;
+ width: 100%;
+ height: 100%;
+}
+
+div.progress td.resolved {
+ background-color: #078C00;
+}
+
+div.progress td.open {
+ background-color: #CC0000;
+}
+
+div.progress div.note {
+ color: #777;
+ font-size: 93%;
+ font-weight: normal;
+ white-space: nowrap;
+}
+div.note a {
+ color: #777777;
+}
+
+/* SEARCH AUTOCOMPLETE FIELDS */
+#searchInput {
+ color: #444;
+ font-size: 13px;
+ padding-right: 20px;
+}
+
+#searchingResources {
+ position: absolute;
+ top: 8px;
+ right: 18px;
+}
+
+div.autocomplete {
+ position: absolute;
+ width: 600px;
+ right: 10px;
+ top: 10px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ margin: 0;
+ padding: 0;
+ color: #111;
+ line-height: 18px;
+ box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
+ z-index: 999999;
+}
+
+div.autocomplete ul {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+
+div.autocomplete ul li {
+ list-style-type: none;
+ display: block;
+ margin: 0;
+ padding: 3px 5px;
+ cursor: pointer;
+ color: #333;
+ line-height: 18px;
+ height: 18px;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+div.autocomplete div.q {
+ font-size: 93%;
+ color: #777;
+ width: 90px;
+ text-align: right;
+ margin-right: 5px;
+ display: inline-block;
+
+ /* For IE 7 */
+ zoom: 1;
+ *display: inline;
+}
+
+div.autocomplete ul li img {
+ vertical-align: middle;
+}
+
+div.autocomplete ul li.selected {
+ background-color: #4b9fd5;
+ color: #fff;
+}
+
+div.autocomplete ul li.selected div.q {
+ color: #fff;
+}
+
+div.autocomplete strong {
+ font-weight: bold;
+}
+
+div.autocompleteNote {
+ color: #777;
+ font-size: 85%;
+ background-color: #EFEFEF;
+ border-top: 1px solid #CCC;
+ padding: 1px 10px;
+}
+
+#gwtpage {
+ width: 100%;
+}
+
+.gwt-SourcePanel {
+ font-size: 12px;
+ background-color: #fff;
+ border-top: 1px solid silver;
+ border-bottom: 1px solid silver;
+ width: 100%;
+}
+
+.gwt-SourcePanel .ln {
+ background-color: #EFEFEF;
+ white-space: nowrap;
+ text-align: right;
+ font-size: 85%;
+ color: #AAAAAA;
+ border-right: 1px solid #DDD;
+ padding: 0 3px;
+ height: 14px;
+}
+
+.gwt-SourcePanel .src {
+ padding: 0 5px;
+ height: 14px;
+}
+
+.gwt-SourcePanel .val {
+ background-color: #EFEFEF;
+ border-right: 1px solid #DDD;
+ text-align: right;
+ color: #777;
+ padding: 0 3px;
+ height: 14px;
+ white-space: nowrap;
+}
+
+.gwt-SourcePanel .red {
+ background-color: #F0C8C8;
+}
+
+.gwt-SourcePanel .orange {
+ background-color: #FFF6BF;
+ color: #514721;
+}
+
+.gwt-SourcePanel .green {
+ background-color: #ACE97C;
+}
+
+.gwt-SourcePanel .msg {
+ font-family: sans-serif;
+ vertical-align: top;
+ padding: 3px 0;
+ height: 1.3em;
+ background-position: 5px 1px;
+ background-repeat: no-repeat;
+}
+
+.gwt-SourcePanel .bigln {
+ font-family: sans-serif;
+ vertical-align: top;
+ padding: 3px 0;
+ height: 1.6em;
+ background-position: 5px 1px;
+ background-repeat: no-repeat;
+ background-color: #EFEFEF;
+}
+
+.gwt-SourcePanel .warn {
+ font-family: sans-serif;
+ vertical-align: top;
+ background-color: #FFFFC9;
+ border: 1px solid #DCDCDC;
+ border-top: none;
+ color: black;
+ line-height: 1.6em;
+ margin: 0;
+ padding: 0 0 2px 5px;
+}
+
+.gwt-SourcePanel .msg.error {
+ background-image: url("../images/exclamation.png");
+}
+
+.gwt-SourcePanel .msg.warning {
+ background-image: url("../images/warning.png");
+}
+
+.gwt-SourcePanel .msg.BLOCKER {
+ padding: 1px 5px 1px 25px;
+ background-image: url("../images/priority/BLOCKER.gif");
+ background-color: #FF5252;
+ color: #eee;
+ border: 1px solid red;
+ margin: 1px 0 1px 5px;
+ height: 100%;
+}
+
+.gwt-SourcePanel .msg.CRITICAL {
+ padding: 1px 5px 1px 25px;
+ background-image: url("../images/priority/CRITICAL.gif");
+ background-color: #FF5252;
+ color: #eee;
+ border: 1px solid red;
+ margin: 1px 0 1px 5px;
+ height: 100%;
+}
+
+.gwt-SourcePanel .msg.MAJOR {
+ padding: 1px 5px 1px 25px;
+ background-image: url("../images/priority/MAJOR.gif");
+ background-color: #FF5252;
+ color: #eee;
+ border: 1px solid red;
+ margin: 1px 0 1px 5px;
+ height: 100%;
+}
+
+.gwt-SourcePanel .msg.MINOR {
+ padding: 1px 5px 1px 25px;
+ background-image: url("../images/priority/MINOR.gif");
+ background-color: #FFF6BF;
+ border: 1px solid #FFD324;
+ margin: 1px 0 1px 5px;
+ height: 100%;
+}
+
+.gwt-SourcePanel .msg.INFO {
+ padding: 1px 5px 1px 25px;
+ background-image: url("../images/priority/INFO.gif");
+ background-color: #FFF6BF;
+ border: 1px solid #FFD324;
+ margin: 1px 0 1px 5px;
+ height: 100%;
+}
+
+.gwt-ViewerHeader {
+ background-color: #EFEFEF;
+ border: 1px solid #DDD;
+ border-top: none;
+ margin-bottom: 8px;
+ color: #333;
+ vertical-align: bottom;
+}
+
+.gwt-ViewerHeader .metric {
+ padding: 8px 2px 5px 10px;
+ font-size: 93%;
+ text-align: right;
+ font-weight: bold;
+}
+
+.gwt-ViewerHeader .value {
+ padding: 8px 15px 5px 2px;
+ font-size: 93%;
+ text-align: left;
+ font-weight: normal;
+}
+
+.gwt-ViewerHeader .cell {
+ padding: 3px 10px;
+}
+
+.gwt-ViewerHeader .big {
+ padding: 4px 10px 2px 10px;
+ font-size: 152%;
+ font-weight: bold;
+}
+
+/* ------------------- DASHBOARD ------------------- */
+.page_title {
+ margin: 0 0 7px 0;
+}
+
+.color_OK {
+ border: 2px solid #85bb43 !important;
+ color: #85bb43 !important;
+}
+
+.color_WARN {
+ border: 2px solid #f90 !important;
+ color: #f90 !important;
+}
+
+.color_ERROR {
+ border: 2px solid #d4333f !important;
+ color: #d4333f !important;
+}
+
+#alerts_widget {
+ margin-bottom: 10px;
+ padding: 5px 5px 5px 10px;
+}
+
+#alerts_widget img {
+ vertical-align: bottom;
+}
+
+span.empty_widget {
+ color: #777777;
+ font-size: 93%;
+}
+
+.dashbox {
+ float: left;
+ vertical-align: top;
+ text-align: left;
+ padding: 0 10px 7px 0;
+}
+
+.big {
+ font-size: 152%;
+ font-weight: bold;
+}
+
+.adminportlet {
+ border: 2px dashed #ccc;
+ margin-bottom: 10px;
+ padding: 10px;
+}
+
+table.header1 {
+ background-color: #EFEFEF;
+ color: #444;
+ border: 1px solid #DDD;
+ margin: 0 0 10px 0;
+ width: 100%;
+}
+
+table.header1 td {
+ padding: 10px 0 10px 10px;
+ text-align: left;
+ vertical-align: top;
+}
+
+.headerLine {
+ background-color: #EFEFEF;
+ color: #444;
+ border: 1px solid #DDD;
+ margin: 0 0 10px 0;
+ line-height: 28px;
+ height: 28px;
+}
+
+ul.headerLine li {
+ float: left;
+ display: block;
+ padding: 0 10px 0;
+ height: 28px;
+ vertical-align: middle;
+}
+
+ul.headerLine li.sep {
+ background: url("../images/sep12.png") no-repeat scroll 50% 50% transparent;
+ padding: 0 5px 0 5px;
+}
+
+ul.headerLine select, ul.headerLine input, ul.headerLine button, ul.headerLine textarea, ul.headerLine span {
+ vertical-align: middle;
+}
+
+select.withIcons option, span.withIcons {
+ background-repeat: no-repeat;
+ background-position: 2px 0;
+ padding: 0 2px 0 22px;
+ vertical-align: middle;
+}
+
+option.status_open {
+ background-image: url('../images/status/OPEN.png');
+}
+
+option.status_reopened {
+ background-image: url('../images/status/REOPENED.png');
+}
+
+option.status_resolved {
+ background-image: url('../images/status/RESOLVED.png');
+}
+
+option.status_closed {
+ background-image: url('../images/status/CLOSED.png');
+}
+
+option.sev_INFO, span.sev_INFO {
+ background-image: url('../images/priority/INFO.png');
+}
+
+option.sev_MINOR, span.sev_MINOR {
+ background-image: url('../images/priority/MINOR.png');
+}
+
+option.sev_MAJOR, span.sev_MAJOR {
+ background-image: url('../images/priority/MAJOR.png');
+}
+
+option.sev_CRITICAL, span.sev_CRITICAL {
+ background-image: url('../images/priority/CRITICAL.png');
+}
+
+option.sev_BLOCKER, span.sev_BLOCKER {
+ background-image: url('../images/priority/BLOCKER.png');
+}
+
+/* ------------------- VARIATIONS ------------------- */
+.var {
+ color: #444 !important;
+}
+
+.varb {
+ /* better */
+ color: #078C00 !important;
+}
+
+.varw {
+ /* worst */
+ color: #cc0000 !important;
+}
+
+/* ------------------- HELP ------------------- */
+.help {
+ border: 1px solid #DDD;
+ background-color: #EFEFEF;
+ color: #444;
+ padding: 5px;
+}
+
+.help h2 {
+ padding-left: 23px;
+ color: #444;
+ vertical-align: bottom;
+ font-weight: bold;
+ background: url('../images/information.png') no-repeat left center;
+}
+
+.help p {
+ padding: 5px 0;
+}
+
+/* ------------------- FORMS ------------------- */
+.admintable {
+ border: solid 1px #FFD324;
+ background-color: #FFF6BF;
+ color: #111;
+}
+
+.admintable td {
+ padding: 5px 10px;
+}
+
+.admintable span.desc {
+ font-size: 85%;
+ font-weight: normal;
+}
+
+/* ------------------- BOXES ------------------- */
+.box {
+ border: 1px solid #ccc;
+ background-color: #EFEFEF;
+ margin-bottom: 5px;
+ color: #444;
+ padding: 10px;
+}
+
+.box a, .box a:visited {
+ color: #555;
+}
+
+.admin {
+ border: solid 1px #FFD324;
+ background-color: #FFF6BF;
+ color: #514721;
+ margin-bottom: 5px;
+ padding: 5px;
+}
+
+.admin h3 {
+ font-size: 100%;
+ text-align: left;
+ font-weight: bold;
+ color: #333;
+}
+
+.column {
+ vertical-align: top;
+ text-align: left;
+ padding: 0 0 0 10px;
+}
+
+.column.first {
+ padding: 0;
+}
+
+.column h3 {
+ padding: 3px 0;
+}
+
+.scrollable {
+ height: 144px;
+ overflow: auto;
+ border: 1px solid #ccc;
+}
+
+.scroll-ie {
+ overflow-x: hidden;
+ padding-right: 17px;
+}
+
+.red {
+ color: #8B0000;
+}
+
+.green {
+ color: #050;
+}
+
+ul.bullet {
+ margin: 3px 0 3px 25px;
+}
+
+ul.bullet li {
+ padding: 2px 0;
+ list-style-image: url("../images/bullet.png");
+}
+
+.rule_title {
+ font-size: 110%;
+}
+
+.tablinks {
+ float: right;
+ padding: 0 5px 0 10px;
+ text-align: right;
+}
+
+.tablinks li {
+ float: left;
+ text-align: right;
+ margin-left: 5px;
+ padding: 0 0 0 5px;
+}
+
+.tablinks li.first {
+ background: none;
+}
+
+.tablinks a {
+ text-decoration: underline;
+ color: #777;
+ font-size: 85%;
+}
+
+.tabs-panel {
+ border-right: 1px solid #DDD;
+ border-bottom: 1px solid #DDD;
+ border-left: 1px solid #DDD;
+ border-top-width: 0;
+ padding: 10px;
+}
+
+/* tabs2 is deprecated since 4.1. It is kept for backward-compatibility */
+.tabs2, .tabs {
+ height: 20px;
+ border-bottom: 1px solid #DDD;
+ margin: 0;
+ padding: 0;
+ font-size: 93%;
+}
+
+.tabs2 li, .tabs li {
+ display: inline;
+ list-style-type: none;
+ font-weight: normal;
+ color: #777;
+ vertical-align: baseline;
+ white-space: nowrap;
+ margin: 0;
+ border: 0;
+ padding: 0;
+}
+
+.tabs li a {
+ outline: none;
+}
+
+.tabs2 li a, .tabs li a {
+ float: left;
+ color: #777;
+ vertical-align: bottom;
+ height: 17px;
+ margin: 0 1px 0 0;
+ padding: 1px 5px;
+}
+
+.tabs2 li a.selected, .tabs li a.selected, .tabs .ui-tabs-active a {
+ text-decoration: none;
+ color: #555 !important;
+ font-weight: bold;
+ margin: 0 1px 0 0;
+}
+
+.tabbed {
+ border: 1px solid silver;
+ border-top: 0;
+ padding: 5px;
+}
+.comments {
+ color: #777;
+ font-size: 12px;
+ margin-bottom: 10px;
+ padding: 4px;
+}
+
+.little {
+ font-size: 80%;
+}
+
+.tooltip {
+ position: absolute;
+ background-color: #CAE3F2;
+ border: 1px solid #4b9fd5;
+ max-width: 480px;
+ text-align: left;
+ color: #262626;
+}
+
+.tooltip .content {
+ color: #111;
+ padding: 4px;
+}
+
+.tooltip .title {
+ color: #111;
+ font-weight: bold;
+ font-size: 100%;
+ padding: 2px 4px;
+}
+
+.tooltip td {
+ margin: 0;
+ padding: 2px;
+}
+
+.tooltip p {
+ margin: 0;
+ padding: 0;
+}
+
+.alert_WARN {
+ background-color: #ff8500;
+ color: #fff;
+ margin: 0;
+ padding: 0 3px;
+}
+
+.alert_ERROR {
+ background-color: #f93f40;
+ color: #fff;
+ margin: 0;
+ padding: 0 3px;
+}
+
+#comparison span.best {
+ font-size: 108%;
+ font-weight: bold;
+}
+
+.gwt-TabBar {
+ font-size: 93%;
+ width: 100%;
+ border-bottom: 1px solid #cdcdcd;
+}
+
+.gwt-TabBarFirst {
+ width: 0;
+}
+
+.gwt-TabBar .gwt-TabBarItem {
+ cursor: pointer;
+ font-weight: normal;
+ text-decoration: underline;
+ color: #555;
+ background-color: #EFEFEF;
+ vertical-align: middle;
+ white-space: nowrap;
+ padding: 0.3em 0.6em;
+ border: 1px solid #cdcdcd;
+ border-bottom: none;
+ border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ -webkit-border-radius: 4px 4px 0 0;
+}
+
+.gwt-TabBar .gwt-TabBarItem-wrapper {
+ padding: 0 0 0 1px;
+}
+
+.gwt-TabBar .gwt-TabBarItem-selected {
+ cursor: default;
+ font-weight: bold;
+ text-decoration: underline;
+ color: #efefef;
+ background-color: #4B9FD5;
+ border-bottom: none;
+ vertical-align: middle;
+ white-space: nowrap;
+ padding: 0.3em 0.6em;
+}
+
+.gwt-TabPanelBottom {
+ width: 100%;
+}
+
+.markdown-tips, .markdown-tips a {
+ font-size: 12px;
+ color: #777;
+}
+
+
+/* API for Rule and Property Descriptions */
+.rule-desc h2 {
+ margin-top: 16px;
+ font-size: 16px;
+ line-height: 1.5;
+ color: #2B547D;
+}
+
+.rule-desc h3 {
+ margin-top: 16px;
+ font-size: 12px;
+ line-height: 1.5;
+ color: #2B547D;
+ font-weight: bold;
+}
+
+.rule-desc p, .property p {
+ margin-top: 10px;
+}
+
+.rule-desc pre, .property pre {
+ margin: 10px 0 !important;
+ padding: 10px !important;
+ border: 1px dashed #aaa;
+ font-size: 12px;
+ font-family: monospace;;
+}
+
+.rule-desc blockquote, .property blockquote {
+ margin-top: 10px;
+ padding: 10px;
+}
+
+.rule-desc ul, .property ul {
+ list-style-type: disc;
+ list-style-position: inside;
+ margin: 10px;
+}
+
+.rule-desc ol, .property ol {
+ list-style-type: decimal;
+ list-style-position: inside;
+ margin: 10px;
+}
+
+.rule-table {
+ margin-top: 10px;
+ overflow-x: auto;
+ border-collapse: collapse;
+}
+.rule-table th {
+ background: none no-repeat scroll right center #EFEFEF;
+ border: 1px solid #DDD;
+ padding: 5px 10px;
+ font-weight: bold;
+}
+.rule-table td {
+ background: none no-repeat scroll right center transparent;
+ border: 1px solid #DDD;
+ padding: 5px 10px;
+}
+/* End of API for Rule Descriptions */
+
+
+
+.tip:hover {
+ background: #FFF;
+ position: relative;
+ z-index: 100;
+}
+
+.tip span {
+ display: none;
+ margin-left: -20px;
+ padding: 4px 5px;
+}
+
+.tip:hover span {
+ display: inline;
+ position: absolute;
+ background: #CAE3F2;
+ border: 1px solid #4b9fd5;
+ color: #262626;
+ white-space: nowrap;
+ text-decoration: none;
+}
+
+.hbar {
+ float: left;
+ border: none;
+ clear: both;
+ width: 4em;
+ margin: 0;
+ padding: 2px 0 0;
+}
+
+.hbar li {
+ background-color: #777;
+ color: #FFF;
+ font-family: Verdana, Tahoma, Arial, sans-serif;
+ font-size: xx-small;
+ letter-spacing: -0.075em;
+ list-style: none;
+ line-height: 1.1em;
+ text-align: right;
+ vertical-align: middle;
+ padding: 0.1em;
+}
+
+div.barchart {
+ border: 0;
+ margin: 0;
+ padding: 0;
+ float: left;
+}
+
+div.barchart > div {
+ background-color: #4B9FD5;
+ height: 0.9em;
+}
+
+table.matrix thead {
+ background-color: #CAE3F2;
+ border: 1px solid #4b9fd5;
+}
+
+table.matrix thead th {
+ text-align: right;
+ border-right: 1px solid #4b9fd5;
+ padding: 4px 5px;
+}
+
+table.matrix tbody td {
+ border: 1px solid #ddd;
+ margin: 0;
+ padding: 4px 5px;
+}
+
+table.matrix tbody td.title {
+ border: none;
+ font-weight: bold;
+ margin: 0;
+ padding: 5px 0 0 5px;
+}
+
+a.nolink, .dashbox a, .dashbox a:visited {
+ text-decoration: none;
+}
+
+a.nolink:hover, .dashbox a:hover, .dashbox a.action, .dashbox a.action:visited {
+ text-decoration: underline;
+}
+
+h1 strong, .dashbox .title, .gwt-SourcePanel .sources .msg li strong {
+ font-weight: bold;
+}
+
+h4 a, h4 a:visited, .gray, table.data tfoot a, table.data tfoot a:visited {
+ color: #777;
+}
+
+.even, table.sortable tr.rowodd {
+ background-color: #EFEFEF;
+}
+
+.bordered, table.data > thead {
+ border-bottom: 1px solid #ddd;
+}
+
+table.data > tbody {
+ border-bottom: 1px solid #ddd;
+ border-right: 1px solid #ddd;
+ border-left: 1px solid #ddd;
+}
+
+table.data, table.spaced, .gwt-SourcePanel .sources {
+ width: 100%;
+}
+
+table.data td.barchart {
+ width: 100px;
+}
+
+table.without-header {
+ border-top: 1px solid #ddd;
+}
+
+.hoverable.selected a {
+ color: #fff;
+}
+
+.gwt-SourcePanel .sources td {
+ vertical-align: top;
+}
+
+/* GENERIC STYLES */
+.line-block {
+ display: block;
+ width: 100%;
+ height: 24px;
+ line-height: 22px;
+ margin-bottom: 5px;
+}
+
+.line-info {
+ background: url('../images/information.png') no-repeat scroll left 50% transparent;
+ padding-left: 18px
+}
+
+div.break10 {
+ height: 10px;
+}
+
+div.break30 {
+ height: 30px;
+}
+
+.marginbottom10 {
+ margin-bottom: 10px;
+}
+
+.marginbottom5 {
+ margin-bottom: 5px;
+}
+
+.marginright10 {
+ margin-right: 10px;
+}
+
+.marginleft10 {
+ margin-left: 10px;
+}
+
+.width100 {
+ width: 100%;
+}
+
+ul.horizontal {
+ list-style-type: none;
+}
+
+ul.horizontal li {
+ float: left;
+ position: relative;
+}
+
+table.nowrap td, td.nowrap, th.nowrap {
+ white-space: nowrap;
+}
+
+table.nowrap td.small, td.nowrap.small, th.nowrap.small {
+ line-height: 16px;
+}
+
+.background-gray {
+ background-color: #EFEFEF;
+ color: #444;
+}
+
+/* CONFIGURATION OF Q PROFILES */
+.bulk-edit {
+ display: block;
+ background: url("../images/bulk-edit.png") no-repeat scroll left 50% transparent;
+ padding: 2px 0 2px 20px;
+}
+
+.csv {
+ display: block;
+ background: url("../images/csv.png") no-repeat scroll left 50% transparent;
+ padding: 2px 0 2px 20px;
+}
+
+.add {
+ display: block;
+ background: url("../images/add.png") no-repeat scroll left 50% transparent;
+ padding: 2px 0 2px 20px;
+}
+
+.restore {
+ display: block;
+ background: url("../images/restore.gif") no-repeat scroll left 50% transparent;
+ padding: 2px 0 2px 20px;
+}
+
+.compare {
+ display: block;
+ background: url("../images/compare.png") no-repeat scroll left 50% transparent;
+ padding: 2px 0 2px 20px;
+}
+
+/* Profile diff */
+.diffParam {
+ font-family: 'Bitstream Vera Sans Mono', 'Courier', monospace;
+}
+
+.yellowHighlight {
+ background: #FFFBCC;
+}
+
+.action {
+ text-decoration: underline;
+ cursor: pointer;
+}
+
+/* Used on links which are located inside a dense text place or in tables */
+/* in order to rapidly identify them */
+.link-action {
+ text-decoration: underline !important;
+ color: #4183C4 !important;
+ cursor: pointer;
+}
+
+.link-red {
+ color: #990000 !important;
+}
+
+.link-more {
+ background-image: url('../images/bullet_arrow_down.png');
+ background-repeat: no-repeat;
+ padding-right: 20px;
+ background-position: right center;
+ cursor: pointer;
+}
+
+.dropdown {
+ cursor: pointer;
+ display: inline-block;
+ text-decoration: none !important;
+ /* zoom and *display = ie7 hack for display:inline-block */
+ zoom: 1;
+ *display: inline;
+}
+
+.dropdown-menu {
+ background-clip: padding-box;
+ background-color: #FFFFFF;
+ border: 1px solid #DDD;
+ box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
+ float: left;
+ margin: 0;
+ max-width: 220px;
+ min-width: 160px;
+ padding: 0;
+ position: absolute;
+ z-index: 1000;
+}
+
+.dropdown-menu h2 {
+ padding: 0 8px;
+ font-size: 100%;
+ font-weight: bold;
+}
+
+.dropdown-menu li {
+ list-style-type: none !important;
+ line-height: 24px;
+ height: 24px;
+ padding: 0 8px;
+ cursor: pointer !important;
+ float: none !important;
+}
+
+.dropdown-menu li:hover {
+ background-color: #4b9fd5 !important;
+}
+
+.dropdown-menu li:hover a {
+ color: #fff !important;
+}
+
+.dropdown-menu a {
+ text-decoration: none !important;
+ color: #333 !important;
+}
+
+.form-key-cell {
+ padding: 2px 8px 4px 10px;
+ text-align: right;
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+.form-val-cell {
+ padding: 2px 8px 4px 0;
+ text-align: left;
+ white-space: normal;
+}
+
+.form-val-cell li {
+ margin-bottom: 5px;
+}
+
+.form-val-note {
+ color: #999;
+}
+
+blockquote {
+ border-left: 3px solid #E5E5E5;
+ padding: 0 8px;
+ line-height: 16px;
+}
+
+blockquote cite {
+ line-height: 16px;
+ background-image: url('../images/reviews/comment.png');
+ background-repeat: no-repeat;
+ padding-left: 20px;
+ background-position: left center;
+ font-size: 12px;
+ color: #888;
+}
+
+.spacer-left {
+ margin-left: 8px;
+}
+
+.spacer-right {
+ margin-right: 8px;
+}
+
+.spacer-bottom {
+ margin-bottom: 8px;
+}
+
+.spacer-top {
+ margin-top: 8px;
+}
+
+td.spacer-left {
+ padding-left: 8px;
+}
+
+td.spacer-right {
+ padding-right: 8px;
+}
+
+td.spacer-bottom {
+ padding-bottom: 8px;
+}
+
+td.spacer-top {
+ padding-top: 8px;
+}
+
+.bordered {
+ border: 1px solid #DDD;
+}
+
+.bordered-left {
+ border-left: 1px solid #DDD;
+}
+
+.bordered-right {
+ border-right: 1px solid #DDD;
+}
+
+.bordered-bottom {
+ border-bottom: 1px solid #DDD;
+}
+
+.bordered-top {
+ border-top: 1px solid #DDD;
+}
+
+.table > thead > tr > th {
+ border-top: 0 none;
+ font-weight: bold;
+ vertical-align: bottom;
+ line-height: 16px;
+ padding: 4px 5px;
+ vertical-align: bottom;
+}
+
+.table > tbody > tr > td {
+ line-height: 16px;
+ padding: 4px 5px;
+ vertical-align: top;
+}
+
+.table > tfoot > tr > td {
+ font-size: 93%;
+ color: #777;
+ padding: 4px 5px;
+}
+
+.table > tfoot > tr > td a {
+ color: #777;
+}
+
+.table-bordered > tbody {
+ border-left: 1px solid #DDD;
+ border-right: 1px solid #DDD;
+ border-bottom: 1px solid #DDD;
+}
+
+.table-bordered > tbody > tr > td {
+ border-top: 1px solid #DDD;
+}
+
+select.small-width {
+ max-width: 120px;
+}
+
+select.medium-width {
+ max-width: 175px;
+ width: 175px;
+}
+
+/*
+
+ MODAL WINDOWS
+
+*/
+.modal-head {
+ padding: 0 10px;
+ background-color: #EFEFEF;
+ border-bottom: 1px solid #DDD;
+}
+
+.modal-head h1, .modal-head h2 {
+ line-height: 30px;
+ min-height: 30px;
+}
+
+ul.modal-head-metadata {
+ overflow: hidden;
+ padding: 0 0 5px 0;
+}
+
+ul.modal-head-metadata li {
+ float: left;
+ position: relative;
+ font-size: 85%;
+ color: #777;
+}
+
+.modal-body {
+ padding: 10px;
+}
+
+.modal-body .notes {
+ height: auto;
+}
+
+.modal-field {
+ clear: both;
+ display: block;
+ padding: 5px 0 5px 130px;
+}
+
+.modal-field label {
+ display: block;
+ float: left;
+ text-align: right;
+ width: 130px;
+ left: -140px;
+ margin-right: -130px;
+ line-height: 1;
+ word-wrap: break-word;
+ position: relative;
+ padding-top: 5px;
+}
+
+.modal-field input {
+ margin-right: 5px;
+ margin-bottom: 10px;
+}
+
+.modal-field input[type=text],
+.modal-field input[type=password],
+.modal-field textarea {
+ width: 250px;
+}
+
+.modal-field .text {
+ line-height: 20px;
+}
+
+.modal-foot {
+ text-align: right;
+ padding: 2px 10px;
+ border-top: 1px solid #CCC;
+ line-height: 30px;
+ height: 30px;
+ background-color: #EFEFEF;
+}
+
+.modal-foot input {
+ margin-right: 10px;
+}
+
+.modal-field-description {
+ clear: both;
+ font-size: 93%;
+ color: #777;
+}
+
+.modal-error {
+ border: 1px solid red;
+ background-color: #FF5252;
+ color: #eee;
+ margin: 0 0 4px;
+ padding: 4px;
+ display: none;
+}
+
+textarea.width100 {
+ width: 100%;
+ -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
+ -moz-box-sizing: border-box; /* Firefox, other Gecko */
+ box-sizing: border-box; /* Opera/IE 8+ */
+}
+
+.property {
+ margin-bottom: 10px;
+}
+
+.property h3 {
+ float: none;
+ max-width: 20em;
+}
+
+.property > th, .property > td {
+ vertical-align: top;
+ padding: 10px;
+}
+
+.property > th {
+ text-align: right;
+}
+
+.property table.data {
+ width: 480px;
+}
+
+.property textarea {
+ vertical-align: text-top;
+}
+
+.property .note {
+ margin-top: 5px;
+}
+
+/* ------------------- Accordion navigation styles ------------------- */
+
+.accordion-item {
+ border: 1px solid #DDD;
+ margin-bottom: 20px;
+}
+
+.accordion-item table.data {
+ /* Fix an issue on Google Chrome to prevent the horizontal scroll to appear */
+ border-collapse : separate;
+}
+
+.accordion-item-body-medium {
+ max-height: 200px;
+ overflow: auto;
+}
+
+
+/* ------------------- Rule styles ------------------- */
+
+.rule-search {
+ display: inline-block;
+ line-height: 16px;
+}
+
+div.rule-title {
+ display: inline-block;
+ float: left;
+ clear: right;
+}
+
+#result_table .rule-desc {
+ width: 100%;
+ float: left;
+ clear: right;
+}
+
+.rule-status, .rule-tags {
+ display: inline-block;
+ margin-left: 10px;
+ float: right;
+ padding: 3px 5px 0 0;
+ font-size: 85%;
+ color: #777;
+}
+
+.rule-tags a {
+ color: inherit;
+ text-decoration: none;
+}
+
+.rule-status span {
+ text-transform: uppercase;
+}
+
+.rule-tags span {
+ background-color: #eee;
+ padding: 3px 4px;
+ margin: 4px 2px;
+ border-radius: 2px;
+ box-shadow: 0px -1px 0px rgba(0, 0, 0, 0.12) inset;
+}
+
+/* ------------------- Role search styles ------------------- */
+
+.project-search {
+ display: inline-block;
+ line-height: 16px;
+ padding: 4px 2px;
+}
+
+
+
+
+.sonar-d3 {
+
+}
+
+.sonar-d3 .axis path {
+ fill: none;
+ stroke: #444;
+}
+
+.sonar-d3 .tick line {
+ stroke: #444;
+}
+
+.sonar-d3 .tick text {
+ fill: #444;
+}
+
+.sonar-d3 .plot {
+ transition: all 0.2s ease;
+}
+
+.sonar-d3 .plot:hover .arc,
+.sonar-d3 .plot.hover .arc {
+ opacity: 0.4;
+}
+
+.sonar-d3 .plot .arc:hover,
+.sonar-d3 .plot .arc.hover {
+ opacity: 1;
+}
+
+.sonar-d3 .plot .line {
+ fill: none;
+ stroke: #000;
+ stroke-width: 2;
+}
+
+.sonar-d3 .plot .line-marker {
+ fill: #fff;
+ stroke: #000;
+ stroke-width: 2;
+ opacity: 0;
+}
+
+.sonar-d3 .plot .scanner {
+ stroke: #000;
+ opacity: 0.25;
+}
+
+.sonar-d3 .arc,
+.sonar-d3 .bar rect {
+ cursor: pointer;
+ stroke: #fff;
+ stroke-width: 1px;
+ transition: all 0.2s ease;
+}
+
+.sonar-d3 .bar,
+.sonar-d3 .bar .legend-text,
+.sonar-d3 .pie-legend,
+.sonar-d3 .pie-legend .legend-text {
+ cursor: pointer;
+}
+
+.sonar-d3 .legend {
+
+}
+
+.sonar-d3 .legend-bullet {
+ transition: all 0.2s ease;
+}
+
+.sonar-d3 .legend-text {
+ font-size: 12px;
+ cursor: default;
+}
+
+.sonar-d3 .legend-active .legend-bullet {
+ -webkit-transform: scale(1.4);
+ -webkit-transform-origin: center;
+}
+
+.sonar-d3 .details-color-indicator {
+ fill: #fff;
+ transition: fill 0.2s ease;
+}
+
+.sonar-d3 .details-metric {
+ font-size: 12px;
+}
+
+.sonar-d3 .details-metric-main {
+ font-weight: bold;
+}
+
+.sonar-d3 .info {
+
+}
+
+.sonar-d3 .info-text {
+ font-size: 13px;
+}
+
+.sonar-d3 .info-text-bold {
+ font-weight: bold;
+}
+
+.sonar-d3 .info-text-small {
+ font-size: 12px;
+}
+
+.sonar-d3 .event-tick {
+ fill: none;
+ stroke: #000;
+ stroke-width: 1px;
+ transition: all 0.3s ease;
+}
+
+/* ------------------- Admin pages ------------------- */
+
+.admin-page-title {
+ margin-bottom: 0px;
+}
+
+.admin-page-description {
+ font-size: 85%;
+ font-weight: normal;
+ margin-bottom: 25px;
+}
--- /dev/null
+@import "variables";
+@import "mixins";
+
+input[type=text],
+input[type=password],
+input[type=email],
+textarea {
+ border: 1px solid @darkGrey;
+ .box-sizing(border-box);
+ background: #fff;
+ color: @baseFontColor;
+ .trans(border-color);
+
+ &:active,
+ &:focus {
+ border-color: @highlighted;
+ box-shadow: none;
+ outline: none;
+ }
+}
+
+input[type=text],
+input[type=password],
+input[type=email] {
+ height: 22px;
+ padding: 0 3px;
+}
+
+textarea {
+ padding: 3px;
+}
+
+button,
+.button,
+input[type=submit],
+input[type=button] {
+ display: inline-block;
+ vertical-align: baseline;
+ height: 22px;
+ margin: 0 1px;
+ padding: 2px 10px;
+
+ border: 1px solid @darkGrey;
+ .box-sizing(border-box);
+
+ background: #f4f4f4;
+
+ color: @baseFontColor;
+ font-weight: bold;
+ font-size: @baseFontSize;
+ text-align: center;
+ text-decoration: none;
+
+ cursor: pointer;
+ outline: none;
+ .trans(border-color);
+
+ &:hover {
+ border-color: #5281a0;
+ background: #4b9fd5;
+ color: #fff;
+ }
+
+ &:active {
+ border-color: #2790c0;
+ background: #78bdea;
+ color: #fff;
+ }
+
+ &:focus {
+ border-color: @highlighted;
+ }
+
+ &[disabled],
+ &[disabled]:hover,
+ &[disabled]:active,
+ &[disabled]:focus {
+ color: #bbb;
+ border-color: #ddd;
+ background: #ebebeb;
+ 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;
+ }
+}
--- /dev/null
+/*
+ * Fonts
+ */
+
+@baseFontSize: 13px;
+@baseFontColor: #444;
+@smallFontSize: 11px;
+@headerFontSize: 16px;
+
+
+
+/*
+ * Colors
+ */
+
+@black: #000000;
+@white: #ffffff;
+@grey: #efefef;
+@darkGrey: #cdcdcd;
+
+@blue: #4b9fd5;
+@red: #d4333f;
+@green: #85bb43;
+@yellow: #fede06;
+@orange: #f90;
+
+@highlighted: @blue;
+
+
+
+/*
+ * Icons
+ */
+
+@iconSmallFontSize: 14px;
+@iconFontSize: 16px;
+@iconLineHeight: 12px;
+
+@severityBlockerColor: @red;
+@severityCriticalColor: @red;
+@severityMajorColor: @red;
+@severityMinorColor: @green;
+@severityInfoColor: @green;
+
+@statusOpenColor: @blue;
+@statusConfirmedColor: @blue;
+@statusReopenedColor: @blue;
+@statusResolvedColor: @baseFontColor;
+@statusClosedColor: @baseFontColor;
+
+@resolutionFixedColor: @baseFontColor;
+@resolutionFalsePositiveColor: @baseFontColor;
+@resolutionRemovedColor: @baseFontColor;
+
+
+
+/*
+ * Transitions
+ */
+
+@defaultTransitionOptions: .3s ease;
--- /dev/null
+/*
+YUI 3.6.0 (build 5521)
+Copyright 2012 Yahoo! Inc. All rights reserved.
+Licensed under the BSD License.
+http://yuilibrary.com/license/
+*/
+
+/* reset */
+html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea,select{*font-size:100%}legend{color:#000}
+
+/* font */
+body{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small}select,input,button,textarea{font:99% arial,helvetica,clean,sans-serif}table{font-size:inherit;font:100%}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%}
\ No newline at end of file
+++ /dev/null
-/*
- * Fonts
- */
-/*
- * Colors
- */
-/*
- * Icons
- */
-/*
- * Transitions
- */
-.coding-rules-page .navigator-results .spinner {
- margin: 10px;
-}
-/*
- * Detail
- */
-.coding-rules-detail-header,
-.coding-rules-detail-title {
- margin-bottom: 10px;
- line-height: 1.5;
- font-weight: bold;
-}
-.coding-rules-detail-title {
- display: inline-block;
- text-transform: uppercase;
-}
-.coding-rules-detail-status {
- padding: 3px 4px;
- background-color: #efefef;
- color: #777;
- font-size: 11px;
-}
-.coding-rules-detail-properties {
- margin: 10px 0;
- font-size: 0;
-}
-.coding-rules-detail-property {
- display: inline-block;
- vertical-align: middle;
- font-size: 11px;
- height: 22px;
- line-height: 22px;
-}
-.coding-rules-detail-property .select2-search-field {
- line-height: 1;
-}
-.coding-rules-detail-property + .coding-rules-detail-property {
- margin-left: 20px;
-}
-.coding-rules-detail-tag + .coding-rules-detail-tag {
- margin-left: 10px;
-}
-.coding-rules-detail-description {
- margin: 20px 0;
-}
-.coding-rules-detail-description-extra {
- margin-top: -10px;
-}
-.coding-rules-detail-parameters {
- margin: 10px 0 20px;
-}
-.coding-rules-detail-parameter {
- margin: 10px 0;
- font-size: 0;
-}
-.coding-rules-detail-parameter-name {
- display: inline-block;
- visibility: top;
- width: 150px;
- font-size: 13px;
- font-weight: bold;
- text-align: right;
-}
-.coding-rules-detail-parameter-description {
- display: inline-block;
- vertical-align: top;
- margin-left: 20px;
- font-size: 13px;
-}
-.coding-rules-detail-quality-profiles-header {
- margin-top: 30px;
-}
-.coding-rules-detail-quality-profiles {
- font-size: 0;
-}
-.coding-rules-detail-quality-profile {
- border: 1px solid transparent;
-}
-.coding-rules-detail-quality-profile.active {
- border-color: #4b9fd5;
-}
-.coding-rules-detail-quality-profile.active .coding-rules-detail-quality-profile-name {
- background-color: #4b9fd5;
- color: #fff;
-}
-.coding-rules-detail-quality-profile + .coding-rules-detail-quality-profile {
- margin-top: 20px;
-}
-.coding-rules-detail-quality-profile-name {
- padding: 5px;
- background-color: #efefef;
- line-height: 1;
- font-weight: bold;
-}
-.coding-rules-detail-quality-profile-actions {
- padding: 5px;
-}
-.coding-rules-detail-quality-profile-parameters {
- padding: 0 5px;
-}
-.coding-rules-detail-quality-profile-parameters .coding-rules-detail-parameter-name,
-.coding-rules-detail-quality-profile-parameters .coding-rules-detail-parameter-description {
- vertical-align: middle;
-}
-.coding-rules-detail-quality-profile-parameters .coding-rules-detail-parameter-description input {
- width: 200px;
-}
-.coding-rules-detail-quality-profile-inheritance {
- margin: 10px 0;
- padding: 0 5px;
-}
-.coding-rules-detail-quality-profile-inheritance strong {
- font-weight: bold;
-}
-.coding-rules-detail-quality-profile-note {
- margin: 10px 0;
- padding: 0 5px;
-}
-.coding-rules-detail-quality-profiles-activation {
- margin-top: -3px;
- margin-left: 10px;
-}
+++ /dev/null
-@import 'mixins';
-@import 'variables';
-@import 'navigator/config';
-
-
-.coding-rules-page {
-
- .navigator-results .spinner {
- margin: @navigatorPadding;
- }
-
-}
-
-
-
-/*
- * Detail
- */
-
-.coding-rules-detail-header,
-.coding-rules-detail-title {
- margin-bottom: @navigatorPadding;
- line-height: 1.5;
- font-weight: bold;
-}
-
-.coding-rules-detail-title {
- display: inline-block;
- text-transform: uppercase;
-}
-
-.coding-rules-detail-status {
- padding: 3px 4px;
- background-color: @navigatorBarBackground;
- color: #777;
- font-size: @smallFontSize;
-}
-
-.coding-rules-detail-key {
-
-}
-
-.coding-rules-detail-properties {
- margin: @navigatorPadding 0;
- font-size: 0;
-}
-
-.coding-rules-detail-property {
- display: inline-block;
- vertical-align: middle;
- font-size: @smallFontSize;
- height: 22px;
- line-height: 22px;
-
- .select2-search-field { line-height: 1; }
-}
-
-.coding-rules-detail-property + .coding-rules-detail-property {
- margin-left: 2 * @navigatorPadding;
-}
-
-.coding-rules-detail-tag + .coding-rules-detail-tag {
- margin-left: @navigatorPadding;
-}
-
-.coding-rules-detail-description {
- margin: 2 * @navigatorPadding 0;
-}
-
-.coding-rules-detail-description-extra {
- margin-top: -@navigatorPadding;
-}
-
-.coding-rules-detail-parameters {
- margin: @navigatorPadding 0 @navigatorPadding * 2;
-}
-
-.coding-rules-detail-parameter {
- margin: @navigatorPadding 0;
- font-size: 0;
-}
-
-.coding-rules-detail-parameter-name {
- display: inline-block;
- visibility: top;
- width: 150px;
- font-size: @baseFontSize;
- font-weight: bold;
- text-align: right;
-}
-
-.coding-rules-detail-parameter-description {
- display: inline-block;
- vertical-align: top;
- margin-left: 2 * @navigatorPadding;
- font-size: @baseFontSize;
-}
-
-
-// Quality Profiles
-.coding-rules-detail-quality-profiles-header {
- margin-top: 3 * @navigatorPadding;
-}
-
-.coding-rules-detail-quality-profiles {
- font-size: 0;
-}
-
-.coding-rules-detail-quality-profile {
- border: 1px solid transparent;
-
- &.active {
- border-color: @highlighted;
-
- .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;
-}
-
-.coding-rules-detail-quality-profile-name {
- padding: @navigatorPadding / 2;
- background-color: @navigatorBarBackground;
- line-height: 1;
- font-weight: bold;
-}
-
-.coding-rules-detail-quality-profile-actions {
- padding: @navigatorPadding / 2;
-}
-
-.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-inheritance {
- margin: @navigatorPadding 0;
- padding: 0 @navigatorPadding / 2;
-
- strong { font-weight: bold; }
-}
-
-.coding-rules-detail-quality-profile-note {
- margin: @navigatorPadding 0;
- padding: 0 @navigatorPadding / 2;
-}
-
-.coding-rules-detail-quality-profiles-activation {
- margin-top: -3px;
- margin-left: @navigatorPadding;
-}
+++ /dev/null
-/* LAYOUT */
-#dashboard {
- position: relative;
- width: 100%;
-}
-
-#dashboard .transparent {
- position: absolute;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- background: url('../images/transparent.gif') repeat;
- z-index: 1000;
-}
-
-/* WIDGETS */
-#dashboard .widget {
- position: relative;
- overflow-x: auto;
- overflow-y: hidden;
- padding: 10px;
- margin: 0;
- border: 1px solid #ddd;
-}
-
-#dashboard .block {
- margin: 0 0 10px 0;
-}
-
-#dashboard .configure_widget {
- display: block;
- position: relative;
-}
-
-#dashboard .widget_props {
- background-color: #FFF6BF;
- border: 1px solid #FFD324;
- margin-bottom: 10px;
- padding: 5px;
- border-radius: 0 0 3px 3px;
- -moz-border-radius: 0 0 3px 3px;
- -webkit-border-radius: 0 0 3px 3px;
-}
-
-#dashboard .widget-title {
- background-color: #4B9FD5;
- color: #FEFEFE;
- padding: 0 5px;
- height: 24px;
- line-height: 24px;
-}
-
-#dashboard .widget-title a {
- color: #FEFEFE;
-}
-
-/*CONFIGURATION*/
-#dashboard #configure {
- position: relative;
- height: 260px;
- margin: 5px 0 10px 0;
-}
-
-#dashboard #widget_defs, #dashboard #edit-layout {
- background-color: #FFF6BF;
- border: 2px solid #FFD324;
- padding: 3px;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- overflow-x: hidden;
-}
-
-#dashboard #widget_defs {
- margin-right: 104px;
- overflow-y: auto;
- height: 250px;
-}
-
-#dashboard #edit-layout {
- width: 86px;
- height: 248px;
- position: absolute;
- right: 0;
- top: 0;
- padding-top: 5px;
-}
-
-#dashboard #edit-layout p {
- margin-bottom: 5px;
-}
-
-#dashboard .widget_def {
- border: 1px solid #FFD324;
- padding: 5px;
- margin: 3px;
- white-space: normal;
- vertical-align: top;
- width: 250px;
- float: left;
- min-height: 100px;
-}
-
-#dashboard ul.widget_categs li {
- padding-right: 5px;
-}
-
-#dashboard ul.widget_categs li.selected a {
- font-weight: bold;
- text-decoration: none;
-}
-
-#dashboard .select-layout {
- float: left;
-}
-
-#dashboard .select-layout img {
- border: 3px solid #FFF6BF;
-}
-
-#dashboard .select-layout.selected img {
- border: 3px solid #4B9FD5;
-}
-
-.admin_page {
- position: relative;
-}
-
-.admin_page table {
- margin-top: 10px;
- margin-bottom: 50px;
-}
-
-.admin_page .empty {
- font-style: italic;
-}
-
-.admin_page .operations {
- width: 260px;
- text-align: right;
-}
-
-.admin_page .owner {
- width: 140px;
- text-align: center;
-}
-
-.admin_page .shared {
- width: 40px;
- text-align: center;
-}
-
-.admin_page .order, .admin_page .global {
- width: 45px;
- text-align: center;
-}
-
-/*OPERATIONS*/
-#dashboard #dashboard-operations {
- position: relative;
- display: inline-block;
- width: 100%;
-}
-
-#dashboard #dashboard-operations ul.operations {
- float: left;
- list-style-type: none;
- border: 1px solid #cdcdcd;
- padding: 0;
- margin: 0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
-}
-
-#dashboard #dashboard-operations ul.operations li {
- float: left;
- margin: 0;
- padding: 2px 10px;
- position: relative;
- background-color: #f4f4f4;
- font-size: 85%;
- border-right: 1px solid #cdcdcd;
-}
-
-#dashboard #dashboard-operations ul.operations li.last {
- border-right-width: 0;
-}
-
-#dashboard #dashboard-operations ul.operations li.selected {
- background-color: #d4d4d4;
-}
-
-#dashboard #dashboard-operations ul.operations li a {
- color: #555;
-}
-
-#dashboard .dashboard-column {
- margin: 0;
- padding: 0;
- overflow: visible;
-}
-
-#dashboard .dashboard-column-wrapper {
- float: left;
- margin: 0;
- padding: 0;
-}
-
-#dashboard .column-handle {
- height: 30px;
- width: 100%;
- margin: 0;
- padding: 0;
- display: inline-block;
- line-height: 100px;
- text-align: center;
- font-size: x-large;
- vertical-align: middle;
- background-color: #eee;
-}
-
-#dashboard .block {
- position: relative;
- width: 100%;
-}
-
-#dashboard .widget-header {
- line-height: 16px;
- padding: 3px 5px;
- background-color: #efefef;
- border: 1px solid #ddd;
- border-bottom: 0;
-}
-
-#dashboard .widget-handle {
- cursor: move;
- margin: 0;
- background-image: url('../images/move.png');
- background-position: left center;
- background-repeat: no-repeat;
- padding-left: 20px;
-}
-
-#dashboard .widget-actions {
- float: right;
- overflow: hidden; /* clears float for most browsers */
- zoom: 1;
-}
-
-#dashboard .widget-actions a {
- cursor: pointer;
-}
-
-#dashboard .block-hover {
- outline: 2px dashed #ddd;
-}
-
-#dashboard .shadow-block {
- box-shadow: 8px 8px 8px #ddd;
- box-shadow: 8px 8px 8px #ddd;
- -moz-box-shadow: 8px 8px 8px #ddd;
- -webkit-box-shadow: 8px 8px 8px #ddd;
-}
+++ /dev/null
-/*
- * Fonts
- */
-/*
- * Colors
- */
-/*
- * Icons
- */
-/*
- * Transitions
- */
-@font-face {
- font-family: 'sonar';
- src: url('../fonts/sonar.woff') format('woff'), url('../fonts/sonar.svg#sonar') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-[class^="icon-"],
-[class*=" icon-"] {
- font-family: 'sonar';
- speak: none;
- font-style: normal;
- font-weight: normal;
- font-variant: normal;
- text-transform: none;
- line-height: 1;
- vertical-align: middle;
- /* Better Font Rendering =========== */
-
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-a[class^="icon-"],
-a[class*=" icon-"] {
- text-decoration: none !important;
-}
-/*
- * Severity
- */
-[class^="icon-severity-"],
-[class*=" icon-severity"] {
- position: relative;
- top: -1px;
-}
-.icon-severity-blocker:before,
-.icon-severity-4:before {
- content: "\f000";
- color: #d4333f;
- font-size: 14px;
-}
-.icon-severity-critical:before,
-.icon-severity-3:before {
- content: "\f001";
- color: #d4333f;
- font-size: 14px;
-}
-.icon-severity-major:before,
-.icon-severity-2:before {
- content: "\f002";
- color: #d4333f;
- font-size: 14px;
-}
-.icon-severity-minor:before,
-.icon-severity-1:before {
- content: "\f003";
- color: #85bb43;
- font-size: 14px;
-}
-.icon-severity-info:before,
-.icon-severity-0:before {
- content: "\f004";
- color: #85bb43;
- font-size: 14px;
-}
-/*
- * Status
- */
-[class^="icon-status-"],
-[class*=" icon-status"] {
- position: relative;
- top: -1px;
-}
-.icon-status-open:before {
- content: "\f010";
- color: #4b9fd5;
- font-size: 14px;
- line-height: 12px;
-}
-.icon-status-confirmed:before {
- content: "\f011";
- color: #4b9fd5;
- font-size: 14px;
- line-height: 12px;
-}
-.icon-status-reopened:before {
- content: "\f012";
- color: #4b9fd5;
- font-size: 14px;
- line-height: 12px;
-}
-.icon-status-resolved:before {
- content: "\f013";
- color: #444444;
- font-size: 14px;
- line-height: 12px;
-}
-.icon-status-closed:before {
- content: "\f014";
- color: #444444;
- font-size: 14px;
- line-height: 12px;
-}
-/*
- * Alert
- */
-.icon-alert-ok:before {
- content: "\f013";
- color: #85bb43;
- font-size: 16px;
-}
-.icon-alert-warn:before {
- content: "\f000";
- color: #ff9900;
- font-size: 16px;
-}
-.icon-alert-error:before {
- content: "\f057";
- color: #d4333f;
- font-size: 16px;
-}
-.icon-alert-none:before {
- content: "\f059";
- color: #4b9fd5;
- font-size: 16px;
-}
-/*
- * Qualifier
- */
-.icon-qualifier-dir:before {
- content: "\f07b";
- font-size: 16px;
-}
-.icon-qualifier-fil:before {
- content: "\f0f6";
- font-size: 16px;
-}
-.icon-qualifier-lib:before {
- content: "\e600";
- font-size: 16px;
-}
-/*
- * Common
- */
-.icon-list:before {
- content: "\f039";
-}
-.icon-bullet-list:before {
- content: "\f03a";
-}
-.icon-settings:before {
- content: "\f015";
-}
-.icon-settings-multiple:before {
- content: "\f085";
-}
-.icon-arrow-down:before {
- content: "\f0d7";
- position: relative;
- top: -2px;
-}
-.icon-arrow-up:before {
- content: "\f0d8";
- position: relative;
- top: -2px;
-}
-.icon-arrow-left:before {
- content: "\f0d9";
-}
-.icon-arrow-right:before {
- content: "\f0da";
-}
-.icon-emoticon-smiley:before {
- content: "\f118";
-}
-.icon-emoticon-sad:before {
- content: "\f119";
-}
-.icon-emoticon-speechless:before {
- content: "\f11a";
-}
-.icon-rect-check:before {
- content: "\f046";
-}
-.icon-check:before {
- content: "\f00c";
-}
-.icon-default:before {
- position: relative;
- top: -0.1em;
- content: "\f00c";
-}
-.icon-lang:before {
- content: "\f024";
- font-size: 14px;
-}
-.icon-quality-profile:before {
- content: "\f022";
- font-size: 14px;
-}
-.icon-tags:before {
- content: "\f02c";
- font-size: 14px;
-}
-.icon-calendar:before {
- position: relative;
- top: -0.1em;
- content: "\f073";
- font-size: 14px;
-}
-.icon-favorite:before {
- content: "\f005";
- color: #ff9900;
- font-size: 16px;
-}
-.icon-not-favorite:before {
- content: "\f005";
- color: #cdcdcd;
- font-size: 16px;
-}
-.icon-help:before {
- content: "\f059";
- color: #4b9fd5;
- font-size: 16px;
-}
-.icon-info:before {
- content: "\f05a";
- color: #4b9fd5;
- font-size: 16px;
-}
-.icon-uniF060:before {
- content: "\f060";
-}
-.icon-uniF061:before {
- content: "\f061";
-}
-.icon-uniF062:before {
- content: "\f062";
-}
-.icon-uniF063:before {
- content: "\f063";
-}
-.icon-comment:before {
- content: "\f075";
-}
-.icon-delete:before {
- content: "\f00d";
-}
-.icon-compare:before {
- content: "\f0c5";
-}
-.icon-link:before {
- content: "\f0c1";
-}
-.icon-inheritance:before {
- content: "\f126";
- font-size: 16px;
-}
-.icon-plus:before {
- content: "\f067";
-}
-/*
- * Spinner
- */
-.spinner {
- position: relative;
- vertical-align: middle;
- width: 16px;
- height: 16px;
- border: 2px solid #0cf;
- border-radius: 50%;
- -webkit-animation: spin 0.75s infinite linear;
- animation: spin 0.75s infinite linear;
-}
-.ie9 .spinner {
- background-image: url(../images/loading.gif);
- background-repeat: no-repeat;
- background-position: 0 0;
- border: none;
-}
-.spinner:before,
-.spinner:after {
- left: -2px;
- top: -2px;
- display: none;
- position: absolute;
- content: '';
- width: inherit;
- height: inherit;
- border: inherit;
- border-radius: inherit;
-}
-.spinner,
-.spinner:before,
-.spinner:after {
- display: inline-block;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- border-color: transparent;
- border-top-color: #4b9fd5;
- -webkit-animation-duration: 1.2s;
- animation-duration: 1.2s;
-}
-.spinner:before {
- -webkit-transform: rotate(120deg);
- -ms-transform: rotate(120deg);
- transform: rotate(120deg);
-}
-.spinner:after {
- -webkit-transform: rotate(240deg);
- -ms-transform: rotate(240deg);
- transform: rotate(240deg);
-}
-@-webkit-keyframes spin {
- from {
- -webkit-transform: rotate(0deg);
- -ms-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- to {
- -webkit-transform: rotate(360deg);
- -ms-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-@keyframes spin {
- from {
- -webkit-transform: rotate(0deg);
- -ms-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- to {
- -webkit-transform: rotate(360deg);
- -ms-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
+++ /dev/null
-@import "variables";
-@import "mixins";
-
-@font-face {
- font-family: 'sonar';
- src: url('../fonts/sonar.woff') format('woff'),
- url('../fonts/sonar.svg#sonar') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-
-[class^="icon-"], [class*=" icon-"] {
- font-family: 'sonar';
- speak: none;
- font-style: normal;
- font-weight: normal;
- font-variant: normal;
- text-transform: none;
- line-height: 1;
- vertical-align: middle;
-
- /* Better Font Rendering =========== */
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-a[class^="icon-"], a[class*=" icon-"] {
- text-decoration: none !important;
-}
-
-
-/*
- * Severity
- */
-
-[class^="icon-severity-"], [class*=" icon-severity"] {
- position: relative;
- top: -1px;
-}
-
-.icon-severity-blocker:before,
-.icon-severity-4:before {
- content: "\f000";
- color: @severityBlockerColor;
- font-size: @iconSmallFontSize;
-}
-.icon-severity-critical:before,
-.icon-severity-3:before {
- content: "\f001";
- color: @severityCriticalColor;
- font-size: @iconSmallFontSize;
-}
-.icon-severity-major:before,
-.icon-severity-2:before {
- content: "\f002";
- color: @severityMajorColor;
- font-size: @iconSmallFontSize;
-}
-.icon-severity-minor:before,
-.icon-severity-1:before {
- content: "\f003";
- color: @severityMinorColor;
- font-size: @iconSmallFontSize;
-}
-.icon-severity-info:before,
-.icon-severity-0:before {
- content: "\f004";
- color: @severityInfoColor;
- font-size: @iconSmallFontSize;
-}
-
-
-/*
- * Status
- */
-
-[class^="icon-status-"], [class*=" icon-status"] {
- position: relative;
- top: -1px;
-}
-
-.icon-status-open:before {
- content: "\f010";
- color: @statusOpenColor;
- font-size: @iconSmallFontSize;
- line-height: @iconLineHeight;
-}
-.icon-status-confirmed:before {
- content: "\f011";
- color: @statusConfirmedColor;
- font-size: @iconSmallFontSize;
- line-height: @iconLineHeight;
-}
-.icon-status-reopened:before {
- content: "\f012";
- color: @statusReopenedColor;
- font-size: @iconSmallFontSize;
- line-height: @iconLineHeight;
-}
-.icon-status-resolved:before {
- content: "\f013";
- color: @statusResolvedColor;
- font-size: @iconSmallFontSize;
- line-height: @iconLineHeight;
-}
-.icon-status-closed:before {
- content: "\f014";
- color: @statusClosedColor;
- font-size: @iconSmallFontSize;
- line-height: @iconLineHeight;
-}
-
-
-/*
- * Alert
- */
-
-.icon-alert-ok:before {
- content: "\f013";
- color: @green;
- font-size: @iconFontSize;
-}
-.icon-alert-warn:before {
- content: "\f000";
- color: @orange;
- font-size: @iconFontSize;
-}
-.icon-alert-error:before {
- content: "\f057";
- color: @red;
- font-size: @iconFontSize;
-}
-.icon-alert-none:before {
- content: "\f059";
- color: @blue;
- font-size: @iconFontSize;
-}
-
-
-/*
- * Qualifier
- */
-
-.icon-qualifier-dir:before {
- content: "\f07b";
- font-size: @iconFontSize;
-}
-.icon-qualifier-fil:before {
- content: "\f0f6";
- font-size: @iconFontSize;
-}
-.icon-qualifier-lib:before {
- content: "\e600";
- font-size: @iconFontSize;
-}
-
-
-/*
- * Common
- */
-
-.icon-list:before {
- content: "\f039";
-}
-.icon-bullet-list:before {
- content: "\f03a";
-}
-.icon-settings:before {
- content: "\f015";
-}
-.icon-settings-multiple:before {
- content: "\f085";
-}
-
-.icon-arrow-down:before {
- content: "\f0d7";
- position: relative;
- top: -2px;
-}
-.icon-arrow-up:before {
- content: "\f0d8";
- position: relative;
- top: -2px;
-}
-.icon-arrow-left:before {
- content: "\f0d9";
-}
-.icon-arrow-right:before {
- content: "\f0da";
-}
-
-.icon-emoticon-smiley:before {
- content: "\f118";
-}
-.icon-emoticon-sad:before {
- content: "\f119";
-}
-.icon-emoticon-speechless:before {
- content: "\f11a";
-}
-.icon-rect-check:before {
- content: "\f046";
-}
-.icon-check:before {
- content: "\f00c";
-}
-.icon-default:before {
- position: relative;
- top: -0.1em;
- content: "\f00c";
-}
-.icon-lang:before {
- content: "\f024";
- font-size: @iconSmallFontSize;
-}
-.icon-quality-profile:before {
- content: "\f022";
- font-size: @iconSmallFontSize;
-}
-.icon-tags:before {
- content: "\f02c";
- font-size: @iconSmallFontSize;
-}
-.icon-calendar:before {
- position: relative;
- top: -0.1em;
- content: "\f073";
- font-size: @iconSmallFontSize;
-}
-.icon-favorite:before {
- content: "\f005";
- color: @orange;
- font-size: @iconFontSize;
-}
-.icon-not-favorite:before {
- content: "\f005";
- color: @darkGrey;
- font-size: @iconFontSize;
-}
-.icon-help:before {
- content: "\f059";
- color: @blue;
- font-size: @iconFontSize;
-}
-.icon-info:before {
- content: "\f05a";
- color: @blue;
- font-size: @iconFontSize;
-}
-.icon-uniF060:before {
- content: "\f060";
-}
-.icon-uniF061:before {
- content: "\f061";
-}
-.icon-uniF062:before {
- content: "\f062";
-}
-.icon-uniF063:before {
- content: "\f063";
-}
-.icon-comment:before {
- content: "\f075";
-}
-.icon-delete:before {
- content: "\f00d";
-}
-.icon-compare:before {
- content: "\f0c5";
-}
-.icon-link:before {
- content: "\f0c1";
-}
-.icon-inheritance:before {
- content: "\f126";
- font-size: @iconFontSize;
-}
-.icon-plus:before {
- content: "\f067";
-}
-
-
-/*
- * Spinner
- */
-
-.spinner {
- position: relative;
- vertical-align: middle;
- .square(16px);
- border: 2px solid #0cf;
- border-radius: 50%;
- .animation(spin 0.75s infinite linear);
-
- // For IE9 only, because it does not support css animations
- // Show animated gif
- .ie9 & {
- background-image: url(../images/loading.gif);
- background-repeat: no-repeat;
- background-position: 0 0;
- border: none;
- }
-}
-
-.spinner:before,
-.spinner:after {
- left: -2px;
- top: -2px;
- display: none;
- position: absolute;
- content: '';
- width: inherit;
- height: inherit;
- border: inherit;
- border-radius: inherit;
-}
-
-.spinner,
-.spinner:before,
-.spinner:after {
- display: inline-block;
- .box-sizing(border-box);
- border-color: transparent;
- border-top-color: @blue;
- .animation-duration(1.2s);
-}
-.spinner:before {
- .rotate(120deg);
-}
-.spinner:after {
- .rotate(240deg);
-}
-
-@-webkit-keyframes spin {
- from { .rotate(0deg); }
- to { .rotate(360deg); }
-}
-@keyframes spin {
- from { .rotate(0deg); }
- to { .rotate(360deg); }
-}
+++ /dev/null
-/*! jQuery UI - v1.10.3 - 2013-06-18
-* http://jqueryui.com
-* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.button.css, jquery.ui.dialog.css
-* Copyright 2013 jQuery Foundation and other contributors Licensed MIT */
-
-/* Layout helpers
-----------------------------------*/
-
-/* SONAR */
-.no-close .ui-dialog-titlebar-close {
- display: none;
-}
-
-.ui-dialog .ui-dialog-titlebar {
- display: none;
-}
-
-.ui-widget-header {
- color: #ffffff;
- font-weight: bold;
-}
-
-.ui-widget-header a {
- color: #ffffff;
-}
-
-.ui-widget-shadow {
- margin: -5px 0 0 -5px;
- padding: 5px;
- background: #000000 50% 50% repeat-x;
- opacity: .20;
- filter: Alpha(Opacity = 20);
- -moz-border-radius: 5px;
- -khtml-border-radius: 5px;
- -webkit-border-radius: 5px;
- border-radius: 5px;
-}
-
-.ui-dialog {
- position: absolute;
- width: 300px;
- overflow: hidden;
- box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
- background-color: #FFF
-}
-
-/* /SONAR */
-
-.ui-helper-hidden {
- display: none;
-}
-.ui-helper-hidden-accessible {
- border: 0;
- clip: rect(0 0 0 0);
- height: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- width: 1px;
-}
-.ui-helper-reset {
- margin: 0;
- padding: 0;
- border: 0;
- outline: 0;
- line-height: 1.3;
- text-decoration: none;
- font-size: 100%;
- list-style: none;
-}
-.ui-helper-clearfix:before,
-.ui-helper-clearfix:after {
- content: "";
- display: table;
- border-collapse: collapse;
-}
-.ui-helper-clearfix:after {
- clear: both;
-}
-.ui-helper-clearfix {
- min-height: 0; /* support: IE7 */
-}
-.ui-helper-zfix {
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- position: absolute;
- opacity: 0;
- filter:Alpha(Opacity=0);
-}
-
-.ui-front {
- z-index: 100;
-}
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled {
- cursor: default !important;
-}
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
- display: block;
- text-indent: -99999px;
- overflow: hidden;
- background-repeat: no-repeat;
-}
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- /* sonar */
- background-color: #000000;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
- filter: alpha(opacity = 50);
- opacity: 0.5;
- /* /sonar */
-}
-
-.ui-resizable {
- position: relative;
-}
-.ui-resizable-handle {
- position: absolute;
- font-size: 0.1px;
- display: block;
-}
-.ui-resizable-disabled .ui-resizable-handle,
-.ui-resizable-autohide .ui-resizable-handle {
- display: none;
-}
-.ui-resizable-n {
- cursor: n-resize;
- height: 7px;
- width: 100%;
- top: -5px;
- left: 0;
-}
-.ui-resizable-s {
- cursor: s-resize;
- height: 7px;
- width: 100%;
- bottom: -5px;
- left: 0;
-}
-.ui-resizable-e {
- cursor: e-resize;
- width: 7px;
- right: -5px;
- top: 0;
- height: 100%;
-}
-.ui-resizable-w {
- cursor: w-resize;
- width: 7px;
- left: -5px;
- top: 0;
- height: 100%;
-}
-.ui-resizable-se {
- cursor: se-resize;
- width: 12px;
- height: 12px;
- right: 1px;
- bottom: 1px;
-}
-.ui-resizable-sw {
- cursor: sw-resize;
- width: 9px;
- height: 9px;
- left: -5px;
- bottom: -5px;
-}
-.ui-resizable-nw {
- cursor: nw-resize;
- width: 9px;
- height: 9px;
- left: -5px;
- top: -5px;
-}
-.ui-resizable-ne {
- cursor: ne-resize;
- width: 9px;
- height: 9px;
- right: -5px;
- top: -5px;
-}
-.ui-button {
- display: inline-block;
- position: relative;
- padding: 0;
- line-height: normal;
- margin-right: .1em;
- cursor: pointer;
- vertical-align: middle;
- text-align: center;
- overflow: visible; /* removes extra width in IE */
-}
-.ui-button,
-.ui-button:link,
-.ui-button:visited,
-.ui-button:hover,
-.ui-button:active {
- text-decoration: none;
-}
-/* to make room for the icon, a width needs to be set here */
-.ui-button-icon-only {
- width: 2.2em;
-}
-/* button elements seem to need a little more width */
-button.ui-button-icon-only {
- width: 2.4em;
-}
-.ui-button-icons-only {
- width: 3.4em;
-}
-button.ui-button-icons-only {
- width: 3.7em;
-}
-
-/* button text element */
-.ui-button .ui-button-text {
- display: block;
- line-height: normal;
-}
-.ui-button-text-only .ui-button-text {
- padding: .4em 1em;
-}
-.ui-button-icon-only .ui-button-text,
-.ui-button-icons-only .ui-button-text {
- padding: .4em;
- text-indent: -9999999px;
-}
-.ui-button-text-icon-primary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
- padding: .4em 1em .4em 2.1em;
-}
-.ui-button-text-icon-secondary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
- padding: .4em 2.1em .4em 1em;
-}
-.ui-button-text-icons .ui-button-text {
- padding-left: 2.1em;
- padding-right: 2.1em;
-}
-/* no icon support for input elements, provide padding by default */
-input.ui-button {
- padding: .4em 1em;
-}
-
-/* button icon element(s) */
-.ui-button-icon-only .ui-icon,
-.ui-button-text-icon-primary .ui-icon,
-.ui-button-text-icon-secondary .ui-icon,
-.ui-button-text-icons .ui-icon,
-.ui-button-icons-only .ui-icon {
- position: absolute;
- top: 50%;
- margin-top: -8px;
-}
-.ui-button-icon-only .ui-icon {
- left: 50%;
- margin-left: -8px;
-}
-.ui-button-text-icon-primary .ui-button-icon-primary,
-.ui-button-text-icons .ui-button-icon-primary,
-.ui-button-icons-only .ui-button-icon-primary {
- left: .5em;
-}
-.ui-button-text-icon-secondary .ui-button-icon-secondary,
-.ui-button-text-icons .ui-button-icon-secondary,
-.ui-button-icons-only .ui-button-icon-secondary {
- right: .5em;
-}
-
-/* button sets */
-.ui-buttonset {
- margin-right: 7px;
-}
-.ui-buttonset .ui-button {
- margin-left: 0;
- margin-right: -.3em;
-}
-
-/* workarounds */
-/* reset extra padding in Firefox, see h5bp.com/l */
-input.ui-button::-moz-focus-inner,
-button.ui-button::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-.ui-dialog {
- position: absolute;
- top: 0;
- left: 0;
- /* sonar
- padding: .2em;
- */
- outline: 0;
-}
-/* sonar
-.ui-dialog .ui-dialog-titlebar {
- padding: .4em 1em;
- position: relative;
-}
-.ui-dialog .ui-dialog-title {
- float: left;
- margin: .1em 0;
- white-space: nowrap;
- width: 90%;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-.ui-dialog .ui-dialog-titlebar-close {
- position: absolute;
- right: .3em;
- top: 50%;
- width: 21px;
- margin: -10px 0 0 0;
- padding: 1px;
- height: 20px;
-}
-*/
-.ui-dialog .ui-dialog-content {
- position: relative;
- border: 0;
- /* sonar
- padding: .5em 1em;
- */
- background: none;
- overflow: auto;
-}
-.ui-dialog .ui-dialog-buttonpane {
- text-align: left;
- border-width: 1px 0 0 0;
- background-image: none;
- margin-top: .5em;
- padding: .3em 1em .5em .4em;
-}
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
- float: right;
-}
-.ui-dialog .ui-dialog-buttonpane button {
- margin: .5em .4em .5em 0;
- cursor: pointer;
-}
-.ui-dialog .ui-resizable-se {
- width: 12px;
- height: 12px;
- right: -5px;
- bottom: -5px;
- background-position: 16px 16px;
-}
-.ui-draggable .ui-dialog-titlebar {
- cursor: move;
-}
+++ /dev/null
-@media print {
- /* ------------------- PRINT ------------------- */
- html, body {
- font-size: 8pt;
- }
-
- a, a:link, a:visited {
- text-decoration: none;
- border-bottom: 0;
- }
-
- .noprint {
- display: none !important;
- }
-
- .print {
- display: inline;
- position: static;
- left: 0;
- }
-
- #hd, #sidebar, #crumbs {
- display: none;
- }
-
- .with_sidebar, .wo_sidebar {
- padding: 0 !important;
- margin: 0;
- }
-
- #content {
- margin-left: 0 !important;
- }
-}
-
-@media screen {
- .print {
- display: none;
- }
-}
-
-body, a {
- color: #444;
-}
-
-/* LAYOUT */
-#container {
- height: auto !important;
- min-width: 940px;
- min-height: 500px;
-}
-
-#hd {
- color: #FFF;
- background: #262626;
- padding: 0 10px;
- height: 30px;
- line-height: 30px;
- font-size: 93%;
- margin: 0;
- position: relative;
-}
-
-#hd a {
- color: #FFF;
- text-decoration: none;
-}
-
-#hd a.selected {
- color: #4B9FD5;
-}
-
-#hd a:focus, #hd a:hover {
- text-decoration: underline;
-}
-
-#nav-left {
- float: left;
- vertical-align: middle;
-}
-
-#nav {
- float: right;
- padding: 0 0 0 20px;
- vertical-align: middle;
-}
-
-#nav-left img, #nav img {
- vertical-align: text-bottom;
-}
-
-#nav-left > ul> li {
- float: left;
- padding: 0 20px 0 0;
-}
-
-#nav > ul> li {
- float: right;
- padding: 0 0 0 15px;
-}
-
-#searchResourcesResults {
- position: absolute;
- float: right;
- width: 600px;
- top: 30px;
- right: 0;
-}
-
-#crumbs {
- color: #444;
- background: #EFEFEF;
- height: 26px;
- line-height: 26px;
- font-size: 93%;
- margin: 0;
- padding: 0 10px;
- border-bottom: 1px solid #CCC;
-}
-
-#crumbs img {
- vertical-align: text-bottom;
-}
-
-#bc li {
- float: left;
- background: #EFEFEF url("../images/bc-gray.png") no-repeat right;
- border-bottom: 1px solid #CCC;
- padding: 0 20px 0 0;
- margin: 0 10px 0 0;
-}
-
-#bc li img {
- margin-right: -5px;
-}
-
-#bc li a {
- text-decoration: none;
-}
-
-#bc li a:hover, #bc li a:focus {
- text-decoration: underline;
-}
-
-#crumbs-ops {
- float: right;
- padding: 0 5px 0 0;
-}
-
-#crumbs-ops li {
- float: left;
- padding: 0 0 0 10px;
-}
-
-#crumbs-ops li a {
- text-decoration: none;
-}
-
-#crumbs-ops li a:hover, #crumbs-ops li a:focus {
- text-decoration: underline;
-}
-
-#hd .dropdown-menu a {
- color: #000;
-}
-
-#project-settings-menu {
- float: right;
- right: 20px;
-}
-
-#nonav {
- text-align: left;
- margin: 50px 180px 0;
-}
-
-#body {
- /* position: relative;*/
-}
-
-#footer {
- margin: 10px;
- clear: both;
-}
-
-.with_sidebar {
- margin: 0 0 0 160px;
- padding: 10px;
-}
-
-.wo_sidebar {
- margin: 0 8px;
-}
-
-#sidebar {
- width: 150px;
- float: left;
- margin: 0 0 0 10px;
- top: 0;
- left: 0;
-}
-
-ul.sidebar {
- text-align: left;
- border-top: none;
- padding: 10px 0;
-}
-
-ul.sidebar li {
- list-style-type: none;
- padding: 3px 10px;
-}
-
-ul.sidebar li a {
- text-decoration: none;
-}
-
-ul.sidebar li a:hover {
- text-decoration: underline;
-}
-
-ul.sidebar li.active {
- background-color: #4b9fd5;
-}
-
-ul.sidebar li.active a, ul.sidebar li.active a:hover {
- color: #FFF;
-}
-
-ul.sidebar li.active [class^="icon-"],
-ul.sidebar li.active [class*=" icon-"] {
- color: #FFF;
-}
-
-li.sidebar-title {
- text-transform: uppercase;
- font-size: 93%;
- font-weight: bold;
-}
-
-ul.sidebar li.spacer {
- border: 0 none;
- height: 10px;
- margin: 0;
- padding: 0;
-}
-
-ul.sidebar select, ul.sidebar input {
- font-size: 93%;
-}
-
-#logo {
- text-align: center;
- padding: 10px 0 0 0;
-}
-
-#logo a {
- text-decoration: none;
- border-bottom-width: 0;
-}
-
-#logo img {
- display: block;
-}
-
-.page {
- padding: 10px;
-}
-.page-split-left {
- min-width: 200px;
- max-width: 200px;
- width: 200px;
- margin: 0;
- display: block;
- vertical-align: top;
- border-top: none;
- border-left: none;
- float: left;
-}
-
-.page-split-right {
- display: block;
- margin: 0;
- vertical-align: top;
- padding: 0 0 0 200px;
-}
-
-.gray-sidebar {
- background-color: #EFEFEF;
- border: 1px solid #CCC;
- color: #666;
- border-top: none;
-}
-
-.blue-sidebar {
- background-color: #CAE3F2;
- color: #262626;
- border: 2px solid #4b9fd5;
- border-top: none;
-}
-
-.nolayout {
- padding: 10px;
-}
+++ /dev/null
-/*
- * Fonts
- */
-/*
- * Colors
- */
-/*
- * Icons
- */
-/*
- * Transitions
- */
+++ /dev/null
-@import "variables";
-
-.clearfix() {
- &:before, &:after { display: table; content: ""; line-height: 0; }
- &:after { clear: both; }
-}
-
-.size(@width, @height) {
- width: @width;
- height: @height;
-}
-
-.square(@size) {
- .size(@size, @size);
-}
-
-.topLeft(@top, @left) {
- top: @top;
- left: @left;
-}
-
-.topRight(@top, @right) {
- top: @top;
- right: @right;
-}
-
-.bottomLeft(@bottom, @left) {
- bottom: @bottom;
- left: @left;
-}
-
-.bottomRight(@bottom, @right) {
- bottom: @bottom;
- right: @left;
-}
-
-.rotate(@degrees) {
- -webkit-transform: rotate(@degrees);
- -ms-transform: rotate(@degrees);
- transform: rotate(@degrees);
-}
-.scale(@ratio) {
- -webkit-transform: scale(@ratio);
- -ms-transform: scale(@ratio);
- transform: scale(@ratio);
-}
-.scale2(@w, @h) {
- -webkit-transform: scale(@w, @h);
- -ms-transform: scale(@w, @h);
- transform: scale(@w, @h);
-}
-.translate(@x, @y) {
- -webkit-transform: translate(@x, @y);
- -ms-transform: translate(@x, @y);
- transform: translate(@x, @y);
-}
-.skew(@x, @y) {
- -webkit-transform: skew(@x, @y);
- -ms-transform: skew(@x, @y);
- transform: skew(@x, @y);
-}
-.translate3d(@x, @y, @z) {
- -webkit-transform: translate3d(@x, @y, @z);
- transform: translate3d(@x, @y, @z);
-}
-
-.box-sizing(@boxmodel) {
- -moz-box-sizing: @boxmodel;
- box-sizing: @boxmodel;
-}
-
-.animation(@animation) {
- -webkit-animation: @animation;
- animation: @animation;
-}
-.animation-duration(@duration) {
- -webkit-animation-duration: @duration;
- animation-duration: @duration;
-}
-
-.horizontal-gradient(@startColor: #555, @endColor: #333) {
- background-color: @endColor;
- background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
- background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
- background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
- background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
- background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
- background-repeat: repeat-x;
-}
-.vertical-gradient(@startColor: #555, @endColor: #333) {
- background-color: mix(@startColor, @endColor, 60%);
- background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
- background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
- background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
- background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
- background-repeat: repeat-x;
-}
-.directional-gradient(@startColor: #555, @endColor: #333, @deg: 45deg) {
- background-color: @endColor;
- background-repeat: repeat-x;
- background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
- background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
- background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
- background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
-}
-.vertical-three-colors-gradient(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
- background-color: mix(@midColor, @endColor, 80%);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
- background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
- background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
- background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
- background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
- background-repeat: no-repeat;
-}
-.radial-gradient(@innerColor: #555, @outerColor: #333) {
- background-color: @outerColor;
- background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
- background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
- background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
- background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
- background-repeat: no-repeat;
-}
-.striped-gradient(@color, @angle: 45deg) {
- background-color: @color;
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
-}
-
-.trans(@property: all, @options: @defaultTransitionOptions) {
- transition: @property @options;
-}
-
-.webkit-scrollbar() {
- &::-webkit-scrollbar {
- width: 11px;
- background-color: transparent;
- background-clip: content-box;
- }
- &::-webkit-scrollbar-button {
- background-color: transparent;
- }
- &::-webkit-scrollbar-corner {
- background-color: transparent;
- }
- &::-webkit-scrollbar-thumb {
- border: solid transparent;
- border-width: 1px 1px 1px 2px;
- background-color: #c5c5c5;
- background-clip: content-box;
-
- &:hover {
- background-color: darken(#ccc, 5%);
- }
- }
- &::-webkit-scrollbar-track {
- border: solid #fff;
- border-width: 1px 1px 1px 2px;
- background-color: #fff;
- background-clip: content-box;
- }
- &::-webkit-scrollbar-track-piece {
- border-left: 1px solid #ccc;
- background-color: transparent;
- }
-}
-
-@retina: ~"(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)";
+++ /dev/null
-/*
- * Fonts
- */
-/*
- * Colors
- */
-/*
- * Icons
- */
-/*
- * Transitions
- */
-.navigator-header {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 30px;
- left: 0;
- width: 100%;
- height: 37px;
-}
-.navigator-filters {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 67px;
- left: 0;
- width: 100%;
- height: 37px;
-}
-.navigator-facets {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 104px;
- left: 0;
- width: 100%;
- height: 90px;
-}
-.navigator-results {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- top: 134px;
- bottom: 0;
- left: 0;
- width: 319px;
-}
-.navigator-details {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 104px;
- bottom: 35px;
- left: 320px;
- right: 0;
-}
-.navigator-actions {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 104px;
- left: 0;
- width: 320px;
- height: 30px;
-}
-.navigator-notes {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 104px;
- left: 0;
- width: 100%;
- height: 20px;
- display: none;
-}
-.measures-page .navigator-results {
- top: 104px;
- left: 0;
- bottom: 36px;
- width: 100%;
-}
-.navigator-with-notes .navigator-actions,
-.navigator-with-notes .navigator-details {
- top: 124px;
-}
-.navigator-with-notes .navigator-results {
- top: 154px;
-}
-.navigator-with-notes .navigator-notes {
- display: block;
-}
-.navigator-with-notes .navigator-details .source_title {
- top: 124px;
-}
-.navigator-with-notes .navigator-fetching.navigator-results-list:before {
- top: 154px;
-}
-.navigator-fetching:before {
- content: " ";
- position: absolute;
- z-index: 3;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- background: #ffffff url(../images/loading.gif) no-repeat 4px 4px;
-}
-.navigator-fetching#tab-issue-rule {
- position: relative;
-}
-.navigator-fetching#tab-issue-rule:before {
- z-index: 3;
- background-color: #EFEFEF;
-}
-.navigator-fetching.code-issue-actions {
- position: relative;
-}
-.navigator-fetching.code-issue-actions:before {
- z-index: 3;
- background-color: #E4ECF3;
-}
-.navigator-page-loader {
- padding: 10px 0 0 10px;
-}
-.navigator-header {
- padding: 0 10px;
- border-bottom: 1px solid #cdcdcd;
- background-color: #efefef;
- font-size: 0;
-}
-.navigator-header-favorite {
- padding-left: 46px;
-}
-.navigator-header-title {
- display: inline-block;
- vertical-align: middle;
- font-size: 20px;
- line-height: 37px;
-}
-.navigator-header-title-note {
- vertical-align: middle;
- color: #777;
- font-size: 11px;
-}
-.navigator-header-description {
- display: inline-block;
- vertical-align: middle;
- margin-left: 16px;
- font-size: 11px;
- font-style: italic;
-}
-.navigator-header-actions {
- margin-left: 20px;
-}
-.navigator-header-actions > a {
- vertical-align: middle;
- margin: 0 8px;
- font-size: 11px;
-}
-.navigator-header-menu-toggle {
- display: inline-block;
- vertical-align: top;
- height: 36px;
- margin-right: 10px;
- margin-left: -10px;
- padding: 10px;
- border-right: 1px solid transparent;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- cursor: pointer;
- transition: all 0.3s ease;
-}
-.navigator-header-menu-toggle:hover {
- background-color: #e2e2e2;
-}
-.navigator-header-menu-toggle.active {
- border-color: #cdcdcd;
- background-color: #fff;
-}
-.navigator-header-menu-toggle [class^="icon-"],
-.navigator-header-menu-toggle [class*=" icon-"] {
- font-size: 16px;
-}
-.navigator-notes {
- padding: 0 10px;
- border-bottom: 1px solid #cdcdcd;
- background-color: #efefef;
- color: #777;
- font-size: 11px;
- line-height: 20px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-.navigator-facets {
- padding: 10px;
- border-bottom: 1px solid #cdcdcd;
- background-color: #efefef;
-}
-.navigator-facets-list-item {
- font-size: 0;
-}
-.navigator-facets-list-item + .navigator-facets-list-item {
- margin-top: 10px;
-}
-.navigator-facets-list-item-name {
- display: inline-block;
- vertical-align: middle;
- margin-right: 10px;
- font-size: 13px;
- font-weight: bold;
- text-transform: uppercase;
-}
-.navigator-facets-list-item-options {
- display: inline-block;
- vertical-align: middle;
-}
-.navigator-facets-list-item-option {
- display: inline-block;
- vertical-align: middle;
- margin: 0 10px;
- font-size: 13px;
- cursor: pointer;
-}
-.navigator-facets-list-item-option:hover .navigator-facets-list-item-option-name {
- text-decoration: underline;
-}
-.navigator-facets-list-item-option.active .navigator-facets-list-item-option-name {
- font-weight: bold;
- text-decoration: underline;
-}
-.navigator-facets-list-item-option-stat:before {
- content: "(";
-}
-.navigator-facets-list-item-option-stat:after {
- content: ")";
-}
-.navigator-results {
- border-right: 1px solid #e1e1e1;
- background-color: #ffffff;
- overflow-x: hidden;
- overflow-y: auto;
-}
-.navigator-results-list > li {
- padding: 5px 0;
- border-top: 1px solid transparent;
- cursor: pointer;
- transition: all 0.3s ease;
-}
-.navigator-results-list > li .line {
- padding: 5px 10px;
- line-height: 1.2;
-}
-.navigator-results-list > li .line-small {
- font-size: 11px;
- line-height: 14px;
-}
-.navigator-results-list > li .line-right {
- float: right;
-}
-.navigator-results-list > li .line-nowrap {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-.navigator-results-list > li:hover {
- background-color: #efefef;
-}
-.navigator-results-list > li.active {
- 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-color: #e1e1e1;
-}
-.navigator-results-list > li.active + li {
- border-top-color: #4B9FD5;
-}
-.navigator-results-list.navigator-fetching > li .line-nowrap {
- text-overflow: clip;
- /* thanks to FF */
-
-}
-.navigator-results-list.navigator-fetching:before {
- position: fixed;
- z-index: 3;
- top: 134px;
- bottom: 0;
- left: 0;
- width: 319px;
-}
-.navigator-results-no-results {
- padding-top: 20% !important;
- background: #fff !important;
- color: #999;
- cursor: default !important;
- text-align: center;
-}
-.navigator-details {
- padding: 10px;
- background-color: #ffffff;
- overflow: auto;
-}
-.issues-page .navigator-details {
- padding-top: 62px;
- padding-right: 0;
-}
-.navigator-details.loading {
- background: #ffffff url("../images/loading.gif") no-repeat 4px 2px;
-}
-.navigator-details .code-issue-name {
- border-bottom: none;
-}
-.navigator-details .code-issue-actions {
- background-color: #E4ECF3;
-}
-.navigator-details .source_title {
- position: fixed;
- z-index: 3;
- top: 104px;
- left: 320px;
- right: 0;
- padding: 10px;
- border-bottom: 1px solid #e1e1e1;
- background-color: #fff;
-}
-.navigator-details .source {
- padding-right: 10px;
-}
-.navigator-details .source > table {
- border: 1px solid #DDD;
-}
-.navigator-details .scm .author {
- display: inline-block;
- vertical-align: middle;
- max-width: 100px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-.navigator-actions {
- padding: 0 10px 0 0;
- border-right: 1px solid #e1e1e1;
- border-bottom: 1px solid #e1e1e1;
- background-color: #efefef;
- font-size: 11px;
-}
-.navigator-actions strong {
- font-weight: bold;
-}
-.navigator-actions-order {
- float: left;
- padding: 0 10px;
- line-height: 30px;
- cursor: pointer;
- transition: all 0.3s ease;
-}
-.navigator-actions-order:hover {
- background-color: #efefef;
-}
-.navigator-actions-order-choices {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 134px;
- left: 0;
- min-width: 160px;
- background-color: #fff;
- border-bottom: 1px solid #e1e1e1;
- border-right: 1px solid #e1e1e1;
- overflow: hidden;
- display: none;
-}
-.navigator-actions-order-choices > li {
- height: 30px;
- line-height: 30px;
- padding: 0 10px;
- cursor: pointer;
- transition: all 0.3s ease;
-}
-.navigator-actions-order-choices > li:hover {
- background-color: #efefef;
-}
-.navigator-actions-order-choices.open {
- display: block;
-}
-.navigator-actions-total {
- float: right;
- line-height: 26px;
-}
-.navigator-actions-bulk {
- position: relative;
- top: -1px;
- margin-left: 8px;
- font-size: 16px;
- text-decoration: none;
-}
-.navigator-page #footer {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- bottom: 0;
- left: 320px;
- right: 0;
- margin: 0;
- border-top: 1px solid #e1e1e1;
-}
-.navigator-page #ftlinks {
- margin-top: 0;
-}
-.measures-page #footer {
- left: 0;
-}
-.navigator-filters {
- border-bottom: 1px solid #cdcdcd;
- background-color: #efefef;
- font-size: 0;
-}
-.navigator-filters-list {
- display: inline-block;
- vertical-align: middle;
- margin-bottom: -1px;
- font-size: 0;
-}
-.navigator-filter-submit,
-.navigator-filter-new-search {
- vertical-align: middle;
- margin-left: 15px;
- font-size: 13px;
-}
-.navigator-filter-list-favorite {
- position: relative;
- padding-left: 36px;
- overflow: hidden;
-}
-.navigator-filters-actions {
- display: inline-block;
- vertical-align: middle;
- margin-left: 20px;
- font-size: 13px;
-}
-.navigator-filter {
- display: inline-block;
- vertical-align: top;
- height: 36px;
- line-height: 36px;
- margin: -1px 0 0;
- padding: 0 10px;
- border: 1px solid transparent;
- white-space: nowrap;
- cursor: pointer;
- transition: background 0.3s ease;
-}
-.navigator-filter:hover {
- background-color: #e2e2e2;
-}
-.navigator-filter.active {
- border-color: #cdcdcd;
- background: #fff;
-}
-.navigator-filter-disabled {
- display: none;
-}
-.navigator-filter-optional {
- padding-right: 0;
-}
-.navigator-filter-inline,
-.navigator-filter-read-only,
-.navigator-filter-inactive {
- cursor: default;
-}
-.navigator-filter-inline:hover,
-.navigator-filter-read-only:hover,
-.navigator-filter-inactive:hover,
-.navigator-filter-inline.active,
-.navigator-filter-read-only.active,
-.navigator-filter-inactive.active {
- border-color: transparent;
- background: transparent;
-}
-.navigator-filter-inline .navigator-filter-label:after {
- content: "";
-}
-.navigator-filter-inactive {
- opacity: 0.5;
-}
-.navigator-filter-label {
- display: inline-block;
- vertical-align: middle;
- margin-right: 5px;
- color: #333;
- font-size: 13px;
-}
-.navigator-filter-label:after {
- content: ":";
-}
-.navigator-filter-value {
- display: inline-block;
- vertical-align: middle;
- max-width: 120px;
- color: #333;
- font-size: 13px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-.navigator-filter-value.default {
- color: #666;
-}
-.navigator-filter-disable {
- display: inline-block;
- vertical-align: middle;
- width: 20px;
- height: 20px;
- line-height: 20px;
- margin: 0 0 0 5px;
- font-size: 18px;
- text-align: center;
- transition: background 0.3s ease;
-}
-.navigator-filter-disable:hover {
- background-color: #d0d0d0;
-}
-.navigator-filter-range-input {
- width: 120px;
-}
-.navigator-filter-details {
- display: none;
- position: absolute;
- z-index: 1200;
- min-width: 100px;
- border: 1px solid #cdcdcd;
- background: #fff;
- box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
- font-size: 13px;
- transition: opacity 0.3s ease;
-}
-.navigator-filter-details.active {
- display: block;
-}
-.navigator-filter-details-inner {
- max-width: 300px;
- padding: 5px 10px;
-}
-.navigator-filter-details-inner .select2-container,
-.navigator-filter-details-inner input {
- margin: 5px 0;
- vertical-align: middle;
-}
-.navigator-filter-select-list {
- min-width: 150px;
- max-width: 300px;
- max-height: 182px;
- padding: 5px 0;
- overflow-y: auto;
-}
-.navigator-filter-select-list::-webkit-scrollbar {
- width: 11px;
- background-color: transparent;
- background-clip: content-box;
-}
-.navigator-filter-select-list::-webkit-scrollbar-button {
- background-color: transparent;
-}
-.navigator-filter-select-list::-webkit-scrollbar-corner {
- background-color: transparent;
-}
-.navigator-filter-select-list::-webkit-scrollbar-thumb {
- border: solid transparent;
- border-width: 1px 1px 1px 2px;
- background-color: #c5c5c5;
- background-clip: content-box;
-}
-.navigator-filter-select-list::-webkit-scrollbar-thumb:hover {
- background-color: #bfbfbf;
-}
-.navigator-filter-select-list::-webkit-scrollbar-track {
- border: solid #fff;
- border-width: 1px 1px 1px 2px;
- background-color: #fff;
- background-clip: content-box;
-}
-.navigator-filter-select-list::-webkit-scrollbar-track-piece {
- border-left: 1px solid #ccc;
- background-color: transparent;
-}
-.navigator-filter-select-list label {
- display: block;
- padding: 5px 10px;
- transition: background 0.3s ease;
- cursor: pointer;
- white-space: nowrap;
- overflow: hidden;
-}
-.navigator-filter-select-list label:hover,
-.navigator-filter-select-list label.current {
- background-color: #ededed;
-}
-.navigator-filter-select-list label > input[type=checkbox] {
- vertical-align: baseline;
- cursor: pointer;
-}
-.navigator-filter-select-list label > img {
- vertical-align: text-bottom;
-}
-.navigator-filter-select-list label > span {
- display: inline-block;
- vertical-align: top;
- width: 86%;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-.navigator-filter-select-list label.special {
- font-style: italic;
-}
-.navigator-filter-select-list label.special > span {
- text-decoration: underline;
-}
-.navigator-filter-select-list label.inactive {
- cursor: default;
- opacity: 0.5;
-}
-.navigator-filter-select-list label.inactive:hover {
- background-color: transparent;
-}
-.navigator-filter-select-list .single {
- padding: 5px 10px;
-}
-.navigator-filter-select-list .line {
- height: 1px;
- margin: 5px 0;
- background: #cdcdcd;
-}
-.navigator-filter-select-list:not(.hidden) + .navigator-filter-select-list {
- margin-top: 5px;
- border-top: 1px solid #cdcdcd;
-}
-.navigator-filter-search {
- position: relative;
- margin: 10px 26px 10px 10px;
-}
-.navigator-filter-search input {
- width: 100%;
- height: 26px;
- padding: 0 7px;
- border: 1px solid #cdcdcd;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-.fetching .navigator-filter-search:after {
- content: ' ';
- position: absolute;
- top: 6px;
- right: -21px;
- display: block;
- width: 16px;
- height: 16px;
- background: #ffffff url(../images/loading.gif) no-repeat center center;
-}
-.navigator-filter-load-more {
- display: none;
- height: 26px;
- line-height: 26px;
- background-color: #efefef;
- text-align: center;
- cursor: pointer;
- transition: background 0.3s ease;
-}
-.navigator-filter-load-more:hover {
- background-color: #dddddd;
-}
-.navigator-filter-favorite {
- position: absolute;
- top: -100%;
- left: 0;
- border-top: none;
-}
-.navigator-filter-favorite-toggle {
- width: 16px;
- height: 37px;
- background: url('../images/navigator/favorite-filters.png') no-repeat center center;
-}
-@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
- .navigator-filter-favorite-toggle {
- background-image: url(../images/navigator/favorite-filters@2x.png);
- background-size: 16px 14px;
- }
-}
-.navigator-filter-more-criteria {
- font-size: 13px;
-}
+++ /dev/null
-@import "mixins";
-@import "variables";
-
-@import "navigator/config";
-@import "navigator/base";
-@import "navigator/filters";
+++ /dev/null
-/*
- * Fonts
- */
-/*
- * Colors
- */
-/*
- * Icons
- */
-/*
- * Transitions
- */
-.navigator-header {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 30px;
- left: 0;
- width: 100%;
- height: 37px;
-}
-.navigator-filters {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 67px;
- left: 0;
- width: 100%;
- height: 37px;
-}
-.navigator-facets {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 104px;
- left: 0;
- width: 100%;
- height: 90px;
-}
-.navigator-results {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- top: 134px;
- bottom: 0;
- left: 0;
- width: 319px;
-}
-.navigator-details {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 104px;
- bottom: 35px;
- left: 320px;
- right: 0;
-}
-.navigator-actions {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 104px;
- left: 0;
- width: 320px;
- height: 30px;
-}
-.navigator-notes {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 104px;
- left: 0;
- width: 100%;
- height: 20px;
- display: none;
-}
-.measures-page .navigator-results {
- top: 104px;
- left: 0;
- bottom: 36px;
- width: 100%;
-}
-.navigator-with-notes .navigator-actions,
-.navigator-with-notes .navigator-details {
- top: 124px;
-}
-.navigator-with-notes .navigator-results {
- top: 154px;
-}
-.navigator-with-notes .navigator-notes {
- display: block;
-}
-.navigator-with-notes .navigator-details .source_title {
- top: 124px;
-}
-.navigator-with-notes .navigator-fetching.navigator-results-list:before {
- top: 154px;
-}
-.navigator-fetching:before {
- content: " ";
- position: absolute;
- z-index: 3;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- background: #ffffff url(../images/loading.gif) no-repeat 4px 4px;
-}
-.navigator-fetching#tab-issue-rule {
- position: relative;
-}
-.navigator-fetching#tab-issue-rule:before {
- z-index: 3;
- background-color: #EFEFEF;
-}
-.navigator-fetching.code-issue-actions {
- position: relative;
-}
-.navigator-fetching.code-issue-actions:before {
- z-index: 3;
- background-color: #E4ECF3;
-}
-.navigator-page-loader {
- padding: 10px 0 0 10px;
-}
-.navigator-header {
- padding: 0 10px;
- border-bottom: 1px solid #cdcdcd;
- background-color: #efefef;
- font-size: 0;
-}
-.navigator-header-favorite {
- padding-left: 46px;
-}
-.navigator-header-title {
- display: inline-block;
- vertical-align: middle;
- font-size: 20px;
- line-height: 37px;
-}
-.navigator-header-title-note {
- vertical-align: middle;
- color: #777;
- font-size: 11px;
-}
-.navigator-header-description {
- display: inline-block;
- vertical-align: middle;
- margin-left: 16px;
- font-size: 11px;
- font-style: italic;
-}
-.navigator-header-actions {
- margin-left: 20px;
-}
-.navigator-header-actions > a {
- vertical-align: middle;
- margin: 0 8px;
- font-size: 11px;
-}
-.navigator-header-menu-toggle {
- display: inline-block;
- vertical-align: top;
- height: 36px;
- margin-right: 10px;
- margin-left: -10px;
- padding: 10px;
- border-right: 1px solid transparent;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- cursor: pointer;
- transition: all 0.3s ease;
-}
-.navigator-header-menu-toggle:hover {
- background-color: #e2e2e2;
-}
-.navigator-header-menu-toggle.active {
- border-color: #cdcdcd;
- background-color: #fff;
-}
-.navigator-header-menu-toggle [class^="icon-"],
-.navigator-header-menu-toggle [class*=" icon-"] {
- font-size: 16px;
-}
-.navigator-notes {
- padding: 0 10px;
- border-bottom: 1px solid #cdcdcd;
- background-color: #efefef;
- color: #777;
- font-size: 11px;
- line-height: 20px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-.navigator-facets {
- padding: 10px;
- border-bottom: 1px solid #cdcdcd;
- background-color: #efefef;
-}
-.navigator-facets-list-item {
- font-size: 0;
-}
-.navigator-facets-list-item + .navigator-facets-list-item {
- margin-top: 10px;
-}
-.navigator-facets-list-item-name {
- display: inline-block;
- vertical-align: middle;
- margin-right: 10px;
- font-size: 13px;
- font-weight: bold;
- text-transform: uppercase;
-}
-.navigator-facets-list-item-options {
- display: inline-block;
- vertical-align: middle;
-}
-.navigator-facets-list-item-option {
- display: inline-block;
- vertical-align: middle;
- margin: 0 10px;
- font-size: 13px;
- cursor: pointer;
-}
-.navigator-facets-list-item-option:hover .navigator-facets-list-item-option-name {
- text-decoration: underline;
-}
-.navigator-facets-list-item-option.active .navigator-facets-list-item-option-name {
- font-weight: bold;
- text-decoration: underline;
-}
-.navigator-facets-list-item-option-stat:before {
- content: "(";
-}
-.navigator-facets-list-item-option-stat:after {
- content: ")";
-}
-.navigator-results {
- border-right: 1px solid #e1e1e1;
- background-color: #ffffff;
- overflow-x: hidden;
- overflow-y: auto;
-}
-.navigator-results-list > li {
- padding: 5px 0;
- border-top: 1px solid transparent;
- cursor: pointer;
- transition: all 0.3s ease;
-}
-.navigator-results-list > li .line {
- padding: 5px 10px;
- line-height: 1.2;
-}
-.navigator-results-list > li .line-small {
- font-size: 11px;
- line-height: 14px;
-}
-.navigator-results-list > li .line-right {
- float: right;
-}
-.navigator-results-list > li .line-nowrap {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-.navigator-results-list > li:hover {
- background-color: #efefef;
-}
-.navigator-results-list > li.active {
- 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-color: #e1e1e1;
-}
-.navigator-results-list > li.active + li {
- border-top-color: #4B9FD5;
-}
-.navigator-results-list.navigator-fetching > li .line-nowrap {
- text-overflow: clip;
- /* thanks to FF */
-
-}
-.navigator-results-list.navigator-fetching:before {
- position: fixed;
- z-index: 3;
- top: 134px;
- bottom: 0;
- left: 0;
- width: 319px;
-}
-.navigator-results-no-results {
- padding-top: 20% !important;
- background: #fff !important;
- color: #999;
- cursor: default !important;
- text-align: center;
-}
-.navigator-details {
- padding: 10px;
- background-color: #ffffff;
- overflow: auto;
-}
-.issues-page .navigator-details {
- padding-top: 62px;
- padding-right: 0;
-}
-.navigator-details.loading {
- background: #ffffff url("../images/loading.gif") no-repeat 4px 2px;
-}
-.navigator-details .code-issue-name {
- border-bottom: none;
-}
-.navigator-details .code-issue-actions {
- background-color: #E4ECF3;
-}
-.navigator-details .source_title {
- position: fixed;
- z-index: 3;
- top: 104px;
- left: 320px;
- right: 0;
- padding: 10px;
- border-bottom: 1px solid #e1e1e1;
- background-color: #fff;
-}
-.navigator-details .source {
- padding-right: 10px;
-}
-.navigator-details .source > table {
- border: 1px solid #DDD;
-}
-.navigator-details .scm .author {
- display: inline-block;
- vertical-align: middle;
- max-width: 100px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-.navigator-actions {
- padding: 0 10px 0 0;
- border-right: 1px solid #e1e1e1;
- border-bottom: 1px solid #e1e1e1;
- background-color: #efefef;
- font-size: 11px;
-}
-.navigator-actions strong {
- font-weight: bold;
-}
-.navigator-actions-order {
- float: left;
- padding: 0 10px;
- line-height: 30px;
- cursor: pointer;
- transition: all 0.3s ease;
-}
-.navigator-actions-order:hover {
- background-color: #efefef;
-}
-.navigator-actions-order-choices {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- top: 134px;
- left: 0;
- min-width: 160px;
- background-color: #fff;
- border-bottom: 1px solid #e1e1e1;
- border-right: 1px solid #e1e1e1;
- overflow: hidden;
- display: none;
-}
-.navigator-actions-order-choices > li {
- height: 30px;
- line-height: 30px;
- padding: 0 10px;
- cursor: pointer;
- transition: all 0.3s ease;
-}
-.navigator-actions-order-choices > li:hover {
- background-color: #efefef;
-}
-.navigator-actions-order-choices.open {
- display: block;
-}
-.navigator-actions-total {
- float: right;
- line-height: 26px;
-}
-.navigator-actions-bulk {
- position: relative;
- top: -1px;
- margin-left: 8px;
- font-size: 16px;
- text-decoration: none;
-}
-.navigator-page #footer {
- position: fixed;
- z-index: 2;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- bottom: 0;
- left: 320px;
- right: 0;
- margin: 0;
- border-top: 1px solid #e1e1e1;
-}
-.navigator-page #ftlinks {
- margin-top: 0;
-}
-.measures-page #footer {
- left: 0;
-}
+++ /dev/null
-@import "../variables";
-@import "../mixins";
-
-@import "config";
-
-
-.navigator { }
-
-
-.navigator-element() {
- position: fixed;
- z-index: 2;
- .box-sizing(border-box);
-}
-
-.navigator-header {
- .navigator-element;
- top: @navigatorTopOffset;
- left: 0;
- .size(100%, @navigatorHeaderHeight);
-}
-
-.navigator-filters {
- .navigator-element;
- top: @navigatorTopOffset + @navigatorHeaderHeight;
- left: 0;
- .size(100%, @navigatorFiltersHeight);
-}
-
-.navigator-facets {
- .navigator-element;
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
- left: 0;
- .size(100%, @navigatorFacetsHeight);
-}
-
-.navigator-results {
- .navigator-element;
- .box-sizing(content-box);
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorStatusHeight;
- bottom: 0;
- left: 0;
- width: @navigatorResultsWidth - 1px;
-}
-
-.navigator-details {
- .navigator-element;
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
- bottom: @navigatorBottomOffset;
- left: @navigatorResultsWidth;
- right: 0;
-}
-
-.navigator-actions {
- .navigator-element;
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
- left: 0;
- .size(@navigatorResultsWidth, @navigatorStatusHeight);
-}
-
-.navigator-notes {
- .navigator-element;
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
- left: 0;
- .size(100%, @navigatorNotesHeight);
- display: none;
-}
-
-
-.measures-page {
- .navigator-results {
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
- left: 0;
- bottom: 36px;
- width: 100%;
- }
-}
-
-
-.navigator-with-notes {
-
- .navigator-actions,
- .navigator-details {
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorNotesHeight;
- }
-
- .navigator-results {
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorNotesHeight + @navigatorStatusHeight;
- }
-
- .navigator-notes {
- display: block;
- }
-
- .navigator-details .source_title {
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorNotesHeight;
- }
-
- .navigator-fetching.navigator-results-list:before {
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorStatusHeight + @navigatorNotesHeight;
- }
-
-}
-
-
-.navigator-fetching {
- &:before {
- content: " ";
- position: absolute;
- z-index: 3;
- top: 0; bottom: 0; left: 0; right: 0;
- background: #fff url(../images/loading.gif) no-repeat 4px 4px;
- }
-
- &#tab-issue-rule {
- position: relative;
-
- &:before {
- z-index: 3;
- background-color: #EFEFEF;
- }
- }
-
- &.code-issue-actions {
- position: relative;
-
- &:before {
- z-index: 3;
- background-color: #E4ECF3;
- }
- }
-}
-
-
-.navigator-page-loader {
- padding: @navigatorPadding 0 0 @navigatorPadding;
-}
-
-
-
-// Header
-.navigator-header {
- padding: 0 @navigatorPadding;
- border-bottom: 1px solid @navigatorBorderColor;
- background-color: @navigatorBarBackground;
- font-size: 0;
-}
-
-.navigator-header-favorite {
- padding-left: 46px;
-}
-
-.navigator-header-title {
- display: inline-block;
- vertical-align: middle;
- font-size: 20px;
- line-height: @navigatorHeaderHeight;
-}
-
-.navigator-header-title-note {
- vertical-align: middle;
- color: #777;
- font-size: @smallFontSize;
-}
-
-.navigator-header-description {
- display: inline-block;
- vertical-align: middle;
- margin-left: 16px;
- font-size: @smallFontSize;
- font-style: italic;
-}
-
-.navigator-header-actions {
- margin-left: 20px;
-
- & > a {
- vertical-align: middle;
- margin: 0 8px;
- font-size: @smallFontSize;
- }
-}
-
-.navigator-header-menu-toggle {
- display: inline-block;
- vertical-align: top;
- height: 36px;
- margin-right: 10px;
- margin-left: -10px;
- padding: 10px;
- border-right: 1px solid transparent;
- .box-sizing(border-box);
- cursor: pointer;
- .trans;
-
- &:hover {
- background-color: @navigatorHover;
- }
-
- &.active {
- border-color: #cdcdcd;
- background-color: #fff;
- }
-
- [class^="icon-"], [class*=" icon-"] {
- font-size: 16px;
- }
-}
-
-
-
-// Notes
-.navigator-notes {
- padding: 0 @navigatorPadding;
- border-bottom: 1px solid @navigatorBorderColor;
- background-color: @navigatorBarBackground;
-
- color: #777;
- font-size: @smallFontSize;
- line-height: @navigatorNotesHeight;
-
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-
-
-// Facets
-.navigator-facets {
- padding: @navigatorPadding;
- border-bottom: 1px solid @navigatorBorderColor;
- background-color: @navigatorBarBackground;
-}
-
-.navigator-facets-list {
-
-}
-
-.navigator-facets-list-item {
- font-size: 0;
-}
-
-.navigator-facets-list-item + .navigator-facets-list-item {
- margin-top: @navigatorPadding;
-}
-
-.navigator-facets-list-item-name {
- display: inline-block;
- vertical-align: middle;
- margin-right: @navigatorPadding;
- font-size: @baseFontSize;
- font-weight: bold;
- text-transform: uppercase;
-}
-
-.navigator-facets-list-item-options {
- display: inline-block;
- vertical-align: middle;
-}
-
-.navigator-facets-list-item-option {
- display: inline-block;
- vertical-align: middle;
- margin: 0 @navigatorPadding;
- font-size: @baseFontSize;
- cursor: pointer;
-
- &:hover {
- .navigator-facets-list-item-option-name {
- text-decoration: underline;
- }
- }
-
- &.active {
- .navigator-facets-list-item-option-name {
- font-weight: bold;
- text-decoration: underline;
- }
- }
-}
-
-.navigator-facets-list-item-option-name {
-
-}
-
-.navigator-facets-list-item-option-stat {
- &:before { content: "("; }
- &:after { content: ")"; }
-}
-
-
-
-// Results
-.navigator-results {
- border-right: 1px solid @navigatorBorderLightColor;
- background-color: @white;
- overflow-x: hidden;
- overflow-y: auto;
-}
-
-.navigator-results-list {
-
- & > li {
- padding: @navigatorPadding / 2 0;
- border-top: 1px solid transparent;
- cursor: pointer;
- .trans;
-
- .line {
- padding: @navigatorPadding / 2 @navigatorPadding;
- line-height: 1.2;
- }
-
- .line-small {
- font-size: 11px;
- line-height: 14px;
- }
-
- .line-right {
- float: right;
- }
-
- .line-nowrap {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
-
- &:hover {
- background-color: @navigatorBarBackground;
- }
-
- &.active {
- 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-color: @navigatorBorderLightColor;
- }
-
- & > li.active + li {
- border-top-color: #4B9FD5;
- }
-
- &.navigator-fetching {
-
- & > li .line-nowrap {
- text-overflow: clip; /* thanks to FF */
- }
-
- &:before {
- position: fixed;
- z-index: 3;
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorStatusHeight;
- bottom: 0;
- left: 0;
- width: @navigatorResultsWidth - 1px;
- }
- }
-}
-
-.navigator-results-no-results {
- padding-top: 20% !important;
- background: #fff !important;
- color: #999;
- cursor: default !important;
- text-align: center;
-}
-
-
-
-// Details
-.navigator-details {
- padding: @navigatorPadding;
- background-color: @white;
- overflow: auto;
-
- .issues-page & {
- padding-top: 62px;
- padding-right: 0;
- }
-
- &.loading {
- background: @white url("../images/loading.gif") no-repeat 4px 2px;
- }
-
- .code-issue-name {
- border-bottom: none;
- }
-
- .code-issue-actions {
- background-color: #E4ECF3;
- }
-
- .source_title {
- position: fixed;
- z-index: 3;
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight;
- left: @navigatorResultsWidth;
- right: 0;
- padding: @navigatorPadding;
- border-bottom: 1px solid @navigatorBorderLightColor;
- background-color: #fff;
- }
-
- .source {
- padding-right: 10px;
-
- & > table {
- border: 1px solid #DDD;
- }
- }
-
- .scm .author {
- display: inline-block;
- vertical-align: middle;
- max-width: 100px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
-}
-
-
-
-// Status
-.navigator-actions {
- padding: 0 @navigatorPadding 0 0;
-
- border-right: 1px solid @navigatorBorderLightColor;
- border-bottom: 1px solid @navigatorBorderLightColor;
- background-color: @navigatorBarBackground;
- font-size: @smallFontSize;
-
- strong { font-weight: bold; }
-}
-
-.navigator-actions-order {
- float: left;
- padding: 0 @navigatorPadding;
- line-height: @navigatorStatusHeight;
- cursor: pointer;
- .trans;
-
- &:hover {
- background-color: @navigatorBarBackground;
- }
-}
-
-.navigator-actions-order-choices {
- .navigator-element;
- top: @navigatorTopOffset + @navigatorHeaderHeight + @navigatorFiltersHeight + @navigatorStatusHeight;
- left: 0;
- min-width: @navigatorResultsWidth / 2;
- background-color: #fff;
- border-bottom: 1px solid @navigatorBorderLightColor;
- border-right: 1px solid @navigatorBorderLightColor;
- overflow: hidden;
- display: none;
-
- & > li {
- height: @navigatorStatusHeight;
- line-height: @navigatorStatusHeight;
- padding: 0 10px;
- cursor: pointer;
- .trans;
-
- &:hover {
- background-color: @navigatorBarBackground;
- }
- }
-
- &.open {
- display: block;
- }
-}
-
-.navigator-actions-total {
- float: right;
- line-height: @navigatorStatusHeight - 4px;
-}
-
-.navigator-actions-bulk {
- position: relative;
- top: -1px;
- margin-left: 8px;
- font-size: 16px;
- text-decoration: none;
-}
-
-
-
-// Footer
-.navigator-page #footer {
- .navigator-element;
- bottom: 0;
- left: @navigatorResultsWidth;
- right: 0;
- margin: 0;
- border-top: 1px solid @navigatorBorderLightColor;
-}
-
-.navigator-page #ftlinks {
- margin-top: 0;
-}
-
-.measures-page #footer {
- left: 0;
-}
+++ /dev/null
-/*
- * Fonts
- */
-/*
- * Colors
- */
-/*
- * Icons
- */
-/*
- * Transitions
- */
+++ /dev/null
-@import "../variables";
-
-// Layout
-@navigatorTopOffset: 30px;
-@navigatorBottomOffset: 35px;
-
-@navigatorHeaderHeight: 37px;
-@navigatorFiltersHeight: 37px;
-@navigatorFacetsHeight: 90px;
-@navigatorStatusHeight: 30px;
-@navigatorNotesHeight: 20px;
-
-@navigatorResultsWidth: 320px;
-
-@navigatorPadding: 10px;
-
-
-// Colors
-@navigatorBarBackground: @grey;
-@navigatorBorderColor: @darkGrey;
-@navigatorBorderLightColor: lighten(@darkGrey, 8%);
-
-
-@navigatorHover: darken(@grey, 5%);
-@navigatorFilterPadding: @navigatorPadding;
+++ /dev/null
-/*
- * Fonts
- */
-/*
- * Colors
- */
-/*
- * Icons
- */
-/*
- * Transitions
- */
-.navigator-filters {
- border-bottom: 1px solid #cdcdcd;
- background-color: #efefef;
- font-size: 0;
-}
-.navigator-filters-list {
- display: inline-block;
- vertical-align: middle;
- margin-bottom: -1px;
- font-size: 0;
-}
-.navigator-filter-submit,
-.navigator-filter-new-search {
- vertical-align: middle;
- margin-left: 15px;
- font-size: 13px;
-}
-.navigator-filter-list-favorite {
- position: relative;
- padding-left: 36px;
- overflow: hidden;
-}
-.navigator-filters-actions {
- display: inline-block;
- vertical-align: middle;
- margin-left: 20px;
- font-size: 13px;
-}
-.navigator-filter {
- display: inline-block;
- vertical-align: top;
- height: 36px;
- line-height: 36px;
- margin: -1px 0 0;
- padding: 0 10px;
- border: 1px solid transparent;
- white-space: nowrap;
- cursor: pointer;
- transition: background 0.3s ease;
-}
-.navigator-filter:hover {
- background-color: #e2e2e2;
-}
-.navigator-filter.active {
- border-color: #cdcdcd;
- background: #fff;
-}
-.navigator-filter-disabled {
- display: none;
-}
-.navigator-filter-optional {
- padding-right: 0;
-}
-.navigator-filter-inline,
-.navigator-filter-read-only,
-.navigator-filter-inactive {
- cursor: default;
-}
-.navigator-filter-inline:hover,
-.navigator-filter-read-only:hover,
-.navigator-filter-inactive:hover,
-.navigator-filter-inline.active,
-.navigator-filter-read-only.active,
-.navigator-filter-inactive.active {
- border-color: transparent;
- background: transparent;
-}
-.navigator-filter-inline .navigator-filter-label:after {
- content: "";
-}
-.navigator-filter-inactive {
- opacity: 0.5;
-}
-.navigator-filter-label {
- display: inline-block;
- vertical-align: middle;
- margin-right: 5px;
- color: #333;
- font-size: 13px;
-}
-.navigator-filter-label:after {
- content: ":";
-}
-.navigator-filter-value {
- display: inline-block;
- vertical-align: middle;
- max-width: 120px;
- color: #333;
- font-size: 13px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-.navigator-filter-value.default {
- color: #666;
-}
-.navigator-filter-disable {
- display: inline-block;
- vertical-align: middle;
- width: 20px;
- height: 20px;
- line-height: 20px;
- margin: 0 0 0 5px;
- font-size: 18px;
- text-align: center;
- transition: background 0.3s ease;
-}
-.navigator-filter-disable:hover {
- background-color: #d0d0d0;
-}
-.navigator-filter-range-input {
- width: 120px;
-}
-.navigator-filter-details {
- display: none;
- position: absolute;
- z-index: 1200;
- min-width: 100px;
- border: 1px solid #cdcdcd;
- background: #fff;
- box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
- font-size: 13px;
- transition: opacity 0.3s ease;
-}
-.navigator-filter-details.active {
- display: block;
-}
-.navigator-filter-details-inner {
- max-width: 300px;
- padding: 5px 10px;
-}
-.navigator-filter-details-inner .select2-container,
-.navigator-filter-details-inner input {
- margin: 5px 0;
- vertical-align: middle;
-}
-.navigator-filter-select-list {
- min-width: 150px;
- max-width: 300px;
- max-height: 182px;
- padding: 5px 0;
- overflow-y: auto;
-}
-.navigator-filter-select-list::-webkit-scrollbar {
- width: 11px;
- background-color: transparent;
- background-clip: content-box;
-}
-.navigator-filter-select-list::-webkit-scrollbar-button {
- background-color: transparent;
-}
-.navigator-filter-select-list::-webkit-scrollbar-corner {
- background-color: transparent;
-}
-.navigator-filter-select-list::-webkit-scrollbar-thumb {
- border: solid transparent;
- border-width: 1px 1px 1px 2px;
- background-color: #c5c5c5;
- background-clip: content-box;
-}
-.navigator-filter-select-list::-webkit-scrollbar-thumb:hover {
- background-color: #bfbfbf;
-}
-.navigator-filter-select-list::-webkit-scrollbar-track {
- border: solid #fff;
- border-width: 1px 1px 1px 2px;
- background-color: #fff;
- background-clip: content-box;
-}
-.navigator-filter-select-list::-webkit-scrollbar-track-piece {
- border-left: 1px solid #ccc;
- background-color: transparent;
-}
-.navigator-filter-select-list label {
- display: block;
- padding: 5px 10px;
- transition: background 0.3s ease;
- cursor: pointer;
- white-space: nowrap;
- overflow: hidden;
-}
-.navigator-filter-select-list label:hover,
-.navigator-filter-select-list label.current {
- background-color: #ededed;
-}
-.navigator-filter-select-list label > input[type=checkbox] {
- vertical-align: baseline;
- cursor: pointer;
-}
-.navigator-filter-select-list label > img {
- vertical-align: text-bottom;
-}
-.navigator-filter-select-list label > span {
- display: inline-block;
- vertical-align: top;
- width: 86%;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-.navigator-filter-select-list label.special {
- font-style: italic;
-}
-.navigator-filter-select-list label.special > span {
- text-decoration: underline;
-}
-.navigator-filter-select-list label.inactive {
- cursor: default;
- opacity: 0.5;
-}
-.navigator-filter-select-list label.inactive:hover {
- background-color: transparent;
-}
-.navigator-filter-select-list .single {
- padding: 5px 10px;
-}
-.navigator-filter-select-list .line {
- height: 1px;
- margin: 5px 0;
- background: #cdcdcd;
-}
-.navigator-filter-select-list:not(.hidden) + .navigator-filter-select-list {
- margin-top: 5px;
- border-top: 1px solid #cdcdcd;
-}
-.navigator-filter-search {
- position: relative;
- margin: 10px 26px 10px 10px;
-}
-.navigator-filter-search input {
- width: 100%;
- height: 26px;
- padding: 0 7px;
- border: 1px solid #cdcdcd;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-.fetching .navigator-filter-search:after {
- content: ' ';
- position: absolute;
- top: 6px;
- right: -21px;
- display: block;
- width: 16px;
- height: 16px;
- background: #ffffff url(../images/loading.gif) no-repeat center center;
-}
-.navigator-filter-load-more {
- display: none;
- height: 26px;
- line-height: 26px;
- background-color: #efefef;
- text-align: center;
- cursor: pointer;
- transition: background 0.3s ease;
-}
-.navigator-filter-load-more:hover {
- background-color: #dddddd;
-}
-.navigator-filter-favorite {
- position: absolute;
- top: -100%;
- left: 0;
- border-top: none;
-}
-.navigator-filter-favorite-toggle {
- width: 16px;
- height: 37px;
- background: url('../images/navigator/favorite-filters.png') no-repeat center center;
-}
-@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
- .navigator-filter-favorite-toggle {
- background-image: url(../images/navigator/favorite-filters@2x.png);
- background-size: 16px 14px;
- }
-}
-.navigator-filter-more-criteria {
- font-size: 13px;
-}
+++ /dev/null
-@import "../variables";
-@import "../mixins";
-
-@import "config";
-
-
-.navigator-filters {
- border-bottom: 1px solid @darkGrey;
- background-color: @navigatorBarBackground;
- font-size: 0;
-}
-
-.navigator-filters-list {
- display: inline-block;
- vertical-align: middle;
- margin-bottom: -1px;
- font-size: 0;
-}
-
-.navigator-filter-submit,
-.navigator-filter-new-search {
- vertical-align: middle;
- margin-left: 15px;
- font-size: @baseFontSize;
-}
-
-.navigator-filter-list-favorite {
- position: relative;
- padding-left: 36px;
- overflow: hidden;
-}
-
-.navigator-filters-actions {
- display: inline-block;
- vertical-align: middle;
- margin-left: 20px;
- font-size: @baseFontSize;
-}
-
-.navigator-filter {
- display: inline-block;
- vertical-align: top;
- height: @navigatorFiltersHeight - 1px;
- line-height: @navigatorFiltersHeight - 1px;
- margin: -1px 0 0;
- padding: 0 @navigatorFilterPadding;
- border: 1px solid transparent;
- white-space: nowrap;
- cursor: pointer;
- transition: background 0.3s ease;
-
- &:hover {
- background-color: @navigatorHover;
- }
-
- &.active {
- border-color: @darkGrey;
- background: #fff;
- }
-}
-
-.navigator-filter-disabled {
- display: none;
-}
-
-.navigator-filter-optional {
- padding-right: 0;
-}
-
-.navigator-filter-inline,
-.navigator-filter-read-only,
-.navigator-filter-inactive {
- cursor: default;
-
- &:hover,
- &.active {
- border-color: transparent;
- background: transparent;
- }
-}
-
-.navigator-filter-inline .navigator-filter-label:after {
- content: "";
-}
-
-.navigator-filter-inactive {
- opacity: 0.5;
-}
-
-.navigator-filter-label {
- display: inline-block;
- vertical-align: middle;
- margin-right: 5px;
- color: #333;
- font-size: @baseFontSize;
-
- &:after { content: ":"; }
-}
-
-.navigator-filter-value {
- display: inline-block;
- vertical-align: middle;
- max-width: 120px;
- color: #333;
- font-size: @baseFontSize;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-
- &.default {
- color: #666;
- }
-}
-
-.navigator-filter-disable {
- display: inline-block;
- vertical-align: middle;
- .square(20px);
- line-height: 20px;
- margin: 0 0 0 5px;
- font-size: 18px;
- text-align: center;
- transition: background 0.3s ease;
-
- &:hover {
- background-color: darken(@navigatorHover, 7%);
- }
-}
-
-.navigator-filter-range-input {
- width: 120px;
-}
-
-.navigator-filter-details {
- display: none;
- position: absolute;
- z-index: 1200;
- min-width: 100px;
- border: 1px solid @darkGrey;
- background: #fff;
- box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
- font-size: @baseFontSize;
- transition: opacity 0.3s ease;
-
- &.active {
- display: block;
- }
-}
-
-.navigator-filter-details-inner {
- max-width: 300px;
- padding: 5px @navigatorFilterPadding;
-
- .select2-container,
- input {
- margin: 5px 0;
- vertical-align: middle;
- }
-}
-
-.navigator-filter-select-list {
- min-width: 150px;
- max-width: 300px;
- max-height: 182px;
- padding: 5px 0;
- overflow-y: auto;
- .webkit-scrollbar;
-
- label {
- display: block;
- padding: 5px @navigatorFilterPadding;
- transition: background 0.3s ease;
- cursor: pointer;
- white-space: nowrap;
- overflow: hidden;
-
- &:hover,
- &.current {
- background-color: darken(#fff, 7%);
- }
-
- & > input[type=checkbox] {
- vertical-align: baseline;
- cursor: pointer;
- }
-
- & > img {
- vertical-align: text-bottom;
- }
-
- & > span {
- display: inline-block;
- vertical-align: top;
- width: 86%;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
-
- &.special {
- font-style: italic;
-
- & > span {
- text-decoration: underline;
- }
- }
-
- &.inactive {
- cursor: default;
- opacity: 0.5;
-
- &:hover {
- background-color: transparent;
- }
- }
- }
-
- .single {
- padding: 5px @navigatorFilterPadding;
- }
-
- .line {
- height: 1px;
- margin: 5px 0;
- background: @darkGrey;
- }
-}
-
-.navigator-filter-select-list:not(.hidden) + .navigator-filter-select-list {
- margin-top: 5px;
- border-top: 1px solid @darkGrey;
-}
-
-.navigator-filter-search {
- position: relative;
- margin: @navigatorFilterPadding 26px @navigatorFilterPadding @navigatorFilterPadding;
-
- input {
- .size(100%, 26px);
- padding: 0 7px;
- border: 1px solid @darkGrey;
- .box-sizing(border-box);
- }
-
- .fetching &:after {
- content: ' ';
- position: absolute;
- top: 6px; right: -21px;
- display: block;
- .square(16px);
- background: #fff url(../images/loading.gif) no-repeat center center;
- }
-}
-
-.navigator-filter-load-more {
- display: none;
- height: 26px;
- line-height: 26px;
- background-color: @grey;
- text-align: center;
- cursor: pointer;
- transition: background 0.3s ease;
-
- &:hover {
- background-color: darken(@grey, 7%);
- }
-}
-
-.navigator-filter-favorite {
- position: absolute;
- top: -100%; left: 0;
- border-top: none;
-}
-
-.navigator-filter-favorite-toggle {
- .size(16px, @navigatorFiltersHeight);
- background: url('../images/navigator/favorite-filters.png') no-repeat center center;
-
- @media @retina {
- background-image: url(../images/navigator/favorite-filters@2x.png);
- background-size: 16px 14px;
- }
-}
-
-.navigator-filter-more-criteria {
- font-size: @baseFontSize;
-}
+++ /dev/null
-/*
- * Fonts
- */
-/*
- * Colors
- */
-/*
- * Icons
- */
-/*
- * Transitions
- */
-.quality-gates-navigator .navigator-header {
- left: 230px;
- border-color: #cdcdcd;
-}
-.quality-gates-navigator .navigator-header .spinner {
- margin-top: 9px;
-}
-.quality-gates-navigator .navigator-actions {
- top: 30px;
- height: 37px;
- width: 230px;
- padding: 0 10px;
- border-color: #cdcdcd;
- border-bottom-color: #efefef;
-}
-.quality-gates-navigator .navigator-actions .navigator-header-title {
- font-size: 13px;
- font-weight: bold;
- text-transform: uppercase;
-}
-.quality-gates-navigator .navigator-results {
- top: 67px;
- width: 229px;
- border-color: #cdcdcd;
-}
-.quality-gates-navigator .navigator-details {
- top: 67px;
- left: 230px;
- padding: 10px;
-}
-.quality-gates-page #footer {
- left: 230px;
-}
-.quality-gates-nav {
- background-color: #efefef;
-}
-.quality-gates-nav .navigator-results-list > li {
- border-color: transparent;
-}
-.quality-gates-nav .navigator-results-list > li:hover:not(.active):not(.empty) {
- background-color: #e1e1e1;
-}
-.quality-gates-nav .navigator-results-list > li.active {
- border-color: #4B9FD5;
-}
-.quality-gates-nav .navigator-results-list > li.empty {
- cursor: default;
-}
-.quality-gates-nav .navigator-results-list > li .line {
- padding-top: 2px;
- padding-bottom: 2px;
-}
-.quality-gates-nav .navigator-results-list > li .subtitle {
- text-transform: lowercase;
-}
-.quality-gate-section + .quality-gate-section {
- margin-top: 10px;
- padding-top: 20px;
-}
-.quality-gate-section-empty + .quality-gate-section {
- border-top: 1px solid #e1e1e1;
-}
-.quality-gate-section-name {
- margin-bottom: 10px;
- font-weight: bold;
- text-transform: uppercase;
-}
-.quality-gate-introduction {
- margin-bottom: 20px;
-}
-.quality-gate-new-condition {
- margin-bottom: 10px;
-}
-.quality-gate-condition-actions {
- position: relative;
-}
+++ /dev/null
-@import "variables";
-@import "mixins";
-@import "navigator/config";
-
-@qualityGateSidebarWidth: 230px;
-
-.quality-gates-navigator {
-
- .navigator-header {
- left: @qualityGateSidebarWidth;
- border-color: @navigatorBorderColor;
-
- .spinner { margin-top: 9px; }
- }
-
- .navigator-actions {
- top: @navigatorTopOffset;
- height: @navigatorHeaderHeight;
- width: @qualityGateSidebarWidth;
- padding: 0 @navigatorPadding;
- border-color: @navigatorBorderColor;
- border-bottom-color: @navigatorBarBackground;
-
- .navigator-header-title {
- font-size: 13px;
- font-weight: bold;
- text-transform: uppercase;
- }
- }
-
- .navigator-results {
- top: @navigatorTopOffset + @navigatorHeaderHeight;
- width: @qualityGateSidebarWidth - 1px;
- border-color: @navigatorBorderColor;
- }
-
- .navigator-details {
- top: @navigatorTopOffset + @navigatorHeaderHeight;
- left: @qualityGateSidebarWidth;
- padding: @navigatorPadding;
- }
-
-}
-
-.quality-gates-page #footer {
- left: @qualityGateSidebarWidth;
-}
-
-
-.quality-gates-nav {
- background-color: @navigatorBarBackground;
-
- .navigator-results-list {
-
- & > li {
- border-color: transparent;
-
- &:hover:not(.active):not(.empty) {
- background-color: @navigatorBorderLightColor;
- }
-
- &.active {
- border-color: #4B9FD5;
- }
-
- &.empty {
- cursor: default;
- }
-
- .line {
- padding-top: 2px;
- padding-bottom: 2px;
- }
-
- .subtitle {
- text-transform: lowercase;
- }
- }
- }
-}
-
-
-.quality-gate-section + .quality-gate-section {
- margin-top: @navigatorPadding;
- padding-top: 2 * @navigatorPadding;
-}
-
-.quality-gate-section-empty + .quality-gate-section {
- border-top: 1px solid @navigatorBorderLightColor;
-}
-
-.quality-gate-section-name {
- margin-bottom: @navigatorPadding;
- font-weight: bold;
- text-transform: uppercase;
-}
-
-
-.quality-gate-introduction {
- margin-bottom: 2 * @navigatorPadding;
-}
-
-
-.quality-gate-new-condition {
- margin-bottom: @navigatorPadding;
-}
-
-.quality-gate-condition-actions {
- position: relative;
-}
+++ /dev/null
-.select-list-container {
- min-width: 500px;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-
-.select-list-control {
- margin-bottom: 10px;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-
-.select-list-list-container {
- border: 1px solid #bfbfbf;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-
-.select-list-list-container.loading .select-list-list {
- display: none;
-}
-
-.select-list-list-container-readonly {
- border: none;
-}
-
-.select-list-list-container-readonly .select-list-list {
- overflow: visible;
-}
-
-.select-list-list-container-readonly .select-list-list > li {
- border: none;
-}
-
-.select-list-list {
- overflow-x: hidden;
-}
-
- .select-list-list > li {
- position: relative;
- display: block;
- margin-top: -1px;
- padding: 5px 10px;
- border-top: 1px solid #e0e0e0;
- color: #404040;
- transition: -webkit-transform 0.3s ease;
- transition: -ms-transform 0.3s ease;
- transition: transform 0.3s ease;
- }
-
- .select-list-list > li.removed {
- -webkit-transform: translateX(100%);
- -moz-transform: translateX(100%);
- -ms-transform: translateX(100%);
- -o-transform: translateX(100%);
- transform: translateX(100%);
- }
-
- .select-list-list > li.added {
- -webkit-transform: translateX(-100%);
- -moz-transform: translateX(-100%);
- -ms-transform: translateX(-100%);
- -o-transform: translateX(-100%);
- transform: translateX(-100%);
- }
-
- .select-list-list > li.progress {
- background: url(../images/loading.gif) no-repeat 10px 5px;
- }
-
- .select-list-list > li.progress .select-list-list-checkbox {
- visibility: hidden;
- }
-
- .select-list-list > li.empty-message {
- padding: 6px 5px;
- border: 1px solid #ddd;
- background-color: #efefef;
- }
-
-
-.select-list-list-checkbox {
- display: inline-block;
- vertical-align: middle;
- margin-right: 10px;
-}
-
-.select-list-list-item {
- display: inline-block;
- vertical-align: middle;
-}
-
-.select-list-control {
- height: 27px;
-}
-
-.select-list-check-control {
- float: left;
-}
-
-.select-list-check-control.disabled {
- filter: alpha(opacity=60);
- opacity: 0.6;
-}
-
-.select-list-check-control.disabled .select-list-control-button {
- background-color: #fff !important;
-}
-
-.select-list-control-button {
- position: relative;
- z-index: 1;
- display: inline-block;
- vertical-align: middle;
- width: 110px;
- height: 27px;
- line-height: 25px;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- border: 1px solid #bfbfbf;
- text-align: center;
- cursor: pointer;
- transition: background-color 0.2s ease;
-}
-
-.select-list-control-button:hover {
- background-color: #f6f6f6;
-}
-
-.select-list-control-button:active,
-.select-list-control-button.active {
- z-index: 2;
- background-color: #efefef;
-}
-
-.select-list-control-button + .select-list-control-button {
- margin-left: -1px;
-}
-
-
-.select-list-search-control {
- position: relative;
- float: right;
- height: 27px;
-}
-
-.select-list-search-control input {
- width: 170px;
- height: 100%;
- line-height: 27px\9;
- padding: 0 40px 0 10px;
- border: 1px solid #bfbfbf;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- transition: all 0.3s ease;
-}
-
-.select-list-search-control input:focus {
- outline: none;
- box-shadow: none;
-}
-
-.select-list-search-control input::-ms-clear {
- display: none;
-}
-
-.select-list-search-control-clear {
- position: absolute;
- top: 2px;
- right: 2px;
- width: 23px;
- height: 23px;
- line-height: 24px;
- background-color: #e0e0e0;
- color: #fff;
- cursor: pointer;
- font-size: 18px;
- text-align: center;
- transition: all 0.3s ease;
-}
-
- .select-list-search-control.disabled .select-list-search-control-clear {
- filter: alpha(opacity=0);
- opacity: 0;
- }
-
- .select-list-search-control-clear:hover {
- background-color: #d6d6d6;
- }
+++ /dev/null
-/*
- * Fonts
- */
-/*
- * Colors
- */
-/*
- * Icons
- */
-/*
- * Transitions
- */
-.select2-container {
- vertical-align: middle;
-}
-.select2-container .select2-choice {
- height: 20px;
- line-height: 20px;
- border-color: #cdcdcd;
- border-radius: 0;
- background: #fff;
- text-align: left;
-}
-.select2-container .select2-choice,
-.select2-container .select2-choices {
- transition: border-color 0.3s ease;
-}
-.select2-container .select2-choice abbr {
- top: 4px;
-}
-.select2-container .select2-choice div {
- width: 19px;
- border: none;
- border-radius: 0;
- background: #fff;
-}
-.select2-container .select2-choice div b {
- top: 4px;
- background-position: 1px -1px;
-}
-.select2-dropdown-open .select2-choice div b {
- background-position: -17px -1px;
-}
-.select2-container-active .select2-choice,
-.select2-container-active .select2-choices {
- border-color: #4b9fd5;
- box-shadow: none;
-}
-.select2-dropdown-open .select2-choice {
- box-shadow: none;
-}
-.select2-drop {
- border-color: #cdcdcd;
- border-radius: 0;
-}
-.select2-drop-active {
- border-color: #4b9fd5;
-}
-.select2-dropdown-open.select2-drop-above .select2-choice,
-.select2-dropdown-open.select2-drop-above .select2-choices {
- border-color: #4b9fd5;
- border-radius: 0;
- background: #fff;
-}
-.select2-drop.select2-drop-above.select2-drop-active {
- border-color: #4b9fd5;
- border-radius: 0;
-}
-.select2-drop.select2-drop-above .select2-search input {
- margin-top: 0;
-}
-.select2-results {
- margin: 0;
- padding: 5px 0;
- border-top: 1px solid #cdcdcd;
-}
-.select2-results .select2-result-label {
- height: 20px;
- line-height: 20px;
- padding: 0 8px;
- color: #444444;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-.select2-results .select2-no-results,
-.select2-results .select2-searching,
-.select2-results .select2-selection-limit,
-.select2-more-results.select2-active {
- height: 20px;
- line-height: 20px;
- padding: 0 10px;
-}
-.select2-results .select2-highlighted {
- background: transparent;
- color: #444444;
-}
-.select2-results .select2-highlighted .select2-result-label {
- background: #e2e2e2;
-}
-.select2-search {
- padding: 4px;
-}
-.select2-search input {
- height: 20px;
- padding: 0 7px;
- border-color: #cdcdcd;
- background: #fff !important;
-}
-.select2-container-multi .select2-choices {
- min-height: 19px;
- padding-bottom: 1px;
- border-color: #cdcdcd;
- background: #fff;
-}
-.select2-container-multi.select2-container-active .select2-choices {
- border-color: #4b9fd5;
- box-shadow: none;
-}
-.select2-container-multi .select2-choices .select2-search-field input {
- height: 16px;
- padding: 0 3px;
-}
-.select2-container-multi .select2-choices .select2-search-choice {
- margin: 1px 1px 0 1px;
- padding: 1px 5px 2px 18px;
- border-radius: 0;
- border-color: #cdcdcd;
- background: #efefef;
- box-shadow: none;
-}
-.select2-search-choice-close {
- top: 2px;
-}
-.select2-search-choice-close,
-.select2-container .select2-choice abbr,
-.select2-container .select2-choice div b {
- background-image: url('../images/select2.png');
-}
-.select2-search input.select2-active,
-.select2-more-results.select2-active,
-.select2-container-multi .select2-choices .select2-search-field input.select2-active {
- background-image: url('../images/spinner.gif');
-}
-@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
- .select2-search-choice-close,
- .select2-container .select2-choice abbr,
- .select2-container .select2-choice div b {
- background-image: url('../images/select2x2.png') !important;
- }
-}
+++ /dev/null
-@import "mixins";
-@import "variables";
-
-@imagesPath: '../images/select2.png';
-@imagesPath2x: '../images/select2x2.png';
-@spinnerPath: '../images/spinner.gif';
-
-.select2-container {
- vertical-align: middle;
-}
-
-.select2-container .select2-choice {
- height: 20px;
- line-height: 20px;
- border-color: @darkGrey;
- border-radius: 0;
- background: #fff;
- text-align: left;
-}
-
-.select2-container .select2-choice,
-.select2-container .select2-choices {
- .trans(border-color);
-}
-
-.select2-container .select2-choice abbr {
- top: 4px;
-}
-
-.select2-container .select2-choice div {
- width: 19px;
- border: none;
- border-radius: 0;
- background: #fff;
-}
-
-.select2-container .select2-choice div b {
- top: 4px;
- background-position: 1px -1px;
-}
-
-.select2-dropdown-open .select2-choice div b {
- background-position: -17px -1px;
-}
-
-
-.select2-container-active .select2-choice,
-.select2-container-active .select2-choices {
- border-color: @highlighted;
- box-shadow: none;
-}
-
-.select2-dropdown-open .select2-choice {
- box-shadow: none;
-}
-
-.select2-drop {
- border-color: @darkGrey;
- border-radius: 0;
-}
-
-.select2-drop-active {
- border-color: @highlighted;
-}
-
-.select2-dropdown-open.select2-drop-above .select2-choice,
-.select2-dropdown-open.select2-drop-above .select2-choices {
- border-color: @highlighted;
- border-radius: 0;
- background: #fff;
-}
-
-.select2-drop.select2-drop-above.select2-drop-active {
- border-color: @highlighted;
- border-radius: 0;
-}
-
-.select2-drop.select2-drop-above .select2-search input {
- margin-top: 0;
-}
-
-.select2-results {
- margin: 0;
- padding: 5px 0;
- border-top: 1px solid @darkGrey;
-}
-
-.select2-results .select2-result-label {
- height: 20px;
- line-height: 20px;
- padding: 0 8px;
- color: @baseFontColor;
-
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.select2-results .select2-no-results,
-.select2-results .select2-searching,
-.select2-results .select2-selection-limit,
-.select2-more-results.select2-active {
- height: 20px;
- line-height: 20px;
- padding: 0 10px;
-}
-
-.select2-results .select2-highlighted {
- background: transparent;
- color: @baseFontColor;
-}
-
-.select2-results .select2-highlighted .select2-result-label {
- background: darken(@grey, 5%);
-}
-
-.select2-search {
- padding: 4px;
-}
-
-.select2-search input {
- height: 20px;
- padding: 0 7px;
- border-color: @darkGrey;
- background: #fff !important;
-}
-
-.select2-container-multi .select2-choices {
- min-height: 19px;
- padding-bottom: 1px;
- border-color: @darkGrey;
- background: #fff;
-}
-
-.select2-container-multi.select2-container-active .select2-choices {
- border-color: @highlighted;
- box-shadow: none;
-}
-
-.select2-container-multi .select2-choices .select2-search-field input {
- height: 16px;
- padding: 0 3px;
-}
-
-.select2-container-multi .select2-choices .select2-search-choice {
- margin: 1px 1px 0 1px;
- padding: 1px 5px 2px 18px;
- border-radius: 0;
- border-color: @darkGrey;
- background: @grey;
- box-shadow: none;
-}
-
-.select2-search-choice-close {
- top: 2px;
-}
-
-.select2-search-choice-close,
-.select2-container .select2-choice abbr,
-.select2-container .select2-choice div b {
- background-image: url(@imagesPath);
-}
-
-.select2-search input.select2-active,
-.select2-more-results.select2-active,
-.select2-container-multi .select2-choices .select2-search-field input.select2-active {
- background-image: url(@spinnerPath);
-}
-
-@media @retina {
- .select2-search-choice-close,
- .select2-container .select2-choice abbr,
- .select2-container .select2-choice div b {
- background-image: url(@imagesPath2x) !important;
- }
-}
-
-
-
-
-
-
-
+++ /dev/null
-/*
-Version: 3.2 Timestamp: Mon Sep 10 10:38:04 PDT 2012
-*/
-.select2-container {
- position: relative;
- display: inline-block;
- /* inline-block for ie7 */
- zoom: 1;
- *display: inline;
- vertical-align: top;
-}
-
-.select2-container,
-.select2-drop,
-.select2-search,
-.select2-search input {
- /*
- Force border-box so that % widths fit the parent
- container without overlap because of margin/padding.
-
- More Info : http://www.quirksmode.org/css/box.html
- */
- -moz-box-sizing: border-box; /* firefox */
- -ms-box-sizing: border-box; /* ie */
- -webkit-box-sizing: border-box; /* webkit */
- -khtml-box-sizing: border-box; /* konqueror */
- box-sizing: border-box; /* css3 */
-}
-
-.select2-container .select2-choice {
- background-color: #fff;
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.5, white));
- background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 50%);
- background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 50%);
- background-image: -o-linear-gradient(bottom, #eeeeee 0%, #ffffff 50%);
- background-image: -ms-linear-gradient(top, #eeeeee 0%, #ffffff 50%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
- background-image: linear-gradient(top, #eeeeee 0%, #ffffff 50%);
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- border: 1px solid #aaa;
- display: block;
- overflow: hidden;
- white-space: nowrap;
- position: relative;
- height: 26px;
- line-height: 26px;
- padding: 0 0 0 8px;
- color: #444;
- text-decoration: none;
-}
-
-.select2-container.select2-drop-above .select2-choice {
- border-bottom-color: #aaa;
- -webkit-border-radius: 0px 0px 4px 4px;
- -moz-border-radius: 0px 0px 4px 4px;
- border-radius: 0px 0px 4px 4px;
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.9, white));
- background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 90%);
- background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 90%);
- background-image: -o-linear-gradient(bottom, #eeeeee 0%, white 90%);
- background-image: -ms-linear-gradient(top, #eeeeee 0%, #ffffff 90%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
- background-image: linear-gradient(top, #eeeeee 0%, #ffffff 90%);
-}
-
-.select2-container .select2-choice span {
- margin-right: 26px;
- display: block;
- overflow: hidden;
- white-space: nowrap;
- -o-text-overflow: ellipsis;
- -ms-text-overflow: ellipsis;
- text-overflow: ellipsis;
-}
-
-.select2-container .select2-choice abbr {
- display: block;
- position: absolute;
- right: 26px;
- top: 8px;
- width: 12px;
- height: 12px;
- font-size: 1px;
- background: url('select2.png') right top no-repeat;
- cursor: pointer;
- text-decoration: none;
- border: 0;
- outline: 0;
-}
-
-.select2-container .select2-choice abbr:hover {
- background-position: right -11px;
- cursor: pointer;
-}
-
-.select2-drop {
- background: #fff;
- color: #000;
- border: 1px solid #aaa;
- border-top: 0;
- position: absolute;
- top: 100%;
- -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
- -moz-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
- -o-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
- box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
- z-index: 9999;
- width: 100%;
- margin-top: -1px;
- -webkit-border-radius: 0 0 4px 4px;
- -moz-border-radius: 0 0 4px 4px;
- border-radius: 0 0 4px 4px;
-}
-
-.select2-drop.select2-drop-above {
- -webkit-border-radius: 4px 4px 0px 0px;
- -moz-border-radius: 4px 4px 0px 0px;
- border-radius: 4px 4px 0px 0px;
- margin-top: 1px;
- border-top: 1px solid #aaa;
- border-bottom: 0;
- -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
- -moz-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
- -o-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
- box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
-}
-
-.select2-container .select2-choice div {
- -webkit-border-radius: 0 4px 4px 0;
- -moz-border-radius: 0 4px 4px 0;
- border-radius: 0 4px 4px 0;
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- background: #ccc;
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
- background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
- background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
- background-image: -o-linear-gradient(bottom, #ccc 0%, #eee 60%);
- background-image: -ms-linear-gradient(top, #cccccc 0%, #eeeeee 60%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#eeeeee', GradientType=0);
- background-image: linear-gradient(top, #cccccc 0%, #eeeeee 60%);
- border-left: 1px solid #aaa;
- position: absolute;
- right: 0;
- top: 0;
- display: block;
- height: 100%;
- width: 18px;
-}
-
-.select2-container .select2-choice div b {
- background: url('select2.png') no-repeat 0 1px;
- display: block;
- width: 100%;
- height: 100%;
-}
-
-.select2-search {
- display: inline-block;
- white-space: nowrap;
- z-index: 10000;
- min-height: 26px;
- width: 100%;
- margin: 0;
- padding-left: 4px;
- padding-right: 4px;
-}
-
-.select2-search-hidden {
- display: block;
- position: absolute;
- left: -10000px;
-}
-
-.select2-search input {
- background: #fff url('select2.png') no-repeat 100% -22px;
- background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));
- background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);
- background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);
- background: url('select2.png') no-repeat 100% -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);
- background: url('select2.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);
- background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #ffffff 85%, #eeeeee 99%);
- padding: 4px 20px 4px 5px;
- outline: 0;
- border: 1px solid #aaa;
- font-family: sans-serif;
- font-size: 1em;
- width: 100%;
- margin: 0;
- height: auto !important;
- min-height: 26px;
- -webkit-box-shadow: none;
- -moz-box-shadow: none;
- box-shadow: none;
- border-radius: 0;
- -moz-border-radius: 0;
- -webkit-border-radius: 0;
-}
-
-.select2-drop.select2-drop-above .select2-search input {
- margin-top: 4px;
-}
-
-.select2-search input.select2-active {
- background: #fff url('spinner.gif') no-repeat 100%;
- background: url('spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));
- background: url('spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);
- background: url('spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);
- background: url('spinner.gif') no-repeat 100%, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);
- background: url('spinner.gif') no-repeat 100%, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);
- background: url('spinner.gif') no-repeat 100%, linear-gradient(top, #ffffff 85%, #eeeeee 99%);
-}
-
-.select2-container-active .select2-choice,
-.select2-container-active .select2-choices {
- -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- -moz-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- -o-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- border: 1px solid #5897fb;
- outline: none;
-}
-
-.select2-dropdown-open .select2-choice {
- border: 1px solid #aaa;
- border-bottom-color: transparent;
- -webkit-box-shadow: 0 1px 0 #fff inset;
- -moz-box-shadow: 0 1px 0 #fff inset;
- -o-box-shadow: 0 1px 0 #fff inset;
- box-shadow: 0 1px 0 #fff inset;
- background-color: #eee;
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, white), color-stop(0.5, #eeeeee));
- background-image: -webkit-linear-gradient(center bottom, white 0%, #eeeeee 50%);
- background-image: -moz-linear-gradient(center bottom, white 0%, #eeeeee 50%);
- background-image: -o-linear-gradient(bottom, white 0%, #eeeeee 50%);
- background-image: -ms-linear-gradient(top, #ffffff 0%, #eeeeee 50%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);
- background-image: linear-gradient(top, #ffffff 0%, #eeeeee 50%);
- -webkit-border-bottom-left-radius: 0;
- -webkit-border-bottom-right-radius: 0;
- -moz-border-radius-bottomleft: 0;
- -moz-border-radius-bottomright: 0;
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-}
-
-.select2-dropdown-open .select2-choice div {
- background: transparent;
- border-left: none;
-}
-
-.select2-dropdown-open .select2-choice div b {
- background-position: -18px 1px;
-}
-
-/* results */
-.select2-results {
- margin: 4px 4px 4px 0;
- padding: 0 0 0 4px;
- position: relative;
- overflow-x: hidden;
- overflow-y: auto;
- max-height: 200px;
-}
-
-.select2-results ul.select2-result-sub {
- margin: 0 0 0 0;
-}
-
-.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }
-
-.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }
-
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }
-
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }
-
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }
-
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }
-
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }
-
-.select2-results li {
- list-style: none;
- display: list-item;
-}
-
-.select2-results li.select2-result-with-children > .select2-result-label {
- font-weight: bold;
-}
-
-.select2-results .select2-result-label {
- padding: 3px 7px 4px;
- margin: 0;
- cursor: pointer;
-}
-
-.select2-results .select2-highlighted {
- background: #3875d7;
- color: #fff;
-}
-
-.select2-results li em {
- background: #feffde;
- font-style: normal;
-}
-
-.select2-results .select2-highlighted em {
- background: transparent;
-}
-
-.select2-results .select2-no-results,
-.select2-results .select2-searching,
-.select2-results .select2-selection-limit {
- background: #f4f4f4;
- display: list-item;
-}
-
-/*
-disabled look for already selected choices in the results dropdown
-.select2-results .select2-disabled.select2-highlighted {
- color: #666;
- background: #f4f4f4;
- display: list-item;
- cursor: default;
-}
-.select2-results .select2-disabled {
- background: #f4f4f4;
- display: list-item;
- cursor: default;
-}
-*/
-.select2-results .select2-disabled {
- display: none;
-}
-
-.select2-more-results.select2-active {
- background: #f4f4f4 url('spinner.gif') no-repeat 100%;
-}
-
-.select2-more-results {
- background: #f4f4f4;
- display: list-item;
-}
-
-/* disabled styles */
-
-.select2-container.select2-container-disabled .select2-choice {
- background-color: #f4f4f4;
- background-image: none;
- border: 1px solid #ddd;
- cursor: default;
-}
-
-.select2-container.select2-container-disabled .select2-choice div {
- background-color: #f4f4f4;
- background-image: none;
- border-left: 0;
-}
-
-/* multiselect */
-
-.select2-container-multi .select2-choices {
- background-color: #fff;
- background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
- background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
- background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
- background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
- background-image: -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
- background-image: linear-gradient(top, #eeeeee 1%, #ffffff 15%);
- border: 1px solid #aaa;
- margin: 0;
- padding: 0;
- cursor: text;
- overflow: hidden;
- height: auto !important;
- height: 1%;
- position: relative;
-}
-
-.select2-container-multi .select2-choices {
- min-height: 26px;
-}
-
-.select2-container-multi.select2-container-active .select2-choices {
- -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- -moz-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- -o-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- border: 1px solid #5897fb;
- outline: none;
-}
-
-.select2-container-multi .select2-choices li {
- float: left;
- list-style: none;
-}
-
-.select2-container-multi .select2-choices .select2-search-field {
- white-space: nowrap;
- margin: 0;
- padding: 0;
-}
-
-.select2-container-multi .select2-choices .select2-search-field input {
- color: #666;
- background: transparent !important;
- font-family: sans-serif;
- font-size: 100%;
- height: 15px;
- padding: 5px;
- margin: 1px 0;
- outline: 0;
- border: 0;
- -webkit-box-shadow: none;
- -moz-box-shadow: none;
- -o-box-shadow: none;
- box-shadow: none;
-}
-
-.select2-container-multi .select2-choices .select2-search-field input.select2-active {
- background: #fff url('spinner.gif') no-repeat 100% !important;
-}
-
-.select2-default {
- color: #999 !important;
-}
-
-.select2-container-multi .select2-choices .select2-search-choice {
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- background-color: #e4e4e4;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0);
- background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
- background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
- background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
- background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
- background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
- background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
- -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
- -moz-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
- box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
- color: #333;
- border: 1px solid #aaaaaa;
- line-height: 13px;
- padding: 3px 5px 3px 18px;
- margin: 3px 0 3px 5px;
- position: relative;
- cursor: default;
-}
-
-.select2-container-multi .select2-choices .select2-search-choice span {
- cursor: default;
-}
-
-.select2-container-multi .select2-choices .select2-search-choice-focus {
- background: #d4d4d4;
-}
-
-.select2-search-choice-close {
- display: block;
- position: absolute;
- right: 3px;
- top: 4px;
- width: 12px;
- height: 13px;
- font-size: 1px;
- background: url('select2.png') right top no-repeat;
- outline: none;
-}
-
-.select2-container-multi .select2-search-choice-close {
- left: 3px;
-}
-
-.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {
- background-position: right -11px;
-}
-
-.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {
- background-position: right -11px;
-}
-
-/* disabled styles */
-
-.select2-container-multi.select2-container-disabled .select2-choices {
- background-color: #f4f4f4;
- background-image: none;
- border: 1px solid #ddd;
- cursor: default;
-}
-
-.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
- background-image: none;
- background-color: #f4f4f4;
- border: 1px solid #ddd;
- padding: 3px 5px 3px 5px;
-}
-
-.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close {
- display: none;
-}
-
-/* end multiselect */
-
-.select2-result-selectable .select2-match,
-.select2-result-unselectable .select2-result-selectable .select2-match { text-decoration: underline; }
-
-.select2-result-unselectable .select2-match { text-decoration: none; }
-
-.select2-offscreen { position: absolute; left: -10000px; }
-
-/* Retina-ize icons */
-
-@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
- .select2-search input, .select2-search-choice-close, .select2-container .select2-choice abbr, .select2-container .select2-choice div b {
- background-image: url(select2x2.png) !important;
- background-repeat: no-repeat !important;
- background-size: 60px 40px !important;
- }
-
- .select2-search input {
- background-position: 100% -21px !important;
- }
-}
--- /dev/null
+.code {
+ font-size: 12px;
+}
+.code pre {
+ font-family: Monospace;
+ padding: 0 5px;
+ color: #111;
+ margin: 0;
+}
+/* for example java annotations */
+.code .a {
+ color: #808000;
+}
+/* constants */
+.code .c {
+ color: #660E80;
+ font-style: italic;
+ font-weight: bold;
+}
+/* javadoc */
+.code .j {
+ color: #666666;
+ font-style: normal;
+}
+/* classic comment */
+.code .cd {
+ color: #666666;
+ font-style: italic;
+}
+/* C++ doc */
+.code .cppd {
+ color: #666666;
+ font-style: italic;
+}
+/* keyword */
+.code .k {
+ color: #000080;
+ font-weight: bold;
+}
+/* string */
+.code .s {
+ color: #008000;
+ font-weight: bold;
+}
+/* keyword light*/
+.code .h {
+ color: #000080;
+ font-weight: normal;
+}
+/* preprocessing directive */
+.code .p {
+ color: #347235;
+ font-weight: normal;
+}
+.sym {
+ cursor: hand;
+ cursor: pointer;
+}
+.highlighted {
+ background-color: #B3D4FF;
+}
+++ /dev/null
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-/* CSS optimized by http://www.cleancss.com */
-
-/* ------------------- PROJECTS SEARCH FORM ------------------- */
-#projectSearch {
- color: #444;
- margin: 4px 0 0 0;
-}
-
-/*
- FOOTER
-*/
-#ftlinks {
- background: #fff;
- color: #262626;
- text-align: center;
- border-top: 1px solid #fff;
- font-size: 85%;
- padding: 4px 0;
- margin-top: 10px;
-}
-
-.ie-warn {
- color: #EEE;
- background: #FF5252;
- padding: 0 5px;
-}
-
-.ie-warn a {
- color: #EEE;
- text-decoration: underline;
-}
-
-#ftlinks a {
- color: #444;
-}
-
-/*
- GENERAL
-*/
-a {
- cursor: pointer;
-}
-
-.loading {
- background: url("../images/loading.gif") no-repeat 4px 2px;
- color: #444;
- padding: 3px 25px;
-}
-
-.right {
- text-align: right;
-}
-
-.left {
- text-align: left;
-}
-
-.center {
- text-align: center;
-}
-
-.top {
- vertical-align: top;
-}
-
-.bottom {
- vertical-align: bottom;
-}
-
-.middle {
- vertical-align: middle;
-}
-
-.nowrap {
- white-space: nowrap;
-}
-
-code {
- font-size: 93%;
-}
-
-.hidden {
- display: none;
- visibility: hidden;
-}
-
-.clear {
- height: 0;
- clear: both;
-}
-
-.note {
- color: #777;
- font-size: 93%;
- font-weight: normal;
- line-height: 13px;
-}
-
-.note img {
- vertical-align: bottom;
-}
-
-.crossout {
- text-decoration: line-through;
-}
-
-.small {
- font-size: 85%;
-}
-
-input[type].small {
-
-}
-
-small {
- color: #AAA;
- font-size: 85%;
- font-style: normal;
-}
-
-em {
- font-weight: bold;
-}
-
-em.mandatory {
- color: #990000;
- font-style: italic;
-}
-
-a.external {
- background: url('../images/links/external.png') no-repeat 100% 0;
- padding: 0 16px 0 0;
-}
-
-.fav {
- display: inline-block;
- background: url('../images/star.png') no-repeat 100% 0;
- width: 16px;
- height: 16px;
- vertical-align: text-bottom;
-}
-
-.notfav {
- display: inline-block;
- background: url('../images/star_off.png') no-repeat 100% 0;
- width: 16px;
- height: 16px;
- vertical-align: text-bottom;
-}
-
-.red-button {
- color: #990000 !important;
-}
-
-.red-button:hover {
- color: #FFFFFF !important;
- border: solid 1px #CD504A !important;
- background: #B33630 !important;
- background: -webkit-gradient(linear, left top, left bottom, from(#DC5F59), to(#B33630)) !important;
- background: -moz-linear-gradient(top, #DC5F59, #B33630) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#DC5F59', endColorstr = '#B33630') !important;
-}
-
-.red-button:active {
- color: #FFFFFF !important;
- border: solid 1px #CD504A !important;
- background: #B33630 !important;
- background: -webkit-gradient(linear, left top, left bottom, from(#AC2F29), to(#D35650)) !important;
- background: -moz-linear-gradient(top, #AC2F29, #D35650) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#AC2F29', endColorstr = '#D35650') !important;
-}
-
-.red-button[disabled] {
- position: relative;
- top: 0;
- text-shadow: 1px 1px 0 #FFFFFF;
- color: #BBBBBB;
- border: solid 1px #DDD;
- background: #EBEBEB;
- background: -webkit-gradient(linear, left top, left bottom, from(#FFFFFF), to(#E1E1E1));
- background: -moz-linear-gradient(top, #FFFFFF, #E1E1E1);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#FFFFFF', endColorstr = '#E1E1E1');
- cursor: default;
-}
-
-/* ------------------- PAGE ------------------- */
-h1, .h1 {
- color: #444;
- font-size: 16px;
-}
-
-h1 a {
- color: #444;
- text-decoration: none;
- border-bottom: 1px dotted #2B547D;
-}
-
-h2, .h2 {
- color: #2B547D;
- font-size: 16px;
- font-weight: normal;
-}
-
-h2 a {
- color: #2B547D;
- text-decoration: none;
- border-bottom: 1px dotted #2B547D;
-}
-
-h3, .h3 {
- font-size: 100%;
- font-weight: bold;
-}
-
-h4, .h4 {
- font-size: 85%;
- color: #777;
-}
-
-h1 img, .h1 img, h2 img, .h2 img, h3 img, .h3 img, h4 img, .h4 img {
- vertical-align: middle;
-}
-
-.subtitle {
- color: #777;
- font-size: 85%;
- margin: 0;
- padding: 0;
-}
-
-.notes {
- color: #777;
- font-size: 11px;
- margin-bottom: 10px;
- background-color: #EFEFEF;
- border: 1px solid #cdcdcd;
- line-height: 16px;
- height: 16px;
- padding: 2px 4px;
-}
-
-.treemap {
- position: relative;
- cursor: pointer;
-}
-
-.treemap a {
- color: #FFF;
- text-decoration: none;
- font-size: 12px;
- padding: 1px;
-}
-.treemap a:hover {
- text-decoration: underline;
-}
-
-/* ------------------- MESSAGES ------------------- */
-.warning {
- border: solid 1px #FFD324;
- background-color: #FFF6BF;
- color: #514721;
- margin: 0 0 4px;
- padding: 4px;
-}
-
-.error {
- border: 1px solid red;
- background-color: #FF5252;
- color: #eee;
- margin: 0 0 4px;
- padding: 4px;
-}
-
-.error a {
- color: #eee;
-}
-
-.notice {
- border: 1px solid #9c9;
- background-color: #e2f9e3;
- color: #060;
- margin: 0 0 4px;
- padding: 4px;
-}
-
-.info {
- background-color: #CAE3F2;
- padding: 5px;
- border: 1px solid #4B9FD5;
-}
-
-/* ------------------- SETUP / MIGRATION PAGES ------------------- */
-.migration {
- background-image: url("../images/sonarqube-24x100.png");
- background-repeat: no-repeat;
- background-position: top right;
-}
-
-/* ------------------- LOGIN FORM ------------------- */
-#login_form {
- border: 2px solid #4b9fd5;
- width: 230px;
- text-align: left;
- background-color: #CAE3F2;
- padding: 15px 20px;
-}
-
-#login_form h4 {
- text-align: left;
- font-weight: bold;
- color: #036;
-}
-
-#login_form p {
- padding: 3px 0 10px;
-}
-
-#login_form .desc {
- font-size: 85%;
- font-weight: normal;
-}
-
-/* ------------------- DOCUMENTATION --------------------- */
-.doc h2 {
- margin-top: 8px;
-}
-
-.doc p {
- margin: 8px 0;
-}
-
-.doc pre, pre.code {
- color: #777;
- background-color: #EFEFEF;
- padding: 10px;
- margin: 10px 0;
- border: 1px dashed #777;
- font-size: 93%;
- line-height: 1.5em;
-}
-
-.doc li {
- list-style: disc outside;
- padding: 2px;
-}
-
-.doc ul {
- list-style: none outside;
- padding-left: 30px;
-}
-
-/* ------------------- TABLES ------------------- */
-.odd {
- background-color: #fff;
-}
-
-.odd.selected, .even.selected, .odd.selected a, .even.selected a, .even.selected span, .odd.selected span {
- background-color: #4b9fd5;
- color: #fff;
-}
-
-table.data > thead > tr > th {
- font-size: 93%;
- padding: 4px 7px 4px 3px;
- font-weight: bold;
- vertical-align: top;
-}
-
-table.data > tfoot > tr > td {
- font-size: 93%;
- color: #777;
- padding: 5px;
-}
-
-table.data > tbody > tr > td {
- padding: 5px;
- vertical-align: text-top;
-}
-
-table.data td.small, table.data th.small {
- padding: 0;
- white-space: nowrap;
-}
-
-table.data th img, table.data td img {
- vertical-align: sub;
-}
-
-table.data.zebra tbody tr:nth-child(odd) {
- background-color: #EFEFEF;
-}
-
-.data thead tr.total {
- background-color: #EFEFEF;
- font-weight: normal;
- border: 1px solid #DDD;
-}
-
-.data thead tr.total th {
- font-weight: normal;
-}
-
-.data thead tr.blank {
- background-color: #fff;
- line-height: 15px;
-}
-
-.data tr.highlight {
- background-color: #CAE3F2;
- border-top: 1px solid #4B9FD5;
- border-bottom: 1px solid #4B9FD5;
-}
-
-.data input, .data select, .data button {
- vertical-align: baseline;
-}
-
-.data td.category {
- padding-right: 15px;
-}
-
-.categoryDescription {
- padding: 10px 5px;
-}
-
-.data td.category.withSubcategories {
- background-image: url('../images/bullet_arrow_down.gif');
- background-position: right center;
- background-repeat: no-repeat;
-}
-
-.data td.subcategory {
- padding-left: 20px;
-}
-
-.hoverable:hover {
- background-color: #CAE3F2;
-}
-
-.hoverable:hover a {
- color: #111;
-}
-
-table.sortable .sortcol {
- cursor: pointer;
- padding-left: 15px;
- background-repeat: no-repeat;
- background-position: right center;
- text-decoration: underline;
-}
-
-table.sortable .sortasc {
- background-image: url('../images/bullet_arrow_up.gif');
- background-position: left center;
-}
-
-table.sortable .sortdesc {
- background-image: url('../images/bullet_arrow_down.gif');
- background-position: left center;
-}
-
-table.sortable .righticon {
- padding-right: 15px;
- background-position: right center;
-}
-
-table.sortable .nosort {
- cursor: default;
-}
-
-table.spaced th {
- font-weight: bold;
- color: #333;
- padding: 4px 5px;
-}
-
-table.spaced td, table.matrix tfoot td {
- padding: 3px 5px;
- line-height: 18px;
-}
-
-table.spaced td img {
- vertical-align: text-bottom;
-}
-
-table.spacedicon th {
- font-weight: bold;
- color: #333;
- padding: 4px 5px;
-}
-
-table.spacedicon td {
- padding: 0 5px;
- height: 24px;
-}
-
-.thin {
- width: 1%;
-}
-
-td.sep {
- width: 10px;
-}
-
-.spacer {
- width: 5px;
- display: inline-block;
-}
-
-.formError {
- display: inline-block;
- background-color: #FF9090;
- color: #000;
- padding: 0 5px;
-}
-
-table.form td {
- padding: 2px 5px;
- vertical-align: top;
-}
-
-table.form td.keyCell {
- width: 1%;
- white-space: nowrap;
- text-align: right;
- font-weight: bold;
- vertical-align: top;
-}
-
-table.form td img {
- vertical-align: bottom;
-}
-
-.admin hr {
- background: transparent;
- border-left: none;
- border-right: none;
- border-top: none;
- border-bottom: 1px dashed #FFD324;
- height: 1px;
-}
-
-table#project-history > tbody > tr > td {
- vertical-align: top;
-}
-
-/* OPERATIONS */
-#page-operations {
- display: inline-block;
- width: 100%;
-}
-
-div.operations {
- float: right;
- margin: 0;
-}
-
-ul.operations {
- float: right;
- height: 20px;
- line-height: 20px;
- list-style-type: none;
- margin: 0;
- background-color: #EFEFEF;
- border: 1px solid #cdcdcd;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
-}
-
-ul.operations li {
- float: left;
- margin: 0;
- padding: 0 8px;
- font-size: 85%;
- border-right: 1px solid #cdcdcd;
-}
-
-ul.operations li.selected {
- background-color: #d4d4d4;
-}
-
-ul.operations li.last {
- border-right-width: 0;
-}
-
-ul.operations li a {
- color: #555;
-}
-
-ul.operations li img {
- vertical-align: middle;
- margin-right: 5px;
-}
-
-th.operations, td.operations {
- text-align: right;
-}
-
-/* RESOURCE VIEWER */
-.resourceName h1 {
- margin: 5px 0;
-}
-
-/* SOURCE */
-.sources2 {
- width: 100%;
- border: 0;
- margin: 0;
- background-color: #FFF;
-}
-
-.sources2 td.lid {
- background-color: #EFEFEF;
- border-right: 1px solid #DDDDDD;
- text-align: right;
- padding: 2px 0.5em 0 0.5em;
- vertical-align: top;
- font-size: 85%;
-}
-
-.sources2 td.lid a {
- text-decoration: none;
- color: #AAA;
-}
-
-.sources2 td.scm {
- border-right: 1px solid #DDD;
- background-color: #EFEFEF;
-}
-
-.sources2 td.revision {
- border-top: 1px solid #DDD;
- vertical-align: top;
- padding: 0 0.3em;
- white-space: nowrap;
-}
-
-.sources2 tr:first-child td.revision {
- border-top: none;
-}
-
-.sources2 tr.row td.plus {
- background-color: #EFEFEF;
- padding: 0;
- width: 16px;
-}
-
-.sources2 tr.row:hover td.plus {
- background: url("../images/add.png") no-repeat scroll left 0 #EFEFEF;
-}
-
-.sources2 td.plus a {
- display: block;
- cursor: pointer;
- height: 16px;
- width: 16px;
-}
-
-.sources2 td.gray {
- background-color: #EFEFEF;
- padding: 2px 0.5em 0;
-}
-
-.sources2 td.white {
- border-left: 1px solid #DDD;
- background-color: #FFF;
-}
-
-.sources2 span.date, .sources2 span.date a {
- color: #AAA;
- font-size: 85%;
- text-decoration: none;
-}
-
-.sources2 span.author, .sources2 span.author a {
- font-size: 85%;
-}
-
-.sources2 div.violation, #global_violations div.violation {
- background-color: #FFF;
- margin: 0;
- border: 1px solid #DDD;
- font-size: 12px;
-}
-
-.rulename, .rulename a {
- color: #444;
- font-weight: bold;
-}
-
-.rulename a:hover {
- text-decoration: underline;
-}
-
-.sources2 td.line {
- width: 100%;
-}
-
-.sources2 td.line pre {
- font-size: 12px;
- font-family: monospace;
-}
-
-.sources2 td.ind {
- border-right: 1px solid #DDD;
- padding: 0 0.3em;
- text-align: center;
- vertical-align: middle;
-}
-
-.sources2 td.ind a,.sources2 td.ind span {
- padding: 0 3px;
-}
-
-.sources2 td.ok {
- background-color: #ACE97C;
-}
-
-.sources2 td.warn {
- background-color: #FFF6BF;
-}
-
-.sources2 td.ko {
- background-color: #FF9090;
-}
-
-.sources2 td.new_section {
- border-width: 1px 0;
- border-style: solid;
- border-color: #EEE #DDD;
- height: 30px;
- background: url('../images/gray-stripes.png');
-}
-
-.sources2 td.violations {
- background-color: #FFF;
- padding: 10px;
- border-left: 1px solid #DDD;
-}
-
-.source_title {
- padding: 10px 5px;
-}
-
-.source_title span.h1 {
- font-size: 16px;
- margin-right: 10px;
-}
-
-.source_links {
- font-size: 11px;
-}
-
-.global_violations {
- width: 100%;
-}
-
-.global_violations > tbody > tr > td {
- padding-bottom: 10px;
-}
-
-.global_violations td {
- padding: 3px 0;
-}
-
-.global_violations td img, #source_title img {
- vertical-align: text-bottom;
-}
-
-.code-issue-create-form {
- padding: 10px;
-}
-
-.code-global-issues {
- padding: 10px 10px 0;
-}
-
-.code-issues {
- background-color: #FFF;
- padding: 10px 10px 0;
- line-height: 0;
-}
-
-.code-issue {
- background-color: #FFF;
- margin: 0;
- font-size: 12px;
- padding: 0 0 10px 0;
-}
-
-.code-issue strong {
- font-weight: bold;
-}
-
-.code-issue-toggle {
- cursor: pointer;
-}
-
-.code-issue-name {
- position: relative;
- background-color: #E4ECF3;
- margin: 0;
- padding: 5px 10px;
- line-height: 16px;
- color: #777;
- border: 1px solid #DDD;
- border-bottom: medium none;
-}
-
-.code-issue-msg {
- line-height: 1.5;
- padding: 5px 10px;
- border-left: 1px solid #DDD;
- border-right: 1px solid #DDD;
- background-color: #EFEFEF;
-}
-
-.code-issue-name img {
- vertical-align: text-bottom;
-}
-
-.code-issue-name-rule {
- max-width: 90%;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.code-issue-permalink {
- position: absolute;
- top: 4px; right: 4px;
-}
-
-.code-issue-name-extra {
- margin-top: 6px;
- line-height: 12px;
-}
-
-.code-issue-name-extra li {
- font-size: 11px !important;
-}
-
-.code-issue-name-right {
- position: absolute;
- top: 5px; right: 26px;
-}
-
-.code-issue-comment, .code-issue-msg, .code-issue-actions, .code-issue-form {
- background-color: #EFEFEF;
- border: 1px solid #DDD;
- border-top: none;
- line-height: 1.5em;
- margin: 0;
- padding: 5px 10px;
-}
-
-.code-issue-form input[type=submit],
-.code-issue-form input[type=button],
-.code-issue-form button,
-.code-issue-form .action {
- vertical-align: middle;
-}
-
-.code-issue-comment h4 {
- font-size: 11px;
- margin-bottom: 2px;
-}
-
-.code-issue-comment h4 img {
- vertical-align: sub;
-}
-
-.code-issue-comment li {
- list-style: square inside;
-}
-
-.code-issue-comment pre {
- padding: 10px;
- border: 1px dashed #DDD;
- color: #444;
- font-size: 12px;
-}
-
-.code-issue-details {
- padding: 0 0 5px;
- border-left: 1px solid #DDD;
- border-right: 1px solid #DDD;
- border-bottom: 1px solid #DDD;
- background-color: #EFEFEF;
-}
-
-.code-issue-details .ui-tabs-panel {
- padding: 5px 10px 0;
- line-height: 1.3;
-}
-
-.code-issue-details .tabs {
- height: auto;
- padding: 5px 10px;
- border-bottom: 1px solid #DDD;
-}
-
-.code-issue-details .tabs li + li {
- margin-left: 10px;
-}
-
-.code-issue-details .tabs li a:link,
-.code-issue-details .tabs li a:visited {
- float: none;
- margin: 0;
- padding: 0;
-}
-
-.code-issue-details-list {
-
-}
-
-.code-issue-details-list > li {
- font-size: 0;
-}
-
-.code-issue-details-term,
-.code-issue-details-value {
- display: inline-block;
- vertical-align: top;
- font-size: 12px;
- line-height: 20px;
-}
-
-.code-issue-details-term {
- width: 90px;
-}
-
-.code-issue-details-term:after {
- content: ":";
-}
-
-.code-issue-list {
- font-size: 0;
- white-space: nowrap;
- background-color: #E4ECF3;
-}
-
-.code-issue-list > li {
- display: inline-block;
- vertical-align: middle;
- height: 14px;
- line-height: 14px;
- padding: 0 8px;
- border-left: 1px solid #fff;
- border-right: 1px solid #bfbfbf;
- font-size: 12px;
-}
-
-.code-issue-list > li:first-child {
- padding-left: 0;
- border-left: none;
-}
-
-.code-issue-list > li:last-child {
- padding-right: 0;
- border-right: none;
-}
-
-.code-issue-collapsed .code-issue-msg,
-.code-issue-collapsed .code-issue-details {
- display: none;
-}
-
-.tab_header {
- border-bottom: 1px solid #DDD;
- background-color: #EFEFEF;
- padding: 5px 10px;
-}
-
-.tab_header td {
- padding-right: 7px;
-}
-
-.tab_header td.name {
- text-align: left;
- white-space: nowrap;
-}
-
-.tab_header td.value {
- text-align: right;
- white-space: nowrap;
- font-weight: bold;
-}
-
-.source_options {
- margin-top: 5px;
- padding-top: 5px;
- border-top: 1px solid #ddd;
- font-size: 85%;
-}
-
-.source_options td {
- background: url("../images/sep12.png") no-repeat scroll 0 50% transparent;
- padding: 0 10px;
-}
-
-.source_options td.first {
- background: none;
- padding: 0 10px 0 0;
-}
-
-/* DUPLICATIONS */
-
-.duplications {
- max-width: 100%;
-}
-
-.duplications td.item {
- text-align: right;
- vertical-align: top;
- padding: 0;
-}
-
-.duplications td.item p {
- padding: 3px 5px;
-}
-
-.duplications td.fileItem {
- text-align: left;
- vertical-align: top;
- padding: 0;
- white-space: nowrap;
-}
-
-.duplications td.fileItem p {
- padding: 3px 5px;
-}
-
-.duplications td.item p.selected, .duplications td.fileItem p.selected {
- background-color: #EFEFEF;
- border-top: 1px solid #DDD;
- border-bottom: 1px solid #DDD;
- padding: 3px 5px;
-}
-
-.duplications td.fileItem p.selected a {
- text-decoration: none;
-}
-
-.duplications td.sourceItem {
- padding: 0;
- background-color: #EFEFEF;
- border: 1px solid #DDD;
- border-left: none;
-}
-
-.duplications td.sourceItem p {
- padding: 3px;
-}
-
-.duplicationsMessage {
- padding: 10px;
-}
-
-.discussion {
- width: 100%;
- border: 1px solid #DDDDDD;
-}
-
-.discussionComment.first {
- border-top: none;
-}
-
-.discussionComment {
- background-color: #EFEFEF;
- border-top: 1px solid #DDDDDD;
- line-height: 1.5em;
- margin: 0;
- padding: 5px 10px;
-}
-
-.discussionComment h4 {
- font-size: 90%;
- margin-bottom: 2px;
-}
-
-.discussionComment h4 img {
- vertical-align: sub;
-}
-
-.discussionComment li {
- list-style: square inside;
-}
-
-.discussionComment pre {
- padding: 10px;
- border: 1px dashed #DDD;
- color: #444;
- font-size: 12px;
-}
-
-div.comment-excerpt {
- background-color: transparent;
- margin-top: 5px;
- margin-bottom: 5px;
- color: #777777;
- font-size: 90%;
-}
-
-/* ACTION PLANS */
-table.actionPlans {
- margin-top: 10px;
-}
-
-table.actionPlans td.progress {
- width: 300px;
- padding: 0px 40px;
-}
-
-table.actionPlans td.noprogress {
- color: #777777;
- font-size: 93%;
- padding-left: 43px;
- padding-right: 40px;
-}
-
-table.actionPlans td.over-due {
- color: #CC0000;
- font-weight: bold;
-}
-
-div.progress {
- width: 100%;
- margin: 4px;
-}
-
-div.progress table {
- width: 100%;
-}
-
-div.progress td {
- height: 10px;
-}
-
-div.progress td a {
- display: block;
- width: 100%;
- height: 100%;
-}
-
-div.progress td.resolved {
- background-color: #078C00;
-}
-
-div.progress td.open {
- background-color: #CC0000;
-}
-
-div.progress div.note {
- color: #777;
- font-size: 93%;
- font-weight: normal;
- white-space: nowrap;
-}
-div.note a {
- color: #777777;
-}
-
-/* SEARCH AUTOCOMPLETE FIELDS */
-#searchInput {
- color: #444;
- font-size: 13px;
- padding-right: 20px;
-}
-
-#searchingResources {
- position: absolute;
- top: 8px;
- right: 18px;
-}
-
-div.autocomplete {
- position: absolute;
- width: 600px;
- right: 10px;
- top: 10px;
- background-color: #fff;
- border: 1px solid #ccc;
- margin: 0;
- padding: 0;
- color: #111;
- line-height: 18px;
- box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
- z-index: 999999;
-}
-
-div.autocomplete ul {
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-
-div.autocomplete ul li {
- list-style-type: none;
- display: block;
- margin: 0;
- padding: 3px 5px;
- cursor: pointer;
- color: #333;
- line-height: 18px;
- height: 18px;
- vertical-align: middle;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-div.autocomplete div.q {
- font-size: 93%;
- color: #777;
- width: 90px;
- text-align: right;
- margin-right: 5px;
- display: inline-block;
-
- /* For IE 7 */
- zoom: 1;
- *display: inline;
-}
-
-div.autocomplete ul li img {
- vertical-align: middle;
-}
-
-div.autocomplete ul li.selected {
- background-color: #4b9fd5;
- color: #fff;
-}
-
-div.autocomplete ul li.selected div.q {
- color: #fff;
-}
-
-div.autocomplete strong {
- font-weight: bold;
-}
-
-div.autocompleteNote {
- color: #777;
- font-size: 85%;
- background-color: #EFEFEF;
- border-top: 1px solid #CCC;
- padding: 1px 10px;
-}
-
-#gwtpage {
- width: 100%;
-}
-
-.gwt-SourcePanel {
- font-size: 12px;
- background-color: #fff;
- border-top: 1px solid silver;
- border-bottom: 1px solid silver;
- width: 100%;
-}
-
-.gwt-SourcePanel .ln {
- background-color: #EFEFEF;
- white-space: nowrap;
- text-align: right;
- font-size: 85%;
- color: #AAAAAA;
- border-right: 1px solid #DDD;
- padding: 0 3px;
- height: 14px;
-}
-
-.gwt-SourcePanel .src {
- padding: 0 5px;
- height: 14px;
-}
-
-.gwt-SourcePanel .val {
- background-color: #EFEFEF;
- border-right: 1px solid #DDD;
- text-align: right;
- color: #777;
- padding: 0 3px;
- height: 14px;
- white-space: nowrap;
-}
-
-.gwt-SourcePanel .red {
- background-color: #F0C8C8;
-}
-
-.gwt-SourcePanel .orange {
- background-color: #FFF6BF;
- color: #514721;
-}
-
-.gwt-SourcePanel .green {
- background-color: #ACE97C;
-}
-
-.gwt-SourcePanel .msg {
- font-family: sans-serif;
- vertical-align: top;
- padding: 3px 0;
- height: 1.3em;
- background-position: 5px 1px;
- background-repeat: no-repeat;
-}
-
-.gwt-SourcePanel .bigln {
- font-family: sans-serif;
- vertical-align: top;
- padding: 3px 0;
- height: 1.6em;
- background-position: 5px 1px;
- background-repeat: no-repeat;
- background-color: #EFEFEF;
-}
-
-.gwt-SourcePanel .warn {
- font-family: sans-serif;
- vertical-align: top;
- background-color: #FFFFC9;
- border: 1px solid #DCDCDC;
- border-top: none;
- color: black;
- line-height: 1.6em;
- margin: 0;
- padding: 0 0 2px 5px;
-}
-
-.gwt-SourcePanel .msg.error {
- background-image: url("../images/exclamation.png");
-}
-
-.gwt-SourcePanel .msg.warning {
- background-image: url("../images/warning.png");
-}
-
-.gwt-SourcePanel .msg.BLOCKER {
- padding: 1px 5px 1px 25px;
- background-image: url("../images/priority/BLOCKER.gif");
- background-color: #FF5252;
- color: #eee;
- border: 1px solid red;
- margin: 1px 0 1px 5px;
- height: 100%;
-}
-
-.gwt-SourcePanel .msg.CRITICAL {
- padding: 1px 5px 1px 25px;
- background-image: url("../images/priority/CRITICAL.gif");
- background-color: #FF5252;
- color: #eee;
- border: 1px solid red;
- margin: 1px 0 1px 5px;
- height: 100%;
-}
-
-.gwt-SourcePanel .msg.MAJOR {
- padding: 1px 5px 1px 25px;
- background-image: url("../images/priority/MAJOR.gif");
- background-color: #FF5252;
- color: #eee;
- border: 1px solid red;
- margin: 1px 0 1px 5px;
- height: 100%;
-}
-
-.gwt-SourcePanel .msg.MINOR {
- padding: 1px 5px 1px 25px;
- background-image: url("../images/priority/MINOR.gif");
- background-color: #FFF6BF;
- border: 1px solid #FFD324;
- margin: 1px 0 1px 5px;
- height: 100%;
-}
-
-.gwt-SourcePanel .msg.INFO {
- padding: 1px 5px 1px 25px;
- background-image: url("../images/priority/INFO.gif");
- background-color: #FFF6BF;
- border: 1px solid #FFD324;
- margin: 1px 0 1px 5px;
- height: 100%;
-}
-
-.gwt-ViewerHeader {
- background-color: #EFEFEF;
- border: 1px solid #DDD;
- border-top: none;
- margin-bottom: 8px;
- color: #333;
- vertical-align: bottom;
-}
-
-.gwt-ViewerHeader .metric {
- padding: 8px 2px 5px 10px;
- font-size: 93%;
- text-align: right;
- font-weight: bold;
-}
-
-.gwt-ViewerHeader .value {
- padding: 8px 15px 5px 2px;
- font-size: 93%;
- text-align: left;
- font-weight: normal;
-}
-
-.gwt-ViewerHeader .cell {
- padding: 3px 10px;
-}
-
-.gwt-ViewerHeader .big {
- padding: 4px 10px 2px 10px;
- font-size: 152%;
- font-weight: bold;
-}
-
-/* ------------------- DASHBOARD ------------------- */
-.page_title {
- margin: 0 0 7px 0;
-}
-
-.color_OK {
- border: 2px solid #85bb43 !important;
- color: #85bb43 !important;
-}
-
-.color_WARN {
- border: 2px solid #f90 !important;
- color: #f90 !important;
-}
-
-.color_ERROR {
- border: 2px solid #d4333f !important;
- color: #d4333f !important;
-}
-
-#alerts_widget {
- margin-bottom: 10px;
- padding: 5px 5px 5px 10px;
-}
-
-#alerts_widget img {
- vertical-align: bottom;
-}
-
-span.empty_widget {
- color: #777777;
- font-size: 93%;
-}
-
-.dashbox {
- float: left;
- vertical-align: top;
- text-align: left;
- padding: 0 10px 7px 0;
-}
-
-.big {
- font-size: 152%;
- font-weight: bold;
-}
-
-.adminportlet {
- border: 2px dashed #ccc;
- margin-bottom: 10px;
- padding: 10px;
-}
-
-table.header1 {
- background-color: #EFEFEF;
- color: #444;
- border: 1px solid #DDD;
- margin: 0 0 10px 0;
- width: 100%;
-}
-
-table.header1 td {
- padding: 10px 0 10px 10px;
- text-align: left;
- vertical-align: top;
-}
-
-.headerLine {
- background-color: #EFEFEF;
- color: #444;
- border: 1px solid #DDD;
- margin: 0 0 10px 0;
- line-height: 28px;
- height: 28px;
-}
-
-ul.headerLine li {
- float: left;
- display: block;
- padding: 0 10px 0;
- height: 28px;
- vertical-align: middle;
-}
-
-ul.headerLine li.sep {
- background: url("../images/sep12.png") no-repeat scroll 50% 50% transparent;
- padding: 0 5px 0 5px;
-}
-
-ul.headerLine select, ul.headerLine input, ul.headerLine button, ul.headerLine textarea, ul.headerLine span {
- vertical-align: middle;
-}
-
-select.withIcons option, span.withIcons {
- background-repeat: no-repeat;
- background-position: 2px 0;
- padding: 0 2px 0 22px;
- vertical-align: middle;
-}
-
-option.status_open {
- background-image: url('../images/status/OPEN.png');
-}
-
-option.status_reopened {
- background-image: url('../images/status/REOPENED.png');
-}
-
-option.status_resolved {
- background-image: url('../images/status/RESOLVED.png');
-}
-
-option.status_closed {
- background-image: url('../images/status/CLOSED.png');
-}
-
-option.sev_INFO, span.sev_INFO {
- background-image: url('../images/priority/INFO.png');
-}
-
-option.sev_MINOR, span.sev_MINOR {
- background-image: url('../images/priority/MINOR.png');
-}
-
-option.sev_MAJOR, span.sev_MAJOR {
- background-image: url('../images/priority/MAJOR.png');
-}
-
-option.sev_CRITICAL, span.sev_CRITICAL {
- background-image: url('../images/priority/CRITICAL.png');
-}
-
-option.sev_BLOCKER, span.sev_BLOCKER {
- background-image: url('../images/priority/BLOCKER.png');
-}
-
-/* ------------------- VARIATIONS ------------------- */
-.var {
- color: #444 !important;
-}
-
-.varb {
- /* better */
- color: #078C00 !important;
-}
-
-.varw {
- /* worst */
- color: #cc0000 !important;
-}
-
-/* ------------------- HELP ------------------- */
-.help {
- border: 1px solid #DDD;
- background-color: #EFEFEF;
- color: #444;
- padding: 5px;
-}
-
-.help h2 {
- padding-left: 23px;
- color: #444;
- vertical-align: bottom;
- font-weight: bold;
- background: url('../images/information.png') no-repeat left center;
-}
-
-.help p {
- padding: 5px 0;
-}
-
-/* ------------------- FORMS ------------------- */
-.admintable {
- border: solid 1px #FFD324;
- background-color: #FFF6BF;
- color: #111;
-}
-
-.admintable td {
- padding: 5px 10px;
-}
-
-.admintable span.desc {
- font-size: 85%;
- font-weight: normal;
-}
-
-/* ------------------- BOXES ------------------- */
-.box {
- border: 1px solid #ccc;
- background-color: #EFEFEF;
- margin-bottom: 5px;
- color: #444;
- padding: 10px;
-}
-
-.box a, .box a:visited {
- color: #555;
-}
-
-.admin {
- border: solid 1px #FFD324;
- background-color: #FFF6BF;
- color: #514721;
- margin-bottom: 5px;
- padding: 5px;
-}
-
-.admin h3 {
- font-size: 100%;
- text-align: left;
- font-weight: bold;
- color: #333;
-}
-
-.column {
- vertical-align: top;
- text-align: left;
- padding: 0 0 0 10px;
-}
-
-.column.first {
- padding: 0;
-}
-
-.column h3 {
- padding: 3px 0;
-}
-
-.scrollable {
- height: 144px;
- overflow: auto;
- border: 1px solid #ccc;
-}
-
-.scroll-ie {
- overflow-x: hidden;
- padding-right: 17px;
-}
-
-.red {
- color: #8B0000;
-}
-
-.green {
- color: #050;
-}
-
-ul.bullet {
- margin: 3px 0 3px 25px;
-}
-
-ul.bullet li {
- padding: 2px 0;
- list-style-image: url("../images/bullet.png");
-}
-
-.rule_title {
- font-size: 110%;
-}
-
-.tablinks {
- float: right;
- padding: 0 5px 0 10px;
- text-align: right;
-}
-
-.tablinks li {
- float: left;
- text-align: right;
- margin-left: 5px;
- padding: 0 0 0 5px;
-}
-
-.tablinks li.first {
- background: none;
-}
-
-.tablinks a {
- text-decoration: underline;
- color: #777;
- font-size: 85%;
-}
-
-.tabs-panel {
- border-right: 1px solid #DDD;
- border-bottom: 1px solid #DDD;
- border-left: 1px solid #DDD;
- border-top-width: 0;
- padding: 10px;
-}
-
-/* tabs2 is deprecated since 4.1. It is kept for backward-compatibility */
-.tabs2, .tabs {
- height: 20px;
- border-bottom: 1px solid #DDD;
- margin: 0;
- padding: 0;
- font-size: 93%;
-}
-
-.tabs2 li, .tabs li {
- display: inline;
- list-style-type: none;
- font-weight: normal;
- color: #777;
- vertical-align: baseline;
- white-space: nowrap;
- margin: 0;
- border: 0;
- padding: 0;
-}
-
-.tabs li a {
- outline: none;
-}
-
-.tabs2 li a, .tabs li a {
- float: left;
- color: #777;
- vertical-align: bottom;
- height: 17px;
- margin: 0 1px 0 0;
- padding: 1px 5px;
-}
-
-.tabs2 li a.selected, .tabs li a.selected, .tabs .ui-tabs-active a {
- text-decoration: none;
- color: #555 !important;
- font-weight: bold;
- margin: 0 1px 0 0;
-}
-
-.tabbed {
- border: 1px solid silver;
- border-top: 0;
- padding: 5px;
-}
-.comments {
- color: #777;
- font-size: 12px;
- margin-bottom: 10px;
- padding: 4px;
-}
-
-.little {
- font-size: 80%;
-}
-
-.tooltip {
- position: absolute;
- background-color: #CAE3F2;
- border: 1px solid #4b9fd5;
- max-width: 480px;
- text-align: left;
- color: #262626;
-}
-
-.tooltip .content {
- color: #111;
- padding: 4px;
-}
-
-.tooltip .title {
- color: #111;
- font-weight: bold;
- font-size: 100%;
- padding: 2px 4px;
-}
-
-.tooltip td {
- margin: 0;
- padding: 2px;
-}
-
-.tooltip p {
- margin: 0;
- padding: 0;
-}
-
-.alert_WARN {
- background-color: #ff8500;
- color: #fff;
- margin: 0;
- padding: 0 3px;
-}
-
-.alert_ERROR {
- background-color: #f93f40;
- color: #fff;
- margin: 0;
- padding: 0 3px;
-}
-
-#comparison span.best {
- font-size: 108%;
- font-weight: bold;
-}
-
-.gwt-TabBar {
- font-size: 93%;
- width: 100%;
- border-bottom: 1px solid #cdcdcd;
-}
-
-.gwt-TabBarFirst {
- width: 0;
-}
-
-.gwt-TabBar .gwt-TabBarItem {
- cursor: pointer;
- font-weight: normal;
- text-decoration: underline;
- color: #555;
- background-color: #EFEFEF;
- vertical-align: middle;
- white-space: nowrap;
- padding: 0.3em 0.6em;
- border: 1px solid #cdcdcd;
- border-bottom: none;
- border-radius: 4px 4px 0 0;
- -moz-border-radius: 4px 4px 0 0;
- -webkit-border-radius: 4px 4px 0 0;
-}
-
-.gwt-TabBar .gwt-TabBarItem-wrapper {
- padding: 0 0 0 1px;
-}
-
-.gwt-TabBar .gwt-TabBarItem-selected {
- cursor: default;
- font-weight: bold;
- text-decoration: underline;
- color: #efefef;
- background-color: #4B9FD5;
- border-bottom: none;
- vertical-align: middle;
- white-space: nowrap;
- padding: 0.3em 0.6em;
-}
-
-.gwt-TabPanelBottom {
- width: 100%;
-}
-
-.markdown-tips, .markdown-tips a {
- font-size: 12px;
- color: #777;
-}
-
-
-/* API for Rule and Property Descriptions */
-.rule-desc h2 {
- margin-top: 16px;
- font-size: 16px;
- line-height: 1.5;
- color: #2B547D;
-}
-
-.rule-desc h3 {
- margin-top: 16px;
- font-size: 12px;
- line-height: 1.5;
- color: #2B547D;
- font-weight: bold;
-}
-
-.rule-desc p, .property p {
- margin-top: 10px;
-}
-
-.rule-desc pre, .property pre {
- margin: 10px 0 !important;
- padding: 10px !important;
- border: 1px dashed #aaa;
- font-size: 12px;
- font-family: monospace;;
-}
-
-.rule-desc blockquote, .property blockquote {
- margin-top: 10px;
- padding: 10px;
-}
-
-.rule-desc ul, .property ul {
- list-style-type: disc;
- list-style-position: inside;
- margin: 10px;
-}
-
-.rule-desc ol, .property ol {
- list-style-type: decimal;
- list-style-position: inside;
- margin: 10px;
-}
-
-.rule-table {
- margin-top: 10px;
- overflow-x: auto;
- border-collapse: collapse;
-}
-.rule-table th {
- background: none no-repeat scroll right center #EFEFEF;
- border: 1px solid #DDD;
- padding: 5px 10px;
- font-weight: bold;
-}
-.rule-table td {
- background: none no-repeat scroll right center transparent;
- border: 1px solid #DDD;
- padding: 5px 10px;
-}
-/* End of API for Rule Descriptions */
-
-
-
-.tip:hover {
- background: #FFF;
- position: relative;
- z-index: 100;
-}
-
-.tip span {
- display: none;
- margin-left: -20px;
- padding: 4px 5px;
-}
-
-.tip:hover span {
- display: inline;
- position: absolute;
- background: #CAE3F2;
- border: 1px solid #4b9fd5;
- color: #262626;
- white-space: nowrap;
- text-decoration: none;
-}
-
-.hbar {
- float: left;
- border: none;
- clear: both;
- width: 4em;
- margin: 0;
- padding: 2px 0 0;
-}
-
-.hbar li {
- background-color: #777;
- color: #FFF;
- font-family: Verdana, Tahoma, Arial, sans-serif;
- font-size: xx-small;
- letter-spacing: -0.075em;
- list-style: none;
- line-height: 1.1em;
- text-align: right;
- vertical-align: middle;
- padding: 0.1em;
-}
-
-div.barchart {
- border: 0;
- margin: 0;
- padding: 0;
- float: left;
-}
-
-div.barchart > div {
- background-color: #4B9FD5;
- height: 0.9em;
-}
-
-table.matrix thead {
- background-color: #CAE3F2;
- border: 1px solid #4b9fd5;
-}
-
-table.matrix thead th {
- text-align: right;
- border-right: 1px solid #4b9fd5;
- padding: 4px 5px;
-}
-
-table.matrix tbody td {
- border: 1px solid #ddd;
- margin: 0;
- padding: 4px 5px;
-}
-
-table.matrix tbody td.title {
- border: none;
- font-weight: bold;
- margin: 0;
- padding: 5px 0 0 5px;
-}
-
-a.nolink, .dashbox a, .dashbox a:visited {
- text-decoration: none;
-}
-
-a.nolink:hover, .dashbox a:hover, .dashbox a.action, .dashbox a.action:visited {
- text-decoration: underline;
-}
-
-h1 strong, .dashbox .title, .gwt-SourcePanel .sources .msg li strong {
- font-weight: bold;
-}
-
-h4 a, h4 a:visited, .gray, table.data tfoot a, table.data tfoot a:visited {
- color: #777;
-}
-
-.even, table.sortable tr.rowodd {
- background-color: #EFEFEF;
-}
-
-.bordered, table.data > thead {
- border-bottom: 1px solid #ddd;
-}
-
-table.data > tbody {
- border-bottom: 1px solid #ddd;
- border-right: 1px solid #ddd;
- border-left: 1px solid #ddd;
-}
-
-table.data, table.spaced, .gwt-SourcePanel .sources {
- width: 100%;
-}
-
-table.data td.barchart {
- width: 100px;
-}
-
-table.without-header {
- border-top: 1px solid #ddd;
-}
-
-.hoverable.selected a {
- color: #fff;
-}
-
-.gwt-SourcePanel .sources td {
- vertical-align: top;
-}
-
-/* GENERIC STYLES */
-.line-block {
- display: block;
- width: 100%;
- height: 24px;
- line-height: 22px;
- margin-bottom: 5px;
-}
-
-.line-info {
- background: url('../images/information.png') no-repeat scroll left 50% transparent;
- padding-left: 18px
-}
-
-div.break10 {
- height: 10px;
-}
-
-div.break30 {
- height: 30px;
-}
-
-.marginbottom10 {
- margin-bottom: 10px;
-}
-
-.marginbottom5 {
- margin-bottom: 5px;
-}
-
-.marginright10 {
- margin-right: 10px;
-}
-
-.marginleft10 {
- margin-left: 10px;
-}
-
-.width100 {
- width: 100%;
-}
-
-ul.horizontal {
- list-style-type: none;
-}
-
-ul.horizontal li {
- float: left;
- position: relative;
-}
-
-table.nowrap td, td.nowrap, th.nowrap {
- white-space: nowrap;
-}
-
-table.nowrap td.small, td.nowrap.small, th.nowrap.small {
- line-height: 16px;
-}
-
-.background-gray {
- background-color: #EFEFEF;
- color: #444;
-}
-
-/* CONFIGURATION OF Q PROFILES */
-.bulk-edit {
- display: block;
- background: url("../images/bulk-edit.png") no-repeat scroll left 50% transparent;
- padding: 2px 0 2px 20px;
-}
-
-.csv {
- display: block;
- background: url("../images/csv.png") no-repeat scroll left 50% transparent;
- padding: 2px 0 2px 20px;
-}
-
-.add {
- display: block;
- background: url("../images/add.png") no-repeat scroll left 50% transparent;
- padding: 2px 0 2px 20px;
-}
-
-.restore {
- display: block;
- background: url("../images/restore.gif") no-repeat scroll left 50% transparent;
- padding: 2px 0 2px 20px;
-}
-
-.compare {
- display: block;
- background: url("../images/compare.png") no-repeat scroll left 50% transparent;
- padding: 2px 0 2px 20px;
-}
-
-/* Profile diff */
-.diffParam {
- font-family: 'Bitstream Vera Sans Mono', 'Courier', monospace;
-}
-
-.yellowHighlight {
- background: #FFFBCC;
-}
-
-.action {
- text-decoration: underline;
- cursor: pointer;
-}
-
-/* Used on links which are located inside a dense text place or in tables */
-/* in order to rapidly identify them */
-.link-action {
- text-decoration: underline !important;
- color: #4183C4 !important;
- cursor: pointer;
-}
-
-.link-red {
- color: #990000 !important;
-}
-
-.link-more {
- background-image: url('../images/bullet_arrow_down.png');
- background-repeat: no-repeat;
- padding-right: 20px;
- background-position: right center;
- cursor: pointer;
-}
-
-.dropdown {
- cursor: pointer;
- display: inline-block;
- text-decoration: none !important;
- /* zoom and *display = ie7 hack for display:inline-block */
- zoom: 1;
- *display: inline;
-}
-
-.dropdown-menu {
- background-clip: padding-box;
- background-color: #FFFFFF;
- border: 1px solid #DDD;
- box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
- float: left;
- margin: 0;
- max-width: 220px;
- min-width: 160px;
- padding: 0;
- position: absolute;
- z-index: 1000;
-}
-
-.dropdown-menu h2 {
- padding: 0 8px;
- font-size: 100%;
- font-weight: bold;
-}
-
-.dropdown-menu li {
- list-style-type: none !important;
- line-height: 24px;
- height: 24px;
- padding: 0 8px;
- cursor: pointer !important;
- float: none !important;
-}
-
-.dropdown-menu li:hover {
- background-color: #4b9fd5 !important;
-}
-
-.dropdown-menu li:hover a {
- color: #fff !important;
-}
-
-.dropdown-menu a {
- text-decoration: none !important;
- color: #333 !important;
-}
-
-.form-key-cell {
- padding: 2px 8px 4px 10px;
- text-align: right;
- width: 1%;
- white-space: nowrap;
- vertical-align: top;
-}
-
-.form-val-cell {
- padding: 2px 8px 4px 0;
- text-align: left;
- white-space: normal;
-}
-
-.form-val-cell li {
- margin-bottom: 5px;
-}
-
-.form-val-note {
- color: #999;
-}
-
-blockquote {
- border-left: 3px solid #E5E5E5;
- padding: 0 8px;
- line-height: 16px;
-}
-
-blockquote cite {
- line-height: 16px;
- background-image: url('../images/reviews/comment.png');
- background-repeat: no-repeat;
- padding-left: 20px;
- background-position: left center;
- font-size: 12px;
- color: #888;
-}
-
-.spacer-left {
- margin-left: 8px;
-}
-
-.spacer-right {
- margin-right: 8px;
-}
-
-.spacer-bottom {
- margin-bottom: 8px;
-}
-
-.spacer-top {
- margin-top: 8px;
-}
-
-td.spacer-left {
- padding-left: 8px;
-}
-
-td.spacer-right {
- padding-right: 8px;
-}
-
-td.spacer-bottom {
- padding-bottom: 8px;
-}
-
-td.spacer-top {
- padding-top: 8px;
-}
-
-.bordered {
- border: 1px solid #DDD;
-}
-
-.bordered-left {
- border-left: 1px solid #DDD;
-}
-
-.bordered-right {
- border-right: 1px solid #DDD;
-}
-
-.bordered-bottom {
- border-bottom: 1px solid #DDD;
-}
-
-.bordered-top {
- border-top: 1px solid #DDD;
-}
-
-.table > thead > tr > th {
- border-top: 0 none;
- font-weight: bold;
- vertical-align: bottom;
- line-height: 16px;
- padding: 4px 5px;
- vertical-align: bottom;
-}
-
-.table > tbody > tr > td {
- line-height: 16px;
- padding: 4px 5px;
- vertical-align: top;
-}
-
-.table > tfoot > tr > td {
- font-size: 93%;
- color: #777;
- padding: 4px 5px;
-}
-
-.table > tfoot > tr > td a {
- color: #777;
-}
-
-.table-bordered > tbody {
- border-left: 1px solid #DDD;
- border-right: 1px solid #DDD;
- border-bottom: 1px solid #DDD;
-}
-
-.table-bordered > tbody > tr > td {
- border-top: 1px solid #DDD;
-}
-
-select.small-width {
- max-width: 120px;
-}
-
-select.medium-width {
- max-width: 175px;
- width: 175px;
-}
-
-/*
-
- MODAL WINDOWS
-
-*/
-.modal-head {
- padding: 0 10px;
- background-color: #EFEFEF;
- border-bottom: 1px solid #DDD;
-}
-
-.modal-head h1, .modal-head h2 {
- line-height: 30px;
- min-height: 30px;
-}
-
-ul.modal-head-metadata {
- overflow: hidden;
- padding: 0 0 5px 0;
-}
-
-ul.modal-head-metadata li {
- float: left;
- position: relative;
- font-size: 85%;
- color: #777;
-}
-
-.modal-body {
- padding: 10px;
-}
-
-.modal-body .notes {
- height: auto;
-}
-
-.modal-field {
- clear: both;
- display: block;
- padding: 5px 0 5px 130px;
-}
-
-.modal-field label {
- display: block;
- float: left;
- text-align: right;
- width: 130px;
- left: -140px;
- margin-right: -130px;
- line-height: 1;
- word-wrap: break-word;
- position: relative;
- padding-top: 5px;
-}
-
-.modal-field input {
- margin-right: 5px;
- margin-bottom: 10px;
-}
-
-.modal-field input[type=text],
-.modal-field input[type=password],
-.modal-field textarea {
- width: 250px;
-}
-
-.modal-field .text {
- line-height: 20px;
-}
-
-.modal-foot {
- text-align: right;
- padding: 2px 10px;
- border-top: 1px solid #CCC;
- line-height: 30px;
- height: 30px;
- background-color: #EFEFEF;
-}
-
-.modal-foot input {
- margin-right: 10px;
-}
-
-.modal-field-description {
- clear: both;
- font-size: 93%;
- color: #777;
-}
-
-.modal-error {
- border: 1px solid red;
- background-color: #FF5252;
- color: #eee;
- margin: 0 0 4px;
- padding: 4px;
- display: none;
-}
-
-textarea.width100 {
- width: 100%;
- -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
- -moz-box-sizing: border-box; /* Firefox, other Gecko */
- box-sizing: border-box; /* Opera/IE 8+ */
-}
-
-.property {
- margin-bottom: 10px:
-}
-
-.property h3 {
- float: none;
- max-width: 20em;
-}
-
-.property > th, .property > td {
- vertical-align: top;
- padding: 10px;
-}
-
-.property > th {
- text-align: right;
-}
-
-.property table.data {
- width: 480px;
-}
-
-.property textarea {
- vertical-align: text-top;
-}
-
-.property .note {
- margin-top: 5px;
-}
-
-/* ------------------- Accordion navigation styles ------------------- */
-
-.accordion-item {
- border: 1px solid #DDD;
- margin-bottom: 20px;
-}
-
-.accordion-item table.data {
- /* Fix an issue on Google Chrome to prevent the horizontal scroll to appear */
- border-collapse : separate;
-}
-
-.accordion-item-body-medium {
- max-height: 200px;
- overflow: auto;
-}
-
-
-/* ------------------- Rule styles ------------------- */
-
-.rule-search {
- display: inline-block;
- line-height: 16px;
-}
-
-div.rule-title {
- display: inline-block;
- float: left;
- clear: right;
-}
-
-#result_table .rule-desc {
- width: 100%;
- float: left;
- clear: right;
-}
-
-.rule-status, .rule-tags {
- display: inline-block;
- margin-left: 10px;
- float: right;
- padding: 3px 5px 0 0;
- font-size: 85%;
- color: #777;
-}
-
-.rule-tags a {
- color: inherit;
- text-decoration: none;
-}
-
-.rule-status span {
- text-transform: uppercase;
-}
-
-.rule-tags span {
- background-color: #eee;
- padding: 3px 4px;
- margin: 4px 2px;
- border-radius: 2px;
- box-shadow: 0px -1px 0px rgba(0, 0, 0, 0.12) inset;
-}
-
-/* ------------------- Role search styles ------------------- */
-
-.project-search {
- display: inline-block;
- line-height: 16px;
- padding: 4px 2px;
-}
-
-
-
-
-.sonar-d3 {
-
-}
-
-.sonar-d3 .axis path {
- fill: none;
- stroke: #444;
-}
-
-.sonar-d3 .tick line {
- stroke: #444;
-}
-
-.sonar-d3 .tick text {
- fill: #444;
-}
-
-.sonar-d3 .plot {
- transition: all 0.2s ease;
-}
-
-.sonar-d3 .plot:hover .arc,
-.sonar-d3 .plot.hover .arc {
- opacity: 0.4;
-}
-
-.sonar-d3 .plot .arc:hover,
-.sonar-d3 .plot .arc.hover {
- opacity: 1;
-}
-
-.sonar-d3 .plot .line {
- fill: none;
- stroke: #000;
- stroke-width: 2;
-}
-
-.sonar-d3 .plot .line-marker {
- fill: #fff;
- stroke: #000;
- stroke-width: 2;
- opacity: 0;
-}
-
-.sonar-d3 .plot .scanner {
- stroke: #000;
- opacity: 0.25;
-}
-
-.sonar-d3 .arc,
-.sonar-d3 .bar rect {
- cursor: pointer;
- stroke: #fff;
- stroke-width: 1px;
- transition: all 0.2s ease;
-}
-
-.sonar-d3 .bar,
-.sonar-d3 .bar .legend-text,
-.sonar-d3 .pie-legend,
-.sonar-d3 .pie-legend .legend-text {
- cursor: pointer;
-}
-
-.sonar-d3 .legend {
-
-}
-
-.sonar-d3 .legend-bullet {
- transition: all 0.2s ease;
-}
-
-.sonar-d3 .legend-text {
- font-size: 12px;
- cursor: default;
-}
-
-.sonar-d3 .legend-active .legend-bullet {
- -webkit-transform: scale(1.4);
- -webkit-transform-origin: center;
-}
-
-.sonar-d3 .details-color-indicator {
- fill: #fff;
- transition: fill 0.2s ease;
-}
-
-.sonar-d3 .details-metric {
- font-size: 12px;
-}
-
-.sonar-d3 .details-metric-main {
- font-weight: bold;
-}
-
-.sonar-d3 .info {
-
-}
-
-.sonar-d3 .info-text {
- font-size: 13px;
-}
-
-.sonar-d3 .info-text-bold {
- font-weight: bold;
-}
-
-.sonar-d3 .info-text-small {
- font-size: 12px;
-}
-
-.sonar-d3 .event-tick {
- fill: none;
- stroke: #000;
- stroke-width: 1px;
- transition: all 0.3s ease;
-}
-
-/* ------------------- Admin pages ------------------- */
-
-.admin-page-title {
- margin-bottom: 0px;
-}
-
-.admin-page-description {
- font-size: 85%;
- font-weight: normal;
- margin-bottom: 25px;
-}
+++ /dev/null
-/*
- * Fonts
- */
-/*
- * Colors
- */
-/*
- * Icons
- */
-/*
- * Transitions
- */
-input[type=text],
-input[type=password],
-input[type=email],
-textarea {
- border: 1px solid #cdcdcd;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- background: #fff;
- color: #444444;
- transition: border-color 0.3s ease;
-}
-input[type=text]:active,
-input[type=password]:active,
-input[type=email]:active,
-textarea:active,
-input[type=text]:focus,
-input[type=password]:focus,
-input[type=email]:focus,
-textarea:focus {
- border-color: #4b9fd5;
- box-shadow: none;
- outline: none;
-}
-input[type=text],
-input[type=password],
-input[type=email] {
- height: 22px;
- padding: 0 3px;
-}
-textarea {
- padding: 3px;
-}
-button,
-.button,
-input[type=submit],
-input[type=button] {
- display: inline-block;
- vertical-align: baseline;
- height: 22px;
- margin: 0 1px;
- padding: 2px 10px;
- border: 1px solid #cdcdcd;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- background: #f4f4f4;
- color: #444444;
- font-weight: bold;
- font-size: 13px;
- text-align: center;
- text-decoration: none;
- cursor: pointer;
- outline: none;
- transition: border-color 0.3s ease;
-}
-button:hover,
-.button:hover,
-input[type=submit]:hover,
-input[type=button]:hover {
- border-color: #5281a0;
- background: #4b9fd5;
- color: #fff;
-}
-button:active,
-.button:active,
-input[type=submit]:active,
-input[type=button]:active {
- border-color: #2790c0;
- background: #78bdea;
- color: #fff;
-}
-button:focus,
-.button:focus,
-input[type=submit]:focus,
-input[type=button]:focus {
- border-color: #4b9fd5;
-}
-button[disabled],
-.button[disabled],
-input[type=submit][disabled],
-input[type=button][disabled],
-button[disabled]:hover,
-.button[disabled]:hover,
-input[type=submit][disabled]:hover,
-input[type=button][disabled]:hover,
-button[disabled]:active,
-.button[disabled]:active,
-input[type=submit][disabled]:active,
-input[type=button][disabled]:active,
-button[disabled]:focus,
-.button[disabled]:focus,
-input[type=submit][disabled]:focus,
-input[type=button][disabled]:focus {
- color: #bbb;
- border-color: #ddd;
- 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;
-}
+++ /dev/null
-@import "variables";
-@import "mixins";
-
-input[type=text],
-input[type=password],
-input[type=email],
-textarea {
- border: 1px solid @darkGrey;
- .box-sizing(border-box);
- background: #fff;
- color: @baseFontColor;
- .trans(border-color);
-
- &:active,
- &:focus {
- border-color: @highlighted;
- box-shadow: none;
- outline: none;
- }
-}
-
-input[type=text],
-input[type=password],
-input[type=email] {
- height: 22px;
- padding: 0 3px;
-}
-
-textarea {
- padding: 3px;
-}
-
-button,
-.button,
-input[type=submit],
-input[type=button] {
- display: inline-block;
- vertical-align: baseline;
- height: 22px;
- margin: 0 1px;
- padding: 2px 10px;
-
- border: 1px solid @darkGrey;
- .box-sizing(border-box);
-
- background: #f4f4f4;
-
- color: @baseFontColor;
- font-weight: bold;
- font-size: @baseFontSize;
- text-align: center;
- text-decoration: none;
-
- cursor: pointer;
- outline: none;
- .trans(border-color);
-
- &:hover {
- border-color: #5281a0;
- background: #4b9fd5;
- color: #fff;
- }
-
- &:active {
- border-color: #2790c0;
- background: #78bdea;
- color: #fff;
- }
-
- &:focus {
- border-color: @highlighted;
- }
-
- &[disabled],
- &[disabled]:hover,
- &[disabled]:active,
- &[disabled]:focus {
- color: #bbb;
- border-color: #ddd;
- background: #ebebeb;
- 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;
- }
-}
+++ /dev/null
-/*
- * Fonts
- */
-/*
- * Colors
- */
-/*
- * Icons
- */
-/*
- * Transitions
- */
+++ /dev/null
-/*
- * Fonts
- */
-
-@baseFontSize: 13px;
-@baseFontColor: #444;
-@smallFontSize: 11px;
-@headerFontSize: 16px;
-
-
-
-/*
- * Colors
- */
-
-@black: #000000;
-@white: #ffffff;
-@grey: #efefef;
-@darkGrey: #cdcdcd;
-
-@blue: #4b9fd5;
-@red: #d4333f;
-@green: #85bb43;
-@yellow: #fede06;
-@orange: #f90;
-
-@highlighted: @blue;
-
-
-
-/*
- * Icons
- */
-
-@iconSmallFontSize: 14px;
-@iconFontSize: 16px;
-@iconLineHeight: 12px;
-
-@severityBlockerColor: @red;
-@severityCriticalColor: @red;
-@severityMajorColor: @red;
-@severityMinorColor: @green;
-@severityInfoColor: @green;
-
-@statusOpenColor: @blue;
-@statusConfirmedColor: @blue;
-@statusReopenedColor: @blue;
-@statusResolvedColor: @baseFontColor;
-@statusClosedColor: @baseFontColor;
-
-@resolutionFixedColor: @baseFontColor;
-@resolutionFalsePositiveColor: @baseFontColor;
-@resolutionRemovedColor: @baseFontColor;
-
-
-
-/*
- * Transitions
- */
-
-@defaultTransitionOptions: .3s ease;
+++ /dev/null
-/*
-YUI 3.6.0 (build 5521)
-Copyright 2012 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-
-/* reset */
-html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea,select{*font-size:100%}legend{color:#000}
-
-/* font */
-body{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small}select,input,button,textarea{font:99% arial,helvetica,clean,sans-serif}table{font-size:inherit;font:100%}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%}
\ No newline at end of file
<groups xmlns="http://www.isdc.ro/wro">
<group name='sonar'>
- <css>/stylesheets/yui-reset-font.css</css>
- <css>/stylesheets/jquery-ui.css</css>
- <css>/stylesheets/select2.css</css>
- <css>/stylesheets/select2-sonar.css</css>
- <css>/stylesheets/layout.css</css>
- <css>/stylesheets/style.css</css>
- <css>/stylesheets/icons.css</css>
- <css>/stylesheets/ui.css</css>
- <css>/stylesheets/sonar-colorizer.css</css>
- <css>/stylesheets/dashboard.css</css>
- <css>/stylesheets/select-list.css</css>
- <css>/stylesheets/navigator.css</css>
- <css>/stylesheets/quality-gates.css</css>
- <css>/stylesheets/coding-rules.css</css>
-
<js>/javascripts/third-party/jquery.js</js>
<js>/javascripts/third-party/jquery-ui.js</js>
<js>/javascripts/third-party/d3.js</js>