Files
mnote/Luckysheet-master/docs/zh/guide/config.md
T

1868 lines
55 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.
# 整体配置
## 基础结构
初始化表格时,可以设置一个对象配置串`options`来自定义配置Luckysheet表格。
如下是一个简洁的配置案例:
```js
// 配置项
const options = {
container: 'luckysheet', // 设定DOM容器的id
title: 'Luckysheet Demo', // 设定表格名称
lang: 'zh' // 设定表格语言
// 更多其他设置...
}
// 初始化表格
luckysheet.create(options)
```
这里的`options`配置项会作用于整个表格,特别的,单个sheet的配置则需要在`options.data`数组中,分别设置对应更详细的参数,参考[工作表配置](/zh/guide/sheet.html)
针对个性化的需求,除了允许配置信息栏([showinfobar](#showinfobar))、工具栏([showtoolbar](#showtoolbar))、底部sheet页([showsheetbar](#showsheetbar))、底部计数栏([showstatisticBar](#showstatisticBar))之外,
Luckysheet开放了更细致的自定义配置选项,分别有
- 自定义工具栏([showtoolbarConfig](#showtoolbarConfig)
- 自定义底部sheet页([showsheetbarConfig](#showsheetbarConfig)
- 自定义计数栏([showstatisticBarConfig](#showstatisticBarConfig)
- 自定义单元格右键菜单([cellRightClickConfig](#cellRightClickConfig)
- 自定义底部sheet页右击菜单([sheetRightClickConfig](#sheetRightClickConfig)
## 配置项
以下为所有支持的设置参数
- 容器ID [container](#container)
- 工作簿名称 [title](#title)
- 语言 [lang](#lang)
- 唯一key [gridKey](#gridKey)
- 加载整个工作簿 [loadUrl](#loadUrl)
- 加载其它页celldata [loadSheetUrl](#loadSheetUrl)
- 允许更新 [allowUpdate](#allowUpdate)
- 更新地址 [updateUrl](#updateUrl)
- 缩略图更新地址 [updateImageUrl](#updateImageUrl)
- 工作表配置 [data](#data)
- 插件 [plugins](#plugins)
- 列数 [column](#column)
- 行数 [row](#row)
- 亿万格式 [autoFormatw](#autoFormatw)
- 精度 [accuracy](#accuracy)
- 允许复制 [allowCopy](#allowCopy)
- 工具栏 [showtoolbar](#showtoolbar)
- 自定义工具栏[showtoolbarConfig](#showtoolbarConfig)
- 信息栏 [showinfobar](#showinfobar)
- 底部sheet页 [showsheetbar](#showsheetbar)
- 自定义底部sheet页 [showsheetbarConfig](#showsheetbarConfig)
- 底部计数栏 [showstatisticBar](#showstatisticBar)
- 自定义计数栏 [showstatisticBarConfig](#showstatisticBarConfig)
- 允许添加行 [enableAddRow](#enableAddRow)
- 默认添加行的数目 [addRowCount](#addRowCount)
- 允许回到顶部 [enableAddBackTop](#enableAddBackTop)
- 用户信息 [userInfo](#userInfo)
- 用户信息菜单 [userMenuItem](#userMenuItem)
- 返回按钮链接 [myFolderUrl](#myFolderUrl)
- 比例 [devicePixelRatio](#devicePixelRatio)
- 功能按钮 [functionButton](#functionButton)
- 自动缩进界面 [showConfigWindowResize](#showConfigWindowResize)
- 刷新公式 [forceCalculation](#forceCalculation)
- 自定义单元格右键菜单 [cellRightClickConfig](#cellRightClickConfig)
- 自定义sheet页右击菜单 [sheetRightClickConfig](#sheetRightClickConfig)
- 行标题区域的宽度 [rowHeaderWidth](#rowHeaderWidth)
- 列标题区域的高度 [columnHeaderHeight](#columnHeaderHeight)
- 是否显示公式栏 [sheetFormulaBar](#sheetFormulaBar)
- 初始化默认字体大小 [defaultFontSize](#defaultFontSize)
- 是否限制工作表名长度 [limitSheetNameLength](#limitSheetNameLength)
- 默认允许工作表名的最大长度 [defaultSheetNameMaxLength](#defaultSheetNameMaxLength)
- 分页器 [pager](#pager)
- 自定义图片上传 [uploadImage](#uploadImage)
- 自定义图片地址处理 [imageUrlHandle](#imageUrlHandle)
### container
- 类型:String
- 默认值:"luckysheet"
- 作用:容器的ID
------------
### title
- 类型:String
- 默认值:"Luckysheet Demo"
- 作用:工作簿名称
------------
### lang
- 类型:String
- 默认值:"en"
- 作用:国际化设置,允许设置表格的语言,支持简体中文("zh")、英文("en")、繁体中文("zh_tw")和西班牙文("es")
------------
### gridKey
- 类型:String
- 默认值:""
- 作用:表格唯一标识符
------------
### loadUrl
- 类型:String
- 默认值:""
- 作用:配置`loadUrl`接口地址,加载所有工作表的配置,并包含当前页单元格数据,与`loadSheetUrl`配合使用。参数为`gridKey`(表格主键)。
源码的请求写法是:
```js
$.post(loadurl, {"gridKey" : server.gridKey}, function (d) {})
```
> 参见源码 [`src/core.js`](https://github.com/mengshukeji/Luckysheet/blob/master/src/core.js)
Luckysheet会通过ajax请求(POST)整个表格的数据,默认载入status为1的sheet数据中的`celldata`,其余的sheet载入除`celldata`字段外的所有配置字段。特别是在数据量大的时候,`loadUrl`只负责当前页单元格数据,配置`loadSheetUrl`作为其它工作表异步加载单元格数据的接口,可以提高性能。
一个合格的接口返回的json字符串数据为:
```js
"[
//status为1的sheet页,重点是需要提供初始化的数据celldata
{
"name": "Cell",
"index": "sheet_01",
"order": 0,
"status": 1,
"celldata": [{"r":0,"c":0,"v":{"v":1,"m":"1","ct":{"fa":"General","t":"n"}}}]
},
//其他status为0的sheet页,无需提供celldata,只需要配置项即可
{
"name": "Data",
"index": "sheet_02",
"order": 1,
"status": 0
},
{
"name": "Picture",
"index": "sheet_03",
"order": 2,
"status": 0
}
]"
```
有几个注意点
+ 这是一个字符串,类似于JSON.stringify()处理后的json数据,压缩后的数据便于传输
+ loadUrl是一个post请求,也是为了支持大数据量
+ 考虑到一些公式、图表及数据透视表会引用其他sheet的数据,所以前台会加一个判断,如果该当前sheet引用了其他sheet的数据则会通过`loadSheetUrl`配置的接口地址请求数据,把引用到的sheet的数据一并补全,而不用等切换到其它页的时候再请求
+ 当数据量小的时候,也可以不用Luckysheet提供的此接口,直接使用[data](#data)参数可以提前准备好所有表格数据用于初始化
------------
### loadSheetUrl
- 类型:String
- 默认值:""
- 作用:配置`loadSheetUrl`接口地址,用于异步加载其它单元格数据。参数为`gridKey`(表格主键) 和 `index`sheet主键合集,格式为`["sheet_01","sheet_02","sheet_03"]`)。
源码的请求写法是:
```js
$.post(loadSheetUrl, {"gridKey" : server.gridKey, "index": sheetindex.join(",")}, function (d) {})
```
> 参见源码 [`src/controllers/sheetmanage.js`](https://github.com/mengshukeji/Luckysheet/blob/master/src/controllers/sheetmanage.js)
返回的数据为sheet的`celldata`字段数据集合。
一个合格的接口返回的json字符串数据为:
```js
"{
"sheet_01": [
{
"r": 0,
"c": 0,
"v": { "v": 1, "m": "1", "ct": { "fa": "General", "t": "n" } }
}
],
"sheet_02": [
{
"r": 0,
"c": 0,
"v": { "v": 1, "m": "1", "ct": { "fa": "General", "t": "n" } }
}
],
"sheet_03": [
{
"r": 0,
"c": 0,
"v": { "v": 1, "m": "1", "ct": { "fa": "General", "t": "n" } }
}
]
}"
```
同`loadUrl`类似,`loadSheetUrl`也要注意这几点:
+ 这是一个字符串格式数据
+ 这是一个post请求
+ 这个接口会在两种情况下自动调用,一是在`loadUrl`加载的当前页数据时发现当前工作表引用了其他工作表,二是切换到一个未曾加载过数据的工作表时
------------
### allowUpdate
- 类型:Boolean
- 默认值:false
- 作用:是否允许操作表格后的后台更新,与`updateUrl`配合使用。如果要开启共享编辑,此参数必须设置为`true`。
------------
### updateUrl
- 类型:String
- 默认值:""
- 作用:操作表格后,实时保存数据的websocket地址,此接口也是共享编辑的接口地址。
有个注意点,要想开启共享编辑,必须满足以下3个条件:
+ `allowUpdate`为`true`
+ 配置了`loadUrl`
+ 配置了`updateUrl`
注意,发送给后端的数据默认是经过pako压缩过后的。后台拿到数据需要先解压。
通过共享编辑功能,可以实现Luckysheet实时保存数据和多人同步数据,每一次操作都会发送不同的参数到后台,具体的操作类型和参数参见[表格操作](/zh/guide/operate.html)
------------
### updateImageUrl
- 类型:String
- 默认值:""
- 作用:缩略图的更新地址
------------
### data
- 类型:Array
- 默认值:[{ "name": "Sheet1", color: "", "status": "1", "order": "0", "data": [], "config": {}, "index":0 }, { "name": "Sheet2", color: "", "status": "0", "order": "1", "data": [], "config": {}, "index":1 }, { "name": "Sheet3", color: "", "status": "0", "order": "2", "data": [], "config": {}, "index":2 }]
- 作用:当未配置`loadUrl`和`loadSheetUrl`的时候,需要手动配置传入整个客户端所有sheet数据`[shee1, sheet2, sheet3]`,详细参数设置参见[工作表配置](/zh/guide/sheet.html)
------------
### plugins
- 类型:Array
- 默认值:[]
- 作用:配置插件,支持图表:"chart"
------------
### column
- 类型:Number
- 默认值:60
- 作用:空表格默认的列数量
------------
### row
- 类型:Number
- 默认值:84
- 作用:空表格默认的行数据量
------------
### autoFormatw
- 类型:Boolean
- 默认值:false
- 作用:自动格式化超过4位数的数字为‘亿万格式’,例:true or "true" or "TRUE"
------------
### accuracy
- 类型:Number
- 默认值:undefined
- 作用:设置精度,小数点后的位数。传参数为数字或数字字符串,例: "0" 或 0
------------
### allowCopy
- 类型:Boolean
- 默认值:true
- 作用:是否允许拷贝
------------
### showtoolbar
- 类型:Boolean
- 默认值:true
- 作用:是否显示工具栏
------------
### showtoolbarConfig
- 类型:Object
- 默认值:{}
- 作用:自定义配置工具栏,可以与showtoolbar配合使用,`showtoolbarConfig`拥有更高的优先级。
- 格式1
```json
{
undoRedo: false, //撤销重做,注意撤消重做是两个按钮,由这一个配置决定显示还是隐藏
paintFormat: false, //格式刷
currencyFormat: false, //货币格式
percentageFormat: false, //百分比格式
numberDecrease: false, // '减少小数位数'
numberIncrease: false, // '增加小数位数
moreFormats: false, // '更多格式'
font: false, // '字体'
fontSize: false, // '字号大小'
bold: false, // '粗体 (Ctrl+B)'
italic: false, // '斜体 (Ctrl+I)'
strikethrough: false, // '删除线 (Alt+Shift+5)'
underline: false, // '下划线 (Alt+Shift+6)'
textColor: false, // '文本颜色'
fillColor: false, // '单元格颜色'
border: false, // '边框'
mergeCell: false, // '合并单元格'
horizontalAlignMode: false, // '水平对齐方式'
verticalAlignMode: false, // '垂直对齐方式'
textWrapMode: false, // '换行方式'
textRotateMode: false, // '文本旋转方式'
image:false, // '插入图片'
link:false, // '插入链接'
chart: false, // '图表'(图标隐藏,但是如果配置了chart插件,右击仍然可以新建图表)
postil: false, //'批注'
pivotTable: false, //'数据透视表'
function: false, // '公式'
frozenMode: false, // '冻结方式'
sortAndFilter: false, // '排序和筛选'
conditionalFormat: false, // '条件格式'
dataVerification: false, // '数据验证'
splitColumn: false, // '分列'
screenshot: false, // '截图'
findAndReplace: false, // '查找替换'
protection:false, // '工作表保护'
print:false, // '打印'
}
```
- 示例1
- 仅显示撤消重做和字体按钮:
```js
//options
{
showtoolbar: false,
showtoolbarConfig:{
undoRedo: true,
font: true,
}
}
```
- 仅隐藏图片和打印按钮:
```js
//options
{
showtoolbar: true, // 默认就是true,可以不设置
showtoolbarConfig:{
image: false,
print: false,
}
}
```
- 格式2
对象格式可以很方便控制显示隐藏,使用数组形式可轻松控制按钮顺序和位置, 以下为工具栏按钮和分隔符的默认配置。
```json
[
"undo", "redo", "paintFormat", "|",
"currencyFormat", "percentageFormat", "numberDecrease", "numberIncrease", "moreFormats", "|",
"font", "|",
"fontSize", "|",
"bold", "italic", "strikethrough", "underline", "textColor", "|",
"fillColor", "border", "mergeCell", "|",
"horizontalAlignMode", "verticalAlignMode", "textWrapMode", "textRotateMode", "|",
"image", "link", "chart", "postil", "pivotTable", "|",
"function", "frozenMode", "sortAndFilter", "conditionalFormat", "dataVerification", "splitColumn", "screenshot", "findAndReplace", "protection", "print"
]
```
- 示例2
- 自定义按钮和位置, 保护放到最前面, 只要字体样式相关按钮。
```json
{
"showtoolbarConfig": [
"protection", "|",
"font", "|",
"fontSize", "|",
"bold", "italic", "strikethrough", "underline", "textColor"
]
}
```
------------
### showinfobar
- 类型:Boolean
- 默认值:true
- 作用:是否显示顶部信息栏
------------
### showsheetbar
- 类型:Boolean
- 默认值:true
- 作用:是否显示底部sheet页按钮
------------
### showsheetbarConfig
- 类型:Object
- 默认值:{}
- 作用:自定义配置底部sheet页按钮,可以与showsheetbar配合使用,`showsheetbarConfig`拥有更高的优先级。
- 格式:
```json
{
add: false, //新增sheet
menu: false, //sheet管理菜单
sheet: false //sheet页显示
}
```
- 示例:
- 仅显示新增sheet按钮:
```js
//options
{
showsheetbar: false,
showsheetbarConfig:{
add: true,
}
}
```
- 仅隐藏新增sheet和管理按钮:
```js
//options
{
showsheetbar: true, // 默认就是true,可以不设置
showsheetbarConfig:{
add: false,
menu: false,
}
}
```
------------
### showstatisticBar
- 类型:Boolean
- 默认值:true
- 作用:是否显示底部计数栏
------------
### showstatisticBarConfig
- 类型:Object
- 默认值:{}
- 作用:自定义配置底部计数栏,可以与showstatisticBar配合使用,`showstatisticBarConfig`拥有更高的优先级。
- 格式:
```json
{
count: false, // 计数栏
view: false, // 打印视图
zoom: false, // 缩放
}
```
- 示例:
- 仅显示缩放按钮:
```js
//options
{
showstatisticBar: false,
showstatisticBarConfig:{
zoom: true,
}
}
```
- 仅隐藏打印视图按钮:
```js
//options
{
showstatisticBar: true, // 默认就是true,可以不设置
showstatisticBarConfig:{
view: false,
}
}
```
------------
### enableAddRow
- 类型:Boolean
- 默认值:true
- 作用:允许添加行
### addRowCount
- Number
- 默认值:100
- 作用:配置新增行处默认新增的行数目
------------
### enableAddBackTop
- 类型:Boolean
- 默认值:true
- 作用:允许回到顶部
------------
### userInfo
- 类型:String | Boolean | Object
- 默认值:false
- 作用:右上角的用户信息展示样式,支持以下三种形式
1. HTML模板字符串,如:
```js
options:{
// 其他配置
userInfo:'<i style="font-size:16px;color:#ff6a00;" class="fa fa-taxi" aria-hidden="true"></i> Lucky',
}
```
或者一个普通字符串,如:
```js
options:{
// 其他配置
userInfo:'Lucky',
}
```
2. Boolean类型,如:
`false`:不展示
```js
options:{
// 其他配置
userInfo:false, // 不展示用户信息
}
```
`true`:展示默认的字符串
```js
options:{
// 其他配置
userInfo:true, // 展示HTML:'<i style="font-size:16px;color:#ff6a00;" class="fa fa-taxi" aria-hidden="true"></i> Lucky'
}
```
3. 对象格式,设置 `userImage`:用户头像地址 和 `userName`:用户名,如:
```js
options:{
// 其他配置
userInfo: {
userImage:'https://cdn.jsdelivr.net/npm/luckyresources@1.0.3/assets/img/logo/logo.png', // 头像url
userName:'Lucky' // 用户名
}
}
```
4. 注意,设置为`undefined`或者不设置,同设置`false`
------------
### userMenuItem
- 类型:Array
- 默认值:`[{url:"www.baidu.com", "icon":'<i class="fa fa-folder" aria-hidden="true"></i>', "name":"我的表格"}, {url:"www.baidu.com", "icon":'<i class="fa fa-sign-out" aria-hidden="true"></i>', "name":"退出登陆"}]`
- 作用:点击右上角的用户信息弹出的菜单
------------
### myFolderUrl
- 类型:String
- 默认值:"www.baidu.com"
- 作用:左上角<返回按钮的链接
------------
### devicePixelRatio
- 类型:Number
- 默认值:window.devicePixelRatio
- 作用:设备比例,比例越大表格分辨率越高
------------
### functionButton
- 类型:String
- 默认值:""
- 作用:右上角功能按钮,例如`'<button id="" class="btn btn-primary" style="padding:3px 6px;font-size: 12px;margin-right: 10px;">下载</button> <button id="" class="btn btn-primary btn-danger" style=" padding:3px 6px; font-size: 12px; margin-right: 10px;">分享</button> <button id="luckysheet-share-btn-title" class="btn btn-primary btn-danger" style=" padding:3px 6px; font-size: 12px; margin-right: 10px;">秀数据</button>'`
------------
### showConfigWindowResize
- 类型:Boolean
- 默认值:true
- 作用:图表或数据透视表的配置会在右侧弹出,设置弹出后表格是否会自动缩进
------------
### forceCalculation
- 类型:Boolean
- 默认值:false
- 作用:强制刷新公式。
默认情况下,为提高加载性能,表格初始化的时候,含有公式的单元格会默认直接取得`v`和`m`作为数据结果,而不做实时计算。
如果公式关联到的单元格数据已经变化,或者公式所在的单元格数据结果改变了,则会导致关联单元格应该计算得出的结果和实际显示结果不一致,这是就需要开启公式刷新,保证数据实时计算的准确性。
⚠️提醒,公式较多时会有性能问题,慎用!
------------
### cellRightClickConfig
- 类型:Object
- 默认值:{}
- 作用:自定义配置单元格右击菜单
- 格式:
```json
{
copy: false, // 复制
copyAs: false, // 复制为
paste: false, // 粘贴
insertRow: false, // 插入行
insertColumn: false, // 插入列
deleteRow: false, // 删除选中行
deleteColumn: false, // 删除选中列
deleteCell: false, // 删除单元格
hideRow: false, // 隐藏选中行和显示选中行
hideColumn: false, // 隐藏选中列和显示选中列
rowHeight: false, // 行高
columnWidth: false, // 列宽
clear: false, // 清除内容
matrix: false, // 矩阵操作选区
sort: false, // 排序选区
filter: false, // 筛选选区
chart: false, // 图表生成
image: false, // 插入图片
link: false, // 插入链接
data: false, // 数据验证
cellFormat: false // 设置单元格格式
}
```
除了单元格,这里的配置还包括行标题右击菜单、列标题右击菜单和列标题下拉箭头的菜单,具体配置关系如下表格:
|右击菜单配置|单元格|行标题|列标题|列箭头|
| ------------ | ------------ | ------------ | ------------ | ------------ |
|copy|复制|复制|复制|复制|
|copyAs|复制为|复制为|复制为|复制为|
|paste|粘贴|粘贴|粘贴|粘贴|
|insertRow|插入行|向上增加N行,向下增加N行|-|-|
|insertColumn|插入列|-|向左增加N列,向右增加N列|向左增加N列,向右增加N列|
|deleteRow|删除选中行|删除选中行|-|-|
|deleteColumn|删除选中列|-|删除选中列|删除选中列|
|deleteCell|删除单元格|-|-|-|
|hideRow|-|隐藏选中行和显示选中行|-|-|
|hideColumn|-|-|隐藏选中列和显示选中列|隐藏选中列和显示选中列|
|rowHeight|-|行高|-|-|
|columnWidth|-|-|列宽|列宽|
|clear|清除内容|清除内容|清除内容|-|
|matrix|矩阵操作选区|矩阵操作选区|矩阵操作选区|-|
|sort|排序选区|排序选区|排序选区|A-Z排序和Z-A排序|
|filter|筛选选区|筛选选区|筛选选区|-|
|chart|图表生成|图表生成|图表生成|-|
|image|插入图片|插入图片|插入图片|-|
|link|插入链接|插入链接|插入链接|-|
|data|数据验证|数据验证|数据验证|-|
|cellFormat|设置单元格格式|设置单元格格式|设置单元格格式|-|
------------
### sheetRightClickConfig
- 类型:Object
- 默认值:{}
- 作用:自定义配置sheet页右击菜单
- 格式:
```json
{
delete: false, // 删除
copy: false, // 复制
rename: false, //重命名
color: false, //更改颜色
hide: false, //隐藏,取消隐藏
move: false, //向左移,向右移
}
------------
### rowHeaderWidth
- 类型:Number
- 默认值:46
- 作用:行标题区域的宽度,如果设置为0,则表示隐藏行标题
------------
### columnHeaderHeight
- 类型:Number
- 默认值:20
- 作用:列标题区域的高度,如果设置为0,则表示隐藏列标题
------------
### sheetFormulaBar
- 类型:Boolean
- 默认值:true
- 作用:是否显示公式栏
------------
### defaultFontSize
- 类型:Number
- 默认值:11
- 作用:初始化默认字体大小
------------
### limitSheetNameLength
- 类型:Boolean
- 默认值:true
- 作用:工作表重命名等场景下是否限制工作表名称的长度
------------
### defaultSheetNameMaxLength
- 类型:Number
- 默认值:31
- 作用:默认允许的工作表名最大长度
------------
### pager
- 类型:Object
- 默认值:null
- 作用:分页器按钮设置,初版方案是直接使用的jquery插件 [sPage](https://github.com/jvbei/sPage)
点击分页按钮会触发钩子函数 `onTogglePager`,返回当前页码,同`sPage`的`backFun`方法,此分页器设置只负责UI部分,具体切换分页后的数据请求和数据渲染,请在`onTogglePager`钩子行数里自定义处理。
```js
pager: {
pageIndex: 1, //当前页码,必填
total: 100, //数据总条数,必填
selectOption: [10, 20, 30], // 选择每页的行数,
pageSize: 10, //每页显示多少条数据,默认10条
showTotal: false, // 是否显示总数,默认关闭:false
showSkip: false, //是否显示跳页,默认关闭:false
showPN: false, //是否显示上下翻页,默认开启:true
prevPage: '', //上翻页文字描述,默认"上一页"
nextPage: '', //下翻页文字描述,默认"下一页"
totalTxt: '', // 数据总条数文字描述,默认"总共:{total}"
}
```
### uploadImage
用于自定义图片的上传,默认情况下,插入的图片是以base64的形式放入sheet数据中,如果需要单独上传图片,仅在sheet中引用图片地址可使用此配置。
- 类型: `function (file) => Promise(imgUrl)`,接受file对象,返回Promise,值为上传完成的图片url
- 默认值: `undefined`
:::details 查看示例配置
```js
{
uploadImage: function (file) {
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://192.168.210.159/miniuiServer/imageUploader.php');
// 额外的请求头
var headers = {};
if (headers) {
Object.keys(headers).forEach(function (k) {
xhr.setRequestHeader(k, headers[k]);
});
}
var data = new FormData();
// 要上传的图片文件
data.append('file', file, file.name || '');
xhr.send(data);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
var res = JSON.parse(xhr.responseText);
var url = res.downloadUrl;
if (url) {
resolve(url); // 给上传的后的地址
} else {
reject('image upload error');
}
} else {
reject('image upload error');
}
}
};
});
}
}
```
:::
### imageUrlHandle
图片上传的路径处理函数,和 [uploadImage](#uploadImage) 相关,一般只有使用自定义图片上传才需要此配置。
- 类型: `function (string) => string`,接受原始路径,返回新路径
- 默认值: `undefined`
- 作用,处理图片显示时的路径。
如上传返回地址为接口地址,如: `rest/attach/[fileguid]` 则需要处理为 `http://localhost:8080/xxx/rest/attach/[fileguid]` 才能显示,但将前面域名信息写入数据,后续使用可能会有问题,因此可使用此方法处理路径,全路径仅在展示使用,数据内仅存储 `rest/attach/[fileguid]`
```js
{
// 处理上传图片的地址
imageUrlHandle: function (url) {
// 已经是 // http data 开头则不处理
if (/^(?:\/\/|(?:http|https|data):)/i.test(url)) {
return url;
}
return location.origin + url;
}
}
```
------------
## 钩子函数
钩子函数应用于二次开发时,会在各个常用鼠标或者键盘操作时植入钩子,调用开发者传入的函数,起到扩展Luckysheet功能的作用。
钩子函数统一配置在`options.hook`下,可以分别针对单元格、sheet页、表格创建配置hook。
> 使用案例可参考源码 [src/index.html](https://github.com/mengshukeji/Luckysheet/blob/master/src/index.html)
## 单元格
### cellEditBefore
- 类型:Function
- 默认值:null
- 作用:进入单元格编辑模式之前触发。在选中了某个单元格且在非编辑状态下,通常有以下三种常规方法触发进入编辑模式
- 双击单元格
- 敲Enter键
- 使用APIenterEditMode
- 参数:
- {Array} [range]: 当前选区范围
------------
### cellUpdateBefore
- 类型:Function
- 默认值:null
- 作用:更新这个单元格值之前触发,`return false` 则不执行后续的更新。在编辑状态下修改了单元格之后,退出编辑模式并进行数据更新之前触发这个钩子。
- 参数:
- {Number} [r]: 单元格所在行数
- {Number} [c]: 单元格所在列数
- {Object | String | Number} [value]: 要修改的单元格内容
- {Boolean} [isRefresh]: 是否刷新整个表格
------------
### cellUpdated
- 类型:Function
- 默认值:null
- 作用:更新这个单元格后触发
- 参数:
- {Number} [r]: 单元格所在行数
- {Number} [c]: 单元格所在列数
- {Object} [oldValue]: 修改前的单元格对象
- {Object} [newValue]: 修改后的单元格对象
- {Boolean} [isRefresh]: 是否刷新整个表格
------------
### cellRenderBefore
- 类型:Function
- 默认值:null
- 作用:单元格渲染前触发,`return false` 则不渲染该单元格
- 参数:
- {Object} [cell]:单元格对象
- {Object} [position]:
+ {Number} [r]:单元格所在行号
+ {Number} [c]:单元格所在列号
+ {Number} [start_r]:单元格左上角的垂直坐标
+ {Number} [start_c]:单元格左上角的水平坐标
+ {Number} [end_r]:单元格右下角的垂直坐标
+ {Number} [end_c]:单元格右下角的水平坐标
- {Object} [sheet]:当前sheet对象
- {Object} [ctx]: 当前画布的context
------------
### cellRenderAfter
- 类型:Function
- 默认值:null
- 作用:单元格渲染结束后触发,`return false` 则不渲染该单元格
- 参数:
- {Object} [cell]:单元格对象
- {Object} [position]:
+ {Number} [r]:单元格所在行号
+ {Number} [c]:单元格所在列号
+ {Number} [start_r]:单元格左上角的垂直坐标
+ {Number} [start_c]:单元格左上角的水平坐标
+ {Number} [end_r]:单元格右下角的垂直坐标
+ {Number} [end_c]:单元格右下角的水平坐标
- {Object} [sheet]:当前sheet对象
- {Object} [ctx]: 当前画布的context
- 示例:
一个在D1单元格的左上角和右下角分别绘制两张图的案例
:::::: details
```js
luckysheet.create({
hook: {
cellRenderAfter: function (cell, position, sheetFile, ctx) {
var r = position.r;
var c = position.c;
if (r === 0 && c === 3) { // 指定处理D1单元格
if (!window.storeUserImage) {
window.storeUserImage = {}
}
if (!window.storeUserImage[r + '_' + c]) {
window.storeUserImage[r + '_' + c] = {}
}
var img = null;
var imgRight = null;
if (window.storeUserImage[r + '_' + c].image && window.storeUserImage[r + '_' + c].imgRight) {
// 加载过直接取
img = window.storeUserImage[r + '_' + c].image;
imgRight = window.storeUserImage[r + '_' + c].imgRight;
} else {
img = new Image();
imgRight = new Image();
img.src = 'https://www.dogedoge.com/favicon/developer.mozilla.org.ico';
imgRight.src = 'https://www.dogedoge.com/static/icons/twemoji/svg/1f637.svg';
// 图片缓存到内存,下次直接取,不用再重新加载
window.storeUserImage[r + '_' + c].image = img;
window.storeUserImage[r + '_' + c].imgRight = imgRight;
}
if (img.complete) { // 已经加载完成的直接渲染
ctx.drawImage(img, position.start_c, position.start_r, 10, 10);
} else {
img.onload = function () {
ctx.drawImage(img, position.start_c, position.start_r, 10, 10);
}
}
if (imgRight.complete) {
ctx.drawImage(imgRight, position.end_c - 10, position.end_r - 10, 10, 10);
} else {
imgRight.onload = function () {
ctx.drawImage(imgRight, position.end_c - 10, position.end_r - 10, 10, 10);
}
}
}
}
}
})
```
:::
------------
### cellAllRenderBefore
- 类型:Function
- 默认值:null
- 作用:所有单元格渲染之前执行的方法。在内部,这个方法加在了`luckysheetDrawMain`渲染表格之前。
- 参数:
- {Object} [data]: 当前工作表二维数组数据
- {Object} [sheet]:当前sheet对象
- {Object} [ctx]: 当前画布的context
------------
### rowTitleCellRenderBefore
- 类型:Function
- 默认值:null
- 作用:行标题单元格渲染前触发,`return false` 则不渲染行标题
- 参数:
- {String} [rowNum]:行号
- {Object} [position]:
+ {Number} [r]:单元格所在行号
+ {Number} [top]:单元格左上角的垂直坐标
+ {Number} [width]:单元格宽度
+ {Number} [height]:单元格高度
- {Object} [ctx]: 当前画布的context
------------
### rowTitleCellRenderAfter
- 类型:Function
- 默认值:null
- 作用:行标题单元格渲染后触发,`return false` 则不渲染行标题
- 参数:
- {String} [rowNum]:行号
- {Object} [position]:
+ {Number} [r]:单元格所在行号
+ {Number} [top]:单元格左上角的垂直坐标
+ {Number} [width]:单元格宽度
+ {Number} [height]:单元格高度
- {Object} [ctx]: 当前画布的context
------------
### columnTitleCellRenderBefore
- 类型:Function
- 默认值:null
- 作用:列标题单元格渲染前触发,`return false` 则不渲染列标题
- 参数:
- {Object} [columnAbc]:列标题字符
- {Object} [position]:
- {Number} [c]:单元格所在列号
- {Number} [left]:单元格左上角的水平坐标
- {Number} [width]:单元格宽度
- {Number} [height]:单元格高度
- {Object} [ctx]: 当前画布的context
------------
### columnTitleCellRenderAfter
- 类型:Function
- 默认值:null
- 作用:列标题单元格渲染后触发,`return false` 则不渲染列标题
- 参数:
- {Object} [columnAbc]:列标题字符
- {Object} [position]:
- {Number} [c]:单元格所在列号
- {Number} [left]:单元格左上角的水平坐标
- {Number} [width]:单元格宽度
- {Number} [height]:单元格高度
- {Object} [ctx]: 当前画布的context
------------
## 鼠标钩子
### cellMousedownBefore
- 类型:Function
- 默认值:null
- 作用:单元格点击前的事件,`return false`则终止之后的点击操作
- 参数:
- {Object} [cell]:单元格对象
- {Object} [position]:
+ {Number} [r]:单元格所在行号
+ {Number} [c]:单元格所在列号
+ {Number} [start_r]:单元格左上角的垂直坐标
+ {Number} [start_c]:单元格左上角的水平坐标
+ {Number} [end_r]:单元格右下角的垂直坐标
+ {Number} [end_c]:单元格右下角的水平坐标
- {Object} [sheet]:当前sheet对象
- {Object} [ctx]: 当前画布的context
------------
### cellMousedown
- 类型:Function
- 默认值:null
- 作用:单元格点击后的事件,`return false`则终止之后的点击操作
- 参数:
- {Object} [cell]:单元格对象
- {Object} [position]:
+ {Number} [r]:单元格所在行号
+ {Number} [c]:单元格所在列号
+ {Number} [start_r]:单元格左上角的垂直坐标
+ {Number} [start_c]:单元格左上角的水平坐标
+ {Number} [end_r]:单元格右下角的垂直坐标
+ {Number} [end_c]:单元格右下角的水平坐标
- {Object} [sheet]:当前sheet对象
- {Object} [ctx]: 当前画布的context
------------
### sheetMousemove
- 类型:Function
- 默认值:null
- 作用:鼠标移动事件,可通过cell判断鼠标停留在哪个单元格
- 参数:
- {Object} [cell]:单元格对象
- {Object} [position]:
+ {Number} [r]:单元格所在行号
+ {Number} [c]:单元格所在列号
+ {Number} [start_r]:单元格左上角的垂直坐标
+ {Number} [start_c]:单元格左上角的水平坐标
+ {Number} [end_r]:单元格右下角的垂直坐标
+ {Number} [end_c]:单元格右下角的水平坐标
- {Object} [sheet]:当前sheet对象
- {Object} [moveState]:鼠标移动状态,可判断现在鼠标操作的对象,false和true
+ {Boolean} [functionResizeStatus]:工具栏拖动
+ {Boolean} [horizontalmoveState]:水平冻结分割栏拖动
+ {Boolean} [verticalmoveState]:垂直冻结分割栏拖动
+ {Boolean} [pivotTableMoveState]:数据透视表字段拖动
+ {Boolean} [sheetMoveStatus]:sheet改变你位置拖动
+ {Boolean} [scrollStatus]:鼠标触发了滚动条移动
+ {Boolean} [selectStatus]:鼠标移动框选数据
+ {Boolean} [rowsSelectedStatus]:通过行标题来选择整行操作
+ {Boolean} [colsSelectedStatus]:通过列标题来选择整列操作
+ {Boolean} [cellSelectedMove]:选框的移动
+ {Boolean} [cellSelectedExtend]:选框下拉填充
+ {Boolean} [colsChangeSize]:拖拽改变列宽
+ {Boolean} [rowsChangeSize]:拖拽改变行高
+ {Boolean} [chartMove]:图表移动
+ {Boolean} [chartResize]:图表改变大小
+ {Boolean} [rangeResize]:公式参数高亮选区的大小拖拽
+ {Boolean} [rangeMove]:公式参数高亮选区的位置拖拽
- {Object} [ctx]: 当前画布的context
------------
### sheetMouseup
- 类型:Function
- 默认值:null
- 作用:鼠标按钮释放事件,可通过cell判断鼠标停留在哪个单元格
- 参数:
- {Object} [cell]:单元格对象
- {Object} [position]:
+ {Number} [r]:单元格所在行号
+ {Number} [c]:单元格所在列号
+ {Number} [start_r]:单元格左上角的垂直坐标
+ {Number} [start_c]:单元格左上角的水平坐标
+ {Number} [end_r]:单元格右下角的垂直坐标
+ {Number} [end_c]:单元格右下角的水平坐标
- {Object} [sheet]:当前sheet对象
- {Object} [moveState]:鼠标移动状态,可判断现在鼠标操作的对象,false和true
+ {Boolean} [functionResizeStatus]:工具栏拖动
+ {Boolean} [horizontalmoveState]:水平冻结分割栏拖动
+ {Boolean} [verticalmoveState]:垂直冻结分割栏拖动
+ {Boolean} [pivotTableMoveState]:数据透视表字段拖动
+ {Boolean} [sheetMoveStatus]:sheet改变你位置拖动
+ {Boolean} [scrollStatus]:鼠标触发了滚动条移动
+ {Boolean} [selectStatus]:鼠标移动框选数据
+ {Boolean} [rowsSelectedStatus]:通过行标题来选择整行操作
+ {Boolean} [colsSelectedStatus]:通过列标题来选择整列操作
+ {Boolean} [cellSelectedMove]:选框的移动
+ {Boolean} [cellSelectedExtend]:选框下拉填充
+ {Boolean} [colsChangeSize]:拖拽改变列宽
+ {Boolean} [rowsChangeSize]:拖拽改变行高
+ {Boolean} [chartMove]:图表移动
+ {Boolean} [chartResize]:图表改变大小
+ {Boolean} [rangeResize]:公式参数高亮选区的大小拖拽
+ {Boolean} [rangeMove]:公式参数高亮选区的位置拖拽
+ {Boolean} [cellRightClick]:单元格右击
+ {Boolean} [rowTitleRightClick]:行标题右击
+ {Boolean} [columnTitleRightClick]:列标题右击
+ {Boolean} [sheetRightClick]:底部sheet页右击
+ {Boolean} [hyperlinkClick]:点击超链接
- {Object} [ctx]: 当前画布的context
------------
### scroll
- 类型:Function
- 默认值:null
- 作用:鼠标滚动事件
- 参数:
- {Object} [position]:
+ {Number} [scrollLeft]:横向滚动条的位置
+ {Number} [scrollTop]:垂直滚动条的位置
+ {Number} [canvasHeight]:canvas高度
------------
### cellDragStop
- 类型:Function
- 默认值:null
- 作用:鼠标拖拽文件到Luckysheet内部的结束事件
- 参数:
- {Object} [cell]:单元格对象
- {Object} [position]:
+ {Number} [r]:单元格所在行号
+ {Number} [c]:单元格所在列号
+ {Number} [start_r]:单元格左上角的垂直坐标
+ {Number} [start_c]:单元格左上角的水平坐标
+ {Number} [end_r]:单元格右下角的垂直坐标
+ {Number} [end_c]:单元格右下角的水平坐标
- {Object} [sheet]:当前sheet对象
- {Object} [ctx]: 当前画布的context
- {Object} [event]: 当前事件对象
------------
## 选区操作(包括单元格)
### rangeSelect
- 类型:Function
- 默认值:null
- 作用:框选或者设置选区后触发
- 参数:
- {Object} [sheet]:当前sheet对象
- {Object | Array} [range]: 选区范围,可能为多个选区
------------
### rangeMoveBefore
TODO
- 类型:Function
- 默认值:null
- 作用:移动选区前,包括单个单元格
- 参数:
- {Array} [range]: 当前选区范围,只能为单个选区
------------
### rangeMoveAfter
TODO
- 类型:Function
- 默认值:null
- 作用:移动选区后,包括单个单元格
- 参数:
- {Array} [oldRange]: 移动前当前选区范围,只能为单个选区
- {Array} [newRange]: 移动后当前选区范围,只能为单个选区
------------
### rangeEditBefore
TODO
- 类型:Function
- 默认值:null
- 作用:选区修改前
- 参数:
- {Object | Array} [range]: 选区范围,可能为多个选区
- {Object} [data]: 选区范围所对应的数据
------------
### rangeEditAfter
TODO
- 类型:Function
- 默认值:null
- 作用:选区修改后
- 参数:
- {Object | Array} [range]: 选区范围,可能为多个选区
- {Object} [oldData]: 修改前选区范围所对应的数据
- {Object} [newData]: 修改后选区范围所对应的数据
------------
### rangeCopyBefore
TODO
- 类型:Function
- 默认值:null
- 作用:选区复制前
- 参数:
- {Object | Array} [range]: 选区范围,可能为多个选区
- {Object} [data]: 选区范围所对应的数据
------------
### rangeCopyAfter
TODO
- 类型:Function
- 默认值:null
- 作用:选区复制后
- 参数:
- {Object | Array} [range]: 选区范围,可能为多个选区
- {Object} [data]: 选区范围所对应的数据
------------
### rangePasteBefore
- 类型:Function
- 默认值:null
- 作用:选区粘贴前
- 参数:
- {Object | Array} [range]: 选区范围,可能为多个选区
- {Object} [data]: 要被粘贴的选区范围所对应的数据
------------
### rangePasteAfter
TODO
- 类型:Function
- 默认值:null
- 作用:选区粘贴后
- 参数:
- {Object | Array} [range]: 选区范围,可能为多个选区
- {Object} [originData]: 要被粘贴的选区范围所对应的数据
- {Object} [pasteData]: 要粘贴的数据
------------
### rangeCutBefore
TODO
- 类型:Function
- 默认值:null
- 作用:选区剪切前
- 参数:
- {Array} [range]: 选区范围,只能为单个范围
- {Object} [data]: 要被剪切的选区范围所对应的数据
------------
### rangeCutAfter
TODO
- 类型:Function
- 默认值:null
- 作用:选区剪切后
- 参数:
- {Array} [range]: 选区范围,只能为单个范围
- {Object} [data]: 被剪切的选区范围所对应的数据
------------
### rangeDeleteBefore
TODO
- 类型:Function
- 默认值:null
- 作用:选区删除前
- 参数:
- {Array} [range]: 选区范围,只能为单个范围
- {Object} [data]: 要被删除的选区范围所对应的数据
------------
### rangeDeleteAfter
TODO
- 类型:Function
- 默认值:null
- 作用:选区删除后
- 参数:
- {Array} [range]: 选区范围,只能为单个范围
- {Object} [data]: 被删除的选区范围所对应的数据
------------
### rangeClearBefore
TODO
- 类型:Function
- 默认值:null
- 作用:选区清除前
- 参数:
- {Object | Array} [range]: 选区范围,可能为多个选区
- {Object} [data]: 要被清除的选区范围所对应的数据
------------
### rangeClearAfter
TODO
- 类型:Function
- 默认值:null
- 作用:选区清除后
- 参数:
- {Object | Array} [range]: 选区范围,可能为多个选区
- {Object} [data]: 被清除的选区范围所对应的数据
------------
### rangePullBefore
TODO
- 类型:Function
- 默认值:null
- 作用:选区下拉前
- 参数:
- {Array} [range]: 当前选区范围,只能为单个范围
------------
### rangePullAfter
TODO
- 类型:Function
- 默认值:null
- 作用:选区下拉后
- 参数:
- {Array} [range]: 下拉后的选区范围,只能为单个范围
------------
## 工作表
### sheetCreateBefore
- 类型:Function
- 默认值:null
- 作用:创建sheet页前触发,sheet页新建也包含数据透视表新建
------------
### sheetCreateAfter
- 类型:Function
- 默认值:null
- 作用:创建sheet页后触发,sheet页新建也包含数据透视表新建
- 参数:
- {Object} [sheet]: 当前新创建的sheet页的配置
------------
### sheetCopyBefore
- 类型:Function
- 默认值:null
- 作用:拷贝创建sheet页前触发,sheet页新建也包含数据透视表新建
- 参数:
- {Object} [targetSheet]: 被拷贝的sheet页配置
- {Object} [copySheet]: 拷贝得到的sheet页的配置
------------
### sheetCopyAfter
- 类型:Function
- 默认值:null
- 作用:拷贝创建sheet页后触发,sheet页新建也包含数据透视表新建
- 参数:
- {Object} [sheet]: 当前创建的sheet页的配置
------------
### sheetHideBefore
- 类型:Function
- 默认值:null
- 作用:隐藏sheet页前触发
- 参数:
- {Object} [sheet]: 将要隐藏的sheet页的配置
------------
### sheetHideAfter
- 类型:Function
- 默认值:null
- 作用:隐藏sheet页后触发
- 参数:
- {Object} [sheet]: 要隐藏的sheet页的配置
------------
### sheetShowBefore
- 类型:Function
- 默认值:null
- 作用:显示sheet页前触发
- 参数:
- {Object} [sheet]: 将要显示的sheet页的配置
------------
### sheetShowAfter
- 类型:Function
- 默认值:null
- 作用:显示sheet页后触发
- 参数:
- {Object} [sheet]: 要显示的sheet页的配置
------------
### sheetMoveBefore
TODO
- 类型:Function
- 默认值:null
- 作用:sheet移动前
- 参数:
- {Number} [i]: 当前sheet页的`index`
- {Number} [order]: 当前sheet页`order`
------------
### sheetMoveAfter
TODO
- 类型:Function
- 默认值:null
- 作用:sheet移动后
- 参数:
- {Number} [i]: 当前sheet页的`index`
- {Number} [oldOrder]: 修改前当前sheet页`order`
- {Number} [newOrder]: 修改后当前sheet页`order`
------------
### sheetDeleteBefore
- 类型:Function
- 默认值:null
- 作用:sheet删除前
- 参数:
- {Object} [sheet]: 要被删除sheet页的配置
------------
### sheetDeleteAfter
- 类型:Function
- 默认值:null
- 作用:sheet删除后
- 参数:
- {Object} [sheet]: 已被删除sheet页的配置
------------
### sheetEditNameBefore
- 类型:Function
- 默认值:null
- 作用:sheet修改名称前
- 参数:
- {Number} [i]: sheet页的`index`
- {String} [name]: 当前sheet页名称
------------
### sheetEditNameAfter
- 类型:Function
- 默认值:null
- 作用:sheet修改名称后
- 参数:
- {Number} [i]: sheet页的index
- {String} [oldName]: 修改前当前sheet页名称
- {String} [newName]: 修改后当前sheet页名称
------------
### sheetEditColorBefore
TODO
- 类型:Function
- 默认值:null
- 作用:sheet修改颜色前
- 参数:
- {Number} [i]: sheet页的`index`
- {String} [color]: 当前sheet页颜色
------------
### sheetEditColorAfter
TODO
- 类型:Function
- 默认值:null
- 作用:sheet修改颜色后
- 参数:
- {Number} [i]: sheet页的`index`
- {String} [oldColor]: 修改前当前sheet页颜色
- {String} [newColor]: 修改后当前sheet页颜色
------------
### sheetZoomBefore
TODO
- 类型:Function
- 默认值:null
- 作用:sheet缩放前
- 参数:
- {Number} [i]: sheet页的`index`
- {String} [zoom]: 当前sheet页缩放比例
------------
### sheetZoomAfter
TODO
- 类型:Function
- 默认值:null
- 作用:sheet缩放后
- 参数:
- {Number} [i]: sheet页的`index`
- {String} [oldZoom]: 修改前当前sheet页缩放比例
- {String} [newZoom]: 修改后当前sheet页缩放比例
------------
### sheetActivate
- 类型:Function
- 默认值:null
- 作用:激活工作表前
- 参数:
- {Number} [i]: sheet页的`index`
- {Boolean} [isPivotInitial]: 是否切换到了数据透视表页
- {Boolean} [isNewSheet]: 是否新建了sheet页
------------
### sheetDeactivateBefore
TODO
- 类型:Function
- 默认值:null
- 作用:工作表从活动状态转为非活动状态前
- 参数:
- {Number} [i]: sheet页的`index`
------------
### sheetDeactivateAfter
TODO
- 类型:Function
- 默认值:null
- 作用:工作表从活动状态转为非活动状态后
- 参数:
- {Number} [i]: sheet页的`index`
### imageDeleteBefore
- 类型:Function
- 默认值:null
- 作用:图片删除前触发
- 参数:
- {Object} [imageItem]: 要删除的图片配置对象
### imageDeleteAfter
- 类型:Function
- 默认值:null
- 作用:图片删除后触发,如果自定义了图片上传,可在此处发请求删除图片
- 参数:
- {Object} [imageItem]: 删除的图片配置对象
```js
{
hook: {
imageDeleteAfter: function (imageItem) {
var src = imgItem.src;
$.post('/rest/file/deletebyurl', {downloadUrl: src});
}
}
}
```
------------
## 工作簿
### workbookCreateBefore
- 类型:Function
- 默认值:null
- 作用:表格创建之前触发。旧的钩子函数叫做`beforeCreateDom`
- 参数:
- {Object} [book]: 整个工作簿的配置(options
------------
### workbookCreateAfter
- 类型:Function
- 默认值:null
- 作用:表格创建之后触发
- 参数:
- {Object} [book]: 整个工作簿的配置(options
------------
### workbookDestroyBefore
TODO
- 类型:Function
- 默认值:null
- 作用:表格销毁之前触发
- 参数:
- {Object} [book]: 整个工作簿的配置(options
------------
### workbookDestroyAfter
TODO
- 类型:Function
- 默认值:null
- 作用:表格销毁之后触发
- 参数:
- {Object} [book]: 整个工作簿的配置(options
------------
### updated
- 类型:Function
- 默认值:null
- 作用:协同编辑中的每次操作后执行的方法,监听表格内容变化,即客户端每执行一次表格操作,Luckysheet将这次操作存到历史记录中后触发,撤销重做时因为也算一次操作,也会触发此钩子函数。
- 参数:
- {Object} [operate]: 本次操作的历史记录信息,根据不同的操作,会有不同的历史记录,参考源码 [历史记录](https://github.com/mengshukeji/Luckysheet/blob/master/src/controllers/controlHistory.js)
------------
### resized
TODO
- 类型:Function
- 默认值:null
- 作用:resize执行之后
- 参数:
- {Object} [size]: 整个工作簿区域的宽高
------------
### scroll
- 类型:Function
- 默认值:null
- 作用:监听表格滚动值
- 参数:
- {Number} [scrollLeft]: 水平方向滚动值
- {Number} [scrollTop]: 垂直方向滚动值
- {Number} [canvasHeight]: 滚动容器的高度
------------
## 协作消息
### cooperativeMessage
- 类型:Function
- 默认值:null
- 作用:接受协作消息,二次开发。拓展协作消息指令集
- 参数:
- {Object} : 收到服务器发送的整个协作消息体对象
## 图片
### imageInsertBefore
TODO
- 类型:Function
- 默认值:null
- 作用:图片插入之前
- 参数:
- {Object} [url]: 图片地址
------------
### imageInsertAfter
TODO
- 类型:Function
- 默认值:null
- 作用:图片插入之后
- 参数:
- {Object} [item]]: 图片地址、宽高、位置等信息
------------
### imageUpdateBefore
TODO
- 类型:Function
- 默认值:null
- 作用:图片修改之前,修改的内容包括宽高、位置、裁剪等操作
- 参数:
- {Object} [item]]: 图片地址、宽高、位置等信息
------------
### imageUpdateAfter
TODO
- 类型:Function
- 默认值:null
- 作用:图片修改之后,修改的内容包括宽高、位置、裁剪等操作
- 参数:
- {Object} [oldItem]]: 修改前图片地址、宽高、位置等信息
- {Object} [newItem]]: 修改后图片地址、宽高、位置等信息
------------
### imageDeleteBefore
TODO
- 类型:Function
- 默认值:null
- 作用:图片删除之前
- 参数:
- {Object} [item]]: 图片地址、宽高、位置等信息
------------
### imageDeleteAfter
TODO
- 类型:Function
- 默认值:null
- 作用:图片删除之后
- 参数:
- {Object} [item]]: 图片地址、宽高、位置等信息
------------
## 批注
### commentInsertBefore
- 类型:Function
- 默认值:null
- 作用:插入批注之前,`return false` 则不插入批注
- 参数:
- {Number} [r]:单元格所在行号
- {Number} [c]:单元格所在列号
------------
### commentInsertAfter
- 类型:Function
- 默认值:null
- 作用:插入批注之后
- 参数:
- {Number} [r]:单元格所在行号
- {Number} [c]:单元格所在列号
- {Object} [cell]: 被插入批注所在的单元格信息,如:`{ r:0,c:2,v:{m:'233',v:'233'}}`,包含批注信息
------------
### commentDeleteBefore
- 类型:Function
- 默认值:null
- 作用:删除批注之前,`return false` 则不删除批注
- 参数:
- {Number} [r]:单元格所在行号
- {Number} [c]:单元格所在列号
- {Object} [cell]: 要删除的批注所在的单元格信息,如:`{ r:0,c:2,v:{m:'233',v:'233'}}`,可以看到批注信息
------------
### commentDeleteAfter
- 类型:Function
- 默认值:null
- 作用:删除批注之后
- 参数:
- {Number} [r]:单元格所在行号
- {Number} [c]:单元格所在列号
- {Object} [cell]: 被删除批注所在的单元格信息,如:`{ r:0,c:2,v:{m:'233',v:'233'}}`,可以看到批注已被删除
------------
### commentUpdateBefore
- 类型:Function
- 默认值:null
- 作用:修改批注之前,`return false` 则不修改批注
- 参数:
- {Number} [r]:单元格所在行号
- {Number} [c]:单元格所在列号
- {String} [value]: 新的批注内容
------------
### commentUpdateAfter
- 类型:Function
- 默认值:null
- 作用:修改批注之后
- 参数:
- {Number} [r]:单元格所在行号
- {Number} [c]:单元格所在列号
- {Object} [oldCell]: 修改前批注所在的单元格信息,如:`{ r:0,c:2,v:{m:'233',v:'233'}}`
- {Object} [newCell]: 修改后批注所在的单元格信息,如:`{ r:0,c:2,v:{m:'233',v:'233'}}`
------------
## 数据透视表
### pivotTableEditBefore
TODO
- 类型:Function
- 默认值:null
- 作用:修改数据透视表之前,操作如:拖动字段等
- 参数:
- {Object} [sheet]: 数据透视表所在sheet页配置
------------
### pivotTableEditAfter
TODO
- 类型:Function
- 默认值:null
- 作用:修改数据透视表之后,操作如:拖动字段等
- 参数:
- {Object} [oldSheet]: 修改前数据透视表所在sheet页配置
- {Object} [newSheet]: 修改后数据透视表所在sheet页配置
------------
## 冻结
### frozenCreateBefore
TODO
- 类型:Function
- 默认值:null
- 作用:设置冻结前
- 参数:
- {Object} [frozen]: 冻结类型信息
------------
### frozenCreateAfter
TODO
- 类型:Function
- 默认值:null
- 作用:设置冻结后
- 参数:
- {Object} [frozen]: 冻结类型信息
------------
### frozenCancelBefore
TODO
- 类型:Function
- 默认值:null
- 作用:取消冻结前
- 参数:
- {Object} [frozen]: 冻结类型信息
------------
### frozenCancelAfter
TODO
- 类型:Function
- 默认值:null
- 作用:取消冻结后
- 参数:
- {Object} [frozen]: 冻结类型信息
------------
## 打印
### printBefore
TODO
- 类型:Function
- 默认值:null
- 作用:打印前
------------
## 旧版钩子函数
### fireMousedown
- 类型:Function
- 默认值:null
- 作用:单元格数据下钻自定义方法,注意此钩子函数是挂载在options下:`options.fireMousedown`
------------
## 分页器
### onTogglePager
- 类型:Function
- 默认值:null
- 作用:点击分页按钮回调函数,返回当前页码,具体参数参照[sPage backFun](https://github.com/jvbei/sPage)
- 参数:
- {Object} [page]: 返回当前分页对象
------------