| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import App from '../../../base'
- import iconTypeFromName from '../util/iconTypeFromName'
- App.controller(
- 'FileTreeEntityController',
- function ($scope, ide, $modal, $element) {
- $scope.MAX_DEPTH = 8
- $scope.select = function (e) {
- if (e.ctrlKey || e.metaKey) {
- e.stopPropagation()
- const initialMultiSelectCount = ide.fileTreeManager.multiSelectedCount()
- ide.fileTreeManager.toggleMultiSelectEntity($scope.entity)
- if (initialMultiSelectCount === 0) {
- // On first multi selection, also include the current active/open file.
- return ide.fileTreeManager.multiSelectSelectedEntity()
- }
- } else {
- ide.fileTreeManager.selectEntity($scope.entity)
- return $scope.$emit('entity:selected', $scope.entity)
- }
- }
- if ($scope.entity.type === 'doc') {
- $scope.$watch('entity.selected', function (isSelected) {
- if (isSelected) {
- $scope.$emit('entity-file:selected', $scope.entity)
- if (!_isEntryElVisible($element)) {
- $scope.$applyAsync(function () {
- $element[0].scrollIntoView()
- })
- }
- }
- })
- }
- function _isEntryElVisible($entryEl) {
- const viewportEl = $('.file-tree-list')
- const entryElTop = $entryEl.offset().top
- const entryElBottom = entryElTop + $entryEl.outerHeight()
- const entryListViewportElTop = viewportEl.offset().top
- const entryListViewportElBottom =
- entryListViewportElTop + viewportEl.height()
- return (
- entryElTop >= entryListViewportElTop &&
- entryElBottom <= entryListViewportElBottom
- )
- }
- $scope.iconTypeFromName = iconTypeFromName
- }
- )
|