开发echarts-pro图表组件

运行效果

通过使用echarts-pro图表组件,实现下面8种图表

设计思路

使用 echarts-for-react 组件实现echarts-pro图表组件。

echarts-for-react 组件

使用方法如下

组件包文件结构

  • 上面是组件包的文件结构,组件下载到ide后,前端代码在 UI2/comp 目录下,服务端代码在 service/comp 目录下
  • 一个组件包包括一个命名空间(和组件包同名)和一个(或多个)组件
  • 一个组件包括设计时文件、编译时文件和运行时文件
  • 组件使用的外部包放在命名空间的lib目录下

开启组件开发功能

切换到高级页面,点击“开启组件开发”,如下图所示

组件包开发过程

1 新建组件包

复制一个组件包,修改里面的文件名和文件内容,注意大小写。

本例复制 UI2/comp/antdpro 组件包目录为 UI2/comp/chart,保留antdpro命名空间目录,删除其他组件目录,修改目录中所有文件名及文件内容,将antdpro改为chart,将Antdpro改为Chart。

2 导入react组件使用的外部包

安装 echarts-for-react 组件,将 node_modules 目录下 echarts 组件使用的包,复制到 UI2/chart/components/chart/lib/node_modules 目录下,UI2/chart/components/chart/lib 目录下的 __module.js 文件是一个标志文件,必须有,表示这里有外部包。

3 服务端编译

react系列组件一般不需要写服务端编译文件,即server目录下的文件。但是作为组件必须有服务端编译文件,因此在命名空间中定义服务端编译文件,所有组件使用命名空间的服务端编译文件。这些java文件需要通过编译生成classes文件。

命名空间中的服务端编译文件在 UI2/comp/chart/components/chart/server 目录下,里面有src和dsrc,需要编译生成classes和dclasses。编译java文件需要使用本地ide,步骤如下:

  • 进入本地ide,打开eclipse
  • 导入UI2目录

导入项目-选择通用-已存在的项目

选择model/UI2目录

  • 配置构建路径,删除出错的包,重新引入正确的包

打开构建路径配置界面,删除出错的包

引入 apache-tomcat-8.5\lib\servlet-api.jar

引入 apache-tomcat-8.5\webapps-system\x5\WEB-INF\lib 下的3个jar:commons-io-2.11.0.jar、commons-compress-1.21.jar、fastjson-1.2.29.sec10.jar

  • 设置源码路径

在 UI2/comps/chart/components/chart/server 目录上点右键,点击设置src、dsrc为源码路径,如下图所示

再将下面的4个目录设置为源码路径 UI2/wxsys/comps/common UI2/wxsys/comps/reactContainer/server UI2/system/resources UI2/system/service/meta

设置后,效果如下图所示

经过上面的步骤,java文件已经编译完成,classes和dclasses目录下分别编译出class文件。

组件开发过程

1 新建组件

复制一个组件目录,修改里面的文件名和文件内容,注意大小写

本例复制 UI2/comp/antdpro/components/Button 组件目录为 UI2/comp/chart/components/Echarts,修改目录中所有文件名及文件内容,将button改为echarts,将Button改为Echarts。

2 配置组件名称、图标和模板

打开组件模板文件 UI2/comp/chart/components/Echarts/designer/Echarts.xml,如下图所示

  • element中的text是组件名称
  • element中的icon是组件图标
    • 图片文件位于 UI2/comp/chart/components/Echarts/designer/img/line.jpg
  • template中的代码是组件模板
    • 在页面添加组件后,模板是加在w文件中的代码
    • 在模板中定义了组件默认的宽和高

3 在组件面板中显示

打开组件面板配置文件 UI2/comp/chart/components/chart.components.xml,如下图所示

  • catalog中的name是组件分类名称
  • item中的device属性声明组件所在端,本组件可跨端使用(企业桌面端和移动端),删除该属性
  • item中的module属性一般组件不需要,删除即可

切换到chart开发端后,点击chart组件包右侧的“更新配置文件”按钮,如下图所示。

更新后,切换到企业桌面端或移动端,在组件面板的高级分类中会显示出该组件

4 在设计器中显示

打开组件设计时css文件 UI2/comp/chart/components/Echarts/designer/css/echarts.css,定义样式如下,在设计器中显示一张图片。

将组件拖放到页面上,组件显示为一张图片。

5 配置组件属性

打开组件meta文件 UI2/comp/chart/components/Echarts/Echarts.meta.json,定义5个属性,如下图所示

  • 在properties中定义属性
  • 所有属性都需要定义
  • 不显示的属性不定义label
  • bind:options和bind:optionsFilter是两个特殊的属性
    • bind:options用来选择页面上的数据集组件
    • bind:optionsFilter用来设置过滤条件
    • 在react.js中可通过this.getOptions();获取到过滤好的数据
  • option属性中存储的json会包括function,因此需要使用双花括号{{}}存储

6 配置组件工具栏

打开组件meta文件 UI2/comp/chart/components/Echarts/Echarts.meta.json,定义一个设置图表按钮,如下图所示

  • 在toolbar中定义工具栏按钮
  • text是按钮上的文字
  • method是组件设计时js文件中的方法名
  • 点击按钮就是调用js方法

在 UI2/comp/chart/components/Echarts/designer/Echarts.js 文件中定义editOption方法。该方法打开 UI2/comp/chart/components/Echarts/designer/dialog/chartConfig.w 页面(该页面使用PC经典端开发),将页面返回的内容写入w页面。

7 配置组件操作和方法

打开组件meta文件 UI2/comp/chart/components/Echarts/Echarts.meta.json,定义一个显示图表的操作,如下图所示

  • 在operations中定义操作
  • label是分类名称
  • items里面的label是操作名称
  • items里面的name是组件运行时js文件中的方法名
  • 调用操作就是调用js方法

在 UI2/comp/chart/components/Echarts/Echarts.react.js 文件中定义showChart方法,这是组件的方法,也是组件的操作调用的方法。

8 配置组件事件

打开组件meta文件 UI2/comp/chart/components/Echarts/Echarts.meta.json,定义2个事件,如下图所示

  • 在events中定义事件
  • events中的节点是事件名称
  • label是事件中文名称
  • data是参数名称
  • detail是参数event.detail的描述
  • cancelable是是否可取消

在 UI2/comp/chart/components/Echarts/Echarts.react.js 文件中定义事件参数 beforeSetOptionEvent,派发事件 fireEvent,接收用户事件中修改的参数,代码如下:

9 在运行时显示

在组件运行时js文件 UI2/comp/chart/components/Echarts/Echarts.react.js 中,导入echarts-for-react和echarts两个包,代码如下

定义render方法,代码如下:

10 调试组件

  • 切换到企业桌面端或移动端
  • 在页面上添加图表组件、选择数据、设置图表
  • 保存、预览

11 导出组件包

切换到chart开发端,点击chart组件包右侧的导出按钮,如下图所示,导出chart.zip文件

12 上传市场并审核

进入控制台,打开组件市场功能,点击上传组件按钮,再点击上传按钮,输入组件包信息,上传组件包文件,点击提交审核按钮

控制台管理员system进入控制台,打开审核授权-组件上架审核功能,点击审核中或更新审核中,显示出提交待审核的组件,点击审核按钮,再点击通过按钮

打开应用,添加市场组件,可以看到图表组件

至此,图表组件开发完毕

results matching ""

    No results matching ""

    results matching ""

      No results matching ""