From cf5c8e27e1627da080d33b57ea017da766151719 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 3 Aug 2016 16:05:19 +0100 Subject: [PATCH] UI fix - do not allow multiple clicks to restore a deleted file. --- .../views/project/editor/track-changes.jade | 18 +++++++++++++++--- .../track-changes/TrackChangesManager.coffee | 3 +++ .../TrackChangesDiffController.coffee | 15 ++++++++++++--- .../TrackChangesListController.coffee | 4 ++-- .../stylesheets/app/editor/track-changes.less | 4 ++++ 5 files changed, 36 insertions(+), 8 deletions(-) diff --git a/services/web/app/views/project/editor/track-changes.jade b/services/web/app/views/project/editor/track-changes.jade index dc7ce38708..684b89e814 100644 --- a/services/web/app/views/project/editor/track-changes.jade +++ b/services/web/app/views/project/editor/track-changes.jade @@ -143,15 +143,27 @@ div#trackChanges(ng-show="ui.view == 'track-changes'") navigate-highlights="true" ) .diff-deleted.text-centered( - ng-show="trackChanges.diff.deleted" + ng-show="trackChanges.diff.deleted && !trackChanges.diff.restoreDeletedSuccess" ) p.text-serif #{translate("file_has_been_deleted", {filename:"{{ trackChanges.diff.doc.name }} "})} - p a.btn.btn-primary.btn-lg( href, - ng-click="restoreDeletedDoc()" + ng-click="restoreDeletedDoc()", + ng-disabled="trackChanges.diff.restoreInProgress" ) #{translate("restore")} + + .diff-deleted.text-centered( + ng-show="trackChanges.diff.deleted && trackChanges.diff.restoreDeletedSuccess" + ) + p.text-serif Your file ({{ trackChanges.diff.doc.name }}) has been recovered. + p.text-serif You can go back to the editor and work on it again. + p + a.btn.btn-default( + href, + ng-click="backToEditorAfterRestore()", + ) Back to editor + .loading-panel(ng-show="trackChanges.diff.loading") i.fa.fa-spin.fa-refresh |   #{translate("loading")}... diff --git a/services/web/public/coffee/ide/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/track-changes/TrackChangesManager.coffee index 5270754db7..ecd3b5a7f8 100644 --- a/services/web/public/coffee/ide/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/track-changes/TrackChangesManager.coffee @@ -117,6 +117,9 @@ define [ diff.error = true else diff.deleted = true + diff.restoreInProgress = false + diff.restoreDeletedSuccess = false + diff.restoredDocNewId = null restoreDeletedDoc: (doc) -> url = "/project/#{@$scope.project_id}/doc/#{doc.id}/restore" diff --git a/services/web/public/coffee/ide/track-changes/controllers/TrackChangesDiffController.coffee b/services/web/public/coffee/ide/track-changes/controllers/TrackChangesDiffController.coffee index 94044f8956..77c2720a4f 100644 --- a/services/web/public/coffee/ide/track-changes/controllers/TrackChangesDiffController.coffee +++ b/services/web/public/coffee/ide/track-changes/controllers/TrackChangesDiffController.coffee @@ -4,9 +4,15 @@ define [ App.controller "TrackChangesDiffController", ($scope, $modal, ide, event_tracking) -> $scope.restoreDeletedDoc = () -> event_tracking.sendCountly "track-changes-restore-deleted" - ide.trackChangesManager.restoreDeletedDoc( - $scope.trackChanges.diff.doc - ) + $scope.trackChanges.diff.restoreInProgress = true + ide.trackChangesManager + .restoreDeletedDoc( + $scope.trackChanges.diff.doc + ) + .success (response) -> + $scope.trackChanges.diff.restoredDocNewId = response.doc_id + $scope.trackChanges.diff.restoreInProgress = false + $scope.trackChanges.diff.restoreDeletedSuccess = true $scope.openRestoreDiffModal = () -> event_tracking.sendCountly "track-changes-restore-modal" @@ -17,6 +23,9 @@ define [ diff: () -> $scope.trackChanges.diff } + $scope.backToEditorAfterRestore = () -> + ide.editorManager.openDoc({ id: $scope.trackChanges.diff.restoredDocNewId }) + App.controller "TrackChangesRestoreDiffModalController", ($scope, $modalInstance, diff, ide, event_tracking) -> $scope.state = inflight: false diff --git a/services/web/public/coffee/ide/track-changes/controllers/TrackChangesListController.coffee b/services/web/public/coffee/ide/track-changes/controllers/TrackChangesListController.coffee index 88ab0053ed..e0beb3ef4f 100644 --- a/services/web/public/coffee/ide/track-changes/controllers/TrackChangesListController.coffee +++ b/services/web/public/coffee/ide/track-changes/controllers/TrackChangesListController.coffee @@ -2,7 +2,7 @@ define [ "base" ], (App) -> - App.controller "TrackChangesPremiumPopup", ($scope, ide, sixpack, event_tracking)-> + App.controller "TrackChangesPremiumPopup", ($scope, ide, sixpack)-> $scope.$watch "ui.view", -> if $scope.ui.view == "track-changes" if $scope.project?.features?.versioning @@ -78,7 +78,7 @@ define [ $scope.recalculateSelectedUpdates() ] - App.controller "TrackChangesListItemController", ["$scope", ($scope) -> + App.controller "TrackChangesListItemController", ["$scope", "event_tracking", ($scope, event_tracking) -> $scope.$watch "update.selectedFrom", (selectedFrom, oldSelectedFrom) -> if selectedFrom for update in $scope.trackChanges.updates diff --git a/services/web/public/stylesheets/app/editor/track-changes.less b/services/web/public/stylesheets/app/editor/track-changes.less index b57e71ede0..6cf98e53eb 100644 --- a/services/web/public/stylesheets/app/editor/track-changes.less +++ b/services/web/public/stylesheets/app/editor/track-changes.less @@ -267,6 +267,10 @@ } } +.diff-deleted { + padding-top: 15px; +} + .editor-dark { #trackChanges { aside.change-list {