File size: 1,643 Bytes
84c1942 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | export function sortingFunction(a, b) {
// directories come first, sorted alphabetically
// then files, also sorted alphabetically
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;
}
// js be weird
if (first === a) return -1;
return 1;
}
export function isRootLevel(files, file) {
// find out if parent directory is in sub-tree
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);
// get parent directory of the parent directory
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);
}
|