Skip to content

Commit

Permalink
docs: 增加多行文本 demo
Browse files Browse the repository at this point in the history
  • Loading branch information
lijinke666 committed Dec 26, 2023
1 parent cc6d069 commit be79f56
Show file tree
Hide file tree
Showing 5 changed files with 166 additions and 17 deletions.
18 changes: 11 additions & 7 deletions s2-site/docs/manual/advanced/custom/cell-size.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,11 @@ const s2Options = {

## 调整数值单元格宽高

> 优先级小于 `rowCell.height``colCell.width`
:::warning{title="注意"}

优先级小于 `rowCell.height``colCell.width`

:::

```ts
const s2Options = {
Expand All @@ -39,7 +43,7 @@ const s2Options = {
width: 100,
height: 90
},
},
}
}
```

Expand Down Expand Up @@ -89,7 +93,7 @@ const s2Options = {

如果想给特定某一行/列设置不同的宽高,可以通过 `rowCell``widthByField``heightByField` 预设高度来实现,支持两种类型的配置:

- **fieldId** (例:`root[&] 浙江省 [&] 杭州市`): 行列交叉后每一个行头节点对应的唯一 ID, 适用于宽高精确到具体的单元格 [(如何获取 ID)](/docs/manual/advanced/get-cell-data#%E8%8E%B7%E5%8F%96%E6%8C%87%E5%AE%9A%E5%8C%BA%E5%9F%9F%E5%8D%95%E5%85%83%E6%A0%BC)
- **fieldId** (例:`root[&]浙江省[&]杭州市`): 行列交叉后每一个行头节点对应的唯一 ID, 适用于宽高精确到具体的单元格 [(如何获取 ID)](/docs/manual/advanced/get-cell-data#%E8%8E%B7%E5%8F%96%E6%8C%87%E5%AE%9A%E5%8C%BA%E5%9F%9F%E5%8D%95%E5%85%83%E6%A0%BC)
- **field** (例:`city`): 对应 `s2DataConfig.fields.rows` 中配置的 `field`, 适用于精确到某一类维值的单元格

<br/>
Expand All @@ -102,8 +106,8 @@ const s2Options = {
city: 100
},
heightByField: {
'root[&] 浙江省 [&] 杭州市': 60,
'root[&] 浙江省 [&] 宁波市': 100,
'root[&]浙江省[&]杭州市': 60,
'root[&]浙江省[&]宁波市': 100,
},
},
},
Expand Down Expand Up @@ -193,7 +197,7 @@ const s2Options = {

如果想给特定某一列设置不同的宽高,可以通过 `colCell``widthByField``heightByField` 预设宽高来实现,支持两种类型的配置:

- **fieldId** (例:`root[&] 家具 [&] 沙发 [&]number`): 行列交叉后每一个列头节点对应的唯一 ID, 适用于宽高精确到具体的单元格 [(如何获取 ID)](/docs/manual/advanced/get-cell-data#%E8%8E%B7%E5%8F%96%E6%8C%87%E5%AE%9A%E5%8C%BA%E5%9F%9F%E5%8D%95%E5%85%83%E6%A0%BC)
- **fieldId** (例:`root[&]家具[&]沙发[&]number`): 行列交叉后每一个列头节点对应的唯一 ID, 适用于宽高精确到具体的单元格 [(如何获取 ID)](/docs/manual/advanced/get-cell-data#%E8%8E%B7%E5%8F%96%E6%8C%87%E5%AE%9A%E5%8C%BA%E5%9F%9F%E5%8D%95%E5%85%83%E6%A0%BC)
- **field** (例:`city`): 对应 `s2DataConfig.fields.columns` 中配置的 `field`, 适用于精确到某一类维值的单元格

```ts
Expand All @@ -205,7 +209,7 @@ const s2Options = {
widthByField: {
// 默认 [数值挂列头], EXTRA_FIELD 为内部虚拟数值列
[EXTRA_FIELD]: 60,
'root[&] 家具 [&] 沙发 [&]number': 120,
'root[&]家具[&]沙发[&]number': 120,
},
heightByField: {
[EXTRA_FIELD]: 80,
Expand Down
16 changes: 11 additions & 5 deletions s2-site/docs/manual/advanced/custom/custom-collapse-nodes.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const s2Options = {
expandDepth: 0,
// 折叠所有
collapseAll: true
},
}
},
}
```
Expand All @@ -31,7 +31,7 @@ const s2Options = {

## 折叠指定节点

配置 `collapseFields`, 支持 `维值 id``维度 field` 两种方式,即可以是 `root[&] 浙江省``city`
配置 `collapseFields`, 支持 `维值 id``维度 field` 两种方式,即可以是 `root[&]浙江省``city`

```ts
const s2Options = {
Expand All @@ -45,13 +45,15 @@ const s2Options = {

### 根据节点对应维值 id

指定 `id` 可以折叠指定节点,如配置为 `root[&] 浙江省`, 那么 `浙江省` 下所有节点都会被折叠
指定 `id` 可以折叠指定节点,如配置为 `root[&]浙江省`, 那么 `浙江省` 下所有节点都会被折叠

```ts
const s2Options = {
style: {
rowCell: {
collapseFields: { 'root[&] 浙江省': true },
collapseFields: {
'root[& 浙江省': true
},
},
},
}
Expand All @@ -73,10 +75,14 @@ const s2DataConfig = {
rows: ['province', 'city']
}
}

const s2Options = {
style: {
rowCell: {
collapseFields: { province: false, city: true }
collapseFields: {
province: false,
city: true
}
},
},
}
Expand Down
19 changes: 14 additions & 5 deletions s2-site/docs/manual/basic/multi-line-text.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,15 @@ order: 10

得益于 `AntV/G` 5.0 渲染引擎的升级,`S2 2.0` 现在只需要简单的配置即可支持多行文本的渲染,支持自动换行。

TODO: DEMO

<Playground path="basic/pivot/demo/grid.ts" rid='multi-line-text' height="200"></playground>
<Playground path="layout/custom/demo/multi-line-text.ts" rid='multi-line-text' height="200"></playground>

## 使用

S2 内部适配了 `AntV/G 5.0`[多行布局能力](https://g.antv.antgroup.com/api/basic/text#%E5%A4%9A%E8%A1%8C%E5%B8%83%E5%B1%80), 支持如下配置:

:::info{title="提示"}

具体参数请跳转 `G` [官网查看](https://g.antv.antgroup.com/api/basic/text#%E5%A4%9A%E8%A1%8C%E5%B8%83%E5%B1%80).
具体参数请跳转 `AntV/G` [官网查看](https://g.antv.antgroup.com/api/basic/text#%E5%A4%9A%E8%A1%8C%E5%B8%83%E5%B1%80).

- `maxLines`: 最大行数,文本超出后将被截断。
- `wordWrap`: 是否开启自动折行,默认值为 false,
Expand All @@ -34,11 +32,18 @@ S2 内部适配了 `AntV/G 5.0` 的 [多行布局能力](https://g.antv.antgroup

在 S2 中,通过 [配置主题](/manual/basic/theme) 即可实现多行文本,当文本自动换行后,如小于单元格高度,则会自动调整。

:::warning{title="注意"}
数值单元格 (dataCell) 不建议换行,容易产生歧义。
:::

```ts
const cellTheme = {
text: {
// 最大行数,文本超出后将被截断
maxLines: 2,
// 文本是否换行
wordWrap: true,
// 可选项见:https://g.antv.antgroup.com/api/basic/text#textoverflow
textOverflow: 'ellipsis',
},
bolderText: {
Expand All @@ -54,7 +59,11 @@ s2.setTheme({
colCell: cellTheme,
cornerCell: cellTheme,
rowCell: cellTheme,
dataCell: cellTheme,
// dataCell: cellTheme,
});

```

## 效果

<img src="https://mdn.alipayobjects.com/huamei_qa8qxu/afts/img/A*uMV6QYL-TcwAAAAAAAAAAAAADmJ7AQ/original" width="600" alt="预览"/>
8 changes: 8 additions & 0 deletions s2-site/examples/layout/custom/demo/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,14 @@
"en": "Only Show Row Header"
},
"screenshot": "https://mdn.alipayobjects.com/huamei_qa8qxu/afts/img/A*pezZTI9lp50AAAAAAAAAAAAADmJ7AQ/original"
},
{
"filename": "multi-line-text.ts",
"title": {
"zh": "多行文本 / 文本自动换行",
"en": "Multi Line Text"
},
"screenshot": "https://mdn.alipayobjects.com/huamei_qa8qxu/afts/img/A*uMV6QYL-TcwAAAAAAAAAAAAADmJ7AQ/original"
}
]
}
122 changes: 122 additions & 0 deletions s2-site/examples/layout/custom/demo/multi-line-text.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
import {
DefaultCellTheme,
PivotSheet,
S2DataConfig,
S2Options,
} from '@antv/s2';
import '@antv/s2/dist/style.min.css';

fetch('https://assets.antv.antgroup.com/s2/basic.json')
.then((res) => res.json())
.then(async (data) => {
const container = document.getElementById('container');
const s2DataConfig: S2DataConfig = {
fields: {
rows: ['province', 'city'],
columns: ['type'],
values: ['price', 'cost'],
},
meta: [
{
field: 'province',
name: '省份省份省份省份省份省份省份省份省份',
},
{
field: 'city',
name: '城市城市城市城市城市城市城市',
},
{
field: 'type',
name: '商品类别商品类别商品类别商品类别商品类别商品类别',
},
{
field: 'price',
name: '价格价格价格价格价格价格',
},
{
field: 'cost',
name: '成本成本成本成本成本成本成本',
},
],
data: [
{
province: '浙江浙江浙江浙江浙江浙江',
city: '杭州杭州杭州杭州杭州杭州',
type: '纸张纸张纸张纸张纸张',
price: '2',
cost: '20',
},
...data,
],
};

const s2Options: S2Options = {
width: 600,
height: 480,
showSeriesNumber: true,
seriesNumberText: '序号序号序号序号序号序号',
tooltip: {
enable: true,
content: (cell) => {
const text = cell.getOriginalText();
const span = document.createElement('span');

span.innerHTML = text;

return span;
},
},
// 如果有省略号, 复制到的是完整文本
interaction: {
enableCopy: true,
copyWithFormat: true,
copyWithHeader: true,
brushSelection: {
dataCell: true,
rowCell: true,
colCell: true,
},
},
style: {
rowCell: {
height: 50,
},
colCell: {},
dataCell: {},
},
};

const s2 = new PivotSheet(container, s2DataConfig, s2Options);

const cellTheme: DefaultCellTheme = {
text: {
// 最大行数,文本超出后将被截断
maxLines: 2,
// 文本是否换行
wordWrap: true,
// 可选项见:https://g.antv.antgroup.com/api/basic/text#textoverflow
textOverflow: 'ellipsis',
},
bolderText: {
maxLines: 2,
wordWrap: true,
textOverflow: 'ellipsis',
},
measureText: {
maxLines: 2,
wordWrap: true,
textOverflow: 'ellipsis',
},
};

s2.setTheme({
seriesNumberCell: cellTheme,
colCell: cellTheme,
cornerCell: cellTheme,
rowCell: cellTheme,
// 数值不建议换行, 容易产生歧义
// dataCell: cellTheme,
});

await s2.render();
});

0 comments on commit be79f56

Please sign in to comment.