Jelajahi Sumber

chore: don't show group by field

ascarbek 2 tahun lalu
induk
melakukan
d05cc4005b

+ 4 - 4
frontend/appflowy_tauri/src/appflowy_app/components/_shared/database-hooks/useDatabase.ts

@@ -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 };
 };
 };

+ 5 - 1
frontend/appflowy_tauri/src/appflowy_app/components/board/Board.tsx

@@ -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}
                 />
                 />

+ 3 - 0
frontend/appflowy_tauri/src/appflowy_app/components/board/BoardBlock.tsx

@@ -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>
               ) : (
               ) : (

+ 12 - 8
frontend/appflowy_tauri/src/appflowy_app/components/board/BoardCard.tsx

@@ -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) => (
-              <BoardCell
-                key={cellIndex}
-                cellIdentifier={cell.cellIdentifier}
-                cellCache={controller.databaseViewCache.getRowCache().getCellCache()}
-                fieldController={controller.fieldController}
-              ></BoardCell>
-            ))}
+            {cells
+              .filter((cell) => cell.fieldId !== groupByFieldId)
+              .map((cell, cellIndex) => (
+                <BoardCell
+                  key={cellIndex}
+                  cellIdentifier={cell.cellIdentifier}
+                  cellCache={controller.databaseViewCache.getRowCache().getCellCache()}
+                  fieldController={controller.fieldController}
+                ></BoardCell>
+              ))}
           </div>
           </div>
         </div>
         </div>
       )}
       )}

+ 6 - 0
frontend/appflowy_tauri/src/appflowy_app/stores/effects/database/database_bd_svc.ts

@@ -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);
+  };
 }
 }

+ 16 - 2
frontend/appflowy_tauri/src/appflowy_app/stores/effects/database/database_controller.ts

@@ -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();
   };
   };