Merge pull request #106 from taigaio/bug/1188/issues-text-search

We need to guarantee that the last petition done here is the finally use...
stable
Juanfran 2014-10-16 13:31:23 +02:00
commit 7bb9bea28a
3 changed files with 20 additions and 10 deletions

View File

@ -134,9 +134,10 @@ class RepositoryService extends taiga.Service
return @http.get(url, params, httpOptions).then (data) => return @http.get(url, params, httpOptions).then (data) =>
return data.data return data.data
queryPaginated: (name, params) -> queryPaginated: (name, params, options={}) ->
url = @urls.resolve(name) url = @urls.resolve(name)
return @http.get(url, params).then (data) => httpOptions = _.merge({headers: {}}, options)
return @http.get(url, params, httpOptions).then (data) =>
headers = data.headers() headers = data.headers()
result = {} result = {}
result.models = _.map(data.data, (x) => @model.make_model(name, x)) result.models = _.map(data.data, (x) => @model.make_model(name, x))

View File

@ -229,7 +229,12 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
@.markSelectedFilters(@scope.filters, urlfilters) @.markSelectedFilters(@scope.filters, urlfilters)
@rootscope.$broadcast("filters:loaded", @scope.filters) @rootscope.$broadcast("filters:loaded", @scope.filters)
loadIssues: -> # We need to guarantee that the last petition done here is the finally used
# When searching by text loadIssues can be called fastly with different parameters and
# can be resolved in a different order than generated
# We count the requests made and only if the callback is for the last one data is updated
loadIssuesRequests: 0
loadIssues: =>
@scope.urlFilters = @.getUrlFilters() @scope.urlFilters = @.getUrlFilters()
# Convert stored filters to http parameters # Convert stored filters to http parameters
@ -255,11 +260,15 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
name = "type" name = "type"
@scope.httpParams[name] = values @scope.httpParams[name] = values
return @rs.issues.list(@scope.projectId, @scope.httpParams).then (data) => promise = @rs.issues.list(@scope.projectId, @scope.httpParams)
@scope.issues = data.models @.loadIssuesRequests += 1
@scope.page = data.current promise.index = @.loadIssuesRequests
@scope.count = data.count promise.then (data) =>
@scope.paginatedBy = data.paginatedBy if promise.index == @.loadIssuesRequests
@scope.issues = data.models
@scope.page = data.current
@scope.count = data.count
@scope.paginatedBy = data.paginatedBy
return data return data
loadInitialData: -> loadInitialData: ->

View File

@ -35,11 +35,11 @@ resourceProvider = ($repo, $http, $urls, $storage, $q) ->
params.project = projectId params.project = projectId
return $repo.queryOne("issues", issueId, params) return $repo.queryOne("issues", issueId, params)
service.list = (projectId, filters) -> service.list = (projectId, filters, options) ->
params = {project: projectId} params = {project: projectId}
params = _.extend({}, params, filters or {}) params = _.extend({}, params, filters or {})
service.storeQueryParams(projectId, params) service.storeQueryParams(projectId, params)
return $repo.queryPaginated("issues", params) return $repo.queryPaginated("issues", params, options)
service.bulkCreate = (projectId, data) -> service.bulkCreate = (projectId, data) ->
url = $urls.resolve("bulk-create-issues") url = $urls.resolve("bulk-create-issues")