Merge pull request #381 from taigaio/issue/2393/status-filter-disappear
fix 2393 - fix if I filter by status and tag the status filter disappearstable
commit
01d567f277
|
@ -89,12 +89,10 @@ BacklogFiltersDirective = ($log, $location, $templates) ->
|
||||||
selectedFilters.push(filter)
|
selectedFilters.push(filter)
|
||||||
$scope.$apply ->
|
$scope.$apply ->
|
||||||
$ctrl.selectFilter(type, id)
|
$ctrl.selectFilter(type, id)
|
||||||
$ctrl.filterVisibleUserstories()
|
|
||||||
else
|
else
|
||||||
selectedFilters = _.reject(selectedFilters, filter)
|
selectedFilters = _.reject(selectedFilters, filter)
|
||||||
$scope.$apply ->
|
$scope.$apply ->
|
||||||
$ctrl.unselectFilter(type, id)
|
$ctrl.unselectFilter(type, id)
|
||||||
$ctrl.filterVisibleUserstories()
|
|
||||||
|
|
||||||
renderSelectedFilters(selectedFilters)
|
renderSelectedFilters(selectedFilters)
|
||||||
|
|
||||||
|
|
|
@ -204,8 +204,9 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
|
||||||
# NOTE: Fix order of USs because the filter orderBy does not work propertly in the partials files
|
# NOTE: Fix order of USs because the filter orderBy does not work propertly in the partials files
|
||||||
@scope.userstories = _.sortBy(userstories, "backlog_order")
|
@scope.userstories = _.sortBy(userstories, "backlog_order")
|
||||||
|
|
||||||
@.generateFilters()
|
@.setSearchDataFilters()
|
||||||
@.filterVisibleUserstories()
|
@.filterVisibleUserstories()
|
||||||
|
@.generateFilters()
|
||||||
|
|
||||||
@rootscope.$broadcast("filters:loaded", @scope.filters)
|
@rootscope.$broadcast("filters:loaded", @scope.filters)
|
||||||
# The broadcast must be executed when the DOM has been fully reloaded.
|
# The broadcast must be executed when the DOM has been fully reloaded.
|
||||||
|
@ -246,32 +247,16 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
|
||||||
@scope.visibleUserstories = []
|
@scope.visibleUserstories = []
|
||||||
|
|
||||||
# Filter by tags
|
# Filter by tags
|
||||||
selectedTags = _.filter(@scope.filters.tags, "selected")
|
@scope.visibleUserstories = _.reject @scope.userstories, (us) =>
|
||||||
selectedTags = _.map(selectedTags, "name")
|
return _.some us.tags, (tag) =>
|
||||||
|
return @isFilterSelected("tag", tag)
|
||||||
if selectedTags.length == 0
|
|
||||||
@scope.visibleUserstories = _.clone(@scope.userstories, false)
|
|
||||||
else
|
|
||||||
@scope.visibleUserstories = _.reject @scope.userstories, (us) =>
|
|
||||||
if _.intersection(selectedTags, us.tags).length == 0
|
|
||||||
return true
|
|
||||||
return false
|
|
||||||
|
|
||||||
# Filter by status
|
# Filter by status
|
||||||
selectedStatuses = _.filter(@scope.filters.statuses, "selected")
|
@scope.visibleUserstories = _.filter @scope.visibleUserstories, (us) =>
|
||||||
selectedStatuses = _.map(selectedStatuses, "id")
|
if @searchdata["statuses"] && Object.keys(@searchdata["statuses"]).length
|
||||||
|
return @isFilterSelected("statuses", taiga.toString(us.status))
|
||||||
|
|
||||||
if selectedStatuses.length > 0
|
return true
|
||||||
@scope.visibleUserstories = _.reject @scope.visibleUserstories, (us) =>
|
|
||||||
res = _.find(selectedStatuses, (x) -> x == taiga.toString(us.status))
|
|
||||||
return not res
|
|
||||||
|
|
||||||
@rs.userstories.storeQueryParams(@scope.projectId, {
|
|
||||||
"status": selectedStatuses,
|
|
||||||
"tags": selectedTags,
|
|
||||||
"project": @scope.projectId
|
|
||||||
"milestone": null
|
|
||||||
})
|
|
||||||
|
|
||||||
prepareBulkUpdateData: (uses, field="backlog_order") ->
|
prepareBulkUpdateData: (uses, field="backlog_order") ->
|
||||||
return _.map(uses, (x) -> {"us_id": x.id, "order": x[field]})
|
return _.map(uses, (x) -> {"us_id": x.id, "order": x[field]})
|
||||||
|
@ -428,31 +413,33 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
|
||||||
|
|
||||||
return promise
|
return promise
|
||||||
|
|
||||||
getUrlFilters: ->
|
isFilterSelected: (type, id) ->
|
||||||
return _.pick(@location.search(), "statuses", "tags", "q")
|
if @searchdata[type]? and @searchdata[type][id]
|
||||||
|
return true
|
||||||
|
return false
|
||||||
|
|
||||||
generateFilters: ->
|
setSearchDataFilters: () ->
|
||||||
urlfilters = @.getUrlFilters()
|
urlfilters = @.getUrlFilters()
|
||||||
|
|
||||||
if urlfilters.q
|
if urlfilters.q
|
||||||
@scope.filtersQ = @scope.filtersQ or urlfilters.q
|
@scope.filtersQ = @scope.filtersQ or urlfilters.q
|
||||||
|
|
||||||
searchdata = {}
|
@searchdata = {}
|
||||||
for name, value of urlfilters
|
for name, value of urlfilters
|
||||||
if not searchdata[name]?
|
if not @searchdata[name]?
|
||||||
searchdata[name] = {}
|
@searchdata[name] = {}
|
||||||
|
|
||||||
for val in taiga.toString(value).split(",")
|
for val in taiga.toString(value).split(",")
|
||||||
searchdata[name][val] = true
|
@searchdata[name][val] = true
|
||||||
|
|
||||||
isSelected = (type, id) ->
|
getUrlFilters: ->
|
||||||
if searchdata[type]? and searchdata[type][id]
|
return _.pick(@location.search(), "statuses", "tags", "q")
|
||||||
return true
|
|
||||||
return false
|
|
||||||
|
|
||||||
|
generateFilters: ->
|
||||||
@scope.filters = {}
|
@scope.filters = {}
|
||||||
|
|
||||||
plainTags = _.flatten(_.filter(_.map(@scope.userstories, "tags")))
|
#tags
|
||||||
|
plainTags = _.flatten(_.filter(_.map(@scope.visibleUserstories, "tags")))
|
||||||
plainTags.sort()
|
plainTags.sort()
|
||||||
|
|
||||||
@scope.filters.tags = _.map _.countBy(plainTags), (v, k) =>
|
@scope.filters.tags = _.map _.countBy(plainTags), (v, k) =>
|
||||||
|
@ -463,10 +450,14 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
|
||||||
color: @scope.project.tags_colors[k],
|
color: @scope.project.tags_colors[k],
|
||||||
count: v
|
count: v
|
||||||
}
|
}
|
||||||
obj.selected = true if isSelected("tags", obj.id)
|
obj.selected = true if @isFilterSelected("tags", obj.id)
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
plainStatuses = _.map(@scope.userstories, "status")
|
selectedTags = _.filter(@scope.filters.tags, "selected")
|
||||||
|
selectedTags = _.map(selectedTags, "name")
|
||||||
|
|
||||||
|
#status
|
||||||
|
plainStatuses = _.map(@scope.visibleUserstories, "status")
|
||||||
|
|
||||||
plainStatuses = _.filter plainStatuses, (status) =>
|
plainStatuses = _.filter plainStatuses, (status) =>
|
||||||
if status
|
if status
|
||||||
|
@ -480,11 +471,20 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
|
||||||
color: @scope.usStatusById[k].color,
|
color: @scope.usStatusById[k].color,
|
||||||
count:v
|
count:v
|
||||||
}
|
}
|
||||||
obj.selected = true if isSelected("statuses", obj.id)
|
obj.selected = true if @isFilterSelected("statuses", obj.id)
|
||||||
|
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
return @scope.filters
|
selectedStatuses = _.filter(@scope.filters.statuses, "selected")
|
||||||
|
selectedStatuses = _.map(selectedStatuses, "id")
|
||||||
|
|
||||||
|
#store query params
|
||||||
|
@rs.userstories.storeQueryParams(@scope.projectId, {
|
||||||
|
"status": selectedStatuses,
|
||||||
|
"tags": selectedTags,
|
||||||
|
"project": @scope.projectId
|
||||||
|
"milestone": null
|
||||||
|
})
|
||||||
|
|
||||||
## Template actions
|
## Template actions
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue