skyline/docs/zh/develop/3-4-BaseDetailInfo-introduction.md
zhuyue bd501ba416 fix: Fix for docs link address
fix for docs link address

Change-Id: I8539ba5a546621e543b2c4c83066489b98e308c5
2021-08-27 17:28:20 +08:00

145 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

简体中文 | [English](../../en/develop/3-4-BaseDetailInfo-introduction.md)
# 用途
![详情信息页](../../zh/develop/images/detail/image-detail-info.png)
- 各资源详情页中详情 Tab 中组件的基类
- 左右结构展示
- 以 Card 的形式展示
- 以配置 Card 的方式即可完成页面内容的展示
# BaseDetailInfo 代码文件
- `src/containers/BaseDetail/index.jsx`
# BaseDetailInfo 属性与函数定义介绍
- 资源详情信息继承于 BaseDetailInfo
- 代码位置:`pages/xxxx/containers/XXXX/Detail/BaseDetail.jsx`
- 只需要复写部分函数即可完成页面的开发
- 属性与函数分为以下四种,
- 通常需要复写的属性与函数,主要包含:
- 左侧的 Card 列表
- 按需复写的函数与属性,主要包含:
- 右侧的 Card 列表
- 获取数据的函数
- 展示数据的来源
- 无需复写的函数与属性,主要包含:
- 当前页是否是管理平台页面
- 基类中的基础函数,主要包含:
- 渲染页面
- 更详细与全面的介绍见下
## Card 的配置
- 页面中左侧、右侧的 Card 均采用相同的配置方式
- 每个 Card 的配置如下,
- `title`必须项Card 的标题
- `titleHelp`, 可选项Card 的标题旁显示的提示信息
- `render`,可选项,如果存在,则基于`render`渲染 Card 的内容
- `options`可选项Card 中每行的配置列表,每个 option 配置如下,
- `label`,必须项,行中的标签
- `dataIndex`,必须项,对应于`this.detailData`中的 key默认是基于`dataIndex`展示行内的数据
- `render`,可选项,可基于`render`的结果渲染行内的内容
- `valueRender`,可选项,基于`dataIndex`及`valueRender`生成行内的展示数据
- `sinceTime`,处理时间,显示成"XX 小时前"
- `keepTime`,显示剩余时间
- `yesNo`,处理`Boolean`值,显示成“是”、“否”
- `GBValue`,处理大小,显示成"XXXGB"
- `noValue`,没有值时,显示成“-”
- `bytes`,处理大小
- `uppercase`,大写
- `formatSize`处理大小显示如“2.32 GB”“56.68 MB”
- `toLocalTime`处理时间显示如“2021-06-17 04:13:07”
- `toLocalTimeMoment`处理时间显示如“2021-06-17 04:13:07”
- `copyable`,可选项,该行内的数据是否可复制,如可复制,会显示复制 icon
- 以密钥`src/pages/compute/containers/Keypair/Detail/BaseDetail.jsx`为例
```javascript
get keypairInfoCard() {
const options = [
{
label: t('Fingerprint'),
dataIndex: 'fingerprint',
},
{
label: t('Public Key'),
dataIndex: 'public_key',
copyable: true,
},
{
label: t('User ID'),
dataIndex: 'user_id',
},
];
return {
title: t('Keypair Info'),
options,
};
}
```
## 通常需要复写的属性与函数
- `leftCards`:
- 必须复写该函数
- 左侧展示的 Card 列表
- 以镜像`src/pages/compute/containers/Image/Detail/BaseDetail.jsx`为例
```javascript
get leftCards() {
const cards = [this.baseInfoCard, this.securityCard];
return this.isImageDetail ? cards : [this.InstanceCard, ...cards];
}
```
- `init`
- 配置 Store 的函数,在这个函数中配置用于处理数据请求的
Store如果配置了该函数则会在展示该页面时发起数据请求但是有时展示该页面时并不需要额外请求只需要使用`this.props.detail`即可
- 一般使用的是`new XXXStore()`形式
- 以镜像`src/pages/compute/containers/Image/Detail/BaseDetail.jsx`为例
```javascript
init() {
this.store = new ImageStore();
}
```
## 按需复写的属性与函数
- `rightCards`
- 右侧展示的 Card 列表
- `fetchData`
- 获取 Card 数据的函数
- 一般不需要复写该函数
- `detailData`
- 页面 Card 的数据来源
- 默认是`this.props.detail || toJS(this.store.detail)`
- 一般不需要复写该函数
- 以云硬盘的 Qos`src/pages/storage/containers/VolumeType/QosSpec/Detail/index.jsx`为例
```javascript
get detailData() {
return this.store.detail.qos_specs;
}
```
## 不需要复写的属性与函数
- `id`
- 路由信息中的`id`
- `isAdminPage`
- 当前页面是否是“管理平台”的页面
- `getUrl`
- 生成页面 Url 的函数
- 如:需要给关联资源提供跳转功能,使用该函数,可以在控制台跳转到控制台的相应地址,在管理平台跳转到管理平台的相应地址
- `routing`
- 页面对应的路由信息
- `isLoading`
- 当前页面是否在数据更新,更新时会显示 loading 样式
## 基类中的基础函数
- 建议查看代码理解,`src/containers/BaseDetail/index.jsx`