chore: don't show group by field

This commit is contained in:
ascarbek 2023-03-23 00:54:28 +06:00
parent da1ee430b0
commit d05cc4005b
6 changed files with 46 additions and 15 deletions

View File

@ -14,6 +14,7 @@ export const useDatabase = (viewId: string, type?: ViewLayoutTypePB) => {
const [controller, setController] = useState<DatabaseController>(); const [controller, setController] = useState<DatabaseController>();
const [rows, setRows] = useState<readonly RowInfo[]>([]); const [rows, setRows] = useState<readonly RowInfo[]>([]);
const [groups, setGroups] = useState<readonly DatabaseGroupController[]>([]); const [groups, setGroups] = useState<readonly DatabaseGroupController[]>([]);
const [groupByFieldId, setGroupByFieldId] = useState('');
useEffect(() => { useEffect(() => {
if (!viewId.length) return; if (!viewId.length) return;
@ -54,13 +55,12 @@ export const useDatabase = (viewId: string, type?: ViewLayoutTypePB) => {
onFieldsChanged: (fieldInfos) => { onFieldsChanged: (fieldInfos) => {
void loadFields(fieldInfos); void loadFields(fieldInfos);
}, },
onGroupByField: (g) => {
console.log('on group by field: ', g);
},
}); });
await controller.open(); await controller.open();
if (type === ViewLayoutTypePB.Board) { if (type === ViewLayoutTypePB.Board) {
const fieldId = await controller.getGroupByFieldId();
setGroupByFieldId(fieldId.unwrap());
setGroups(controller.groups.value); setGroups(controller.groups.value);
} }
})(); })();
@ -97,5 +97,5 @@ export const useDatabase = (viewId: string, type?: ViewLayoutTypePB) => {
} }
}; };
return { loadFields, controller, rows, groups, onNewRowClick, onDragEnd }; return { loadFields, controller, rows, groups, groupByFieldId, onNewRowClick, onDragEnd };
}; };

View File

