Improve resource loading on issues list.
parent
a8f753af55
commit
e6ed0caee0
|
@ -65,12 +65,17 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
||||||
|
|
||||||
promise = @.loadInitialData()
|
promise = @.loadInitialData()
|
||||||
|
|
||||||
promise.then () =>
|
# On Success
|
||||||
|
promise.then =>
|
||||||
@appTitle.set("Issues - " + @scope.project.name)
|
@appTitle.set("Issues - " + @scope.project.name)
|
||||||
tgLoader.pageLoaded()
|
tgLoader.pageLoaded()
|
||||||
|
|
||||||
promise.then null, ->
|
# On Error
|
||||||
console.log "FAIL" #TODO
|
promise.then null, (xhr) =>
|
||||||
|
if xhr and xhr.status == 404
|
||||||
|
@location.path("/not-found")
|
||||||
|
@location.replace()
|
||||||
|
return @q.reject(xhr)
|
||||||
|
|
||||||
@scope.$on "issueform:new:success", =>
|
@scope.$on "issueform:new:success", =>
|
||||||
@.loadIssues()
|
@.loadIssues()
|
||||||
|
@ -109,23 +114,14 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
||||||
return filters[name]
|
return filters[name]
|
||||||
|
|
||||||
loadMyFilters: ->
|
loadMyFilters: ->
|
||||||
deferred = @q.defer()
|
return @rs.issues.getMyFilters(@scope.projectId).then (filters) =>
|
||||||
promise = @rs.issues.getMyFilters(@scope.projectId)
|
return _.map filters, (value, key) =>
|
||||||
promise.then (filters) ->
|
return {id: key, name: key, type: "myFilters", selected: false}
|
||||||
result = _.map filters, (value, key) =>
|
|
||||||
obj = {
|
|
||||||
id: key,
|
|
||||||
name: key,
|
|
||||||
type: "myFilters"
|
|
||||||
}
|
|
||||||
obj.selected = false
|
|
||||||
return obj
|
|
||||||
deferred.resolve(result)
|
|
||||||
return deferred.promise
|
|
||||||
|
|
||||||
removeNotExistingFiltersFromUrl: ->
|
removeNotExistingFiltersFromUrl: ->
|
||||||
currentSearch = @location.search()
|
currentSearch = @location.search()
|
||||||
urlfilters = @.getUrlFilters()
|
urlfilters = @.getUrlFilters()
|
||||||
|
|
||||||
for filterName, filterValue of urlfilters
|
for filterName, filterValue of urlfilters
|
||||||
if filterName == "page" or filterName == "orderBy" or filterName == "q"
|
if filterName == "page" or filterName == "orderBy" or filterName == "q"
|
||||||
continue
|
continue
|
||||||
|
@ -162,15 +158,22 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
||||||
obj.selected = if isSelected(obj.type, obj.id) then true else undefined
|
obj.selected = if isSelected(obj.type, obj.id) then true else undefined
|
||||||
|
|
||||||
loadFilters: ->
|
loadFilters: ->
|
||||||
deferred = @q.defer()
|
|
||||||
urlfilters = @.getUrlFilters()
|
urlfilters = @.getUrlFilters()
|
||||||
|
|
||||||
if urlfilters.q
|
if urlfilters.q
|
||||||
@scope.filtersQ = urlfilters.q
|
@scope.filtersQ = urlfilters.q
|
||||||
|
|
||||||
@.loadMyFilters().then (myFilters) =>
|
# Load My Filters
|
||||||
|
promise = @.loadMyFilters().then (myFilters) =>
|
||||||
@scope.filters.myFilters = myFilters
|
@scope.filters.myFilters = myFilters
|
||||||
@rs.issues.filtersData(@scope.projectId).then (data) =>
|
return myFilters
|
||||||
|
|
||||||
|
# Load default filters data
|
||||||
|
promise = promise.then =>
|
||||||
|
return @rs.issues.filtersData(@scope.projectId)
|
||||||
|
|
||||||
|
# Format filters and set them on scope
|
||||||
|
return promise.then (data) =>
|
||||||
usersFiltersFormat = (users, type, unknownOption) =>
|
usersFiltersFormat = (users, type, unknownOption) =>
|
||||||
reformatedUsers = _.map users, (t) =>
|
reformatedUsers = _.map users, (t) =>
|
||||||
return {
|
return {
|
||||||
|
@ -205,21 +208,17 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Build filters data structure
|
# Build filters data structure
|
||||||
@scope.filters.statuses = choicesFiltersFormat data.statuses, "statuses", @scope.issueStatusById
|
@scope.filters.statuses = choicesFiltersFormat(data.statuses, "statuses", @scope.issueStatusById)
|
||||||
@scope.filters.severities = choicesFiltersFormat data.severities, "severities", @scope.severityById
|
@scope.filters.severities = choicesFiltersFormat(data.severities, "severities", @scope.severityById)
|
||||||
@scope.filters.priorities = choicesFiltersFormat data.priorities, "priorities", @scope.priorityById
|
@scope.filters.priorities = choicesFiltersFormat(data.priorities, "priorities", @scope.priorityById)
|
||||||
@scope.filters.assignedTo = usersFiltersFormat data.assigned_to, "assignedTo", "Unassigned"
|
@scope.filters.assignedTo = usersFiltersFormat(data.assigned_to, "assignedTo", "Unassigned")
|
||||||
@scope.filters.createdBy = usersFiltersFormat data.created_by, "createdBy", "Unknown"
|
@scope.filters.createdBy = usersFiltersFormat(data.created_by, "createdBy", "Unknown")
|
||||||
@scope.filters.types = choicesFiltersFormat data.types, "types", @scope.issueTypeById
|
@scope.filters.types = choicesFiltersFormat(data.types, "types", @scope.issueTypeById)
|
||||||
@scope.filters.tags = tagsFilterFormat data.tags
|
@scope.filters.tags = tagsFilterFormat(data.tags)
|
||||||
|
|
||||||
@.removeNotExistingFiltersFromUrl()
|
@.removeNotExistingFiltersFromUrl()
|
||||||
|
|
||||||
@.markSelectedFilters(@scope.filters, urlfilters)
|
@.markSelectedFilters(@scope.filters, urlfilters)
|
||||||
|
|
||||||
@rootscope.$broadcast("filters:loaded", @scope.filters)
|
@rootscope.$broadcast("filters:loaded", @scope.filters)
|
||||||
deferred.resolve()
|
|
||||||
return deferred.promise
|
|
||||||
|
|
||||||
loadIssues: ->
|
loadIssues: ->
|
||||||
@scope.urlFilters = @.getUrlFilters()
|
@scope.urlFilters = @.getUrlFilters()
|
||||||
|
@ -247,28 +246,22 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
||||||
name = "type"
|
name = "type"
|
||||||
@scope.httpParams[name] = values
|
@scope.httpParams[name] = values
|
||||||
|
|
||||||
promise = @rs.issues.list(@scope.projectId, @scope.httpParams).then (data) =>
|
return @rs.issues.list(@scope.projectId, @scope.httpParams).then (data) =>
|
||||||
@scope.issues = data.models
|
@scope.issues = data.models
|
||||||
@scope.page = data.current
|
@scope.page = data.current
|
||||||
@scope.count = data.count
|
@scope.count = data.count
|
||||||
@scope.paginatedBy = data.paginatedBy
|
@scope.paginatedBy = data.paginatedBy
|
||||||
return data
|
return data
|
||||||
|
|
||||||
return promise
|
|
||||||
|
|
||||||
loadInitialData: ->
|
loadInitialData: ->
|
||||||
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
|
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
|
||||||
@scope.projectId = data.project
|
@scope.projectId = data.project
|
||||||
return data
|
return data
|
||||||
|
|
||||||
promise.then null, =>
|
|
||||||
@location.path("/not-found")
|
|
||||||
@location.replace()
|
|
||||||
|
|
||||||
return promise.then(=> @.loadProject())
|
return promise.then(=> @.loadProject())
|
||||||
.then(=> @.loadUsersAndRoles())
|
.then(=> @q.all([@.loadUsersAndRoles(),
|
||||||
.then(=> @.loadFilters())
|
@.loadFilters(),
|
||||||
.then(=> @.loadIssues())
|
@.loadIssues()]))
|
||||||
|
|
||||||
saveCurrentFiltersTo: (newFilter) ->
|
saveCurrentFiltersTo: (newFilter) ->
|
||||||
deferred = @q.defer()
|
deferred = @q.defer()
|
||||||
|
|
Loading…
Reference in New Issue