1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 10:58:33 +00:00

feat: metadata view part (#6289)

* feat: metadata view part

* feat: optimize code

---------

Co-authored-by: 杨国璇 <ygx@Hello-word.local>
This commit is contained in:
杨国璇
2024-07-03 17:04:30 +08:00
committed by GitHub
parent 76af3d28ee
commit 8b6abc7855
59 changed files with 1823 additions and 815 deletions

View File

@@ -12,7 +12,7 @@ import './index.css';
const Container = () => {
const [isLoadingMore, setLoadingMore] = useState(false);
const { metadata, errorMsg, extendMetadataRows } = useMetadata();
const { metadata, errorMsg, store } = useMetadata();
const containerRef = useRef(null);
const onKeyDown = useCallback((event) => {
@@ -33,26 +33,21 @@ const Container = () => {
// todo
}, []);
const tableChanged = useCallback(() => {
// todo
}, []);
const handleTableError = useCallback((error) => {
const errorMsg = getErrorMsg(error);
toaster.danger(gettext(errorMsg));
}, []);
const updateMetadata = useCallback(() => {
// todo
}, []);
const loadMore = useCallback(() => {
const loadMore = useCallback(async () => {
if (!metadata.hasMore) return;
setLoadingMore(true);
extendMetadataRows((flag) => {
try {
await store.loadMore();
setLoadingMore(false);
});
}, [metadata, extendMetadataRows]);
} catch (error) {
const errorMsg = getErrorMsg(error);
toaster.danger(gettext(errorMsg));
setLoadingMore(false);
return;
}
}, [metadata, store]);
const modifyRecords = useCallback((rowIds, idRowUpdates, idOriginalRowUpdates, idOldRowData, idOriginalOldRowData, isCopyPaste = false) => {
// todo: store op
@@ -88,12 +83,14 @@ const Container = () => {
}, [metadata]);
const modifyFilters = useCallback((filters, filterConjunction) => {
// modifyFilters
}, []);
store.modifyFilters(filterConjunction, filters);
store.saveView();
}, [store]);
const modifySorts = useCallback((sorts) => {
// modifySorts
}, []);
store.modifySorts(sorts);
store.saveView();
}, [store]);
const modifyGroupbys = useCallback(() => {
// modifyGroupbys
@@ -137,17 +134,9 @@ const Container = () => {
useEffect(() => {
document.addEventListener('keydown', onKeyDown);
const unsubscribeSelectCell = window.sfMetadataContext.eventBus.subscribe(EVENT_BUS_TYPE.SELECT_CELL, onSelectCell);
const unsubscribeServerTableChanged = window.sfMetadataContext.eventBus.subscribe(EVENT_BUS_TYPE.SERVER_TABLE_CHANGED, tableChanged);
const unsubscribeTableChanged = window.sfMetadataContext.eventBus.subscribe(EVENT_BUS_TYPE.LOCAL_TABLE_CHANGED, tableChanged);
const unsubscribeHandleTableError = window.sfMetadataContext.eventBus.subscribe(EVENT_BUS_TYPE.TABLE_ERROR, handleTableError);
const unsubscribeUpdateRows = window.sfMetadataContext.eventBus.subscribe(EVENT_BUS_TYPE.UPDATE_TABLE_ROWS, updateMetadata);
return () => {
document.removeEventListener('keydown', onKeyDown);
unsubscribeSelectCell();
unsubscribeServerTableChanged();
unsubscribeTableChanged();
unsubscribeHandleTableError();
unsubscribeUpdateRows();
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
@@ -155,7 +144,7 @@ const Container = () => {
return (
<>
<div className="sf-metadata-wrapper">
<TableTool modifyFilters={modifyFilters} modifySorts={modifySorts} modifyGroupbys={modifyGroupbys} modifyHiddenColumns={modifyHiddenColumns} />
<TableTool view={metadata.view} columns={metadata.columns} modifyFilters={modifyFilters} modifySorts={modifySorts} modifyGroupbys={modifyGroupbys} modifyHiddenColumns={modifyHiddenColumns} />
<div className="sf-metadata-main">
{errorMsg && (<div className="d-center-middle error">{gettext(errorMsg)}</div>)}
{!errorMsg && (