ide.coffee 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. define [
  2. "base"
  3. "ide/file-tree/FileTreeManager"
  4. "ide/connection/ConnectionManager"
  5. "ide/editor/EditorManager"
  6. "ide/online-users/OnlineUsersManager"
  7. "ide/track-changes/TrackChangesManager"
  8. "ide/permissions/PermissionsManager"
  9. "ide/pdf/PdfManager"
  10. "ide/binary-files/BinaryFilesManager"
  11. "ide/settings/index"
  12. "ide/share/index"
  13. "ide/chat/index"
  14. "ide/clone/index"
  15. "ide/hotkeys/index"
  16. "ide/directives/layout"
  17. "ide/services/ide"
  18. "__IDE_CLIENTSIDE_INCLUDES__"
  19. "analytics/AbTestingManager"
  20. "directives/focus"
  21. "directives/fineUpload"
  22. "directives/scroll"
  23. "directives/onEnter"
  24. "directives/stopPropagation"
  25. "directives/rightClick"
  26. "filters/formatDate"
  27. "main/event"
  28. "main/account-upgrade"
  29. ], (
  30. App
  31. FileTreeManager
  32. ConnectionManager
  33. EditorManager
  34. OnlineUsersManager
  35. TrackChangesManager
  36. PermissionsManager
  37. PdfManager
  38. BinaryFilesManager
  39. ) ->
  40. App.controller "IdeController", ($scope, $timeout, ide, localStorage) ->
  41. # Don't freak out if we're already in an apply callback
  42. $scope.$originalApply = $scope.$apply
  43. $scope.$apply = (fn = () ->) ->
  44. phase = @$root.$$phase
  45. if (phase == '$apply' || phase == '$digest')
  46. fn()
  47. else
  48. this.$originalApply(fn);
  49. $scope.state = {
  50. loading: true
  51. load_progress: 40
  52. error: null
  53. }
  54. $scope.ui = {
  55. leftMenuShown: false
  56. view: "editor"
  57. chatOpen: false
  58. pdfLayout: 'sideBySide'
  59. }
  60. $scope.user = window.user
  61. $scope.settings = window.userSettings
  62. $scope.anonymous = window.anonymous
  63. $scope.chat = {}
  64. window._ide = ide
  65. ide.project_id = $scope.project_id = window.project_id
  66. ide.$scope = $scope
  67. ide.connectionManager = new ConnectionManager(ide, $scope)
  68. ide.fileTreeManager = new FileTreeManager(ide, $scope)
  69. ide.editorManager = new EditorManager(ide, $scope)
  70. ide.onlineUsersManager = new OnlineUsersManager(ide, $scope)
  71. ide.trackChangesManager = new TrackChangesManager(ide, $scope)
  72. ide.pdfManager = new PdfManager(ide, $scope)
  73. ide.permissionsManager = new PermissionsManager(ide, $scope)
  74. ide.binaryFilesManager = new BinaryFilesManager(ide, $scope)
  75. inited = false
  76. $scope.$on "project:joined", () ->
  77. return if inited
  78. inited = true
  79. if $scope?.project?.deletedByExternalDataSource
  80. ide.showGenericMessageModal("Project Renamed or Deleted", """
  81. This project has either been renamed or deleted by an external data source such as Dropbox.
  82. We don't want to delete your data on ShareLaTeX, so this project still contains your history and collaborators.
  83. If the project has been renamed please look in your project list for a new project under the new name.
  84. """)
  85. DARK_THEMES = [
  86. "ambiance", "chaos", "clouds_midnight", "cobalt", "idle_fingers",
  87. "merbivore", "merbivore_soft", "mono_industrial", "monokai",
  88. "pastel_on_dark", "solarized_dark", "terminal", "tomorrow_night",
  89. "tomorrow_night_blue", "tomorrow_night_bright", "tomorrow_night_eighties",
  90. "twilight", "vibrant_ink"
  91. ]
  92. $scope.darkTheme = false
  93. $scope.$watch "settings.theme", (theme) ->
  94. if theme in DARK_THEMES
  95. $scope.darkTheme = true
  96. else
  97. $scope.darkTheme = false
  98. ide.localStorage = localStorage
  99. angular.bootstrap(document.body, ["SharelatexApp"])