From 245355f8d5a9cd1cbb3cca703ea7cfc38de775ed Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Lievremont Date: Thu, 15 May 2014 16:33:07 +0200 Subject: [PATCH] SONAR-5007 Start integratng api/rules WS with UI --- .../src/main/coffee/coding-rules/app.coffee | 41 +++++++---------- .../coding-rules-bulk-change-view.coffee | 4 +- .../views/coding-rules-detail-view.coffee | 6 +-- .../views/coding-rules-list-item-view.coffee | 6 ++- ...les-quality-profile-activation-view.coffee | 2 +- .../quality-profile-filter-view.coffee | 1 - .../filters/repository-filter-view.coffee | 46 +++++++++++++++++++ .../views/filters/tag-filter-view.coffee | 23 ++++++++++ .../hbs/coding-rules/coding-rules-detail.hbs | 20 ++++---- .../coding-rules/coding-rules-list-item.hbs | 4 +- .../coding-rules-repository-detail.hbs | 12 +++++ 11 files changed, 119 insertions(+), 46 deletions(-) create mode 100644 sonar-server/src/main/coffee/coding-rules/views/filters/repository-filter-view.coffee create mode 100644 sonar-server/src/main/coffee/coding-rules/views/filters/tag-filter-view.coffee create mode 100644 sonar-server/src/main/hbs/coding-rules/coding-rules-repository-detail.hbs diff --git a/sonar-server/src/main/coffee/coding-rules/app.coffee b/sonar-server/src/main/coffee/coding-rules/app.coffee index 9d1393c46b2..c15b385e8af 100644 --- a/sonar-server/src/main/coffee/coding-rules/app.coffee +++ b/sonar-server/src/main/coffee/coding-rules/app.coffee @@ -42,6 +42,8 @@ requirejs [ 'coding-rules/views/filters/inheritance-filter-view', 'coding-rules/views/filters/activation-filter-view', 'coding-rules/views/filters/characteristic-filter-view', + 'coding-rules/views/filters/repository-filter-view', + 'coding-rules/views/filters/tag-filter-view', 'coding-rules/mockjax', 'common/handlebars-extensions' @@ -67,9 +69,11 @@ requirejs [ StringFilterView, DateFilterView, QualityProfileFilterView, - InheritanceFilterView - ActivationFilterView - CharacteristicFilterView + InheritanceFilterView, + ActivationFilterView, + CharacteristicFilterView, + RepositoryFilterView, + TagFilterView ) -> # Create a generic error handler for ajax requests @@ -130,13 +134,13 @@ requirejs [ @layout.showSpinner 'resultsRegion' @layout.showSpinner 'facetsRegion' unless fromFacets jQuery.ajax - url: "#{baseUrl}/api/codingrules/search" + url: "#{baseUrl}/api/rules/search" data: fetchQuery .done (r) => if firstPage - @codingRules.reset r.codingrules + @codingRules.reset r.rules else - @codingRules.add r.codingrules + @codingRules.add r.rules @codingRules.paging = r.paging @codingRulesListView = new CodingRulesListView app: @ @@ -214,7 +218,7 @@ requirejs [ @filters.add new BaseFilters.Filter name: t 'coding_rules.filters.name' - property: 'name' + property: 'q' type: StringFilterView @languageFilter = new BaseFilters.Filter @@ -244,7 +248,7 @@ requirejs [ @filters.add new BaseFilters.Filter name: t 'coding_rules.filters.tag' property: 'tags' - type: ChoiceFilters.ChoiceFilterView + type: TagFilterView choices: @tags @filters.add new BaseFilters.Filter @@ -282,13 +286,6 @@ requirejs [ 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.inheritance' property: 'inheritance' @@ -302,19 +299,13 @@ requirejs [ 'inhertited': t 'coding_rules.filters.inheritance.inherited' 'overriden': t 'coding_rules.filters.inheritance.overriden' - @filters.add new BaseFilters.Filter - name: t 'coding_rules.filters.key' - property: 'key' - type: StringFilterView - enabled: false - optional: true - @filters.add new BaseFilters.Filter name: t 'coding_rules.filters.repository' property: 'repositories' - type: ChoiceFilters.ChoiceFilterView + type: RepositoryFilterView enabled: false optional: true + languageFilter: @languageFilter choices: @repositories @filters.add new BaseFilters.Filter @@ -341,7 +332,7 @@ requirejs [ # Call app before start the application appXHR = jQuery.ajax - url: "#{baseUrl}/api/codingrules/app" + url: "#{baseUrl}/api/rules/app" jQuery.when(appXHR) .done (r) -> @@ -359,4 +350,4 @@ requirejs [ jQuery('#coding-rules-page-loader').remove() # Start the application - App.start() \ No newline at end of file + App.start() diff --git a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-bulk-change-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-bulk-change-view.coffee index 144cbfafb37..1cc9294de1b 100644 --- a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-bulk-change-view.coffee +++ b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-bulk-change-view.coffee @@ -77,7 +77,7 @@ define [ bulkChange: (query) -> jQuery.ajax type: 'POST' - url: "#{baseUrl}/api/codingrules/bulk_change" + url: "#{baseUrl}/api/rules/bulk_change" data: query .done => @options.app.fetchFirstPage() @@ -98,6 +98,6 @@ define [ qualityProfileName: @options.app.qualityProfileFilter.view.renderValue() activateOnQualityProfiles: @options.app.qualityProfiles - deactivateOnQualityProfiles: _.reject @options.app.qualityProfiles, (q) => q.key == @options.app.getQualityProfile() + deactivateOnQualityProfiles: _.reject @options.app.qualityProfiles, (q) => q.name == @options.app.getQualityProfile() severities: ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO'] diff --git a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-view.coffee index 25cc875230f..a9367da5fcd 100644 --- a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-view.coffee +++ b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-view.coffee @@ -106,7 +106,7 @@ define [ tags = @ui.tagInput.val() jQuery.ajax type: 'POST' - url: "#{baseUrl}/api/codingrules/set_tags" + url: "#{baseUrl}/api/rules/set_tags" data: tags: tags .done => if tags.length > 0 @@ -131,7 +131,7 @@ define [ @ui.extendDescriptionSpinner.show() jQuery.ajax type: 'POST' - url: "#{baseUrl}/api/codingrules/extend_description" + url: "#{baseUrl}/api/rules/extend_description" dataType: 'json' data: text: @ui.extendDescriptionText.val() .done (r) => @@ -155,4 +155,4 @@ define [ _.extend super, contextQualityProfile: contextQualityProfile contextQualityProfileName: @options.app.qualityProfileFilter.view.renderValue() - qualityProfile: @contextProfile \ No newline at end of file + qualityProfile: @contextProfile diff --git a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-list-item-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-list-item-view.coffee index ac2a0b8a729..a0f5192e87c 100644 --- a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-list-item-view.coffee +++ b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-list-item-view.coffee @@ -24,9 +24,11 @@ define [ @options.app.layout.showSpinner 'detailsRegion' jQuery.ajax - url: "#{baseUrl}/api/codingrules/show" + url: "#{baseUrl}/api/rules/show" + data: + key: @model.get('key') .done (r) => - @model.set r.codingrule + @model.set r.rule @options.app.codingRulesQualityProfileActivationView.rule = @model @options.app.detailView = new CodingRulesDetailView app: @options.app diff --git a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-quality-profile-activation-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-quality-profile-activation-view.coffee index a1af8adba67..3d92ffe0ac0 100644 --- a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-quality-profile-activation-view.coffee +++ b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-quality-profile-activation-view.coffee @@ -27,7 +27,7 @@ define [ @$('.modal-foot').html '' jQuery.ajax type: 'POST' - url: "#{baseUrl}/api/codingrules/activate" + url: "#{baseUrl}/api/rules/activate" data: id: 1 .done => severity = @ui.qualityProfileSeverity.val() diff --git a/sonar-server/src/main/coffee/coding-rules/views/filters/quality-profile-filter-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/filters/quality-profile-filter-view.coffee index eff55a9e618..7efe24feb2b 100644 --- a/sonar-server/src/main/coffee/coding-rules/views/filters/quality-profile-filter-view.coffee +++ b/sonar-server/src/main/coffee/coding-rules/views/filters/quality-profile-filter-view.coffee @@ -48,4 +48,3 @@ define [ text: r.qualityprofile.text, parent: r.qualityprofile.parent, checked: true - diff --git a/sonar-server/src/main/coffee/coding-rules/views/filters/repository-filter-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/filters/repository-filter-view.coffee new file mode 100644 index 00000000000..a5d09d54336 --- /dev/null +++ b/sonar-server/src/main/coffee/coding-rules/views/filters/repository-filter-view.coffee @@ -0,0 +1,46 @@ +define [ + 'navigator/filters/choice-filters', + 'templates/coding-rules' +], ( + ChoiceFilters, + Templates +) -> + + class RepositoryFilterView extends ChoiceFilters.ChoiceFilterView + itemTemplate: Templates['coding-rules-repository-detail'] + + initialize: -> + super + @allRepositories = @model.get 'choices' + @updateChoices @allRepositories + + @languageFilter = @model.get 'languageFilter' + @listenTo @languageFilter, 'change:value', @onChangeLanguage + @onChangeLanguage() + + + onChangeLanguage: -> + languages = @languageFilter.get 'value' + if _.isArray(languages) && languages.length > 0 + @filterLanguages(languages) + else + @updateChoices(@allRepositories) + + filterLanguages: (languages) -> + languageRepositories = _.filter( @allRepositories, (repo) -> languages.indexOf(repo.language) >= 0 ) + @updateChoices(languageRepositories) + + + updateChoices: (collection) -> + currentValue = @model.get('value') + @choices = new Backbone.Collection( _.map collection, (item, index) -> + new Backbone.Model + id: item.key + text: item.name + checked: false + index: index + comparator: 'index' + ) + if currentValue + @restore(currentValue) + @render() diff --git a/sonar-server/src/main/coffee/coding-rules/views/filters/tag-filter-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/filters/tag-filter-view.coffee new file mode 100644 index 00000000000..772c093329b --- /dev/null +++ b/sonar-server/src/main/coffee/coding-rules/views/filters/tag-filter-view.coffee @@ -0,0 +1,23 @@ +define [ + 'navigator/filters/ajax-select-filters' +], ( + AjaxSelectFilters +) -> + + class TagSuggestions extends AjaxSelectFilters.Suggestions + + url: -> + "#{baseUrl}/api/rules/tags" + + parse: (r) -> + return _.map(r.tags, (tag) -> + new Backbone.Model + id: tag + text: tag + ) + + class TagFilterView extends AjaxSelectFilters.AjaxSelectFilterView + + initialize: -> + super + @choices = new TagSuggestions diff --git a/sonar-server/src/main/hbs/coding-rules/coding-rules-detail.hbs b/sonar-server/src/main/hbs/coding-rules/coding-rules-detail.hbs index 6d17e454e1b..09047ae954e 100644 --- a/sonar-server/src/main/hbs/coding-rules/coding-rules-detail.hbs +++ b/sonar-server/src/main/hbs/coding-rules/coding-rules-detail.hbs @@ -10,7 +10,7 @@ -
{{{description}}}
+
{{{htmlDesc}}}
@@ -75,18 +75,18 @@
-{{#if parameters}} +{{#if params}}

{{t 'coding_rules.parameters'}}

- \ No newline at end of file + diff --git a/sonar-server/src/main/hbs/coding-rules/coding-rules-list-item.hbs b/sonar-server/src/main/hbs/coding-rules/coding-rules-list-item.hbs index d44d28895da..ec50f1ff313 100644 --- a/sonar-server/src/main/hbs/coding-rules/coding-rules-list-item.hbs +++ b/sonar-server/src/main/hbs/coding-rules/coding-rules-list-item.hbs @@ -1,5 +1,5 @@
- {{language}} + {{lang}}
{{#notEq status 'READY'}}{{status}}{{/notEq}}
-
{{name}}
\ No newline at end of file +
{{name}}
diff --git a/sonar-server/src/main/hbs/coding-rules/coding-rules-repository-detail.hbs b/sonar-server/src/main/hbs/coding-rules/coding-rules-repository-detail.hbs new file mode 100644 index 00000000000..deec5403b52 --- /dev/null +++ b/sonar-server/src/main/hbs/coding-rules/coding-rules-repository-detail.hbs @@ -0,0 +1,12 @@ +
  • + +
  • -- 2.39.5