FileTreeFolderController.js 3.7 KB

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