diff --git a/services/web/app/views/project/editor.jade b/services/web/app/views/project/editor.jade index f408bc04e9..f925353041 100644 --- a/services/web/app/views/project/editor.jade +++ b/services/web/app/views/project/editor.jade @@ -54,7 +54,14 @@ block content include ./editor/file-tree .ui-layout-center - #editor(ace-editor, theme="'cobalt'", show-print-margin="false", sharejs-doc="editor.sharejs_doc", last-updated="editor.last_updated") + #editor( + ace-editor, + ng-show="!!editor.sharejs_doc" + theme="'cobalt'", + show-print-margin="false", + sharejs-doc="editor.sharejs_doc", + last-updated="editor.last_updated" + ) //- #loadingScreen //- h3 Loading... diff --git a/services/web/public/coffee/app/ide/editor/EditorManager.coffee b/services/web/public/coffee/app/ide/editor/EditorManager.coffee index cea0702093..63d36c4b6c 100644 --- a/services/web/public/coffee/app/ide/editor/EditorManager.coffee +++ b/services/web/public/coffee/app/ide/editor/EditorManager.coffee @@ -9,8 +9,34 @@ define [ last_updated: null } + @$scope.$on "entity:selected", (event, entity) => + if (entity.type == "doc") + @openDoc(entity) + + initialized = false + @$scope.$on "file-tree:initialized", () => + if !initialized + initialized = true + @autoOpenDoc() + + autoOpenDoc: () -> + open_doc_id = + $.localStorage("doc.open_id.#{@$scope.project_id}") or + @$scope.project.rootDoc_id + return if !open_doc_id? + doc = @ide.fileTreeManager.findEntityById(open_doc_id) + return if !doc? + @openDoc(doc) + openDoc: (doc, options = {}) -> - # TODO: Don't open if already open + console.log "Trying to open doc", doc.id + return if doc.id == @open_doc_id + @open_doc_id = doc.id + console.log "Actually opening doc", doc.id + + $.localStorage "doc.open_id.#{@$scope.project_id}", doc.id + @ide.fileTreeManager.selectEntity(doc) + @_openNewDocument doc, (error, sharejs_doc) => if error? @ide.showGenericServerErrorMessage() diff --git a/services/web/public/coffee/app/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/app/ide/editor/directives/aceEditor.coffee index 3ce3003450..0385cbd8f1 100644 --- a/services/web/public/coffee/app/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/app/ide/editor/directives/aceEditor.coffee @@ -61,9 +61,7 @@ define [ session.setMode(new LatexMode()) doc = session.getDocument() - console.log "Document", doc doc.on "change", () -> - console.log "DOC CHANGE" scope.$apply () -> scope.lastUpdated = new Date() @@ -85,8 +83,8 @@ define [ sharejs_doc.attachToAce(editor) detachFromAce = (sharejs_doc) -> - old_sharejs_doc.detachFromAce() - old_sharejs_doc.off "remoteop.recordForUndo" + sharejs_doc.detachFromAce() + sharejs_doc.off "remoteop.recordForUndo" template: """
diff --git a/services/web/public/coffee/app/ide/file-tree/FileTreeManager.coffee b/services/web/public/coffee/app/ide/file-tree/FileTreeManager.coffee index dfa72650b7..4e67505d77 100644 --- a/services/web/public/coffee/app/ide/file-tree/FileTreeManager.coffee +++ b/services/web/public/coffee/app/ide/file-tree/FileTreeManager.coffee @@ -10,6 +10,7 @@ define [ constructor: (@ide, @$scope) -> @$scope.$on "project:joined", => @loadRootFolder() + @$scope.$emit "file-tree:initialized" @_bindToSocketEvents() @@ -60,6 +61,13 @@ define [ @$scope.$apply () => @_moveEntityInScope(entity, folder) + selectEntity: (entity) -> + return if entity.selected # Don't get into a recursive event loop + @ide.fileTreeManager.forEachEntity (entity) -> + entity.selected = false + entity.selected = true + @$scope.$emit "entity:selected", entity + findEntityById: (id) -> @_findEntityByIdInFolder @$scope.rootFolder, id diff --git a/services/web/public/coffee/app/ide/file-tree/controllers/FileTreeEntityController.coffee b/services/web/public/coffee/app/ide/file-tree/controllers/FileTreeEntityController.coffee index dcf23dd97e..a460d06732 100644 --- a/services/web/public/coffee/app/ide/file-tree/controllers/FileTreeEntityController.coffee +++ b/services/web/public/coffee/app/ide/file-tree/controllers/FileTreeEntityController.coffee @@ -3,12 +3,7 @@ define [ ], (App) -> App.controller "FileTreeEntityController", ["$scope", "ide", "$modal", ($scope, ide, $modal) -> $scope.select = () -> - ide.fileTreeManager.forEachEntity (entity) -> - entity.selected = false - $scope.entity.selected = true - - if ($scope.entity.type == "doc") - ide.editorManager.openDoc($scope.entity) + ide.fileTreeManager.selectEntity($scope.entity) $scope.inputs = name: $scope.entity.name