| export function sortingFunction(a, b) { |
| |
| |
| let first; |
|
|
| if (a.type === b.type) { |
| if (a.title < b.title) first = a; |
| else first = b; |
| } else if (a.type === 'directory') { |
| first = a; |
| } else { |
| first = b; |
| } |
|
|
| |
| if (first === a) return -1; |
| return 1; |
| } |
|
|
| export function isRootLevel(files, file) { |
| |
|
|
| const parentId = file.directory; |
| if (!parentId) return true; |
|
|
| const parent = files.find(f => f.id === parentId); |
| if (!parent) return true; |
| return false; |
| } |
|
|
| export function getParentDirectory(allFiles, file) { |
| if (!file.directory) return null; |
|
|
| return allFiles.find(parent => parent.id === file.directory); |
| } |
|
|
| export function getDepth(allFiles, file) { |
| let depth = 0; |
|
|
| let parent = getParentDirectory(allFiles, file); |
|
|
| while (parent) { |
| depth++; |
| parent = getParentDirectory(allFiles, parent); |
| } |
|
|
| return depth; |
| } |
|
|
| export function getFilesInSubTree(allFiles, selectedFile) { |
| const currentModuleTree = [selectedFile]; |
|
|
| let parentDirectory = getParentDirectory(allFiles, selectedFile); |
|
|
| while (parentDirectory) { |
| currentModuleTree.push(parentDirectory); |
| |
| parentDirectory = getParentDirectory(allFiles, parentDirectory); |
| } |
|
|
| return currentModuleTree; |
| } |
|
|
| export function isChildSelected({ allFiles, directory, selectedFile }) { |
| const filesInCurrentSubTree = getFilesInSubTree(allFiles, selectedFile); |
|
|
| return filesInCurrentSubTree.find(file => file.id === directory.id); |
| } |
|
|