Refactor location naming

This commit is contained in:
IRBorisov 2024-06-27 11:35:26 +03:00
parent de2c73efd4
commit 04e108df11
7 changed files with 40 additions and 38 deletions

View File

@ -3,8 +3,8 @@ import { useIntl } from 'react-intl';
import DataTable, { createColumnHelper, IConditionalStyle } from '@/components/ui/DataTable'; import DataTable, { createColumnHelper, IConditionalStyle } from '@/components/ui/DataTable';
import SearchBar from '@/components/ui/SearchBar'; import SearchBar from '@/components/ui/SearchBar';
import { useLibrary } from '@/context/LibraryContext';
import { useConceptOptions } from '@/context/ConceptOptionsContext'; import { useConceptOptions } from '@/context/ConceptOptionsContext';
import { useLibrary } from '@/context/LibraryContext';
import { ILibraryItem, LibraryItemID, LibraryItemType } from '@/models/library'; import { ILibraryItem, LibraryItemID, LibraryItemType } from '@/models/library';
import { ILibraryFilter } from '@/models/miscellaneous'; import { ILibraryFilter } from '@/models/miscellaneous';

View File

@ -92,8 +92,8 @@ export const LibraryState = ({ children }: LibraryStateProps) => {
if (!filter.folderMode && filter.head) { if (!filter.folderMode && filter.head) {
result = result.filter(item => item.location.startsWith(filter.head!)); result = result.filter(item => item.location.startsWith(filter.head!));
} }
if (filter.folderMode && filter.folder) { if (filter.folderMode && filter.location) {
result = result.filter(item => item.location == filter.folder); result = result.filter(item => item.location == filter.location);
} }
if (filter.type) { if (filter.type) {
result = result.filter(item => item.item_type === filter.type); result = result.filter(item => item.item_type === filter.type);

View File

@ -144,11 +144,10 @@ export interface ILibraryFilter {
type?: LibraryItemType; type?: LibraryItemType;
query?: string; query?: string;
folderMode?: boolean;
path?: string; path?: string;
head?: LocationHead; head?: LocationHead;
location?: string;
folderMode?: boolean;
folder?: string;
isVisible?: boolean; isVisible?: boolean;
isOwned?: boolean; isOwned?: boolean;

View File

@ -14,7 +14,7 @@ import { toggleTristateFlag } from '@/utils/utils';
import TableLibraryItems from './TableLibraryItems'; import TableLibraryItems from './TableLibraryItems';
import ToolbarSearch from './ToolbarSearch'; import ToolbarSearch from './ToolbarSearch';
import ViewSideFolders from './ViewSideFolders'; import ViewSideLocation from './ViewSideLocation';
function LibraryPage() { function LibraryPage() {
const library = useLibrary(); const library = useLibrary();
@ -26,7 +26,7 @@ function LibraryPage() {
const [head, setHead] = useLocalStorage<LocationHead | undefined>(storage.librarySearchHead, undefined); const [head, setHead] = useLocalStorage<LocationHead | undefined>(storage.librarySearchHead, undefined);
const [folderMode, setFolderMode] = useLocalStorage<boolean>(storage.librarySearchFolderMode, true); const [folderMode, setFolderMode] = useLocalStorage<boolean>(storage.librarySearchFolderMode, true);
const [folder, setFolder] = useLocalStorage<string>(storage.librarySearchFolder, ''); const [location, setLocation] = useLocalStorage<string>(storage.librarySearchLocation, '');
const [isVisible, setIsVisible] = useLocalStorage<boolean | undefined>(storage.librarySearchVisible, true); const [isVisible, setIsVisible] = useLocalStorage<boolean | undefined>(storage.librarySearchVisible, true);
const [isSubscribed, setIsSubscribed] = useLocalStorage<boolean | undefined>( const [isSubscribed, setIsSubscribed] = useLocalStorage<boolean | undefined>(
storage.librarySearchSubscribed, storage.librarySearchSubscribed,
@ -45,9 +45,9 @@ function LibraryPage() {
isSubscribed: user ? isSubscribed : undefined, isSubscribed: user ? isSubscribed : undefined,
isVisible: user ? isVisible : true, isVisible: user ? isVisible : true,
folderMode: folderMode, folderMode: folderMode,
folder: folder location: location
}), }),
[head, path, query, isEditor, isOwned, isSubscribed, isVisible, user, folderMode, folder] [head, path, query, isEditor, isOwned, isSubscribed, isVisible, user, folderMode, location]
); );
const hasCustomFilter = useMemo( const hasCustomFilter = useMemo(
@ -59,7 +59,7 @@ function LibraryPage() {
filter.isOwned !== undefined || filter.isOwned !== undefined ||
filter.isSubscribed !== undefined || filter.isSubscribed !== undefined ||
filter.isVisible !== true || filter.isVisible !== true ||
!!filter.folder, !!filter.location,
[filter] [filter]
); );
@ -81,13 +81,13 @@ function LibraryPage() {
setIsSubscribed(undefined); setIsSubscribed(undefined);
setIsOwned(undefined); setIsOwned(undefined);
setIsEditor(undefined); setIsEditor(undefined);
setFolder(''); setLocation('');
}, [setHead, setIsVisible, setIsSubscribed, setIsOwned, setIsEditor, setFolder]); }, [setHead, setIsVisible, setIsSubscribed, setIsOwned, setIsEditor, setLocation]);
const view = useMemo( const viewLibrary = useMemo(
() => ( () => (
<TableLibraryItems <TableLibraryItems
resetQuery={resetFilter} // prettier: split lines resetQuery={resetFilter}
items={items} items={items}
folderMode={folderMode} folderMode={folderMode}
toggleFolderMode={toggleFolderMode} toggleFolderMode={toggleFolderMode}
@ -96,6 +96,18 @@ function LibraryPage() {
[resetFilter, items, folderMode, toggleFolderMode] [resetFilter, items, folderMode, toggleFolderMode]
); );
const viewLocations = useMemo(
() => (
<ViewSideLocation
active={location}
setActive={setLocation}
folderTree={library.folders}
toggleFolderMode={toggleFolderMode}
/>
),
[location, library.folders, setLocation, toggleFolderMode]
);
return ( return (
<DataLoader <DataLoader
id='library-page' // prettier: split lines id='library-page' // prettier: split lines
@ -127,17 +139,8 @@ function LibraryPage() {
/> />
<div className='flex'> <div className='flex'>
<AnimatePresence initial={false}> <AnimatePresence initial={false}>{folderMode ? viewLocations : null}</AnimatePresence>
{folderMode ? ( {viewLibrary}
<ViewSideFolders
currentFolder={folder} // prettier: split-lines
setFolder={setFolder}
folders={library.folders}
toggleFolderMode={toggleFolderMode}
/>
) : null}
</AnimatePresence>
{view}
</div> </div>
</DataLoader> </DataLoader>
); );

View File

@ -161,7 +161,7 @@ function TableLibraryItems({ items, resetQuery, folderMode, toggleFolderMode }:
columns={columns} columns={columns}
data={items} data={items}
headPosition='0' headPosition='0'
className={clsx('text-xs sm:text-sm cc-scroll-y', { 'border-l border-b': folderMode })} className={clsx('text-xs sm:text-sm cc-scroll-y h-fit', { 'border-l border-b': folderMode })}
style={{ maxHeight: tableHeight }} style={{ maxHeight: tableHeight }}
noDataComponent={ noDataComponent={
<FlexColumn className='dense p-3 items-center min-h-[6rem]'> <FlexColumn className='dense p-3 items-center min-h-[6rem]'>

View File

@ -14,14 +14,14 @@ import { animateSideView } from '@/styling/animations';
import { PARAMETER, prefixes } from '@/utils/constants'; import { PARAMETER, prefixes } from '@/utils/constants';
import { information } from '@/utils/labels'; import { information } from '@/utils/labels';
interface ViewSideFoldersProps { interface ViewSideLocationProps {
folders: FolderTree; folderTree: FolderTree;
currentFolder: string; active: string;
setFolder: React.Dispatch<React.SetStateAction<string>>; setActive: React.Dispatch<React.SetStateAction<string>>;
toggleFolderMode: () => void; toggleFolderMode: () => void;
} }
function ViewSideFolders({ folders, currentFolder, setFolder, toggleFolderMode }: ViewSideFoldersProps) { function ViewSideLocation({ folderTree, active, setActive: setActive, toggleFolderMode }: ViewSideLocationProps) {
const handleClickFolder = useCallback( const handleClickFolder = useCallback(
(event: CProps.EventMouse, target: FolderNode) => { (event: CProps.EventMouse, target: FolderNode) => {
event.preventDefault(); event.preventDefault();
@ -32,10 +32,10 @@ function ViewSideFolders({ folders, currentFolder, setFolder, toggleFolderMode }
.then(() => toast.success(information.pathReady)) .then(() => toast.success(information.pathReady))
.catch(console.error); .catch(console.error);
} else { } else {
setFolder(target.getPath()); setActive(target.getPath());
} }
}, },
[setFolder] [setActive]
); );
return ( return (
@ -59,8 +59,8 @@ function ViewSideFolders({ folders, currentFolder, setFolder, toggleFolderMode }
/> />
</div> </div>
<SelectLocation <SelectLocation
value={currentFolder} value={active}
folderTree={folders} folderTree={folderTree}
prefix={prefixes.folders_list} prefix={prefixes.folders_list}
onClick={handleClickFolder} onClick={handleClickFolder}
/> />
@ -68,4 +68,4 @@ function ViewSideFolders({ folders, currentFolder, setFolder, toggleFolderMode }
); );
} }
export default ViewSideFolders; export default ViewSideLocation;

View File

@ -95,7 +95,7 @@ export const storage = {
librarySearchHead: 'library.search.head', librarySearchHead: 'library.search.head',
librarySearchFolderMode: 'library.search.folder_mode', librarySearchFolderMode: 'library.search.folder_mode',
librarySearchFolder: 'library.search.folder', librarySearchLocation: 'library.search.location',
librarySearchVisible: 'library.search.visible', librarySearchVisible: 'library.search.visible',
librarySearchOwned: 'library.search.owned', librarySearchOwned: 'library.search.owned',
librarySearchSubscribed: 'library.search.subscribed', librarySearchSubscribed: 'library.search.subscribed',