ProjectNameController.coffee 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. define [
  2. "base"
  3. ], (App) ->
  4. MAX_PROJECT_NAME_LENGTH = 150
  5. App.controller "ProjectNameController", ["$scope", "$element", "settings", "ide", ($scope, $element, settings, ide) ->
  6. projectNameReadOnlyEl = $element.find(".name")[0]
  7. $scope.state =
  8. renaming: false
  9. overflowed: false
  10. $scope.inputs = {}
  11. $scope.startRenaming = () ->
  12. $scope.inputs.name = $scope.project.name
  13. $scope.state.renaming = true
  14. $scope.$emit "project:rename:start"
  15. $scope.finishRenaming = () ->
  16. $scope.state.renaming = false
  17. newName = $scope.inputs.name
  18. if !newName? or newName.length == 0 or newName.length > MAX_PROJECT_NAME_LENGTH
  19. return
  20. if $scope.project.name == newName
  21. return
  22. $scope.project.name = newName
  23. settings.saveProjectSettings({name: $scope.project.name})
  24. ide.socket.on "projectNameUpdated", (name) ->
  25. $scope.$apply () ->
  26. $scope.project.name = name
  27. $scope.$watch "project.name", (name) ->
  28. if name?
  29. window.document.title = name + " - Online LaTeX Editor ShareLaTeX"
  30. $scope.$applyAsync () ->
  31. # This ensures that the element is measured *after* the binding is done (i.e. project name is rendered).
  32. $scope.state.overflowed = (projectNameReadOnlyEl.scrollWidth > projectNameReadOnlyEl.clientWidth)
  33. ]