diff options
author | Stas Vilchik <vilchiks@gmail.com> | 2014-10-30 09:59:48 +0100 |
---|---|---|
committer | Stas Vilchik <vilchiks@gmail.com> | 2014-10-30 09:59:57 +0100 |
commit | d32e002169ab3578de477ea882d2adfff3c47a7c (patch) | |
tree | 67a7506d6fac09bea1391885eab5802e697367f0 | |
parent | 1a3678f675549ee82d492efc031de96711e9bc19 (diff) | |
download | sonarqube-d32e002169ab3578de477ea882d2adfff3c47a7c.tar.gz sonarqube-d32e002169ab3578de477ea882d2adfff3c47a7c.zip |
SONAR-5718 Add an ability to collapse/expand facets
7 files changed, 52 insertions, 14 deletions
diff --git a/server/sonar-web/src/main/coffee/issues/controller.coffee b/server/sonar-web/src/main/coffee/issues/controller.coffee index a1a05844c57..8ccf17ef760 100644 --- a/server/sonar-web/src/main/coffee/issues/controller.coffee +++ b/server/sonar-web/src/main/coffee/issues/controller.coffee @@ -13,6 +13,7 @@ define [ $ = jQuery EXTRA_FIELDS = 'actions,transitions,assigneeName,reporterName,actionPlanName' PAGE_SIZE = 50 + FACET_DATA_FIELDS = ['components', 'projects', 'users', 'rules', 'actionPlans'] class extends Marionette.Controller @@ -49,12 +50,7 @@ define [ else @options.app.issues.add issues - _.extend @options.app.facets, - components: r.components - projects: r.projects - rules: r.rules - users: r.users - actionPlans: r.actionPlans + FACET_DATA_FIELDS.forEach (field) => @options.app.facets[field] = r[field] @options.app.facets.reset @_allFacets() @options.app.facets.add r.facets, merge: true @enableFacets @options.app.state.get 'facets' @@ -81,14 +77,44 @@ define [ @options.app.filters.reset r.favorites - enableFacet: (facet) -> - @options.app.facets.get(facet).set enabled: true + enableFacet: (id) -> + facet = @options.app.facets.get id + if facet.has 'values' + facet.set enabled: true + else + @requestFacet(id).done => facet.set enabled: true + + + disableFacet: (id) -> + facet = @options.app.facets.get id + facet.set enabled: false + + + toggleFacet: (id) -> + facet = @options.app.facets.get id + if facet.get('enabled') then @disableFacet(id) else @enableFacet(id) enableFacets: (facets) -> facets.forEach @enableFacet, @ + _mergeCollections: (a, b) -> + collection = new Backbone.Collection a + collection.add b, merge: true + collection.toJSON() + + + requestFacet: (id) -> + facet = @options.app.facets.get id + data = _.extend { facets: id, ps: 1 }, @options.app.state.get('query') + $.get "#{baseUrl}/api/issues/search", data, (r) => + FACET_DATA_FIELDS.forEach (field) => + @options.app.facets[field] = @_mergeCollections @options.app.facets[field], r[field] + facetData = _.findWhere r.facets, property: id + facet.set facetData if facetData? + + newSearch: -> @options.app.state.unset 'filter' @options.app.state.setQuery resolved: 'false' diff --git a/server/sonar-web/src/main/coffee/issues/facets-view.coffee b/server/sonar-web/src/main/coffee/issues/facets-view.coffee index e1e6e121a78..30811e790d7 100644 --- a/server/sonar-web/src/main/coffee/issues/facets-view.coffee +++ b/server/sonar-web/src/main/coffee/issues/facets-view.coffee @@ -41,3 +41,14 @@ define [ itemViewOptions: -> app: @options.app + + collectionEvents: -> + 'change:enabled': 'updateState' + + + updateState: -> + enabledFacets = @collection.filter (model) -> model.get('enabled') + enabledFacetIds = enabledFacets.map (model) -> model.id + console.log enabledFacetIds + @options.app.state.set facets: enabledFacetIds + diff --git a/server/sonar-web/src/main/coffee/issues/facets/base-facet.coffee b/server/sonar-web/src/main/coffee/issues/facets/base-facet.coffee index 190028b9326..e8e50066c26 100644 --- a/server/sonar-web/src/main/coffee/issues/facets/base-facet.coffee +++ b/server/sonar-web/src/main/coffee/issues/facets/base-facet.coffee @@ -24,7 +24,6 @@ define [ onRender: -> - console.log @model.id, @model.get 'enabled' @$el.toggleClass 'issues-facet-box-collapsed', !@model.get('enabled') property = @model.get 'property' @@ -35,7 +34,7 @@ define [ toggle: -> - @model.toggle() + @options.app.controller.toggleFacet @model.id getValue: -> @@ -49,4 +48,3 @@ define [ obj = {} obj[property] = value @options.app.state.updateFilter obj - diff --git a/server/sonar-web/src/main/coffee/issues/models/facet.coffee b/server/sonar-web/src/main/coffee/issues/models/facet.coffee index fa7cb817441..4a80c47bba4 100644 --- a/server/sonar-web/src/main/coffee/issues/models/facet.coffee +++ b/server/sonar-web/src/main/coffee/issues/models/facet.coffee @@ -13,7 +13,6 @@ define [ getValues: -> - console.log @toJSON() @get('values') || [] diff --git a/server/sonar-web/src/main/coffee/issues/models/state.coffee b/server/sonar-web/src/main/coffee/issues/models/state.coffee index 6ef3f104983..d838e468e71 100644 --- a/server/sonar-web/src/main/coffee/issues/models/state.coffee +++ b/server/sonar-web/src/main/coffee/issues/models/state.coffee @@ -13,8 +13,8 @@ define [ query: {} facets: ['severities', 'statuses', 'resolutions', 'componentRootUuids'] - allFacets: ['severities', 'statuses', 'resolutions', 'componentRootUuids', 'assignees', 'reporters', 'rule', - 'languages', 'actionPlan', 'creationDate'] + allFacets: ['severities', 'statuses', 'resolutions', 'componentRootUuids', 'assignees', 'reporters', 'rules', + 'languages', 'actionPlans', 'creationDate'] nextPage: -> diff --git a/server/sonar-web/src/main/less/issues.less b/server/sonar-web/src/main/less/issues.less index 4a35c249d81..20634f1d5c0 100644 --- a/server/sonar-web/src/main/less/issues.less +++ b/server/sonar-web/src/main/less/issues.less @@ -61,6 +61,8 @@ .issues-facet-header { color: @secondFontColor; font-weight: 300; + + &:hover { color: @blue; } } } diff --git a/sonar-core/src/main/resources/org/sonar/l10n/core.properties b/sonar-core/src/main/resources/org/sonar/l10n/core.properties index 934006976be..5b3cbfcc179 100644 --- a/sonar-core/src/main/resources/org/sonar/l10n/core.properties +++ b/sonar-core/src/main/resources/org/sonar/l10n/core.properties @@ -769,6 +769,8 @@ issues.facet.components=Component issues.facet.rules=Rule issues.facet.resolutions=Resolution issues.facet.languages=Language +issues.facet.creationDate=Creation Date +issues.facet.reporters=Reporter #------------------------------------------------------------------------------ |