Remove some unneeded api calls

stable
David Barragán Merino 2015-05-26 13:18:58 +02:00
parent 3b26cf12b2
commit 63a0a78eac
12 changed files with 97 additions and 134 deletions

View File

@ -7,6 +7,7 @@
- Show the reference of entities in search results (thanks to [@artlepool](https://github.com/artlepool))
### Misc
- Improve performance: remove some unnecessary calls to the api.
- Lots of small and not so small bugfixes.

View File

@ -65,10 +65,11 @@ class MembershipsController extends mixOf(taiga.Controller, taiga.PageMixin, tai
@analytics.trackEvent("membership", "create", "create memberships on admin", 1)
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
if not project.i_am_owner
@location.path(@navUrls.resolve("permission-denied"))
@scope.projectId = project.id
@scope.project = project
@scope.$emit('project:loaded', project)
return project
@ -76,20 +77,20 @@ class MembershipsController extends mixOf(taiga.Controller, taiga.PageMixin, tai
loadMembers: ->
httpFilters = @.getUrlFilters()
return @rs.memberships.list(@scope.projectId, httpFilters).then (data) =>
@scope.memberships = _.filter(data.models, (membership) -> membership.user == null or membership.is_user_active)
@scope.memberships = _.filter(data.models, (membership) ->
membership.user == null or membership.is_user_active)
@scope.page = data.current
@scope.count = data.count
@scope.paginatedBy = data.paginatedBy
return data
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
promise = @.loadProject()
promise.then =>
@.loadUsersAndRoles()
@.loadMembers()
return promise.then(=> @.loadProject())
.then(=> @.loadUsersAndRoles())
.then(=> @.loadMembers())
return promise
getUrlFilters: ->
filters = _.pick(@location.search(), "page")

View File

@ -71,10 +71,11 @@ class ProjectProfileController extends mixOf(taiga.Controller, taiga.PageMixin)
@appTitle.set(appTitle)
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
if not project.i_am_owner
@location.path(@navUrls.resolve("permission-denied"))
@scope.projectId = project.id
@scope.project = project
@scope.pointsList = _.sortBy(project.points, "order")
@scope.usStatusList = _.sortBy(project.us_statuses, "order")
@ -90,18 +91,10 @@ class ProjectProfileController extends mixOf(taiga.Controller, taiga.PageMixin)
return @rs.projects.tagsColors(@scope.projectId).then (tags_colors) =>
@scope.project.tags_colors = tags_colors
loadProjectProfile: ->
return @q.all([
@.loadProject(),
@.loadTagsColors()
])
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return promise.then(=> @.loadProjectProfile())
promise = @.loadProject()
promise.then => @.loadTagsColors()
return promise
openDeleteLightbox: ->
@rootscope.$broadcast("deletelightbox:new", @scope.project)

View File

@ -68,20 +68,18 @@ class ProjectValuesSectionController extends mixOf(taiga.Controller, taiga.PageM
promise.then null, @.onInitialDataError.bind(@)
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
if not project.i_am_owner
@location.path(@navUrls.resolve("permission-denied"))
@scope.projectId = project.id
@scope.project = project
@scope.$emit('project:loaded', project)
return project
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return promise.then => @.loadProject()
promise = @.loadProject()
return promise
module.controller("ProjectValuesSectionController", ProjectValuesSectionController)

View File

@ -65,10 +65,11 @@ class RolesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fil
promise.then null, @.onInitialDataError.bind(@)
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
if not project.i_am_owner
@location.path(@navUrls.resolve("permission-denied"))
@scope.projectId = project.id
@scope.project = project
@scope.$emit('project:loaded', project)
@ -76,39 +77,29 @@ class RolesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fil
return project
loadExternalUserRole: (roles) ->
roles = roles.map (role) ->
role.external_user = false
return role
public_permission = {
"name": @translate.instant("ADMIN.ROLES.EXTERNAL_USER"),
"permissions": @scope.project.public_permissions,
"external_user": true
}
roles.push(public_permission)
return roles
loadRoles: ->
return @rs.roles.list(@scope.projectId)
.then @loadExternalUserRole
.then (roles) =>
@scope.roles = roles
@scope.role = @scope.roles[0]
return @rs.roles.list(@scope.projectId).then (roles) =>
roles = roles.map (role) ->
role.external_user = false
return roles
return role
public_permission = {
"name": @translate.instant("ADMIN.ROLES.EXTERNAL_USER"),
"permissions": @scope.project.public_permissions,
"external_user": true
}
roles.push(public_permission)
@scope.roles = roles
@scope.role = @scope.roles[0]
return roles
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return promise.then(=> @.loadProject())
.then(=> @.loadUsersAndRoles())
.then(=> @.loadRoles())
promise = @.loadProject()
promise.then(=> @.loadRoles())
return promise
setRole: (role) ->
@scope.role = role

View File

@ -28,6 +28,7 @@ timeout = @.taiga.timeout
module = angular.module("taigaAdmin")
#############################################################################
## Webhooks
#############################################################################
@ -65,24 +66,25 @@ class WebhooksController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.
@scope.webhooks = webhooks
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
if not project.i_am_owner
@location.path(@navUrls.resolve("permission-denied"))
@scope.projectId = project.id
@scope.project = project
@scope.$emit('project:loaded', project)
return project
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
promise = @.loadProject()
promise.then =>
@.loadWebhooks()
return promise.then(=> @.loadProject())
.then(=> @.loadWebhooks())
return promise
module.controller("WebhooksController", WebhooksController)
#############################################################################
## Webhook Directive
#############################################################################
@ -213,7 +215,8 @@ WebhookDirective = ($rs, $repo, $confirm, $loading, $translate) ->
return {link:link}
module.directive("tgWebhook", ["$tgResources", "$tgRepo", "$tgConfirm", "$tgLoading", "$translate", WebhookDirective])
module.directive("tgWebhook", ["$tgResources", "$tgRepo", "$tgConfirm", "$tgLoading", "$translate",
WebhookDirective])
#############################################################################
@ -312,19 +315,16 @@ class GithubController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
@scope.github = github
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
@scope.projectId = project.id
@scope.project = project
@scope.$emit('project:loaded', project)
return project
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return promise.then(=> @.loadProject())
.then(=> @.loadModules())
promise = @.loadProject()
promise.then(=> @.loadModules())
return promise
module.controller("GithubController", GithubController)
@ -364,19 +364,16 @@ class GitlabController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
@scope.gitlab = gitlab
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
@scope.projectId = project.id
@scope.project = project
@scope.$emit('project:loaded', project)
return project
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return promise.then(=> @.loadProject())
.then(=> @.loadModules())
promise = @.loadProject()
promise.then(=> @.loadModules())
return promise
module.controller("GitlabController", GitlabController)
@ -416,18 +413,16 @@ class BitbucketController extends mixOf(taiga.Controller, taiga.PageMixin, taiga
@scope.bitbucket = bitbucket
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
@scope.projectId = project.id
@scope.project = project
@scope.$emit('project:loaded', project)
return project
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return promise.then(=> @.loadProject())
.then(=> @.loadModules())
promise = @.loadProject()
promise.then(=> @.loadModules())
return promise
module.controller("BitbucketController", BitbucketController)
@ -552,12 +547,12 @@ module.directive("tgBitbucketWebhooks", ["$tgRepo", "$tgConfirm", "$tgLoading",
#############################################################################
ValidOriginIpsDirective = ->
link = ($scope, $el, $attrs, $ngModel) ->
$ngModel.$parsers.push (value) ->
value = $.trim(value)
if value == ""
return []
$ngModel.$parsers.push (value) ->
value = $.trim(value)
if value == ""
return []
return value.split(",")
return value.split(",")
return {
link: link

View File

@ -39,18 +39,15 @@ class ContribController extends taiga.Controller
@confirm.notify("error")
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
@scope.projectId = project.id
@scope.project = project
@scope.$emit('project:loaded', project)
@scope.$broadcast('project:loaded', project)
return project
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return promise.then(=> @.loadProject())
return @.loadProject()
module = angular.module("taigaBase")
module.controller("ContribController", ContribController)

View File

@ -98,22 +98,15 @@ class ProjectController extends taiga.Controller
promise.then null, @.onInitialDataError.bind(@)
loadInitialData: ->
# Resolve project slug
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return promise.then(=> @.loadPageData())
.then(=> @scope.$emit("project:loaded", @scope.project))
loadPageData: ->
return @q.all([
@.loadProjectStats(),
@.loadProject()])
promise = @.loadProject()
promise.then(=> @.loadProjectStats())
return promise
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
@scope.projectId = project.id
@scope.project = project
@scope.$emit("project:loaded", @scope.project)
return project
loadProjectStats: ->

View File

@ -136,7 +136,7 @@ class TaskboardController extends mixOf(taiga.Controller, taiga.PageMixin)
@scope.stats.remainingPointsSum = remainingPointsSum
@scope.stats.remainingTasks = remainingTasks
if stats.totalPointsSum
@scope.stats.completedPercentage = Math.round(100 * stats.completedPointsSum / stats.totalPointsSum)
@scope.stats.completedPercentage = Math.round(100*stats.completedPointsSum/stats.totalPointsSum)
else
@scope.stats.completedPercentage = 0

View File

@ -46,7 +46,8 @@ class UserChangePasswordController extends mixOf(taiga.Controller, taiga.PageMix
"$translate"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q, @location, @navUrls, @auth, @translate) ->
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q, @location, @navUrls,
@auth, @translate) ->
@scope.sectionName = @translate.instant("CHANGE_PASSWORD.SECTION_NAME")
@scope.project = {}
@scope.user = @auth.getUser()
@ -56,17 +57,14 @@ class UserChangePasswordController extends mixOf(taiga.Controller, taiga.PageMix
promise.then null, @.onInitialDataError.bind(@)
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
@scope.projectId = project.id
@scope.project = project
@scope.$emit('project:loaded', project)
return project
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return promise.then(=> @.loadProject())
return @.loadProject()
module.controller("UserChangePasswordController", UserChangePasswordController)

View File

@ -45,7 +45,8 @@ class UserSettingsController extends mixOf(taiga.Controller, taiga.PageMixin)
"$translate"
]
constructor: (@scope, @rootscope, @config, @repo, @confirm, @rs, @params, @q, @location, @navUrls, @auth, @translate) ->
constructor: (@scope, @rootscope, @config, @repo, @confirm, @rs, @params, @q, @location, @navUrls,
@auth, @translate) ->
@scope.sectionName = "USER_SETTINGS.MENU.SECTION_TITLE"
@scope.project = {}
@ -62,7 +63,8 @@ class UserSettingsController 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.projectId = project.id
@scope.project = project
@scope.$emit('project:loaded', project)
return project
@ -73,12 +75,9 @@ class UserSettingsController extends mixOf(taiga.Controller, taiga.PageMixin)
return locales
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return @q.all([promise.then(=> @.loadProject()),
@.loadLocales()])
promise = @.loadProject()
promise.then => @.loadLocales()
return promise
openDeleteLightbox: ->
@rootscope.$broadcast("deletelightbox:new", @scope.user)

View File

@ -54,7 +54,8 @@ class UserNotificationsController extends mixOf(taiga.Controller, taiga.PageMixi
promise.then null, @.onInitialDataError.bind(@)
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
return @rs.projects.getBySlug(@params.pslug).then (project) =>
@scope.projectId = project.id
@scope.project = project
@scope.$emit('project:loaded', project)
return project
@ -65,13 +66,9 @@ class UserNotificationsController extends mixOf(taiga.Controller, taiga.PageMixi
return notifyPolicies
loadInitialData: ->
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return promise.then(=> @.loadProject())
.then(=> @.loadNotifyPolicies())
promise = @.loadProject()
promise.then(=> @.loadNotifyPolicies())
return promise
module.controller("UserNotificationsController", UserNotificationsController)