Fixed bug #693: Adding issues filters storage

stable
Jesús Espino 2014-08-19 10:59:19 +02:00
parent faa50a2bc4
commit d6bf5758de
2 changed files with 29 additions and 2 deletions

View File

@ -43,6 +43,7 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
"$tgRepo",
"$tgConfirm",
"$tgResources",
"$tgUrls",
"$routeParams",
"$q",
"$location",
@ -50,11 +51,18 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
"tgLoader"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q, @location, @appTitle, tgLoader) ->
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @urls, @params, @q, @location, @appTitle, tgLoader) ->
@scope.sprintId = @params.id
@scope.sectionName = "Issues"
@scope.filters = {}
if _.isEmpty(@location.search())
filters = @rs.issues.getFilters(@params.pslug)
filters.page = 1
@location.search(filters)
@location.replace()
return
promise = @.loadInitialData()
promise.then () =>
@ -68,6 +76,9 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
@.loadIssues()
@.loadFilters()
storeFilters: ->
@rs.issues.storeFilters(@params.pslug, @location.search())
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
@scope.project = project
@ -116,7 +127,7 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
if not searchdata[name]?
searchdata[name] = {}
for val in value.split(",")
for val in "#{value}".split(",")
searchdata[name][val] = true
isSelected = (type, id) ->
@ -408,6 +419,7 @@ IssuesDirective = ($log, $location) ->
$scope.$apply ->
$ctrl.replaceFilter("orderBy", finalOrder)
$ctrl.storeFilters()
$ctrl.loadIssues().then ->
# Update the arrow
$el.find(".row.title > div > span.icon").remove()
@ -517,12 +529,14 @@ IssuesFiltersDirective = ($log, $location) ->
$scope.$apply ->
$ctrl.selectFilter(type, id)
$ctrl.selectFilter("page", 1)
$ctrl.storeFilters()
$ctrl.loadIssues()
else
selectedFilters = _.reject(selectedFilters, filter)
$scope.$apply ->
$ctrl.unselectFilter(type, id)
$ctrl.selectFilter("page", 1)
$ctrl.storeFilters()
$ctrl.loadIssues()
renderSelectedFilters(selectedFilters)
@ -539,8 +553,10 @@ IssuesFiltersDirective = ($log, $location) ->
return if value is undefined
if value.length == 0
$ctrl.replaceFilter("subject", null)
$ctrl.storeFilters()
else
$ctrl.replaceFilter("subject", value)
$ctrl.storeFilters()
$ctrl.loadIssues()
$scope.$watch("filtersSubject", selectSubjectFilter)

View File

@ -27,6 +27,7 @@ generateHash = taiga.generateHash
resourceProvider = ($repo, $http, $urls, $storage) ->
service = {}
hashSuffix = "issues-queryparams"
filtersHashSuffix = "issues-filters"
service.get = (projectId, issueId) ->
params = service.getQueryParams(projectId)
@ -68,6 +69,16 @@ resourceProvider = ($repo, $http, $urls, $storage) ->
hash = generateHash([projectId, ns])
return $storage.get(hash) or {}
service.storeFilters = (projectSlug, params) ->
ns = "#{projectSlug}:#{filtersHashSuffix}"
hash = generateHash([projectSlug, ns])
$storage.set(hash, params)
service.getFilters = (projectSlug) ->
ns = "#{projectSlug}:#{filtersHashSuffix}"
hash = generateHash([projectSlug, ns])
return $storage.get(hash) or {}
return (instance) ->
instance.issues = service