@ -10,7 +10,10 @@ import { RowInfo } from '$app/stores/effects/database/row/row_cache';
import { EditRow } from '$app/components/_shared/EditRow/EditRow'; import { EditRow } from '$app/components/_shared/EditRow/EditRow';
export const Board = ({ viewId }: { viewId: string }) => { export const Board = ({ viewId }: { viewId: string }) => {
const { controller, rows, groups, onNewRowClick, onDragEnd } = useDatabase(viewId, ViewLayoutTypePB.Board); const { controller, rows, groups, groupByFieldId, onNewRowClick, onDragEnd } = useDatabase(
viewId,
ViewLayoutTypePB.Board
);
const [showBoardRow, setShowBoardRow] = useState(false); const [showBoardRow, setShowBoardRow] = useState(false);
const [boardRowInfo, setBoardRowInfo] = useState<RowInfo>(); const [boardRowInfo, setBoardRowInfo] = useState<RowInfo>();
@ -45,6 +48,7 @@ export const Board = ({ viewId }: { viewId: string }) => {
controller={controller} controller={controller}
group={group} group={group}
allRows={rows} allRows={rows}
groupByFieldId={groupByFieldId}
onNewRowClick={() => onNewRowClick(index)} onNewRowClick={() => onNewRowClick(index)}
onOpenRow={onOpenRow} onOpenRow={onOpenRow}
/> />

View File

@ -10,6 +10,7 @@ export const BoardBlock = ({
viewId, viewId,
controller, controller,
allRows, allRows,
groupByFieldId,
onNewRowClick, onNewRowClick,
onOpenRow, onOpenRow,
group, group,
@ -17,6 +18,7 @@ export const BoardBlock = ({
viewId: string; viewId: string;
controller: DatabaseController; controller: DatabaseController;
allRows: readonly RowInfo[]; allRows: readonly RowInfo[];
groupByFieldId: string;
onNewRowClick: () => void; onNewRowClick: () => void;
onOpenRow: (rowId: RowInfo) => void; onOpenRow: (rowId: RowInfo) => void;
group: DatabaseGroupController; group: DatabaseGroupController;
@ -53,6 +55,7 @@ export const BoardBlock = ({
index={index} index={index}
key={row.row.id} key={row.row.id}
rowInfo={row} rowInfo={row}
groupByFieldId={groupByFieldId}
onOpenRow={onOpenRow} onOpenRow={onOpenRow}
></BoardCard> ></BoardCard>
) : ( ) : (

View File

@ -10,12 +10,14 @@ export const BoardCard = ({
viewId, viewId,
controller, controller,
rowInfo, rowInfo,
groupByFieldId,
onOpenRow, onOpenRow,
}: { }: {
index: number; index: number;
viewId: string; viewId: string;
controller: DatabaseController; controller: DatabaseController;
rowInfo: RowInfo; rowInfo: RowInfo;
groupByFieldId: string;
onOpenRow: (rowId: RowInfo) => void; onOpenRow: (rowId: RowInfo) => void;
}) => { }) => {
const { cells } = useRow(viewId, controller, rowInfo); const { cells } = useRow(viewId, controller, rowInfo);
@ -34,14 +36,16 @@ export const BoardCard = ({
<Details2Svg></Details2Svg> <Details2Svg></Details2Svg>
</button> </button>
<div className={'flex flex-col gap-3'}> <div className={'flex flex-col gap-3'}>
{cells.map((cell, cellIndex) => ( {cells
<BoardCell .filter((cell) => cell.fieldId !== groupByFieldId)
key={cellIndex} .map((cell, cellIndex) => (
cellIdentifier={cell.cellIdentifier} <BoardCell
cellCache={controller.databaseViewCache.getRowCache().getCellCache()} key={cellIndex}
fieldController={controller.fieldController} cellIdentifier={cell.cellIdentifier}
></BoardCell> cellCache={controller.databaseViewCache.getRowCache().getCellCache()}
))} fieldController={controller.fieldController}
></BoardCell>
))}
</div> </div>
</div> </div>
)} )}

View File

@ -1,6 +1,7 @@
import { import {
DatabaseEventCreateRow, DatabaseEventCreateRow,
DatabaseEventGetDatabase, DatabaseEventGetDatabase,
DatabaseEventGetDatabaseSetting,
DatabaseEventGetFields, DatabaseEventGetFields,
DatabaseEventGetGroup, DatabaseEventGetGroup,
DatabaseEventGetGroups, DatabaseEventGetGroups,
@ -118,4 +119,9 @@ export class DatabaseBackendService {
const payload = DatabaseViewIdPB.fromObject({ value: this.viewId }); const payload = DatabaseViewIdPB.fromObject({ value: this.viewId });
return DatabaseEventGetGroups(payload); return DatabaseEventGetGroups(payload);
}; };
getSettings = () => {
const payload = DatabaseViewIdPB.fromObject({ value: this.viewId });
return DatabaseEventGetDatabaseSetting(payload);
};
} }

View File

@ -1,9 +1,9 @@
import { DatabaseBackendService } from './database_bd_svc'; import { DatabaseBackendService } from './database_bd_svc';
import { FieldController, FieldInfo } from './field/field_controller'; import { FieldController, FieldInfo } from './field/field_controller';
import { DatabaseViewCache } from './view/database_view_cache'; import { DatabaseViewCache } from './view/database_view_cache';
import { DatabasePB, GroupPB } from '@/services/backend'; import { DatabasePB, FlowyError, GroupPB } from '@/services/backend';
import { RowChangedReason, RowInfo } from './row/row_cache'; import { RowChangedReason, RowInfo } from './row/row_cache';
import { Err } from 'ts-results'; import { Err, Ok } from 'ts-results';
import { DatabaseGroupController } from './group/group_controller'; import { DatabaseGroupController } from './group/group_controller';
import { BehaviorSubject } from 'rxjs'; import { BehaviorSubject } from 'rxjs';
import { DatabaseGroupObserver } from './group/group_observer'; import { DatabaseGroupObserver } from './group/group_observer';
@ -71,6 +71,20 @@ export class DatabaseController {
} }
}; };
getGroupByFieldId = async () => {
const settingsResult = await this.backendService.getSettings();
if (settingsResult.ok) {
const settings = settingsResult.val;
const groupConfig = settings.group_configurations.items;
if (groupConfig.length === 0) {
return Err(new FlowyError({ msg: 'this database has no groups' }));
}
return Ok(settings.group_configurations.items[0].field_id);
} else {
return Err(settingsResult.val);
}
};
createRow = () => { createRow = () => {
return this.backendService.createRow(); return this.backendService.createRow();
}; };