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.then () =>
|
||||
# On Success
|
||||
promise.then =>
|
||||
@appTitle.set("Issues - " + @scope.project.name)
|
||||
tgLoader.pageLoaded()
|
||||
|
||||
promise.then null, ->
|
||||
console.log "FAIL" #TODO
|
||||
# On Error
|
||||
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", =>
|
||||
@.loadIssues()
|
||||
|
@ -109,23 +114,14 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
|||
return filters[name]
|
||||
|
||||
loadMyFilters: ->
|
||||
deferred = @q.defer()
|
||||
promise = @rs.issues.getMyFilters(@scope.projectId)
|
||||
promise.then (filters) ->
|
||||
result = _.map filters, (value, key) =>
|
||||
obj = {
|
||||
id: key,
|
||||
name: key,
|
||||
type: "myFilters"
|
||||
}
|
||||
obj.selected = false
|
||||
return obj
|
||||
deferred.resolve(result)
|
||||
return deferred.promise
|
||||
return @rs.issues.getMyFilters(@scope.projectId).then (filters) =>
|
||||
return _.map filters, (value, key) =>
|
||||
return {id: key, name: key, type: "myFilters", selected: false}
|
||||
|
||||
removeNotExistingFiltersFromUrl: ->
|
||||
currentSearch = @location.search()
|
||||
urlfilters = @.getUrlFilters()
|
||||
|
||||
for filterName, filterValue of urlfilters
|
||||
if filterName == "page" or filterName == "orderBy" or filterName == "q"
|
||||
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
|
||||
|
||||
loadFilters: ->
|
||||
deferred = @q.defer()
|
||||
urlfilters = @.getUrlFilters()
|
||||
|
||||
if urlfilters.q
|
||||
@scope.filtersQ = urlfilters.q
|
||||
|
||||
@.loadMyFilters().then (myFilters) =>
|
||||
# Load My Filters
|
||||
promise = @.loadMyFilters().then (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) =>
|
||||
reformatedUsers = _.map users, (t) =>
|
||||
return {
|
||||
|
@ -205,21 +208,17 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
|||
}
|
||||
|
||||
# Build filters data structure
|
||||
@scope.filters.statuses = choicesFiltersFormat data.statuses, "statuses", @scope.issueStatusById
|
||||
@scope.filters.severities = choicesFiltersFormat data.severities, "severities", @scope.severityById
|
||||
@scope.filters.priorities = choicesFiltersFormat data.priorities, "priorities", @scope.priorityById
|
||||
@scope.filters.assignedTo = usersFiltersFormat data.assigned_to, "assignedTo", "Unassigned"
|
||||
@scope.filters.createdBy = usersFiltersFormat data.created_by, "createdBy", "Unknown"
|
||||
@scope.filters.types = choicesFiltersFormat data.types, "types", @scope.issueTypeById
|
||||
@scope.filters.tags = tagsFilterFormat data.tags
|
||||
@scope.filters.statuses = choicesFiltersFormat(data.statuses, "statuses", @scope.issueStatusById)
|
||||
@scope.filters.severities = choicesFiltersFormat(data.severities, "severities", @scope.severityById)
|
||||
@scope.filters.priorities = choicesFiltersFormat(data.priorities, "priorities", @scope.priorityById)
|
||||
@scope.filters.assignedTo = usersFiltersFormat(data.assigned_to, "assignedTo", "Unassigned")
|
||||
@scope.filters.createdBy = usersFiltersFormat(data.created_by, "createdBy", "Unknown")
|
||||
@scope.filters.types = choicesFiltersFormat(data.types, "types", @scope.issueTypeById)
|
||||
@scope.filters.tags = tagsFilterFormat(data.tags)
|
||||
|
||||
@.removeNotExistingFiltersFromUrl()
|
||||
|
||||
@.markSelectedFilters(@scope.filters, urlfilters)
|
||||
|
||||
@rootscope.$broadcast("filters:loaded", @scope.filters)
|
||||
deferred.resolve()
|
||||
return deferred.promise
|
||||
|
||||
loadIssues: ->
|
||||
@scope.urlFilters = @.getUrlFilters()
|
||||
|
@ -247,28 +246,22 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
|||
name = "type"
|
||||
@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.page = data.current
|
||||
@scope.count = data.count
|
||||
@scope.paginatedBy = data.paginatedBy
|
||||
return data
|
||||
|
||||
return promise
|
||||
|
||||
loadInitialData: ->
|
||||
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
|
||||
@scope.projectId = data.project
|
||||
return data
|
||||
|
||||
promise.then null, =>
|
||||
@location.path("/not-found")
|
||||
@location.replace()
|
||||
|
||||
return promise.then(=> @.loadProject())
|
||||
.then(=> @.loadUsersAndRoles())
|
||||
.then(=> @.loadFilters())
|
||||
.then(=> @.loadIssues())
|
||||
.then(=> @q.all([@.loadUsersAndRoles(),
|
||||
@.loadFilters(),
|
||||
@.loadIssues()]))
|
||||
|
||||
saveCurrentFiltersTo: (newFilter) ->
|
||||
deferred = @q.defer()
|
||||
|
|
Loading…
Reference in New Issue