FileTreeFolderController.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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. define(['../../../base'], App =>
  16. App.controller('FileTreeFolderController', function(
  17. $scope,
  18. ide,
  19. $modal,
  20. localStorage
  21. ) {
  22. $scope.expanded =
  23. localStorage(`folder.${$scope.entity.id}.expanded`) || false
  24. $scope.toggleExpanded = function() {
  25. $scope.expanded = !$scope.expanded
  26. $scope._storeCurrentStateInLocalStorage()
  27. }
  28. $scope.$on('entity-file:selected', function() {
  29. $scope.expanded = true
  30. $scope._storeCurrentStateInLocalStorage()
  31. })
  32. $scope._storeCurrentStateInLocalStorage = function() {
  33. localStorage(`folder.${$scope.entity.id}.expanded`, $scope.expanded)
  34. }
  35. $scope.onDrop = function(events, ui) {
  36. let entities
  37. if (ide.fileTreeManager.multiSelectedCount()) {
  38. entities = ide.fileTreeManager.getMultiSelectedEntityChildNodes()
  39. } else {
  40. entities = [$(ui.draggable).scope().entity]
  41. }
  42. const ids = $scope.entity.children.map(entity => entity.id)
  43. for (let dropped_entity of Array.from(entities)) {
  44. if (!ids.includes(dropped_entity.id)) {
  45. try {
  46. ide.fileTreeManager.moveEntity(dropped_entity, $scope.entity)
  47. } catch (err) {
  48. $modal.open({
  49. templateUrl: 'duplicateFileModalTemplate',
  50. controller: 'DuplicateFileModalController',
  51. resolve: {
  52. fileName() {
  53. return dropped_entity.name
  54. }
  55. }
  56. })
  57. }
  58. }
  59. }
  60. $scope.$digest()
  61. // clear highlight explicitly
  62. return $('.file-tree-inner .droppable-hover').removeClass(
  63. 'droppable-hover'
  64. )
  65. }
  66. $scope.orderByFoldersFirst = function(entity) {
  67. // We need this here as well as in FileTreeController
  68. // since the file-entity diretive creates a new scope
  69. // that doesn't inherit from previous scopes.
  70. if ((entity != null ? entity.type : undefined) === 'folder') {
  71. return '0'
  72. }
  73. return '1'
  74. }
  75. $scope.openNewDocModal = () =>
  76. $modal.open({
  77. templateUrl: 'newFileModalTemplate',
  78. controller: 'NewFileModalController',
  79. size: 'lg',
  80. resolve: {
  81. parent_folder() {
  82. return $scope.entity
  83. },
  84. projectFeatures() {
  85. return ide.$scope.project.features
  86. },
  87. type() {
  88. return 'doc'
  89. },
  90. userFeatures() {
  91. return ide.$scope.user.features
  92. }
  93. }
  94. })
  95. $scope.openNewFolderModal = () =>
  96. $modal.open({
  97. templateUrl: 'newFolderModalTemplate',
  98. controller: 'NewFolderModalController',
  99. resolve: {
  100. parent_folder() {
  101. return $scope.entity
  102. }
  103. }
  104. })
  105. return ($scope.openUploadFileModal = () =>
  106. $modal.open({
  107. templateUrl: 'newFileModalTemplate',
  108. controller: 'NewFileModalController',
  109. size: 'lg',
  110. resolve: {
  111. parent_folder() {
  112. return $scope.entity
  113. },
  114. projectFeatures() {
  115. return ide.$scope.project.features
  116. },
  117. type() {
  118. return 'upload'
  119. },
  120. userFeatures() {
  121. return ide.$scope.user.features
  122. }
  123. }
  124. }))
  125. }))