Merge pull request #597 from taigaio/remove-descriptions-from-listin-API
Removing descriptions from list APIstable
commit
e2c174e23c
|
@ -109,16 +109,18 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, $loading, lightboxService,
|
||||||
submit = debounce 2000, (event) =>
|
submit = debounce 2000, (event) =>
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
onSuccess = (data) ->
|
onSuccess = (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
lightboxService.close($el)
|
lightboxService.close($el)
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
$rootScope.$broadcast("membersform:new:success")
|
$rootScope.$broadcast("membersform:new:success")
|
||||||
|
|
||||||
onError = (data) ->
|
onError = (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
lightboxService.close($el)
|
lightboxService.close($el)
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
$rootScope.$broadcast("membersform:new:error")
|
$rootScope.$broadcast("membersform:new:error")
|
||||||
|
|
|
@ -114,11 +114,13 @@ ProjectProfileDirective = ($repo, $confirm, $loading, $navurls, $location, proje
|
||||||
|
|
||||||
return if not form.validate()
|
return if not form.validate()
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.save($scope.project)
|
promise = $repo.save($scope.project)
|
||||||
promise.then ->
|
promise.then ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
newUrl = $navurls.resolve("project-admin-project-profile-details", {
|
newUrl = $navurls.resolve("project-admin-project-profile-details", {
|
||||||
project: $scope.project.slug
|
project: $scope.project.slug
|
||||||
|
@ -131,7 +133,7 @@ ProjectProfileDirective = ($repo, $confirm, $loading, $navurls, $location, proje
|
||||||
currentUserService.loadProjects()
|
currentUserService.loadProjects()
|
||||||
|
|
||||||
promise.then null, (data) ->
|
promise.then null, (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
form.setErrors(data)
|
form.setErrors(data)
|
||||||
if data._error_message
|
if data._error_message
|
||||||
$confirm.notify("error", data._error_message)
|
$confirm.notify("error", data._error_message)
|
||||||
|
@ -158,15 +160,17 @@ ProjectDefaultValuesDirective = ($repo, $confirm, $loading) ->
|
||||||
|
|
||||||
return if not form.validate()
|
return if not form.validate()
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.save($scope.project)
|
promise = $repo.save($scope.project)
|
||||||
promise.then ->
|
promise.then ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
|
|
||||||
promise.then null, (data) ->
|
promise.then null, (data) ->
|
||||||
$loading.finish(target)
|
currentLoading.finish()
|
||||||
form.setErrors(data)
|
form.setErrors(data)
|
||||||
if data._error_message
|
if data._error_message
|
||||||
$confirm.notify("error", data._error_message)
|
$confirm.notify("error", data._error_message)
|
||||||
|
@ -193,19 +197,21 @@ ProjectModulesDirective = ($repo, $confirm, $loading, projectService) ->
|
||||||
form = $el.find("form").checksley()
|
form = $el.find("form").checksley()
|
||||||
return if not form.validate()
|
return if not form.validate()
|
||||||
|
|
||||||
target = angular.element(".admin-functionalities a.button-green")
|
target = angular.element(".admin-functionalities .submit-button")
|
||||||
$loading.start(target)
|
currentLoading = $loading()
|
||||||
|
.target(target)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.save($scope.project)
|
promise = $repo.save($scope.project)
|
||||||
promise.then ->
|
promise.then ->
|
||||||
$loading.finish(target)
|
currentLoading.finish()
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
$scope.$emit("project:loaded", $scope.project)
|
$scope.$emit("project:loaded", $scope.project)
|
||||||
|
|
||||||
projectService.fetchProject()
|
projectService.fetchProject()
|
||||||
|
|
||||||
promise.then null, (data) ->
|
promise.then null, (data) ->
|
||||||
$loading.finish(target)
|
currentLoading.finish()
|
||||||
$confirm.notify("error", data._error_message)
|
$confirm.notify("error", data._error_message)
|
||||||
|
|
||||||
$el.on "submit", "form", (event) ->
|
$el.on "submit", "form", (event) ->
|
||||||
|
|
|
@ -454,15 +454,17 @@ GithubWebhooksDirective = ($repo, $confirm, $loading) ->
|
||||||
|
|
||||||
return if not form.validate()
|
return if not form.validate()
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.saveAttribute($scope.github, "github")
|
promise = $repo.saveAttribute($scope.github, "github")
|
||||||
promise.then ->
|
promise.then ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
|
|
||||||
promise.then null, (data) ->
|
promise.then null, (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
form.setErrors(data)
|
form.setErrors(data)
|
||||||
if data._error_message
|
if data._error_message
|
||||||
$confirm.notify("error", data._error_message)
|
$confirm.notify("error", data._error_message)
|
||||||
|
@ -488,16 +490,18 @@ GitlabWebhooksDirective = ($repo, $confirm, $loading) ->
|
||||||
|
|
||||||
return if not form.validate()
|
return if not form.validate()
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.saveAttribute($scope.gitlab, "gitlab")
|
promise = $repo.saveAttribute($scope.gitlab, "gitlab")
|
||||||
promise.then ->
|
promise.then ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
$scope.$emit("project:modules:reload")
|
$scope.$emit("project:modules:reload")
|
||||||
|
|
||||||
promise.then null, (data) ->
|
promise.then null, (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
form.setErrors(data)
|
form.setErrors(data)
|
||||||
if data._error_message
|
if data._error_message
|
||||||
$confirm.notify("error", data._error_message)
|
$confirm.notify("error", data._error_message)
|
||||||
|
@ -523,16 +527,18 @@ BitbucketWebhooksDirective = ($repo, $confirm, $loading) ->
|
||||||
|
|
||||||
return if not form.validate()
|
return if not form.validate()
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.saveAttribute($scope.bitbucket, "bitbucket")
|
promise = $repo.saveAttribute($scope.bitbucket, "bitbucket")
|
||||||
promise.then ->
|
promise.then ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
$scope.$emit("project:modules:reload")
|
$scope.$emit("project:modules:reload")
|
||||||
|
|
||||||
promise.then null, (data) ->
|
promise.then null, (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
form.setErrors(data)
|
form.setErrors(data)
|
||||||
if data._error_message
|
if data._error_message
|
||||||
$confirm.notify("error", data._error_message)
|
$confirm.notify("error", data._error_message)
|
||||||
|
|
|
@ -71,17 +71,19 @@ CreateEditSprint = ($repo, $confirm, $rs, $rootscope, lightboxService, $loading,
|
||||||
promise = $repo.save(newSprint)
|
promise = $repo.save(newSprint)
|
||||||
broadcastEvent = "sprintform:edit:success"
|
broadcastEvent = "sprintform:edit:success"
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise.then (data) ->
|
promise.then (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$scope.sprintsCounter += 1 if createSprint
|
$scope.sprintsCounter += 1 if createSprint
|
||||||
$rootscope.$broadcast(broadcastEvent, data)
|
$rootscope.$broadcast(broadcastEvent, data)
|
||||||
|
|
||||||
lightboxService.close($el)
|
lightboxService.close($el)
|
||||||
|
|
||||||
promise.then null, (data) ->
|
promise.then null, (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
|
|
||||||
form.setErrors(data)
|
form.setErrors(data)
|
||||||
if data._error_message
|
if data._error_message
|
||||||
|
|
|
@ -50,11 +50,12 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
|
||||||
"$tgNavUrls",
|
"$tgNavUrls",
|
||||||
"$tgEvents",
|
"$tgEvents",
|
||||||
"$tgAnalytics",
|
"$tgAnalytics",
|
||||||
"$translate"
|
"$translate",
|
||||||
|
"$tgLoading"
|
||||||
]
|
]
|
||||||
|
|
||||||
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q,
|
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q,
|
||||||
@location, @appMetaService, @navUrls, @events, @analytics, @translate) ->
|
@location, @appMetaService, @navUrls, @events, @analytics, @translate, @loading) ->
|
||||||
bindMethods(@)
|
bindMethods(@)
|
||||||
|
|
||||||
@scope.sectionName = @translate.instant("BACKLOG.SECTION_NAME")
|
@scope.sectionName = @translate.instant("BACKLOG.SECTION_NAME")
|
||||||
|
@ -488,9 +489,20 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
|
||||||
@rootscope.$broadcast("filters:update")
|
@rootscope.$broadcast("filters:update")
|
||||||
@.loadProjectStats()
|
@.loadProjectStats()
|
||||||
|
|
||||||
editUserStory: (us) ->
|
editUserStory: (projectId, ref, $event) ->
|
||||||
|
target = $($event.target)
|
||||||
|
|
||||||
|
currentLoading = @loading()
|
||||||
|
.target(target)
|
||||||
|
.removeClasses("icon-edit")
|
||||||
|
.timeout(200)
|
||||||
|
.start()
|
||||||
|
|
||||||
|
@rs.userstories.getByRef(projectId, ref).then (us) =>
|
||||||
@rootscope.$broadcast("usform:edit", us)
|
@rootscope.$broadcast("usform:edit", us)
|
||||||
|
|
||||||
|
currentLoading.finish()
|
||||||
|
|
||||||
deleteUserStory: (us) ->
|
deleteUserStory: (us) ->
|
||||||
title = @translate.instant("US.TITLE_DELETE_ACTION")
|
title = @translate.instant("US.TITLE_DELETE_ACTION")
|
||||||
|
|
||||||
|
|
|
@ -153,12 +153,16 @@ ToggleExcludeClosedSprintsVisualization = ($rootscope, $loading, $translate) ->
|
||||||
loadingElm = $("<div>")
|
loadingElm = $("<div>")
|
||||||
$el.after(loadingElm)
|
$el.after(loadingElm)
|
||||||
|
|
||||||
|
currentLoading = null
|
||||||
|
|
||||||
# Event Handlers
|
# Event Handlers
|
||||||
$el.on "click", (event) ->
|
$el.on "click", (event) ->
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
excludeClosedSprints = not excludeClosedSprints
|
excludeClosedSprints = not excludeClosedSprints
|
||||||
|
|
||||||
$loading.start(loadingElm)
|
currentLoading = $loading()
|
||||||
|
.target(loadingElm)
|
||||||
|
.start()
|
||||||
|
|
||||||
if excludeClosedSprints
|
if excludeClosedSprints
|
||||||
$rootscope.$broadcast("backlog:unload-closed-sprints")
|
$rootscope.$broadcast("backlog:unload-closed-sprints")
|
||||||
|
@ -169,7 +173,7 @@ ToggleExcludeClosedSprintsVisualization = ($rootscope, $loading, $translate) ->
|
||||||
$el.off()
|
$el.off()
|
||||||
|
|
||||||
$scope.$on "closed-sprints:reloaded", (ctx, sprints) =>
|
$scope.$on "closed-sprints:reloaded", (ctx, sprints) =>
|
||||||
$loading.finish(loadingElm)
|
currentLoading.finish()
|
||||||
|
|
||||||
if sprints.length > 0
|
if sprints.length > 0
|
||||||
key = "BACKLOG.SPRINTS.ACTION_HIDE_CLOSED_SPRINTS"
|
key = "BACKLOG.SPRINTS.ACTION_HIDE_CLOSED_SPRINTS"
|
||||||
|
|
|
@ -316,18 +316,20 @@ AssignedToDirective = ($rootscope, $confirm, $repo, $loading, $qqueue, $template
|
||||||
save = $qqueue.bindAdd (userId) =>
|
save = $qqueue.bindAdd (userId) =>
|
||||||
$model.$modelValue.assigned_to = userId
|
$model.$modelValue.assigned_to = userId
|
||||||
|
|
||||||
$loading.start($el)
|
currentLoading = $loading()
|
||||||
|
.target($el)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.save($model.$modelValue)
|
promise = $repo.save($model.$modelValue)
|
||||||
promise.then ->
|
promise.then ->
|
||||||
$loading.finish($el)
|
currentLoading.finish()
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
renderAssignedTo($model.$modelValue)
|
renderAssignedTo($model.$modelValue)
|
||||||
$rootscope.$broadcast("object:updated")
|
$rootscope.$broadcast("object:updated")
|
||||||
promise.then null, ->
|
promise.then null, ->
|
||||||
$model.$modelValue.revert()
|
$model.$modelValue.revert()
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
$loading.finish($el)
|
currentLoading.finish()
|
||||||
|
|
||||||
return promise
|
return promise
|
||||||
|
|
||||||
|
@ -408,9 +410,12 @@ BlockButtonDirective = ($rootscope, $loading, $template) ->
|
||||||
|
|
||||||
$el.on "click", ".item-unblock", (event) ->
|
$el.on "click", ".item-unblock", (event) ->
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
$loading.start($el.find(".item-unblock"))
|
currentLoading = $loading()
|
||||||
|
.target($el.find(".item-unblock"))
|
||||||
|
.start()
|
||||||
|
|
||||||
finish = ->
|
finish = ->
|
||||||
$loading.finish($el.find(".item-unblock"))
|
currentLoading.finish()
|
||||||
|
|
||||||
$rootscope.$broadcast("unblock", $model.$modelValue, finish)
|
$rootscope.$broadcast("unblock", $model.$modelValue, finish)
|
||||||
|
|
||||||
|
@ -486,7 +491,9 @@ EditableSubjectDirective = ($rootscope, $repo, $confirm, $loading, $qqueue, $tem
|
||||||
save = $qqueue.bindAdd (subject) =>
|
save = $qqueue.bindAdd (subject) =>
|
||||||
$model.$modelValue.subject = subject
|
$model.$modelValue.subject = subject
|
||||||
|
|
||||||
$loading.start($el.find('.save-container'))
|
currentLoading = $loading()
|
||||||
|
.target($el.find('.save-container'))
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.save($model.$modelValue)
|
promise = $repo.save($model.$modelValue)
|
||||||
promise.then ->
|
promise.then ->
|
||||||
|
@ -497,7 +504,7 @@ EditableSubjectDirective = ($rootscope, $repo, $confirm, $loading, $qqueue, $tem
|
||||||
promise.then null, ->
|
promise.then null, ->
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
promise.finally ->
|
promise.finally ->
|
||||||
$loading.finish($el.find('.save-container'))
|
currentLoading.finish()
|
||||||
|
|
||||||
return promise
|
return promise
|
||||||
|
|
||||||
|
@ -571,7 +578,10 @@ EditableDescriptionDirective = ($rootscope, $repo, $confirm, $compile, $loading,
|
||||||
save = $qqueue.bindAdd (description) =>
|
save = $qqueue.bindAdd (description) =>
|
||||||
$model.$modelValue.description = description
|
$model.$modelValue.description = description
|
||||||
|
|
||||||
$loading.start($el.find('.save-container'))
|
currentLoading = $loading()
|
||||||
|
.target($el.find('.save-container'))
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.save($model.$modelValue)
|
promise = $repo.save($model.$modelValue)
|
||||||
promise.then ->
|
promise.then ->
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
|
@ -581,7 +591,7 @@ EditableDescriptionDirective = ($rootscope, $repo, $confirm, $compile, $loading,
|
||||||
promise.then null, ->
|
promise.then null, ->
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
promise.finally ->
|
promise.finally ->
|
||||||
$loading.finish($el.find('.save-container'))
|
currentLoading.finish()
|
||||||
|
|
||||||
$el.on "mouseup", ".view-description", (event) ->
|
$el.on "mouseup", ".view-description", (event) ->
|
||||||
# We want to dettect the a inside the div so we use the target and
|
# We want to dettect the a inside the div so we use the target and
|
||||||
|
|
|
@ -64,9 +64,12 @@ class ConfirmService extends taiga.Service
|
||||||
el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) =>
|
el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) =>
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
target = angular.element(event.currentTarget)
|
target = angular.element(event.currentTarget)
|
||||||
@loading.start(target)
|
currentLoading = @loading()
|
||||||
|
.target(target)
|
||||||
|
.start()
|
||||||
|
|
||||||
defered.resolve (ok=true) =>
|
defered.resolve (ok=true) =>
|
||||||
@loading.finish(target)
|
currentLoading.finish()
|
||||||
if ok
|
if ok
|
||||||
@.hide(el)
|
@.hide(el)
|
||||||
|
|
||||||
|
@ -110,11 +113,13 @@ class ConfirmService extends taiga.Service
|
||||||
el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) =>
|
el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) =>
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
target = angular.element(event.currentTarget)
|
target = angular.element(event.currentTarget)
|
||||||
@loading.start(target)
|
currentLoading = @loading()
|
||||||
|
.target(target)
|
||||||
|
.start()
|
||||||
defered.resolve {
|
defered.resolve {
|
||||||
selected: choicesField.val()
|
selected: choicesField.val()
|
||||||
finish: =>
|
finish: =>
|
||||||
@loading.finish(target)
|
currentLoading.finish()
|
||||||
@.hide(el)
|
@.hide(el)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -347,18 +347,21 @@ HistoryDirective = ($log, $loading, $qqueue, $template, $confirm, $translate, $c
|
||||||
|
|
||||||
$el.find(".comment-list").addClass("activeanimation")
|
$el.find(".comment-list").addClass("activeanimation")
|
||||||
|
|
||||||
|
currentLoading = $loading()
|
||||||
|
.target(target)
|
||||||
|
.start()
|
||||||
|
|
||||||
onSuccess = ->
|
onSuccess = ->
|
||||||
$rootScope.$broadcast("comment:new")
|
$rootScope.$broadcast("comment:new")
|
||||||
|
|
||||||
$ctrl.loadHistory(type, objectId).finally ->
|
$ctrl.loadHistory(type, objectId).finally ->
|
||||||
$loading.finish(target)
|
currentLoading.finish()
|
||||||
|
|
||||||
onError = ->
|
onError = ->
|
||||||
$loading.finish(target)
|
currentLoading.finish()
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
|
|
||||||
model = $scope.$eval($attrs.ngModel)
|
model = $scope.$eval($attrs.ngModel)
|
||||||
$loading.start(target)
|
|
||||||
|
|
||||||
$ctrl.repo.save(model).then(onSuccess, onError)
|
$ctrl.repo.save(model).then(onSuccess, onError)
|
||||||
|
|
||||||
|
@ -371,7 +374,7 @@ HistoryDirective = ($log, $loading, $qqueue, $template, $confirm, $translate, $c
|
||||||
|
|
||||||
# Events
|
# Events
|
||||||
|
|
||||||
$el.on "click", ".add-comment input.button-green", debounce 2000, (event) ->
|
$el.on "click", ".add-comment button.button-green", debounce 2000, (event) ->
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
|
||||||
target = angular.element(event.currentTarget)
|
target = angular.element(event.currentTarget)
|
||||||
|
|
|
@ -179,7 +179,9 @@ BlockLightboxDirective = ($rootscope, $tgrepo, $confirm, lightboxService, $loadi
|
||||||
block = $qqueue.bindAdd (item) =>
|
block = $qqueue.bindAdd (item) =>
|
||||||
$model.$setViewValue(item)
|
$model.$setViewValue(item)
|
||||||
|
|
||||||
$loading.start($el.find(".button-green"))
|
currentLoading = $loading()
|
||||||
|
.target($el.find(".button-green"))
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $tgrepo.save($model.$modelValue)
|
promise = $tgrepo.save($model.$modelValue)
|
||||||
promise.then ->
|
promise.then ->
|
||||||
|
@ -192,7 +194,7 @@ BlockLightboxDirective = ($rootscope, $tgrepo, $confirm, lightboxService, $loadi
|
||||||
$model.$setViewValue(item)
|
$model.$setViewValue(item)
|
||||||
|
|
||||||
promise.finally ->
|
promise.finally ->
|
||||||
$loading.finish($el.find(".button-green"))
|
currentLoading.finish()
|
||||||
lightboxService.close($el)
|
lightboxService.close($el)
|
||||||
|
|
||||||
$scope.$on "block", ->
|
$scope.$on "block", ->
|
||||||
|
@ -324,7 +326,9 @@ CreateEditUserstoryDirective = ($repo, $model, $rs, $rootScope, lightboxService,
|
||||||
if not form.validate()
|
if not form.validate()
|
||||||
return
|
return
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
if $scope.isNew
|
if $scope.isNew
|
||||||
promise = $repo.create("userstories", $scope.us)
|
promise = $repo.create("userstories", $scope.us)
|
||||||
|
@ -334,12 +338,12 @@ CreateEditUserstoryDirective = ($repo, $model, $rs, $rootScope, lightboxService,
|
||||||
broadcastEvent = "usform:edit:success"
|
broadcastEvent = "usform:edit:success"
|
||||||
|
|
||||||
promise.then (data) ->
|
promise.then (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
lightboxService.close($el)
|
lightboxService.close($el)
|
||||||
$rootScope.$broadcast(broadcastEvent, data)
|
$rootScope.$broadcast(broadcastEvent, data)
|
||||||
|
|
||||||
promise.then null, (data) ->
|
promise.then null, (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
form.setErrors(data)
|
form.setErrors(data)
|
||||||
if data._error_message
|
if data._error_message
|
||||||
$confirm.notify("error", data._error_message)
|
$confirm.notify("error", data._error_message)
|
||||||
|
@ -399,16 +403,18 @@ CreateBulkUserstoriesDirective = ($repo, $rs, $rootscope, lightboxService, $load
|
||||||
if not form.validate()
|
if not form.validate()
|
||||||
return
|
return
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $rs.userstories.bulkCreate($scope.new.projectId, $scope.new.statusId, $scope.new.bulk)
|
promise = $rs.userstories.bulkCreate($scope.new.projectId, $scope.new.statusId, $scope.new.bulk)
|
||||||
promise.then (result) ->
|
promise.then (result) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$rootscope.$broadcast("usform:bulk:success", result)
|
$rootscope.$broadcast("usform:bulk:success", result)
|
||||||
lightboxService.close($el)
|
lightboxService.close($el)
|
||||||
|
|
||||||
promise.then null, (data) ->
|
promise.then null, (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
form.setErrors(data)
|
form.setErrors(data)
|
||||||
if data._error_message
|
if data._error_message
|
||||||
$confirm.notify("error", data._error_message)
|
$confirm.notify("error", data._error_message)
|
||||||
|
|
|
@ -21,29 +21,78 @@
|
||||||
|
|
||||||
module = angular.module("taigaCommon")
|
module = angular.module("taigaCommon")
|
||||||
|
|
||||||
class TgLoadingService extends taiga.Service
|
TgLoadingService = ->
|
||||||
start: (target) ->
|
spinner = "<img class='loading-spinner' src='/svg/spinner-circle.svg' alt='loading...' />"
|
||||||
if not target.hasClass('loading')
|
|
||||||
target.data('loading-old-content', target.html())
|
|
||||||
target.addClass('loading')
|
|
||||||
target.html("<img class='loading-spinner' src='/svg/spinner-circle.svg' alt='loading...' />")
|
|
||||||
|
|
||||||
finish: (target) ->
|
return () ->
|
||||||
if target.hasClass('loading')
|
service = {
|
||||||
oldContent = target.data('loading-old-content')
|
settings: {
|
||||||
target.data('loading-old-content', null)
|
target: null,
|
||||||
target.html(oldContent)
|
classes: []
|
||||||
|
timeout: 0
|
||||||
|
},
|
||||||
|
target: (target) ->
|
||||||
|
service.settings.target = target
|
||||||
|
|
||||||
|
return service
|
||||||
|
removeClasses: (classess...) ->
|
||||||
|
service.settings.classes = classess
|
||||||
|
|
||||||
|
return service
|
||||||
|
timeout: (timeout) ->
|
||||||
|
service.settings.timeout = timeout
|
||||||
|
|
||||||
|
return service
|
||||||
|
|
||||||
|
start: ->
|
||||||
|
target = service.settings.target
|
||||||
|
service.settings.classes.map (className) -> target.removeClass(className)
|
||||||
|
|
||||||
|
# The loader is shown after that quantity of milliseconds
|
||||||
|
timeoutId = setTimeout (->
|
||||||
|
if not target.hasClass('loading')
|
||||||
|
service.settings.oldContent = target.html()
|
||||||
|
|
||||||
|
target.addClass('loading')
|
||||||
|
target.html(spinner)
|
||||||
|
), service.settings.timeout
|
||||||
|
|
||||||
|
service.settings.timeoutId = timeoutId
|
||||||
|
|
||||||
|
return service
|
||||||
|
|
||||||
|
finish: ->
|
||||||
|
target = service.settings.target
|
||||||
|
timeoutId = service.settings.timeoutId
|
||||||
|
|
||||||
|
if timeoutId
|
||||||
|
clearTimeout(timeoutId)
|
||||||
|
|
||||||
|
removeClasses = service.settings.classes
|
||||||
|
removeClasses.map (className) -> service.settings.target.addClass(className)
|
||||||
|
|
||||||
|
target.html(service.settings.oldContent)
|
||||||
target.removeClass('loading')
|
target.removeClass('loading')
|
||||||
|
|
||||||
module.service("$tgLoading", TgLoadingService)
|
return service
|
||||||
|
}
|
||||||
|
|
||||||
|
return service
|
||||||
|
|
||||||
|
module.factory("$tgLoading", TgLoadingService)
|
||||||
|
|
||||||
LoadingDirective = ($loading) ->
|
LoadingDirective = ($loading) ->
|
||||||
link = ($scope, $el, attr) ->
|
link = ($scope, $el, attr) ->
|
||||||
|
currentLoading = null
|
||||||
|
|
||||||
$scope.$watch attr.tgLoading, (showLoading) =>
|
$scope.$watch attr.tgLoading, (showLoading) =>
|
||||||
|
|
||||||
if showLoading
|
if showLoading
|
||||||
$loading.start($el)
|
currentLoading = $loading()
|
||||||
|
.target($el)
|
||||||
|
.start()
|
||||||
else
|
else
|
||||||
$loading.finish($el)
|
currentLoading.finish()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
link:link
|
link:link
|
||||||
|
|
|
@ -39,17 +39,19 @@ FeedbackDirective = ($lightboxService, $repo, $confirm, $loading, feedbackServic
|
||||||
if not form.validate()
|
if not form.validate()
|
||||||
return
|
return
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.create("feedback", $scope.feedback)
|
promise = $repo.create("feedback", $scope.feedback)
|
||||||
|
|
||||||
promise.then (data) ->
|
promise.then (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$lightboxService.close($el)
|
$lightboxService.close($el)
|
||||||
$confirm.notify("success", "\\o/ we'll be happy to read your")
|
$confirm.notify("success", "\\o/ we'll be happy to read your")
|
||||||
|
|
||||||
promise.then null, ->
|
promise.then null, ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
|
|
||||||
submitButton = $el.find(".submit-button")
|
submitButton = $el.find(".submit-button")
|
||||||
|
|
|
@ -239,18 +239,21 @@ IssueStatusButtonDirective = ($rootScope, $repo, $confirm, $loading, $qqueue, $t
|
||||||
issue = $model.$modelValue.clone()
|
issue = $model.$modelValue.clone()
|
||||||
issue.status = statusId
|
issue.status = statusId
|
||||||
|
|
||||||
|
currentLoading = $loading()
|
||||||
|
.target($el.find(".level-name"))
|
||||||
|
.start()
|
||||||
|
|
||||||
onSuccess = ->
|
onSuccess = ->
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
$model.$setViewValue(issue)
|
$model.$setViewValue(issue)
|
||||||
$rootScope.$broadcast("object:updated")
|
$rootScope.$broadcast("object:updated")
|
||||||
$loading.finish($el.find(".level-name"))
|
currentLoading.finish()
|
||||||
onError = ->
|
onError = ->
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
issue.revert()
|
issue.revert()
|
||||||
$model.$setViewValue(issue)
|
$model.$setViewValue(issue)
|
||||||
$loading.finish($el.find(".level-name"))
|
currentLoading.finish()
|
||||||
|
|
||||||
$loading.start($el.find(".level-name"))
|
|
||||||
|
|
||||||
$repo.save(issue).then(onSuccess, onError)
|
$repo.save(issue).then(onSuccess, onError)
|
||||||
|
|
||||||
|
@ -323,18 +326,21 @@ IssueTypeButtonDirective = ($rootScope, $repo, $confirm, $loading, $qqueue, $tem
|
||||||
issue = $model.$modelValue.clone()
|
issue = $model.$modelValue.clone()
|
||||||
issue.type = type
|
issue.type = type
|
||||||
|
|
||||||
|
currentLoading = $loading()
|
||||||
|
.target($el.find(".level-name"))
|
||||||
|
.start()
|
||||||
|
|
||||||
onSuccess = ->
|
onSuccess = ->
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
$model.$setViewValue(issue)
|
$model.$setViewValue(issue)
|
||||||
$rootScope.$broadcast("object:updated")
|
$rootScope.$broadcast("object:updated")
|
||||||
$loading.finish($el.find(".level-name"))
|
currentLoading.finish()
|
||||||
|
|
||||||
onError = ->
|
onError = ->
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
issue.revert()
|
issue.revert()
|
||||||
$model.$setViewValue(issue)
|
$model.$setViewValue(issue)
|
||||||
$loading.finish($el.find(".level-name"))
|
currentLoading.finish()
|
||||||
$loading.start($el.find(".level-name"))
|
|
||||||
|
|
||||||
$repo.save(issue).then(onSuccess, onError)
|
$repo.save(issue).then(onSuccess, onError)
|
||||||
|
|
||||||
|
@ -409,18 +415,20 @@ IssueSeverityButtonDirective = ($rootScope, $repo, $confirm, $loading, $qqueue,
|
||||||
issue = $model.$modelValue.clone()
|
issue = $model.$modelValue.clone()
|
||||||
issue.severity = severity
|
issue.severity = severity
|
||||||
|
|
||||||
|
currentLoading = $loading()
|
||||||
|
.target($el.find(".level-name"))
|
||||||
|
.start()
|
||||||
|
|
||||||
onSuccess = ->
|
onSuccess = ->
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
$model.$setViewValue(issue)
|
$model.$setViewValue(issue)
|
||||||
$rootScope.$broadcast("object:updated")
|
$rootScope.$broadcast("object:updated")
|
||||||
$loading.finish($el.find(".level-name"))
|
currentLoading.finish()
|
||||||
onError = ->
|
onError = ->
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
issue.revert()
|
issue.revert()
|
||||||
$model.$setViewValue(issue)
|
$model.$setViewValue(issue)
|
||||||
$loading.finish($el.find(".level-name"))
|
currentLoading.finish()
|
||||||
|
|
||||||
$loading.start($el.find(".level-name"))
|
|
||||||
|
|
||||||
$repo.save(issue).then(onSuccess, onError)
|
$repo.save(issue).then(onSuccess, onError)
|
||||||
|
|
||||||
|
@ -496,18 +504,20 @@ IssuePriorityButtonDirective = ($rootScope, $repo, $confirm, $loading, $qqueue,
|
||||||
issue = $model.$modelValue.clone()
|
issue = $model.$modelValue.clone()
|
||||||
issue.priority = priority
|
issue.priority = priority
|
||||||
|
|
||||||
|
currentLoading = $loading()
|
||||||
|
.target($el.find(".level-name"))
|
||||||
|
.start()
|
||||||
|
|
||||||
onSuccess = ->
|
onSuccess = ->
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
$model.$setViewValue(issue)
|
$model.$setViewValue(issue)
|
||||||
$rootScope.$broadcast("object:updated")
|
$rootScope.$broadcast("object:updated")
|
||||||
$loading.finish($el.find(".level-name"))
|
currentLoading.finish()
|
||||||
onError = ->
|
onError = ->
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
issue.revert()
|
issue.revert()
|
||||||
$model.$setViewValue(issue)
|
$model.$setViewValue(issue)
|
||||||
$loading.finish($el.find(".level-name"))
|
currentLoading.finish()
|
||||||
|
|
||||||
$loading.start($el.find(".level-name"))
|
|
||||||
|
|
||||||
$repo.save(issue).then(onSuccess, onError)
|
$repo.save(issue).then(onSuccess, onError)
|
||||||
|
|
||||||
|
|
|
@ -58,17 +58,20 @@ CreateIssueDirective = ($repo, $confirm, $rootscope, lightboxService, $loading)
|
||||||
if not form.validate()
|
if not form.validate()
|
||||||
return
|
return
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.create("issues", $scope.issue)
|
promise = $repo.create("issues", $scope.issue)
|
||||||
|
|
||||||
promise.then (data) ->
|
promise.then (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$rootscope.$broadcast("issueform:new:success", data)
|
$rootscope.$broadcast("issueform:new:success", data)
|
||||||
lightboxService.close($el)
|
lightboxService.close($el)
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
|
|
||||||
promise.then null, ->
|
promise.then null, ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
|
|
||||||
|
|
||||||
|
@ -103,20 +106,22 @@ CreateBulkIssuesDirective = ($repo, $rs, $confirm, $rootscope, $loading, lightbo
|
||||||
if not form.validate()
|
if not form.validate()
|
||||||
return
|
return
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
data = $scope.new.bulk
|
data = $scope.new.bulk
|
||||||
projectId = $scope.new.projectId
|
projectId = $scope.new.projectId
|
||||||
|
|
||||||
promise = $rs.issues.bulkCreate(projectId, data)
|
promise = $rs.issues.bulkCreate(projectId, data)
|
||||||
promise.then (result) ->
|
promise.then (result) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$rootscope.$broadcast("issueform:new:success", result)
|
$rootscope.$broadcast("issueform:new:success", result)
|
||||||
lightboxService.close($el)
|
lightboxService.close($el)
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
|
|
||||||
promise.then null, ->
|
promise.then null, ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
|
|
||||||
submitButton = $el.find(".submit-button")
|
submitButton = $el.find(".submit-button")
|
||||||
|
|
|
@ -649,12 +649,14 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat
|
||||||
if event.keyCode == 13
|
if event.keyCode == 13
|
||||||
target = angular.element(event.currentTarget)
|
target = angular.element(event.currentTarget)
|
||||||
newFilter = target.val()
|
newFilter = target.val()
|
||||||
$loading.start($el.find(".new"))
|
currentLoading = $loading()
|
||||||
|
.target($el.find(".new"))
|
||||||
|
.start()
|
||||||
promise = $ctrl.saveCurrentFiltersTo(newFilter)
|
promise = $ctrl.saveCurrentFiltersTo(newFilter)
|
||||||
promise.then ->
|
promise.then ->
|
||||||
loadPromise = $ctrl.loadMyFilters()
|
loadPromise = $ctrl.loadMyFilters()
|
||||||
loadPromise.then (filters) ->
|
loadPromise.then (filters) ->
|
||||||
$loading.finish($el.find(".new"))
|
currentLoading.finish()
|
||||||
$scope.filters.myFilters = filters
|
$scope.filters.myFilters = filters
|
||||||
|
|
||||||
currentfilterstype = $el.find("h2 a.subfilter span.title").prop('data-type')
|
currentfilterstype = $el.find("h2 a.subfilter span.title").prop('data-type')
|
||||||
|
@ -665,11 +667,11 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat
|
||||||
$el.find('.save-filters').show()
|
$el.find('.save-filters').show()
|
||||||
|
|
||||||
loadPromise.then null, ->
|
loadPromise.then null, ->
|
||||||
$loading.finish($el.find(".new"))
|
currentLoading.finish()
|
||||||
$confirm.notify("error", "Error loading custom filters")
|
$confirm.notify("error", "Error loading custom filters")
|
||||||
|
|
||||||
promise.then null, ->
|
promise.then null, ->
|
||||||
$loading.finish($el.find(".new"))
|
currentLoading.finish()
|
||||||
$el.find(".my-filter-name").val(newFilter).focus().select()
|
$el.find(".my-filter-name").val(newFilter).focus().select()
|
||||||
$confirm.notify("error", "Filter not saved")
|
$confirm.notify("error", "Filter not saved")
|
||||||
|
|
||||||
|
|
|
@ -404,7 +404,7 @@ module.directive("tgKanbanArchivedStatusIntro", ["$translate", KanbanArchivedSta
|
||||||
## Kanban User Story Directive
|
## Kanban User Story Directive
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
KanbanUserstoryDirective = ($rootscope) ->
|
KanbanUserstoryDirective = ($rootscope, $loading, $rs) ->
|
||||||
link = ($scope, $el, $attrs, $model) ->
|
link = ($scope, $el, $attrs, $model) ->
|
||||||
$el.disableSelection()
|
$el.disableSelection()
|
||||||
|
|
||||||
|
@ -418,8 +418,18 @@ KanbanUserstoryDirective = ($rootscope) ->
|
||||||
if $el.find(".icon-edit").hasClass("noclick")
|
if $el.find(".icon-edit").hasClass("noclick")
|
||||||
return
|
return
|
||||||
|
|
||||||
$scope.$apply ->
|
target = $(event.target)
|
||||||
$rootscope.$broadcast("usform:edit", $model.$modelValue)
|
|
||||||
|
currentLoading = $loading()
|
||||||
|
.target(target)
|
||||||
|
.timeout(200)
|
||||||
|
.removeClasses("icon-edit")
|
||||||
|
.start()
|
||||||
|
|
||||||
|
us = $model.$modelValue
|
||||||
|
$rs.userstories.getByRef(us.project, us.ref).then (editingUserStory) =>
|
||||||
|
$rootscope.$broadcast("usform:edit", editingUserStory)
|
||||||
|
currentLoading.finish()
|
||||||
|
|
||||||
$scope.$on "$destroy", ->
|
$scope.$on "$destroy", ->
|
||||||
$el.off()
|
$el.off()
|
||||||
|
@ -430,7 +440,7 @@ KanbanUserstoryDirective = ($rootscope) ->
|
||||||
require: "ngModel"
|
require: "ngModel"
|
||||||
}
|
}
|
||||||
|
|
||||||
module.directive("tgKanbanUserstory", ["$rootScope", KanbanUserstoryDirective])
|
module.directive("tgKanbanUserstory", ["$rootScope", "$tgLoading", "$tgResources", KanbanUserstoryDirective])
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
## Kanban Squish Column Directive
|
## Kanban Squish Column Directive
|
||||||
|
|
|
@ -30,6 +30,7 @@ CreateProject = ($rootscope, $repo, $confirm, $location, $navurls, $rs, $project
|
||||||
link = ($scope, $el, attrs) ->
|
link = ($scope, $el, attrs) ->
|
||||||
$scope.data = {}
|
$scope.data = {}
|
||||||
$scope.templates = []
|
$scope.templates = []
|
||||||
|
currentLoading = null
|
||||||
|
|
||||||
form = $el.find("form").checksley({"onlyOneErrorElement": true})
|
form = $el.find("form").checksley({"onlyOneErrorElement": true})
|
||||||
|
|
||||||
|
@ -39,7 +40,7 @@ CreateProject = ($rootscope, $repo, $confirm, $location, $navurls, $rs, $project
|
||||||
# than another deleted in the same session
|
# than another deleted in the same session
|
||||||
$cacheFactory.get('$http').removeAll()
|
$cacheFactory.get('$http').removeAll()
|
||||||
|
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$rootscope.$broadcast("projects:reload")
|
$rootscope.$broadcast("projects:reload")
|
||||||
|
|
||||||
$confirm.notify("success", $translate.instant("COMMON.SAVE"))
|
$confirm.notify("success", $translate.instant("COMMON.SAVE"))
|
||||||
|
@ -49,7 +50,7 @@ CreateProject = ($rootscope, $repo, $confirm, $location, $navurls, $rs, $project
|
||||||
currentUserService.loadProjects()
|
currentUserService.loadProjects()
|
||||||
|
|
||||||
onErrorSubmit = (response) ->
|
onErrorSubmit = (response) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
form.setErrors(response)
|
form.setErrors(response)
|
||||||
selectors = []
|
selectors = []
|
||||||
for error_field in _.keys(response)
|
for error_field in _.keys(response)
|
||||||
|
@ -65,7 +66,9 @@ CreateProject = ($rootscope, $repo, $confirm, $location, $navurls, $rs, $project
|
||||||
if not form.validate()
|
if not form.validate()
|
||||||
return
|
return
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.create("projects", $scope.data)
|
promise = $repo.create("projects", $scope.data)
|
||||||
promise.then(onSuccessSubmit, onErrorSubmit)
|
promise.then(onSuccessSubmit, onErrorSubmit)
|
||||||
|
|
|
@ -33,16 +33,18 @@ RelatedTaskRowDirective = ($repo, $compile, $confirm, $rootscope, $loading, $tem
|
||||||
saveTask = debounce 2000, (task) ->
|
saveTask = debounce 2000, (task) ->
|
||||||
task.subject = $el.find('input').val()
|
task.subject = $el.find('input').val()
|
||||||
|
|
||||||
$loading.start($el.find('.task-name'))
|
currentLoading = $loading()
|
||||||
|
.target($el.find('.task-name'))
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.save(task)
|
promise = $repo.save(task)
|
||||||
promise.then =>
|
promise.then =>
|
||||||
$loading.finish($el.find('.task-name'))
|
currentLoading.finish()
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
$rootscope.$broadcast("related-tasks:update")
|
$rootscope.$broadcast("related-tasks:update")
|
||||||
|
|
||||||
promise.then null, =>
|
promise.then null, =>
|
||||||
$loading.finish($el.find('.task-name'))
|
currentLoading.finish()
|
||||||
$el.find('input').val(task.subject)
|
$el.find('input').val(task.subject)
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
return promise
|
return promise
|
||||||
|
@ -126,17 +128,20 @@ RelatedTaskCreateFormDirective = ($repo, $compile, $confirm, $tgmodel, $loading,
|
||||||
$scope.newTask.status = $scope.project.default_task_status
|
$scope.newTask.status = $scope.project.default_task_status
|
||||||
$scope.newTask.assigned_to = null
|
$scope.newTask.assigned_to = null
|
||||||
|
|
||||||
$loading.start($el.find('.task-name'))
|
currentLoading = $loading()
|
||||||
|
.target($el.find('.task-name'))
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $repo.create("tasks", task)
|
promise = $repo.create("tasks", task)
|
||||||
promise.then ->
|
promise.then ->
|
||||||
$analytics.trackEvent("task", "create", "create task on userstory", 1)
|
$analytics.trackEvent("task", "create", "create task on userstory", 1)
|
||||||
$loading.finish($el.find('.task-name'))
|
currentLoading.finish()
|
||||||
$scope.$emit("related-tasks:add")
|
$scope.$emit("related-tasks:add")
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
|
|
||||||
promise.then null, ->
|
promise.then null, ->
|
||||||
$el.find('input').val(task.subject)
|
$el.find('input').val(task.subject)
|
||||||
$loading.finish($el.find('.task-name'))
|
currentLoading.finish()
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
|
|
||||||
return promise
|
return promise
|
||||||
|
|
|
@ -80,11 +80,13 @@ CreateEditTaskDirective = ($repo, $model, $rs, $rootscope, $loading, lightboxSer
|
||||||
promise = $repo.save($scope.task)
|
promise = $repo.save($scope.task)
|
||||||
broadcastEvent = "taskform:edit:success"
|
broadcastEvent = "taskform:edit:success"
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
# FIXME: error handling?
|
# FIXME: error handling?
|
||||||
promise.then (data) ->
|
promise.then (data) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
lightboxService.close($el)
|
lightboxService.close($el)
|
||||||
$rootscope.$broadcast(broadcastEvent, data)
|
$rootscope.$broadcast(broadcastEvent, data)
|
||||||
|
|
||||||
|
@ -107,7 +109,9 @@ CreateBulkTasksDirective = ($repo, $rs, $rootscope, $loading, lightboxService) -
|
||||||
if not form.validate()
|
if not form.validate()
|
||||||
return
|
return
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
data = $scope.form.data
|
data = $scope.form.data
|
||||||
projectId = $scope.projectId
|
projectId = $scope.projectId
|
||||||
|
@ -116,13 +120,13 @@ CreateBulkTasksDirective = ($repo, $rs, $rootscope, $loading, lightboxService) -
|
||||||
|
|
||||||
promise = $rs.tasks.bulkCreate(projectId, sprintId, usId, data)
|
promise = $rs.tasks.bulkCreate(projectId, sprintId, usId, data)
|
||||||
promise.then (result) ->
|
promise.then (result) ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$rootscope.$broadcast("taskform:bulk:success", result)
|
$rootscope.$broadcast("taskform:bulk:success", result)
|
||||||
lightboxService.close($el)
|
lightboxService.close($el)
|
||||||
|
|
||||||
# TODO: error handling
|
# TODO: error handling
|
||||||
promise.then null, ->
|
promise.then null, ->
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
console.log "FAIL"
|
console.log "FAIL"
|
||||||
|
|
||||||
$scope.$on "taskform:bulk", (ctx, sprintId, usId)->
|
$scope.$on "taskform:bulk", (ctx, sprintId, usId)->
|
||||||
|
|
|
@ -295,7 +295,7 @@ module.directive("tgTaskboard", ["$rootScope", TaskboardDirective])
|
||||||
## Taskboard Task Directive
|
## Taskboard Task Directive
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
TaskboardTaskDirective = ($rootscope) ->
|
TaskboardTaskDirective = ($rootscope, $loading, $rs) ->
|
||||||
link = ($scope, $el, $attrs, $model) ->
|
link = ($scope, $el, $attrs, $model) ->
|
||||||
$el.disableSelection()
|
$el.disableSelection()
|
||||||
|
|
||||||
|
@ -309,12 +309,23 @@ TaskboardTaskDirective = ($rootscope) ->
|
||||||
if $el.find('.icon-edit').hasClass('noclick')
|
if $el.find('.icon-edit').hasClass('noclick')
|
||||||
return
|
return
|
||||||
$scope.$apply ->
|
$scope.$apply ->
|
||||||
$rootscope.$broadcast("taskform:edit", $scope.task)
|
target = $(event.target)
|
||||||
|
|
||||||
|
currentLoading = $loading()
|
||||||
|
.target(target)
|
||||||
|
.timeout(200)
|
||||||
|
.removeClasses("icon-edit")
|
||||||
|
.start()
|
||||||
|
|
||||||
|
task = $scope.task
|
||||||
|
$rs.tasks.getByRef(task.project, task.ref).then (editingTask) =>
|
||||||
|
$rootscope.$broadcast("taskform:edit", editingTask)
|
||||||
|
currentLoading.finish()
|
||||||
|
|
||||||
return {link:link}
|
return {link:link}
|
||||||
|
|
||||||
|
|
||||||
module.directive("tgTaskboardTask", ["$rootScope", TaskboardTaskDirective])
|
module.directive("tgTaskboardTask", ["$rootScope", "$tgLoading", "$tgResources", TaskboardTaskDirective])
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
## Taskboard Squish Column Directive
|
## Taskboard Squish Column Directive
|
||||||
|
|
|
@ -246,21 +246,21 @@ TaskStatusButtonDirective = ($rootScope, $repo, $confirm, $loading, $qqueue, $co
|
||||||
task = $model.$modelValue.clone()
|
task = $model.$modelValue.clone()
|
||||||
task.status = status
|
task.status = status
|
||||||
|
|
||||||
$model.$setViewValue(task)
|
currentLoading = $loading()
|
||||||
|
.target($el.find(".level-name"))
|
||||||
|
.start()
|
||||||
|
|
||||||
onSuccess = ->
|
onSuccess = ->
|
||||||
|
$model.$setViewValue(task)
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
$rootScope.$broadcast("object:updated")
|
$rootScope.$broadcast("object:updated")
|
||||||
$loading.finish($el.find(".level-name"))
|
currentLoading.finish()
|
||||||
|
|
||||||
onError = ->
|
onError = ->
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
task.revert()
|
currentLoading.finish()
|
||||||
$model.$setViewValue(task)
|
|
||||||
$loading.finish($el.find(".level-name"))
|
|
||||||
|
|
||||||
$loading.start($el.find(".level-name"))
|
$repo.save(task).then(onSuccess, onError)
|
||||||
$repo.save($model.$modelValue).then(onSuccess, onError)
|
|
||||||
|
|
||||||
$el.on "click", ".status-data", (event) ->
|
$el.on "click", ".status-data", (event) ->
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
@ -328,22 +328,22 @@ TaskIsIocaineButtonDirective = ($rootscope, $tgrepo, $confirm, $loading, $qqueue
|
||||||
task = $model.$modelValue.clone()
|
task = $model.$modelValue.clone()
|
||||||
task.is_iocaine = is_iocaine
|
task.is_iocaine = is_iocaine
|
||||||
|
|
||||||
$model.$setViewValue(task)
|
currentLoading = $loading()
|
||||||
$loading.start($el.find('label'))
|
.target($el.find('label'))
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $tgrepo.save(task)
|
promise = $tgrepo.save(task)
|
||||||
|
|
||||||
promise.then ->
|
promise.then ->
|
||||||
|
$model.$setViewValue(task)
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
$rootscope.$broadcast("object:updated")
|
$rootscope.$broadcast("object:updated")
|
||||||
|
|
||||||
promise.then null, ->
|
promise.then null, ->
|
||||||
task.revert()
|
|
||||||
$model.$setViewValue(task)
|
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
|
|
||||||
promise.finally ->
|
promise.finally ->
|
||||||
$loading.finish($el.find('label'))
|
currentLoading.finish()
|
||||||
|
|
||||||
$el.on "click", ".is-iocaine", (event) ->
|
$el.on "click", ".is-iocaine", (event) ->
|
||||||
return if not isEditable()
|
return if not isEditable()
|
||||||
|
|
|
@ -67,15 +67,17 @@ UserChangePasswordDirective = ($rs, $confirm, $loading, $translate) ->
|
||||||
$confirm.notify('error', $translate.instant("CHANGE_PASSWORD.ERROR_PASSWORD_MATCH"))
|
$confirm.notify('error', $translate.instant("CHANGE_PASSWORD.ERROR_PASSWORD_MATCH"))
|
||||||
return
|
return
|
||||||
|
|
||||||
$loading.start(submitButton)
|
currentLoading = $loading()
|
||||||
|
.target(submitButton)
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $rs.userSettings.changePassword($scope.currentPassword, $scope.newPassword1)
|
promise = $rs.userSettings.changePassword($scope.currentPassword, $scope.newPassword1)
|
||||||
promise.then =>
|
promise.then =>
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$confirm.notify('success')
|
$confirm.notify('success')
|
||||||
|
|
||||||
promise.then null, (response) =>
|
promise.then null, (response) =>
|
||||||
$loading.finish(submitButton)
|
currentLoading.finish()
|
||||||
$confirm.notify('error', response.data._error_message)
|
$confirm.notify('error', response.data._error_message)
|
||||||
|
|
||||||
submitButton = $el.find(".submit-button")
|
submitButton = $el.find(".submit-button")
|
||||||
|
|
|
@ -304,8 +304,8 @@ UsStatusButtonDirective = ($rootScope, $repo, $confirm, $loading, $qqueue, $temp
|
||||||
statuses: $scope.statusList
|
statuses: $scope.statusList
|
||||||
editable: isEditable()
|
editable: isEditable()
|
||||||
})
|
})
|
||||||
$el.html(html)
|
|
||||||
|
|
||||||
|
$el.html(html)
|
||||||
|
|
||||||
save = $qqueue.bindAdd (status) =>
|
save = $qqueue.bindAdd (status) =>
|
||||||
us = $model.$modelValue.clone()
|
us = $model.$modelValue.clone()
|
||||||
|
@ -314,22 +314,21 @@ UsStatusButtonDirective = ($rootScope, $repo, $confirm, $loading, $qqueue, $temp
|
||||||
|
|
||||||
$.fn.popover().closeAll()
|
$.fn.popover().closeAll()
|
||||||
|
|
||||||
$model.$setViewValue(us)
|
currentLoading = $loading()
|
||||||
|
.target($el.find(".level-name"))
|
||||||
|
.start()
|
||||||
|
|
||||||
onSuccess = ->
|
onSuccess = ->
|
||||||
$confirm.notify("success")
|
$confirm.notify("success")
|
||||||
|
$model.$setViewValue(us)
|
||||||
$rootScope.$broadcast("object:updated")
|
$rootScope.$broadcast("object:updated")
|
||||||
$loading.finish($el.find(".level-name"))
|
currentLoading.finish()
|
||||||
|
|
||||||
onError = ->
|
onError = ->
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
us.revert()
|
currentLoading.finish()
|
||||||
$model.$setViewValue(us)
|
|
||||||
$loading.finish($el.find(".level-name"))
|
|
||||||
|
|
||||||
$loading.start($el.find(".level-name"))
|
$repo.save(us).then(onSuccess, onError)
|
||||||
|
|
||||||
$repo.save($model.$modelValue).then(onSuccess, onError)
|
|
||||||
|
|
||||||
$el.on "click", ".status-data", (event) ->
|
$el.on "click", ".status-data", (event) ->
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
@ -393,20 +392,19 @@ UsTeamRequirementButtonDirective = ($rootscope, $tgrepo, $confirm, $loading, $qq
|
||||||
us = $model.$modelValue.clone()
|
us = $model.$modelValue.clone()
|
||||||
us.team_requirement = team_requirement
|
us.team_requirement = team_requirement
|
||||||
|
|
||||||
$model.$setViewValue(us)
|
currentLoading = $loading()
|
||||||
|
.target($el.find("label"))
|
||||||
|
.start()
|
||||||
|
|
||||||
$loading.start($el.find("label"))
|
promise = $tgrepo.save(us)
|
||||||
|
|
||||||
promise = $tgrepo.save($model.$modelValue)
|
|
||||||
promise.then =>
|
promise.then =>
|
||||||
$loading.finish($el.find("label"))
|
$model.$setViewValue(us)
|
||||||
|
currentLoading.finish()
|
||||||
$rootscope.$broadcast("object:updated")
|
$rootscope.$broadcast("object:updated")
|
||||||
|
|
||||||
promise.then null, ->
|
promise.then null, ->
|
||||||
$loading.finish($el.find("label"))
|
currentLoading.finish()
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
us.revert()
|
|
||||||
$model.$setViewValue(us)
|
|
||||||
|
|
||||||
$el.on "click", ".team-requirement", (event) ->
|
$el.on "click", ".team-requirement", (event) ->
|
||||||
return if not canEdit()
|
return if not canEdit()
|
||||||
|
@ -456,18 +454,18 @@ UsClientRequirementButtonDirective = ($rootscope, $tgrepo, $confirm, $loading, $
|
||||||
us = $model.$modelValue.clone()
|
us = $model.$modelValue.clone()
|
||||||
us.client_requirement = client_requirement
|
us.client_requirement = client_requirement
|
||||||
|
|
||||||
$model.$setViewValue(us)
|
currentLoading = $loading()
|
||||||
|
.target($el.find("label"))
|
||||||
|
.start()
|
||||||
|
|
||||||
$loading.start($el.find("label"))
|
promise = $tgrepo.save(us)
|
||||||
promise = $tgrepo.save($model.$modelValue)
|
|
||||||
promise.then =>
|
promise.then =>
|
||||||
$loading.finish($el.find("label"))
|
|
||||||
$rootscope.$broadcast("object:updated")
|
|
||||||
promise.then null, ->
|
|
||||||
$loading.finish($el.find("label"))
|
|
||||||
$confirm.notify("error")
|
|
||||||
us.revert()
|
|
||||||
$model.$setViewValue(us)
|
$model.$setViewValue(us)
|
||||||
|
currentLoading.finish()
|
||||||
|
$rootscope.$broadcast("object:updated")
|
||||||
|
|
||||||
|
promise.then null, ->
|
||||||
|
$confirm.notify("error")
|
||||||
|
|
||||||
$el.on "click", ".client-requirement", (event) ->
|
$el.on "click", ".client-requirement", (event) ->
|
||||||
return if not canEdit()
|
return if not canEdit()
|
||||||
|
|
|
@ -233,7 +233,12 @@ EditableWikiContentDirective = ($window, $document, $repo, $confirm, $loading, $
|
||||||
onError = ->
|
onError = ->
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
|
|
||||||
$loading.start($el.find('.save-container'))
|
console.log $el.find('.save-container')
|
||||||
|
|
||||||
|
currentLoading = $loading()
|
||||||
|
.removeClasses("icon-floppy")
|
||||||
|
.target($el.find('.icon-floppy'))
|
||||||
|
.start()
|
||||||
|
|
||||||
if wiki.id?
|
if wiki.id?
|
||||||
promise = $repo.save(wiki).then(onSuccess, onError)
|
promise = $repo.save(wiki).then(onSuccess, onError)
|
||||||
|
@ -241,7 +246,7 @@ EditableWikiContentDirective = ($window, $document, $repo, $confirm, $loading, $
|
||||||
promise = $repo.create("wiki", wiki).then(onSuccess, onError)
|
promise = $repo.create("wiki", wiki).then(onSuccess, onError)
|
||||||
|
|
||||||
promise.finally ->
|
promise.finally ->
|
||||||
$loading.finish($el.find('.save-container'))
|
currentLoading.finish()
|
||||||
|
|
||||||
$el.on "click", "a", (event) ->
|
$el.on "click", "a", (event) ->
|
||||||
target = angular.element(event.target)
|
target = angular.element(event.target)
|
||||||
|
|
|
@ -104,27 +104,29 @@ WikiNavDirective = ($tgrepo, $log, $location, $confirm, $navUrls, $analytics, $l
|
||||||
target = angular.element(event.currentTarget)
|
target = angular.element(event.currentTarget)
|
||||||
newLink = target.val()
|
newLink = target.val()
|
||||||
|
|
||||||
$loading.start($el.find(".new"))
|
currentLoading = $loading()
|
||||||
|
.target($el.find(".new"))
|
||||||
|
.start()
|
||||||
|
|
||||||
promise = $tgrepo.create("wiki-links", {project: $scope.projectId, title: newLink, href: slugify(newLink)})
|
promise = $tgrepo.create("wiki-links", {project: $scope.projectId, title: newLink, href: slugify(newLink)})
|
||||||
promise.then ->
|
promise.then ->
|
||||||
$analytics.trackEvent("wikilink", "create", "create wiki link", 1)
|
$analytics.trackEvent("wikilink", "create", "create wiki link", 1)
|
||||||
loadPromise = $ctrl.loadWikiLinks()
|
loadPromise = $ctrl.loadWikiLinks()
|
||||||
loadPromise.then ->
|
loadPromise.then ->
|
||||||
$loading.finish($el.find(".new"))
|
currentLoading.finish()
|
||||||
$el.find(".new").addClass("hidden")
|
$el.find(".new").addClass("hidden")
|
||||||
$el.find(".new input").val('')
|
$el.find(".new input").val('')
|
||||||
$el.find(".add-button").show()
|
$el.find(".add-button").show()
|
||||||
render($scope.wikiLinks)
|
render($scope.wikiLinks)
|
||||||
loadPromise.then null, ->
|
loadPromise.then null, ->
|
||||||
$loading.finish($el.find(".new"))
|
currentLoading.finish()
|
||||||
$el.find(".new").addClass("hidden")
|
$el.find(".new").addClass("hidden")
|
||||||
$el.find(".new input").val('')
|
$el.find(".new input").val('')
|
||||||
$el.find(".add-button").show()
|
$el.find(".add-button").show()
|
||||||
$confirm.notify("error", "Error loading wiki links")
|
$confirm.notify("error", "Error loading wiki links")
|
||||||
|
|
||||||
promise.then null, (error) ->
|
promise.then null, (error) ->
|
||||||
$loading.finish($el.find(".new"))
|
currentLoading.finish()
|
||||||
$el.find(".new input").val(newLink)
|
$el.find(".new input").val(newLink)
|
||||||
$el.find(".new input").focus().select()
|
$el.find(".new input").focus().select()
|
||||||
if error?.__all__?[0]?
|
if error?.__all__?[0]?
|
||||||
|
|
|
@ -16,7 +16,7 @@ section.history
|
||||||
a(class="help-markdown", href="https://taiga.io/support/taiga-markdown-syntax/", target="_blank", title="{{'COMMON.WYSIWYG.MARKDOWN_HELP' | translate}}")
|
a(class="help-markdown", href="https://taiga.io/support/taiga-markdown-syntax/", target="_blank", title="{{'COMMON.WYSIWYG.MARKDOWN_HELP' | translate}}")
|
||||||
span.icon.icon-help
|
span.icon.icon-help
|
||||||
span(translate="COMMON.WYSIWYG.MARKDOWN_HELP")
|
span(translate="COMMON.WYSIWYG.MARKDOWN_HELP")
|
||||||
input(type="button", ng-disabled!="!<%- ngmodel %>.comment.length" title="{{'COMMENTS.COMMENT' | translate}}", value="{{'COMMENTS.COMMENT' | translate}}", class="button button-green save-comment")
|
button(type="button", ng-disabled!="!<%- ngmodel %>.comment.length" title="{{'COMMENTS.COMMENT' | translate}}", translate="COMMENTS.COMMENT", class="button button-green save-comment")
|
||||||
<% } %>
|
<% } %>
|
||||||
section.history-activity.hidden
|
section.history-activity.hidden
|
||||||
.changes-list
|
.changes-list
|
||||||
|
|
|
@ -10,7 +10,7 @@ div.row.us-item-row(ng-repeat="us in userstories track by us.id", tg-bind-scope,
|
||||||
span(ng-bind="us.subject")
|
span(ng-bind="us.subject")
|
||||||
div.us-settings
|
div.us-settings
|
||||||
a.icon.icon-edit(tg-check-permission="modify_us", href="",
|
a.icon.icon-edit(tg-check-permission="modify_us", href="",
|
||||||
ng-click="ctrl.editUserStory(us)", title="{{'COMMON.EDIT' | translate}}")
|
ng-click="ctrl.editUserStory(us.project, us.ref, $event)", title="{{'COMMON.EDIT' | translate}}")
|
||||||
a.icon.icon-delete(tg-check-permission="delete_us", href="",
|
a.icon.icon-delete(tg-check-permission="delete_us", href="",
|
||||||
ng-click="ctrl.deleteUserStory(us)", title="{{'COMMON.DELETE' | translate}}")
|
ng-click="ctrl.deleteUserStory(us)", title="{{'COMMON.DELETE' | translate}}")
|
||||||
|
|
||||||
|
|
|
@ -87,6 +87,10 @@
|
||||||
.task-name {
|
.task-name {
|
||||||
@extend %bold;
|
@extend %bold;
|
||||||
}
|
}
|
||||||
|
.loading {
|
||||||
|
bottom: .5rem;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
.icon-edit,
|
.icon-edit,
|
||||||
.icon-drag-h {
|
.icon-drag-h {
|
||||||
@extend %large;
|
@extend %large;
|
||||||
|
@ -132,6 +136,7 @@
|
||||||
.task-name {
|
.task-name {
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
|
.loading,
|
||||||
.icon-edit {
|
.icon-edit {
|
||||||
bottom: .2rem;
|
bottom: .2rem;
|
||||||
right: .5rem;
|
right: .5rem;
|
||||||
|
|
|
@ -109,6 +109,10 @@
|
||||||
.icon {
|
.icon {
|
||||||
transition: color .3s linear, opacity .3s linear;
|
transition: color .3s linear, opacity .3s linear;
|
||||||
}
|
}
|
||||||
|
.loading {
|
||||||
|
bottom: .5rem;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
.icon-edit,
|
.icon-edit,
|
||||||
.icon-drag-h {
|
.icon-drag-h {
|
||||||
@extend %large;
|
@extend %large;
|
||||||
|
@ -120,7 +124,8 @@
|
||||||
color: $card-dark;
|
color: $card-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.icon-edit {
|
.icon-edit,
|
||||||
|
.loading {
|
||||||
right: 1rem;
|
right: 1rem;
|
||||||
}
|
}
|
||||||
.icon-drag-h {
|
.icon-drag-h {
|
||||||
|
|
Loading…
Reference in New Issue