1.0.5 • Published 4 years ago

pivot-grid-plus v1.0.5

Weekly downloads
-
License
MIT
Repository
-
Last release
4 years ago

Pivot Grid Plus

功能介绍

DevExtreme Pivot Grid 插件的基础上进行了二次开发, 在完全支持 DevExtreme 插件原有功能的基础上,通过二次开发更加符合了迦南云的应用需求场景。

管理方式

该包放在 gitlab 上管理,而 npm 上只发布编译后的文件

# 发布一个版本到 npm 上
# 该命令将会执行 npm run build && npm publish
# 将会把打包生成后的文件(含dist且不包含.npmignore文件中定义的文件) 目录发不到 npm 上
$ npm run publish

UML

流程图

安装

$ npm install pivot-grid-plus

使用

开发模式

npm run serve

项目引用

import { PivotGridPlus } from "pivot-grid-plus";

//  实例化
let P = new PivotGridPlus({
  el: document.getElementById("PivotBox"),
  //  ... 参数
});

//  调用方法
P.collapseAll();

//  绑定事件
P.instance().on("eventName", () => {
  //  ... handler
});

参数

el

透视表所渲染所需的 DOM 容器

类型默认值描述
HTMLElementundefined透视表所渲染所需的 DOM 容器

expandAll

类型默认值描述
booleantrue默认是否展开全部

dataFieldArea

类型默认值描述
"column"/"row"column字段显示位置

该值将会影响,当数据 Field 的 "area" 为 "data" 时, 表格显示的方式,

如果该值为 "column" 时, "data" 将会显示在 "column" 上

如果该值为 "row" 时, "data" 将会显示在 "row" 上

具体请产考 dataFieldArea

wordWrapEnabled

类型默认值描述
booleanfalse在 td 中的文本是否换行

dataSource

类型默认值描述
PivotGridDataSourceOptionsundefined数据配置

具体请参考dataSource

tdCustomStyle

类型默认值描述
TCustomStyleObj,stringundefined配置表格中 td 元素的自定义样式

通过此配置可以完成更为复杂的 td 样式关闭,比如在文本不换行的同时,进行溢出显示省略号。

type TCustomStyleObj = {
  data: string | Partial<{}>;
  row: string | Partial<{}>;
  column: string | Partial<{}>;
  all: string | Partial<{}>;
  [key: string]: any;
};

//  配置共分3项
//  1. data 指的是 area 为 data 的字段
//  2. row 指的是 area 为 row 的字段
//  3. column 指的是 area 为 column 的字段

//  例子 1
//  以下样式将会应用于所有的 td
{
  tdCustomStyle: "text-align:center;color:#888;";
}

//  例子 2
//  所有td字体颜色都改为 #888,
//  但是只有 area 为 data 的字段文本居中显示
{
  tdCustomStyle:{
    all:"color:#888",
    data:"text-align:center;"
  }
}

inheritHeight

类型默认值描述
booleanfalse透视表的高度是否继承父元素高度

useBetterScroller

类型默认值描述
booleantrue是否使用自定义的滚动条

emptyPlaceHolder

类型默认值描述
stringundefined数据值为空时的站位文本

summaryType

类型默认值描述
summaryType"count"统计的方式
type summaryType = "sum" | "min" | "max" | "avg" | "count";

具体参考 summaryType

注:该值是在内部已经实现接口,只需要在初始化时候传入就行了,它的基本行为也是修改 dataSource 里面的 fields 字段

customFields

类型默认值描述
Field[][]自定义 field

Field 类型请参考这里

该参数能在不修改原有的数据的基础上,额外增加用户自定义的字段配置

//  下面这个例子,向表格中添加了一个自定义统计字段
new PivotGridPlus({
  //  ... 参数
  customFields: [
    {
      caption: "自定义统计",
      area: "data",
      calculateSummaryValue: function (e) {
        let cell = e.cell();
        let arrayLength = 6;
        if (cell) {
          let value =
            cell.slice(0, arrayLength).reduce((a, b) => a + b, 0) / arrayLength;
          return Math.trunc(value * 100) + "%";
        } else {
          return "null";
        }
      },
    },
  ],
});

额外参数

该插件基于 DevExtreme Pivot Grid 进行二次开发, 因此支持其所有配置

点击查看参数列表

使用方式也较为简单,直接在实例化时候配置即可

new PivotGridPlus({
  //  ... 其他参数
  //  下面这个参数就是来自于 DevExtreme Pivot Grid
  allowExpandAll: false,
});

方法

方法直接在实例化对象上使用即可

let P = new PivotGridPlus();
P.updateOptions();

updateOptions

接受参数返回描述
Objectundefined更新参数
let P = new PivotGridPlus();
P.updateOptions({
  summaryType: "count",
  emptyPlaceHolder: "--",
  dataSource: newData,
});

expandAll

接受参数返回描述
undefinedundefined展开所有字段

collapseAll

接受参数返回描述
undefinedundefined收起所有字段

destroy

接受参数返回描述
undefinedundefined销毁实例

额外方法

该插件基于 DevExtreme Pivot Grid 进行二次开发, 因此支持其所有方法

点击查看方法列表

使用方式也较为简单,直接在实例化对象上调用即可

let P = new PivotGridPlus();
//  下面这个方法就是来自于 DevExtreme Pivot Grid
P.getDataSource();

事件

//  事件绑定方式有两种

//  1. 通过参数传递
let P = new PivotGridPlus({
  onCellClick(e) {
    //  todo something
  },
});

//  2. 通过实例对象绑定
P.instance().on("cellClick", () => {
  //  todo something
});

事件大全

该插件基于 DevExtreme Pivot Grid 进行二次开发, 因此支持其所有事件

点击查看事件列表

项目结构

📦pivot-grid-plus
┣ 📂build vite 功能配置,一般不需要改任何东西
┃ ┗ 📂vite
┃ ┃ ┗ 📂plugin
┃ ┃ ┃ ┣ 📜index.ts
┃ ┃ ┃ ┗ 📜mock.ts
┣ 📂mock mock.js 模拟数据,用于测试透视表功能 由 vite-plugin-mock 驱动
┃ ┣ 📂modules
┃ ┃ ┗ 📜api.ts
┃ ┗ 📜_createProductionServer.ts
┣ 📂public 资源文件夹,通过 npm run build 后会一并打包至 dist 目录
┃ ┗ 📂icons
┣ 📂src 主开发目录
┃ ┣ 📂@packages packages 包文件夹
┃ ┃ ┗ 📂devextreme devextreme 打包好后的文件夹, 这里只提取了 esm 和 scs 目录
┃ ┃ ┃ ┣ 📂esm devextreme 打包出来的 ES module 的 js 文件夹
┃ ┃ ┃ ┗ 📂scss devextreme 打包出来的 scss 文件
┃ ┣ 📂js 自定义功能 js 该文件夹存放非涉及二次开发的 js 文件
┃ ┣ 📂scss 自定义 scss 该文件夹存放非涉及二次开发的 scss 文件
┃ ┣ 📜index.ts 项目启动文件,该文件用于测试功能,并不用打包
┃ ┗ 📜main.ts 项目入口文件,该文件才是最终 dist 文件夹中打包好的 js 入口文件
┣ 📜.gitignore
┣ 📜index.html
┣ 📜package.json
┣ 📜tsconfig.json
┗ 📜vite.config.ts
1.0.5

4 years ago

1.0.4

4 years ago

1.0.2

4 years ago

1.0.3

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago