FileTreeFolderController.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /* eslint-disable
  2. camelcase,
  3. max-len,
  4. no-return-assign,
  5. */
  6. // TODO: This file was created by bulk-decaffeinate.
  7. // Fix any style issues and re-enable lint.
  8. /*
  9. * decaffeinate suggestions:
  10. * DS101: Remove unnecessary use of Array.from
  11. * DS102: Remove unnecessary code created because of implicit returns
  12. * DS207: Consider shorter variations of null checks
  13. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  14. */
  15. import App from '../../../base'
  16. export default App.controller(
  17. 'FileTreeFolderController',
  18. function ($scope, ide, $modal, localStorage) {
  19. $scope.expanded =
  20. localStorage(`folder.${$scope.entity.id}.expanded`) || false
  21. $scope.toggleExpanded = function () {
  22. $scope.expanded = !$scope.expanded
  23. $scope._storeCurrentStateInLocalStorage()
  24. }
  25. $scope.$on('entity-file:selected', function () {
  26. $scope.expanded = true
  27. $scope._storeCurrentStateInLocalStorage()
  28. })
  29. $scope._storeCurrentStateInLocalStorage = function () {
  30. localStorage(`folder.${$scope.entity.id}.expanded`, $scope.expanded)
  31. }
  32. $scope.onDrop = function (events, ui) {
  33. let entities
  34. if (ide.fileTreeManager.multiSelectedCount()) {
  35. entities = ide.fileTreeManager.getMultiSelectedEntityChildNodes()
  36. } else {
  37. entities = [$(ui.draggable).scope().entity]
  38. }
  39. const ids = $scope.entity.children.map(entity => entity.id)
  40. for (const dropped_entity of Array.from(entities)) {
  41. if (!ids.includes(dropped_entity.id)) {
  42. try {
  43. ide.fileTreeManager.moveEntity(dropped_entity, $scope.entity)
  44. } catch (err) {
  45. $modal.open({
  46. templateUrl: 'duplicateFileModalTemplate',
  47. controller: 'DuplicateFileModalController',
  48. resolve: {
  49. fileName() {
  50. return dropped_entity.name
  51. },
  52. },
  53. })
  54. }
  55. }
  56. }
  57. $scope.$digest()
  58. // clear highlight explicitly
  59. return $('.file-tree-inner .droppable-hover').removeClass(
  60. 'droppable-hover'
  61. )
  62. }
  63. $scope.orderByFoldersFirst = function (entity) {
  64. // We need this here as well as in FileTreeController
  65. // since the file-entity diretive creates a new scope
  66. // that doesn't inherit from previous scopes.
  67. if ((entity != null ? entity.type : undefined) === 'folder') {
  68. return '0'
  69. }
  70. return '1'
  71. }
  72. $scope.openNewDocModal = () =>
  73. $modal.open({
  74. templateUrl: 'newFileModalTemplate',
  75. controller: 'NewFileModalController',
  76. size: 'lg',
  77. resolve: {
  78. parent_folder() {
  79. return $scope.entity
  80. },
  81. projectFeatures() {
  82. return ide.$scope.project.features
  83. },
  84. type() {
  85. return 'doc'
  86. },
  87. userFeatures() {
  88. return ide.$scope.user.features
  89. },
  90. },
  91. })
  92. $scope.openNewFolderModal = () =>
  93. $modal.open({
  94. templateUrl: 'newFolderModalTemplate',
  95. controller: 'NewFolderModalController',
  96. resolve: {
  97. parent_folder() {
  98. return $scope.entity
  99. },
  100. },
  101. })
  102. return ($scope.openUploadFileModal = () =>
  103. $modal.open({
  104. templateUrl: 'newFileModalTemplate',
  105. controller: 'NewFileModalController',
  106. size: 'lg',
  107. resolve: {
  108. parent_folder() {
  109. return $scope.entity
  110. },
  111. projectFeatures() {
  112. return ide.$scope.project.features
  113. },
  114. type() {
  115. return 'upload'
  116. },
  117. userFeatures() {
  118. return ide.$scope.user.features
  119. },
  120. },
  121. }))
  122. }
  123. )