View 模块
视图 View
是数据表 Table
的呈现方式(例如字段的展示顺序/记录的显示或隐藏等),一个数据表至少有一个视图,可能有多个视图,每个视图都有唯一标识 viewId,viewId 在一个多维表格中唯一。
TIP
注意此处与 Table 模块的差异,在 View 模块获取字段/记录的顺序都是有序的。
View
模块可以在 Table
层通过 getViewById
的方式获取
const view = await table.getViewById(viewId);
const view = await table.getViewById(viewId);
View 可以通过下图在得知其在页面中是负责 UI 展示的,因此很多与 UI 展示形式相关的 API 都存在于 View 层,例如筛选/分组/排序等
不同类型的视图
目前支持以下 6 种不同类型的视图,不同类型的视图可用能力存在差异:
- GridView:表格视图
- KanbanView:看板视图
- FormView:表单视图
- GalleryView:画册视图
- GanttView:甘特视图
- CalendarView:日历视图
View 基础能力
视图中最基础的能力包括筛选
、排序
和分组
,下面将简介其用法,相关 API 定义在具体类型的模块中,如 GridView。
筛选
视图根据筛选条件过滤出数据表中符合条件的记录,主要由 FilterInfoCondition 过滤条件
和 FilterConjunction 生效条件
两部分信息组成
interface IFilterInfo {
conjunction: FilterConjunction;
conditions: FilterInfoCondition[];
}
interface IFilterInfo {
conjunction: FilterConjunction;
conditions: FilterInfoCondition[];
}
FilterInfoCondition
FilterInfoCondition
代表过滤条件,每个 Condition 由字段
+ 过滤操作符
+ 匹配值
三个基本元素组成。
interface FilterInfoCondition {
fieldId: string; // field 唯一标识
conditionId?: string; // condition 唯一标识,新增时可不传入
value: FieldValue; // 字段匹配值
operator: FilterOperation; // 匹配操作符
}
interface FilterInfoCondition {
fieldId: string; // field 唯一标识
conditionId?: string; // condition 唯一标识,新增时可不传入
value: FieldValue; // 字段匹配值
operator: FilterOperation; // 匹配操作符
}
FilterConjunction
FilterConjunction
代表过滤条件的生效条件,FilterConjunction.And
代表符合所有过滤条件,FilterConjunction.Or
代表符合任一过滤条件:
enum FilterConjunction {
And = 'and',
Or = 'or'
}
enum FilterConjunction {
And = 'and',
Or = 'or'
}
不同的字段可匹配的过滤操作符和匹配值不同,具体类型如下:
IFilterAttachmentCondition | IFilterCheckboxCondition | IFilterAutoNumberCondition | IFilterDateTimeCondition | IFilterCreatedTimeCondition | IFilterModifiedTimeCondition | IFilterUserCondition | IFilterCreatedUserCondition | IFilterModifiedUserCondition | IFilterDuplexLinkCondition | IFilterSingleLinkCondition | IFilterFormulaCondition | IFilterGroupChatCondition | IFilterLocationCondition | IFilterLookupCondition | IFilterMultiSelectCondition | IFilterSingleSelectCondition | IFilterPhoneCondition | IFilterTextCondition | IFilterNumberCondition | IFilterUrlCondition | IFilterCurrencyCondition | IFilterBarcodeCondition | IFilterProgressCondition | IFilterRatingCondition | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operator | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty | FilterOperator.Is | FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty; | FilterOperator.Is | FilterOperator.IsGreater | FilterOperator.IsLess | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty | FilterOperator.Is | FilterOperator.IsGreater | FilterOperator.IsLess | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty | FilterOperator.Is | FilterOperator.IsGreater | FilterOperator.IsLess | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty | BaseFilterOperator | BaseFilterOperator | BaseFilterOperator | BaseFilterOperator | BaseFilterOperator | FilterOperator | BaseFilterOperator | BaseFilterOperator | FilterOperator | BaseFilterOperator | FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty | BaseFilterOperator | BaseFilterOperator | FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty | BaseFilterOperator | FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty | BaseFilterOperator | FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty | FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty |
value | null | boolean | null | number | null | IFilterDateTimeValue = number | FilterDuration | null | number | FilterDuration | null | number | FilterDuration | null | string[] | null | string[] | null | string[] | null | string[] | null | string[] | null | IFilterAll | string[] | null | string | null | IFilterAll | string[] | null | string | string[] | string | string | null | string | null | number | null | string | null | number | null | string | null | number | null | number | null |
FilterOperator
定义如下:
enum FilterOperator {
/** 等于 */
Is = 'is',
/** 不等于 */
IsNot = 'isNot',
/** 包含 */
Contains = 'contains',
/** 不包含 */
DoesNotContain = 'doesNotContain',
/** 为空 */
IsEmpty = 'isEmpty',
/** 不为空 */
IsNotEmpty = 'isNotEmpty',
/** 大于 */
IsGreater = 'isGreater',
/** 大于或等于 */
IsGreaterEqual = 'isGreaterEqual',
/** 小于 */
IsLess = 'isLess',
/** 小于或等于 */
IsLessEqual = 'isLessEqual'
}
enum FilterOperator {
/** 等于 */
Is = 'is',
/** 不等于 */
IsNot = 'isNot',
/** 包含 */
Contains = 'contains',
/** 不包含 */
DoesNotContain = 'doesNotContain',
/** 为空 */
IsEmpty = 'isEmpty',
/** 不为空 */
IsNotEmpty = 'isNotEmpty',
/** 大于 */
IsGreater = 'isGreater',
/** 大于或等于 */
IsGreaterEqual = 'isGreaterEqual',
/** 小于 */
IsLess = 'isLess',
/** 小于或等于 */
IsLessEqual = 'isLessEqual'
}
FilterDuration
定义如下
enum FilterDuration {
/** 今天 */
Today = "Today",
/** 明天 */
Tomorrow = "Tomorrow",
/** 昨天 */
Yesterday = "Yesterday",
/** 过去7天 */
TheLastWeek = "TheLastWeek",
/** 未来7天 */
TheNextWeek = "TheNextWeek",
/** 过去30天 */
TheLastMonth = "TheLastMonth",
/** 未来30天 */
TheNextMonth = "TheNextMonth",
/** 本周 */
CurrentWeek = "CurrentWeek",
/** 上周 */
LastWeek = "LastWeek",
/** 本月 */
CurrentMonth = "CurrentMonth",
/** 上个月 */
LastMonth = "LastMonth"
}
enum FilterDuration {
/** 今天 */
Today = "Today",
/** 明天 */
Tomorrow = "Tomorrow",
/** 昨天 */
Yesterday = "Yesterday",
/** 过去7天 */
TheLastWeek = "TheLastWeek",
/** 未来7天 */
TheNextWeek = "TheNextWeek",
/** 过去30天 */
TheLastMonth = "TheLastMonth",
/** 未来30天 */
TheNextMonth = "TheNextMonth",
/** 本周 */
CurrentWeek = "CurrentWeek",
/** 上周 */
LastWeek = "LastWeek",
/** 本月 */
CurrentMonth = "CurrentMonth",
/** 上个月 */
LastMonth = "LastMonth"
}
BaseFilterOperator
定义如下:
type BaseFilterOperator =
FilterOperator.Is
| FilterOperator.IsNot
| FilterOperator.Contains
| FilterOperator.DoesNotContain
| FilterOperator.IsEmpty
| FilterOperator.IsNotEmpty;
type BaseFilterOperator =
FilterOperator.Is
| FilterOperator.IsNot
| FilterOperator.Contains
| FilterOperator.DoesNotContain
| FilterOperator.IsEmpty
| FilterOperator.IsNotEmpty;
排序
视图按照一定的规则将数据表中的记录进行排序,一条排序规则由 字段ID
+ 顺序
组成:
interface ISortInfo {
fieldId: string;
/** false: 正序 A -> Z; true: 倒序 Z -> A */
desc: boolean;
}
interface ISortInfo {
fieldId: string;
/** false: 正序 A -> Z; true: 倒序 Z -> A */
desc: boolean;
}
分组
视图按照一定的规则将数据表中的记录进行分组,一条分组规则由 字段ID
+ 顺序
组成:
interface IGroupInfo {
fieldId: string;
/** false: 正序 A -> Z; true: 倒序 Z -> A */
desc: boolean;
}
interface IGroupInfo {
fieldId: string;
/** false: 正序 A -> Z; true: 倒序 Z -> A */
desc: boolean;
}
同步配置
WARNING
View 模块中分组/筛选/排序等能力,在调用写入 API 之后如果希望保存或者同步给其他用户需要调用 applySetting
方法
分享
SDK 支持开启/关闭指定视图分享,并获取处在开启状态视图的分享链接。
enableSharing
开启视图分享。
enableSharing: () => Promise<boolean>;
enableSharing: () => Promise<boolean>;
enableSharing
关闭视图分享。
disableSharing: () => Promise<boolean>;
disableSharing: () => Promise<boolean>;
getSharingStatus
获取当前视图分享状态。
getSharingStatus: () => Promise<SharingStatus>;
enum SharingStatus {
Enabled = 'Enabled',
Disabled = 'Disabled'
}
getSharingStatus: () => Promise<SharingStatus>;
enum SharingStatus {
Enabled = 'Enabled',
Disabled = 'Disabled'
}
getSharingStatus
获取当前视图分享链接。
WARNING
获取分享链接的前置条件是视图分享状态是开启的。
getShareLink(): Promise<string>;
getShareLink(): Promise<string>;