diff --git a/app/coffee/modules/issues/list.coffee b/app/coffee/modules/issues/list.coffee index 2954ea6f..f5bb180e 100644 --- a/app/coffee/modules/issues/list.coffee +++ b/app/coffee/modules/issues/list.coffee @@ -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) diff --git a/app/coffee/modules/resources/issues.coffee b/app/coffee/modules/resources/issues.coffee index 309e76ec..013f02c8 100644 --- a/app/coffee/modules/resources/issues.coffee +++ b/app/coffee/modules/resources/issues.coffee @@ -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