From 9736bd897bc851b451510047284f18cb7d84ec69 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Lievremont Date: Tue, 27 May 2014 13:04:55 +0200 Subject: [PATCH] SONAR-5007 SONAR-5133 Apply feedback for filter bar (big query field, most fields optional) --- .../src/main/coffee/coding-rules/app.coffee | 15 +++-- .../filters/activation-filter-view.coffee | 6 ++ .../views/filters/query-filter-view.coffee | 64 +++++++++++++++++++ .../hbs/coding-rules/coding-rules-actions.hbs | 8 +-- .../coding-rules-query-filter.hbs | 3 + sonar-server/src/main/less/coding-rules.less | 14 +++- 6 files changed, 100 insertions(+), 10 deletions(-) create mode 100644 sonar-server/src/main/coffee/coding-rules/views/filters/query-filter-view.coffee create mode 100644 sonar-server/src/main/hbs/coding-rules/coding-rules-query-filter.hbs diff --git a/sonar-server/src/main/coffee/coding-rules/app.coffee b/sonar-server/src/main/coffee/coding-rules/app.coffee index ff01752e8fe..8d7fe22f9ad 100644 --- a/sonar-server/src/main/coffee/coding-rules/app.coffee +++ b/sonar-server/src/main/coffee/coding-rules/app.coffee @@ -38,6 +38,7 @@ requirejs [ 'navigator/filters/choice-filters', 'navigator/filters/string-filters', 'navigator/filters/date-filter-view', + 'coding-rules/views/filters/query-filter-view', 'coding-rules/views/filters/quality-profile-filter-view', 'coding-rules/views/filters/inheritance-filter-view', 'coding-rules/views/filters/activation-filter-view', @@ -68,6 +69,7 @@ requirejs [ ChoiceFilters, StringFilterView, DateFilterView, + QueryFilterView, QualityProfileFilterView, InheritanceFilterView, ActivationFilterView, @@ -212,7 +214,7 @@ requirejs [ # Define coding rules App.addInitializer -> @codingRules = new Backbone.Collection - @codingRules.sorting = sort: 'CREATED_AT', asc: false + @codingRules.sorting = sort: 'createdAt', asc: false # Construct status bar @@ -238,22 +240,25 @@ requirejs [ App.addInitializer -> @filters = new BaseFilters.Filters - @filters.add new BaseFilters.Filter - name: t 'coding_rules.filters.name' + @queryFilter = new BaseFilters.Filter property: 'q' - type: StringFilterView + type: QueryFilterView + size: 50 + @filters.add @queryFilter @languageFilter = new BaseFilters.Filter name: t 'coding_rules.filters.language' property: 'languages' type: ChoiceFilters.ChoiceFilterView choices: @languages + optional: true @filters.add @languageFilter @filters.add new BaseFilters.Filter name: t 'coding_rules.filters.severity' property: 'severities' type: ChoiceFilters.ChoiceFilterView + optional: true choices: 'BLOCKER': t 'severity.BLOCKER' 'CRITICAL': t 'severity.CRITICAL' @@ -271,6 +276,7 @@ requirejs [ name: t 'coding_rules.filters.tag' property: 'tags' type: TagFilterView + optional: true @filters.add new BaseFilters.Filter name: t 'coding_rules.filters.characteristic' @@ -278,6 +284,7 @@ requirejs [ type: CharacteristicFilterView choices: @characteristics multiple: false + optional: true @qualityProfileFilter = new BaseFilters.Filter name: t 'coding_rules.filters.quality_profile' diff --git a/sonar-server/src/main/coffee/coding-rules/views/filters/activation-filter-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/filters/activation-filter-view.coffee index eb603c6ec06..5f853c2dbec 100644 --- a/sonar-server/src/main/coffee/coding-rules/views/filters/activation-filter-view.coffee +++ b/sonar-server/src/main/coffee/coding-rules/views/filters/activation-filter-view.coffee @@ -39,3 +39,9 @@ define [ @detailsView.updateLists() @render() super + + restore: (value) -> + @choices.each (item) -> item.set 'checked', item.id == value + @detailsView.updateValue() + @detailsView.updateLists() + @render() diff --git a/sonar-server/src/main/coffee/coding-rules/views/filters/query-filter-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/filters/query-filter-view.coffee new file mode 100644 index 00000000000..c26c1aafcca --- /dev/null +++ b/sonar-server/src/main/coffee/coding-rules/views/filters/query-filter-view.coffee @@ -0,0 +1,64 @@ +define [ + 'backbone', + 'backbone.marionette', + 'navigator/filters/base-filters', + 'navigator/filters/string-filters', + 'navigator/filters/choice-filters', + 'templates/coding-rules', + 'common/handlebars-extensions' +], ( + Backbone, + Marionette, + BaseFilters, + StringFilterView, + ChoiceFilters, + Templates +) -> + + class QueryFilterView extends StringFilterView + template: Templates['coding-rules-query-filter'] + className: 'navigator-filter navigator-filter-query' + + events: + 'change input': 'change' + + + change: (e) -> + @model.set 'value', $j(e.target).val() + @options.app.fetchFirstPage() + + + clear: -> + super + @focus() + + + onShow: -> + @focus() + + + focus: -> + @$(':input').focus(); + + + serializeData: -> + return _.extend({}, @model.toJSON(), + value: this.model.get('value') || '' + ) + + + initialize: -> + super detailsView: null + @model.set('size', 25) unless @model.get 'size' + + + renderInput: -> + # Done in template + + + toggleDetails: -> + # NOP + + + isDefaultValue: -> + true diff --git a/sonar-server/src/main/hbs/coding-rules/coding-rules-actions.hbs b/sonar-server/src/main/hbs/coding-rules/coding-rules-actions.hbs index 330332fdb4f..727a9cc1c93 100644 --- a/sonar-server/src/main/hbs/coding-rules/coding-rules-actions.hbs +++ b/sonar-server/src/main/hbs/coding-rules/coding-rules-actions.hbs @@ -6,10 +6,10 @@ {{/if}}