Files
AFFiNE-Mirror/blocksuite/affine/data-view/src/view-presets/table/define.ts
T
2024-12-20 15:38:06 +08:00

52 lines
1.3 KiB
TypeScript

import type { GroupBy, GroupProperty } from '../../core/common/types.js';
import type { FilterGroup } from '../../core/filter/types.js';
import type { Sort } from '../../core/sort/types.js';
import { type BasicViewDataType, viewType } from '../../core/view/data-view.js';
import { TableSingleView } from './table-view-manager.js';
export const tableViewType = viewType('table');
export type TableViewColumn = {
id: string;
width: number;
statCalcType?: string;
hide?: boolean;
};
type DataType = {
columns: TableViewColumn[];
filter: FilterGroup;
groupBy?: GroupBy;
groupProperties?: GroupProperty[];
sort?: Sort;
header?: {
titleColumn?: string;
iconColumn?: string;
imageColumn?: string;
};
};
export type TableViewData = BasicViewDataType<
typeof tableViewType.type,
DataType
>;
export const tableViewModel = tableViewType.createModel<TableViewData>({
defaultName: 'Table View',
dataViewManager: TableSingleView,
defaultData: viewManager => {
return {
mode: 'table',
columns: [],
filter: {
type: 'group',
op: 'and',
conditions: [],
},
header: {
titleColumn: viewManager.dataSource.properties$.value.find(
id => viewManager.dataSource.propertyTypeGet(id) === 'title'
),
iconColumn: 'type',
},
};
},
});