Fix folder naming

This commit is contained in:
IRBorisov 2024-06-20 11:06:47 +03:00
parent f3f9c419d4
commit 142f3882bb
3 changed files with 15 additions and 7 deletions

View File

@ -77,11 +77,12 @@ export const LibraryState = ({ children }: LibraryStateProps) => {
const [cachedTemplates, setCachedTemplates] = useState<IRSForm[]>([]);
const folders = useMemo(() => {
const result = new FolderTree(items.map(item => item.location));
const result = new FolderTree();
result.addPath(LocationHead.USER, 0);
result.addPath(LocationHead.COMMON, 0);
result.addPath(LocationHead.LIBRARY, 0);
result.addPath(LocationHead.PROJECTS, 0);
items.forEach(item => result.addPath(item.location));
return result;
}, [items]);

View File

@ -102,7 +102,9 @@ export class FolderTree {
private visitNode(target: FolderNode, result: FolderNode[]) {
result.push(target);
target.children.forEach(child => this.visitNode(child, result));
[...target.children.keys()]
.sort((a, b) => a.localeCompare(b))
.forEach(key => this.visitNode(target.children.get(key)!, result));
}
addPath(path: string, filesCount: number = 1): FolderNode {

View File

@ -8,6 +8,7 @@ import { GraphLayout } from '@/components/ui/GraphUI';
import { FolderNode } from '@/models/FolderTree';
import { GramData, Grammeme, ReferenceType } from '@/models/language';
import { AccessPolicy, LibraryItemType, LocationHead } from '@/models/library';
import { validateLocation } from '@/models/libraryAPI';
import { CstMatchMode, DependencyMode, GraphColoring, GraphSizing, HelpTopic } from '@/models/miscellaneous';
import { CstClass, CstType, ExpressionStatus, IConstituenta, IRSForm } from '@/models/rsform';
import {
@ -271,10 +272,10 @@ export function describeCstSource(mode: DependencyMode): string {
export function labelLocationHead(head: LocationHead): string {
// prettier-ignore
switch (head) {
case LocationHead.USER: return 'личные (/U)';
case LocationHead.COMMON: return 'общие (/S)';
case LocationHead.LIBRARY: return 'примеры (/L)';
case LocationHead.PROJECTS: return 'проекты (/P)';
case LocationHead.USER: return '/U : личные';
case LocationHead.COMMON: return '/S : общие';
case LocationHead.LIBRARY: return '/L : примеры';
case LocationHead.PROJECTS: return '/P : проекты';
}
}
@ -825,7 +826,11 @@ export function describeAccessMode(mode: UserLevel): string {
* Retrieves label for {@link FolderNode}.
*/
export function labelFolderNode(node: FolderNode): string {
return node.text;
if (node.parent || !validateLocation('/' + node.text)) {
return node.text;
} else {
return labelLocationHead(('/' + node.text) as LocationHead);
}
}
/**