Mixing resolve, get project, get user and roles in the same request
parent
a0f5f8d982
commit
a0db93a053
|
@ -200,7 +200,7 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
|
|||
])
|
||||
|
||||
loadProject: ->
|
||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||
return @rs.projects.getBySlug(@params.pslug).then (project) =>
|
||||
@scope.project = project
|
||||
@scope.$emit('project:loaded', project)
|
||||
@scope.points = _.sortBy(project.points, "order")
|
||||
|
@ -210,15 +210,13 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
|
|||
return project
|
||||
|
||||
loadInitialData: ->
|
||||
# Resolve project slug
|
||||
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
|
||||
@scope.projectId = data.project
|
||||
promise = @.loadProject()
|
||||
promise.then (project) =>
|
||||
@scope.projectId = project.id
|
||||
@.fillUsersAndRoles(project.users, project.roles)
|
||||
@.initializeSubscription()
|
||||
return data
|
||||
|
||||
return promise.then(=> @.loadProject())
|
||||
.then(=> @.loadUsersAndRoles())
|
||||
.then(=> @.loadBacklog())
|
||||
return promise.then(=> @.loadBacklog())
|
||||
|
||||
filterVisibleUserstories: ->
|
||||
@scope.visibleUserstories = []
|
||||
|
|
|
@ -32,15 +32,7 @@ toString = @.taiga.toString
|
|||
#############################################################################
|
||||
|
||||
class PageMixin
|
||||
loadUsersAndRoles: ->
|
||||
promise = @q.all([
|
||||
@rs.projects.usersList(@scope.projectId),
|
||||
@rs.projects.rolesList(@scope.projectId)
|
||||
])
|
||||
|
||||
return promise.then (results) =>
|
||||
[users, roles] = results
|
||||
|
||||
fillUsersAndRoles: (users, roles) ->
|
||||
@scope.users = _.sortBy(users, "full_name_display")
|
||||
@scope.usersById = groupBy(@scope.users, (e) -> e.id)
|
||||
|
||||
|
@ -49,7 +41,15 @@ class PageMixin
|
|||
@scope.computableRoles = _(roles).filter("computable")
|
||||
.filter((x) -> _.contains(availableRoles, x.id))
|
||||
.value()
|
||||
loadUsersAndRoles: ->
|
||||
promise = @q.all([
|
||||
@rs.projects.usersList(@scope.projectId),
|
||||
@rs.projects.rolesList(@scope.projectId)
|
||||
])
|
||||
|
||||
return promise.then (results) =>
|
||||
[users, roles] = results
|
||||
@.fillUsersAndRoles(users, roles)
|
||||
return results
|
||||
|
||||
taiga.PageMixin = PageMixin
|
||||
|
|
|
@ -91,7 +91,7 @@ class IssueDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
@scope.onDeleteGoToUrl = @navUrls.resolve("project", ctx)
|
||||
|
||||
loadProject: ->
|
||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||
return @rs.projects.getBySlug(@params.pslug).then (project) =>
|
||||
@scope.project = project
|
||||
@scope.$emit('project:loaded', project)
|
||||
@scope.statusList = project.issue_statuses
|
||||
|
@ -106,8 +106,9 @@ class IssueDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
return project
|
||||
|
||||
loadIssue: ->
|
||||
return @rs.issues.get(@scope.projectId, @scope.issueId).then (issue) =>
|
||||
return @rs.issues.getByRef(@scope.projectId, @params.issueref).then (issue) =>
|
||||
@scope.issue = issue
|
||||
@scope.issueId = issue.id
|
||||
@scope.commentModel = issue
|
||||
|
||||
if @scope.issue.neighbors.previous.ref?
|
||||
|
@ -125,19 +126,12 @@ class IssueDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
@scope.nextUrl = @navUrls.resolve("project-issues-detail", ctx)
|
||||
|
||||
loadInitialData: ->
|
||||
params = {
|
||||
pslug: @params.pslug
|
||||
issueref: @params.issueref
|
||||
}
|
||||
promise = @.loadProject()
|
||||
return promise.then (project) =>
|
||||
@scope.projectId = project.id
|
||||
@.fillUsersAndRoles(project.users, project.roles)
|
||||
@.loadIssue()
|
||||
|
||||
promise = @repo.resolve(params).then (data) =>
|
||||
@scope.projectId = data.project
|
||||
@scope.issueId = data.issue
|
||||
return data
|
||||
|
||||
return promise.then(=> @.loadProject())
|
||||
.then(=> @.loadUsersAndRoles())
|
||||
.then(=> @.loadIssue())
|
||||
|
||||
module.controller("IssueDetailController", IssueDetailController)
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
|||
@rs.issues.storeFilters(@params.pslug, @location.search())
|
||||
|
||||
loadProject: ->
|
||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||
return @rs.projects.getBySlug(@params.pslug).then (project) =>
|
||||
@scope.project = project
|
||||
@scope.$emit('project:loaded', project)
|
||||
|
||||
|
@ -268,15 +268,12 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
|||
return data
|
||||
|
||||
loadInitialData: ->
|
||||
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
|
||||
@scope.projectId = data.project
|
||||
promise = @.loadProject()
|
||||
return promise.then (project) =>
|
||||
@scope.projectId = project.id
|
||||
@.fillUsersAndRoles(project.users, project.roles)
|
||||
@.initializeSubscription()
|
||||
return data
|
||||
|
||||
return promise.then(=> @.loadProject())
|
||||
.then(=> @.loadUsersAndRoles())
|
||||
.then(=> @q.all([@.loadFilters(),
|
||||
@.loadIssues()]))
|
||||
return @q.all([@.loadFilters(), @.loadIssues()])
|
||||
|
||||
saveCurrentFiltersTo: (newFilter) ->
|
||||
deferred = @q.defer()
|
||||
|
|
|
@ -148,7 +148,7 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
|||
])
|
||||
|
||||
loadProject: ->
|
||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||
return @rs.projects.getBySlug(@params.pslug).then (project) =>
|
||||
@scope.project = project
|
||||
@scope.points = _.sortBy(project.points, "order")
|
||||
@scope.pointsById = groupBy(project.points, (x) -> x.id)
|
||||
|
@ -166,16 +166,13 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
|
|||
@.loadUserstories()
|
||||
|
||||
loadInitialData: ->
|
||||
# Resolve project slug
|
||||
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
|
||||
@scope.projectId = data.project
|
||||
promise = @.loadProject()
|
||||
return promise.then (project) =>
|
||||
@scope.projectId = project.id
|
||||
@.fillUsersAndRoles(project.users, project.roles)
|
||||
@.initializeSubscription()
|
||||
return data
|
||||
@.loadKanban().then( => @scope.$broadcast("redraw:wip"))
|
||||
|
||||
return promise.then(=> @.loadProject())
|
||||
.then(=> @.loadUsersAndRoles())
|
||||
.then(=> @.loadKanban())
|
||||
.then(=> @scope.$broadcast("redraw:wip"))
|
||||
|
||||
## View Mode methods
|
||||
|
||||
|
|
|
@ -35,6 +35,9 @@ resourceProvider = ($repo, $http, $urls, $storage, $q) ->
|
|||
params.project = projectId
|
||||
return $repo.queryOne("issues", issueId, params)
|
||||
|
||||
service.getByRef = (projectId, ref) ->
|
||||
return $repo.queryOneRaw("issues", "by_ref?project=#{projectId}&ref=#{ref}")
|
||||
|
||||
service.list = (projectId, filters, options) ->
|
||||
params = {project: projectId}
|
||||
params = _.extend({}, params, filters or {})
|
||||
|
|
|
@ -28,6 +28,9 @@ resourceProvider = ($repo, $http, $urls) ->
|
|||
service.get = (id) ->
|
||||
return $repo.queryOne("projects", id)
|
||||
|
||||
service.getBySlug = (slug) ->
|
||||
return $repo.queryOneRaw("projects", "by_slug?slug=#{slug}")
|
||||
|
||||
service.list = ->
|
||||
return $repo.queryMany("projects")
|
||||
|
||||
|
|
|
@ -35,6 +35,9 @@ resourceProvider = ($repo, $http, $urls, $storage) ->
|
|||
params.project = projectId
|
||||
return $repo.queryOne("tasks", taskId, params)
|
||||
|
||||
service.getByRef = (projectId, ref) ->
|
||||
return $repo.queryOneRaw("tasks", "by_ref?project=#{projectId}&ref=#{ref}")
|
||||
|
||||
service.list = (projectId, sprintId=null, userStoryId=null) ->
|
||||
params = {project: projectId}
|
||||
params.milestone = sprintId if sprintId
|
||||
|
|
|
@ -32,6 +32,9 @@ resourceProvider = ($repo, $http, $urls, $storage) ->
|
|||
params.project = projectId
|
||||
return $repo.queryOne("userstories", usId, params)
|
||||
|
||||
service.getByRef = (projectId, ref) ->
|
||||
return $repo.queryOneRaw("userstories", "by_ref?project=#{projectId}&ref=#{ref}")
|
||||
|
||||
service.listUnassigned = (projectId, filters) ->
|
||||
params = {"project": projectId, "milestone": "null"}
|
||||
params = _.extend({}, params, filters or {})
|
||||
|
|
|
@ -28,6 +28,9 @@ resourceProvider = ($repo, $http, $urls) ->
|
|||
service.get = (wikiId) ->
|
||||
return $repo.queryOne("wiki", wikiId)
|
||||
|
||||
service.getBySlug = (projectId, slug) ->
|
||||
return $repo.queryOneRaw("wiki", "by_slug?project=#{projectId}&slug=#{slug}")
|
||||
|
||||
service.listLinks = (projectId) ->
|
||||
return $repo.queryMany("wiki-links", {project: projectId})
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ class SearchController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
return defered.promise
|
||||
|
||||
loadProject: ->
|
||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||
return @rs.projects.getBySlug(@params.pslug).then (project) =>
|
||||
@scope.project = project
|
||||
@scope.$emit('project:loaded', project)
|
||||
@scope.issueStatusById = groupBy(project.issue_statuses, (x) -> x.id)
|
||||
|
@ -94,12 +94,9 @@ class SearchController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
return promise
|
||||
|
||||
loadInitialData: ->
|
||||
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
|
||||
@scope.projectId = data.project
|
||||
return data
|
||||
|
||||
return promise.then(=> @.loadProject())
|
||||
.then(=> @.loadUsersAndRoles())
|
||||
return @.loadProject().then (project) =>
|
||||
@scope.projectId = project.id
|
||||
@.fillUsersAndRoles(project.users, project.roles)
|
||||
|
||||
module.controller("SearchController", SearchController)
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
@scope.onDeleteGoToUrl = @navUrls.resolve("project-userstories-detail", ctx)
|
||||
|
||||
loadProject: ->
|
||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||
return @rs.projects.getBySlug(@params.pslug).then (project) =>
|
||||
@scope.project = project
|
||||
@scope.$emit('project:loaded', project)
|
||||
@scope.statusList = project.task_statuses
|
||||
|
@ -96,8 +96,9 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
return project
|
||||
|
||||
loadTask: ->
|
||||
return @rs.tasks.get(@scope.projectId, @scope.taskId).then (task) =>
|
||||
return @rs.tasks.getByRef(@scope.projectId, @params.taskref).then (task) =>
|
||||
@scope.task = task
|
||||
@scope.taskId = task.id
|
||||
@scope.commentModel = task
|
||||
|
||||
if @scope.task.neighbors.previous.ref?
|
||||
|
@ -128,6 +129,7 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
return us
|
||||
|
||||
loadInitialData: ->
|
||||
###
|
||||
params = {
|
||||
pslug: @params.pslug
|
||||
taskref: @params.taskref
|
||||
|
@ -142,6 +144,12 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
.then(=> @.loadUsersAndRoles())
|
||||
.then(=> @.loadTask().then(=> @q.all([@.loadUserStory(),
|
||||
@.loadSprint()])))
|
||||
###
|
||||
promise = @.loadProject()
|
||||
return promise.then (project) =>
|
||||
@scope.projectId = project.id
|
||||
@.fillUsersAndRoles(project.users, project.roles)
|
||||
@.loadTask().then(=> @q.all([@.loadSprint(), @.loadUserStory()]))
|
||||
|
||||
module.controller("TaskDetailController", TaskDetailController)
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ class TeamController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
return data
|
||||
|
||||
loadProject: ->
|
||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||
return @rs.projects.getBySlug(@params.pslug).then (project) =>
|
||||
@scope.project = project
|
||||
@scope.$emit('project:loaded', project)
|
||||
|
||||
|
@ -127,14 +127,11 @@ class TeamController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
return stats
|
||||
|
||||
loadInitialData: ->
|
||||
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
|
||||
@scope.projectId = data.project
|
||||
return data
|
||||
|
||||
return promise.then(=> @.loadProject())
|
||||
.then(=> @.loadUsersAndRoles())
|
||||
.then(=> @.loadMembers())
|
||||
.then(=> @.loadMemberStats())
|
||||
promise = @.loadProject()
|
||||
return promise.then (project) =>
|
||||
@scope.projectId = project.id
|
||||
@.fillUsersAndRoles(project.users, project.roles)
|
||||
return @.loadMembers().then(=> @.loadMemberStats())
|
||||
|
||||
module.controller("TeamController", TeamController)
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
@scope.onDeleteGoToUrl = @navUrls.resolve("project-kanban", ctx)
|
||||
|
||||
loadProject: ->
|
||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||
return @rs.projects.getBySlug(@params.pslug).then (project) =>
|
||||
@scope.project = project
|
||||
@scope.$emit('project:loaded', project)
|
||||
@scope.statusList = project.us_statuses
|
||||
|
@ -105,8 +105,9 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
return project
|
||||
|
||||
loadUs: ->
|
||||
return @rs.userstories.get(@scope.projectId, @scope.usId).then (us) =>
|
||||
return @rs.userstories.getByRef(@scope.projectId, @params.usref).then (us) =>
|
||||
@scope.us = us
|
||||
@scope.usId = us.id
|
||||
@scope.commentModel = us
|
||||
|
||||
if @scope.us.neighbors.previous.ref?
|
||||
|
@ -137,20 +138,11 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
return tasks
|
||||
|
||||
loadInitialData: ->
|
||||
params = {
|
||||
pslug: @params.pslug
|
||||
usref: @params.usref
|
||||
}
|
||||
|
||||
promise = @repo.resolve(params).then (data) =>
|
||||
@scope.projectId = data.project
|
||||
@scope.usId = data.us
|
||||
return data
|
||||
|
||||
return promise.then(=> @.loadProject())
|
||||
.then(=> @.loadUsersAndRoles())
|
||||
.then(=> @q.all([@.loadUs().then(=> @.loadSprint()),
|
||||
@.loadTasks()]))
|
||||
promise = @.loadProject()
|
||||
return promise.then (project) =>
|
||||
@scope.projectId = project.id
|
||||
@.fillUsersAndRoles(project.users, project.roles)
|
||||
@.loadUs().then(=> @q.all([@.loadSprint(), @.loadTasks()]))
|
||||
|
||||
module.controller("UserStoryDetailController", UserStoryDetailController)
|
||||
|
||||
|
|
|
@ -69,17 +69,21 @@ class WikiDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
promise.then null, @.onInitialDataError.bind(@)
|
||||
|
||||
loadProject: ->
|
||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||
return @rs.projects.getBySlug(@params.pslug).then (project) =>
|
||||
@scope.project = project
|
||||
@scope.$emit('project:loaded', project)
|
||||
@scope.membersById = groupBy(project.memberships, (x) -> x.user)
|
||||
return project
|
||||
|
||||
loadWiki: ->
|
||||
if @scope.wikiId
|
||||
return @rs.wiki.get(@scope.wikiId).then (wiki) =>
|
||||
promise = @rs.wiki.getBySlug(@scope.projectId, @params.slug)
|
||||
promise.then (wiki) =>
|
||||
@scope.wiki = wiki
|
||||
return wiki
|
||||
@scope.wikiId = wiki.id
|
||||
return @scope.wiki
|
||||
|
||||
promise.then null, (xhr) =>
|
||||
@scope.wikiId = null
|
||||
|
||||
if @scope.project.my_permissions.indexOf("add_wiki_page") == -1
|
||||
return null
|
||||
|
@ -97,33 +101,11 @@ class WikiDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
|||
@scope.wikiLinks = wikiLinks
|
||||
|
||||
loadInitialData: ->
|
||||
params = {
|
||||
pslug: @params.pslug
|
||||
wikipage: @params.slug
|
||||
}
|
||||
|
||||
# Resolve project slug
|
||||
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
|
||||
@scope.projectId = data.project
|
||||
return data
|
||||
|
||||
# Resolve wiki slug
|
||||
# This should be done in two steps because is not same thing
|
||||
# not found response for project and not found for wiki page
|
||||
# and they should be hendled separately.
|
||||
promise = promise.then =>
|
||||
prom = @repo.resolve({wikipage: @params.slug, pslug: @params.pslug})
|
||||
|
||||
prom = prom.then (data) =>
|
||||
@scope.wikiId = data.wikipage
|
||||
|
||||
return prom.then null, (xhr) =>
|
||||
@scope.wikiId = null
|
||||
|
||||
return promise.then(=> @.loadProject())
|
||||
.then(=> @.loadUsersAndRoles())
|
||||
.then(=> @q.all([@.loadWikiLinks(),
|
||||
@.loadWiki()]))
|
||||
promise = @.loadProject()
|
||||
return promise.then (project) =>
|
||||
@scope.projectId = project.id
|
||||
@.fillUsersAndRoles(project.users, project.roles)
|
||||
@q.all([@.loadWikiLinks(), @.loadWiki()])
|
||||
|
||||
delete: ->
|
||||
# TODO: i18n
|
||||
|
|
Loading…
Reference in New Issue