mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-11 05:58:56 +08:00
52 lines
1.3 KiB
TypeScript
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',
|
|
},
|
|
};
|
|
},
|
|
});
|