diff --git a/Data Show GUI.jar b/DataShowGUI.jar similarity index 99% rename from Data Show GUI.jar rename to DataShowGUI.jar index 933aadc4a0756eafe55497c882c36d74a6dd1563..9598b8679984807511a5ddbb39cfca77dd7b56c9 100644 Binary files a/Data Show GUI.jar and b/DataShowGUI.jar differ diff --git a/README.md b/README.md index c3844e1e5eb77273d2d4c3611cbc35957f4ae3f6..cba438bf23ce31af318faeb0cfdaaec413bcccc3 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ #### 使用说明 -1.启动成功后,浏览器输入`localhost:8083`即可使用 +1.启动成功后,浏览器输入`http://localhost:8083`即可使用 2.具体使用方式见使用文档 #### 特性说明 @@ -26,7 +26,7 @@ 1.支持从openGauss数据库中导入数据 2.支持从外部文件中导入数据 3.支持数据筛选 -4.支持以柱状图、折线图、散点图、面积图、组合图、条形图、饼状图、雷达图、曲面图的形式展示数据 +4.支持以柱状图、折线图、散点图、面积图、组合图、条形图、饼状图、雷达图、3D散点图的形式展示数据 #### 参与贡献 diff --git "a/information/Data Show GUI \345\267\245\345\205\267\344\275\277\347\224\250\350\257\264\346\230\216\344\271\246.md" "b/information/Data Show GUI \345\267\245\345\205\267\344\275\277\347\224\250\350\257\264\346\230\216\344\271\246.md" new file mode 100644 index 0000000000000000000000000000000000000000..0ad3282ac86d7ed46950d129507e4f614570612d --- /dev/null +++ "b/information/Data Show GUI \345\267\245\345\205\267\344\275\277\347\224\250\350\257\264\346\230\216\344\271\246.md" @@ -0,0 +1,559 @@ +# Data Show GUI 工具使用说明书 + +## v1.0.0 + +\ + + + +# 一 修订记录 + +| 版本号 | 修订人 | 修改内容 | 修订日期 | +| ------ | ------ | ------------------------------------------------------------ | --------- | +| v1.0.0 | 李亮杰 | 试运行版本 | 2022.8.29 | +| v1.0.1 | 李亮杰 | 1.增加对“添加数据项”的说明 2.增加对“重新加载数据源”的说明 3.增加对“从文件导入”的文件大小说明 4.增加对“从.txt文件中导入”的说明 5.移除“其他设置”中查看数据项的说明 6.规范文档格式 | 2022.9.8 | +| v1.0.2 | 李亮杰 | 1.修改对于“删除某行某列”的说明 2.增加对3D散点图的说明 | 2022.9.13 | + + + +# 二 系统概述 + +## 2.1 项目背景 + +openGauss是华为自研的开源的关系型数据库数据库。随着数据库使用场景日渐丰富、数据库使用方式更加多样,对于数据(库)可视化的要求应运而生。然而,目前市面上现有的可视化工具、可视化软件,不支持openGauss数据库;华为自研的Data Studio工具能将数据库里的数据以表格的形式体现,却暂未实现以柱状图、饼状图等图表的形式展示数据。 + +基于上述背景以及痛点,本工具支持用户从openGauss数据库导入数据、支持用户上传利用Data Studio工具从openGauss数据库导出的CSV、Excel文件,继而以柱状图、饼状图、折线图、散点图、组合图、条形图、雷达图、3D散点图进行展示。 + +## 2.2 项目目标 + +| 序号 | 功能 | 详细说明 | 具体目标 | +| ---- | --------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 支持openGauss数据源 | 支持源数据通过jdbc执行sql查询后得到 | 支持通过sql来得到源数据,包括去重、排序、分组语句。 | +| 2 | 支持openGauss导出的数据表单 | 支持从Data Studio等客户端工具导出的xlsx、txt、csv等数据输入方式 | 支持从xlsx、txt、csv导入待分析数据,必要时可允许用户定制数据格式转换函数,包括将字符类型转为整型等。 | +| 3 | 支持用户设置/移除感兴趣的行或者列 | 从源导入数据后,允许用户再次对数据进行排序、筛选、删除、重新载入操作 | 1.数据操作后,可以通过重新载入恢复源导入的数据 2.可以对数据排序 3.可以筛选某几行或某几列 4.可以删除某几行或某几列 5. 2.3.4可以进行任意步后,剩余数据将可以进行下一步分析 | +| 4 | 绘制可视化图表 | 利用echarts可以对数据呈现出柱状、折线、饼图、条形图、面积图、XY散点图、曲面图、雷达图,以及组合图 | 1.支持柱状、折线、饼图、条形图、面积图、XY散点图、曲面图、雷达图及组合图 2.支持多路数据以不同的图形呈现 3.支持图例切换 4.可以在图形上对图例进行筛选显示 | + + + +## 2.3 Data Show GUI主要操作流程 + +准备操作 + +(1)切换到DataShowGUI.jar的目录 + +(2)命令行输入java -jar DataShowGUI.jar + +(3)浏览器输入localhost:8083 + +### 2.3.1 添加数据源 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/2.3.1.png) + +STEP 1 点击"添加数据源"按钮 + +STEP 2 在右侧选择添加数据源的方式 + +### 2.3.2 筛选数据 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/2.3.2.png) + +STEP 1 刷新已有数据源 + +STEP 2 选择要筛选的数据源 + +### 2.3.3 可视化 + +![图形用户界面, 应用程序 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/2.3.3.png) + +STEP 1 保存对数据源进行的修改 + +STEP 2 点击"可视化"按钮进行可视化配置 + +STEP 3 选择可视化图表类型 + +STEP 4 点击"添加echarts数据项"进行数据项配置 + +![图形用户界面, 网站 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/2.3.3_1.png) + +STEP 5 配置数据项 + +STEP 6 保存数据项配置 + +![图形用户界面, 应用程序 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/2.3.3_2.png) + +**说明:** + +可以配置多个数据项 + +STEP 7 点击"绘制可视化图表"进行可视化 + +![图表, 条形图 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/2.3.3_3.png) + +# 三 功能说明 + +按照模块,介绍Data Show GUI系统各个功能的使用方法。 + +## 请务必注意阅读文档中"说明"处的内容 + +## 3.1 添加数据源 + +根据需要,添加数据源 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.1.png) + +**说明:** + +Data Show GUI没有权限调用数据库保存数据,因此所有的提交保存的数据源都是以文件的形式保存在磁盘中的,对数据源的操作效率会受工具运行环境性能以及数据量的影响。 + +### 3.1.1 从数据库中导入数据 + +从数据库中导入数据,操作步骤如下 + +#### 3.1.1.1 建立数据库连接 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.1.1.1.png) + +#### 3.1.1.2 选择数据库连接 + +![图形用户界面, 应用程序, Teams 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.1.1.2.png) + +#### 3.1.1.3 筛选数据 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.1.1.3.png) + +**说明:** + +"数据分组"和"数据筛选"条件不能并存 + +#### 3.1.1.4 保存数据源 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.1.1.4.png) + +**说明:** + +- 数据源名称不要包含"." "/" + +- 数据源名称不要重复 + +- 数据源名称不要太长 + +- 如果数据源(表)数据过多,保存数据源需要等待较长时间 + +#### 3.1.1.5 查看已有数据源 + +![图形用户界面, 应用程序, 表格 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.1.1.5.png) + +提示操作成功时,点击刷新,可以获取最新的数据源列表 + +![图形用户界面, 应用程序, 表格 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.1.1.5_1.png) + +### 3.1.2 从外部文件导入数据 + +**说明:** + +- 一次只能上传一个文件 + +- 文件名将作为数据源名称 + +- 文件名不能包含"." + +- 文件名不要与已有数据源名称重复 + +- 文件名不要太长 + +- 如果文件内数据量太大,解析文件并保存为数据源需要等待较长时间 + +- 文件大小上限为5MB + +#### 3.1.2.1 从.xls .xlsx文件中导入 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.1.2.1.png) + +**说明:** + +- 只加载文件中的第一个sheet + +- 务必保证文件的第一行是表头 + +#### 3.1.2.2 从.csv文件中导入 + +**说明:** + +- 操作方式同3.1.2.1 + +- 务必保证文件的第一行是表头(可通过其他客户端工具导出csv文件时设置) + +#### **3.1.2.3 从.txt文件中导入** + +**说明:** + +- 操作方式同3.1.2.1 + +- 务必保证文件的第一行是表头(可通过其他客户端工具导出txt文件时设置) + +- .txt文件的分隔符需设置为" , " + +## **3.2 筛选数据源** + +### 3.2.1 查看数据源 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.2.1.png) + +### 3.2.2 删除数据源 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.2.2.png) + +### 3.2.3 删除某一行或某一列 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.2.3.png) + +### 3.2.4 批量删除某几行 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.2.4.png) + +**说明:** + +不论是"删除某一行"还是"批量删除某几行", "保存修改"前,删除的数据并未真正删除,只是在后台做了标记,要真正删除需要点击"保存修改"。 + +### 3.2.5 重新加载数据源 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.2.5.png) + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.2.5_1.png) + +### 3.2.6 保存修改 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.2.6.png) + +![图形用户界面, 应用程序, Teams 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.2.6_1.png) + +**说明:** + +- 若数据量过大,"保存修改"耗时会比较长 + +- 要对筛选后的数据源进行可视化操作,必须"保存修改"后再进行,因此强烈建议用户: + + a. 从数据库导入数据时,善用筛选功能过滤出自己要的数据 + + b. 从外部文件导入数据时,通过"导出外部文件的工具"预筛选过滤出自己要的数据 + +## 3.3 可视化图表配置 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.png) + +### 3.3.1 术语解释 + +#### 3.3.1.1 图例与分类(轴)标签 + +若图例选择为unknownPercent,分类(轴)标签选择为id + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.1.1.png) + +- 图例 + + - 对于柱状图、折线图、面积图、散点图、组合图,图例即y轴的数据 + + - 对于直线图,图例即x轴的数据 + + - 对于饼状图,图例即饼状图各个扇形的数据 + +- 分类(轴)标签 + + - 对于柱状图、折线图、面积图、面积图、直线图、组合图,分类(轴)标签即x轴的数据 + + - 对于直线图,图例即y轴的数据 + + - 对于饼状图,分类(轴)标签即饼状图各个扇形的数据的名称 + + - 对于雷达图,分类(轴)标签即雷达图各个数据的名称 + + - **说明:** + + - 分类轴的数据需要保证无重复。日常生活中进行平面直角坐标系绘图时,如果同一个x对应了两个y,那么这样做出来的图也是会有问题的,因此请避免分类轴的数据无重复 + + - 推荐使用数据库表中的无重复自增主键作为分类轴 + + - 或者从数据库表中筛选数据时,使用分组语句保证无重复 + + - 或者从在筛选数据源时,删除分类轴中重复的数据 + + +#### 3.3.1.2 维度 + +雷达图特有的配置,即雷达图的各个指标 + +![图形用户界面, 应用程序, 表格 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.1.2.png) + +### 3.3.2 选择可视化图表类型 + +![图形用户界面, 应用程序, 表格 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.2.png) + +### 3.3.3 柱状图 + +**说明:** + +- 对于每一个数据源,配置数据项时,只需要关注"图例"、"分类(轴)"或"维度",不需要选择具体展示某几条数据 + +- 如果需要展示具体某几条数据,可以在"筛选数据源"时删除那些不需要的数据 + +#### 3.3.3.1 添加数据项 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.3.1.png) + +#### 3.3.3.2 配置数据项 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.3.2.png) + +**说明:** + +- 一个数据项只能选择一个数据源,如果需要从多个数据源中选择数据进行交叉比较,需要新建一个数据项 + +- 每个数据源只能同时被一个数据项选择 + +#### **3.3.3.3 删除数据项** + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.3.3.png) + +#### 3.3.3.4 绘制可视化图表 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.3.4.png) + +**说明:** + +至少需要一个数据项才能绘制可视化图表 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.3.4_1.png) + +### 3.3.4 折线图 + +同3.3.3 + +### 3.3.5 面积图 + +同3.3.3 + +### 3.3.6 散点图 + +同3.3.3 + +### 3.3.7 条形图 + +同3.3.3 + +### 3.3.8 组合图 + +#### 3.3.8.1 添加数据项 + +同3.3.3.1 + +#### 3.3.8.2 配置数据项 + +![图形用户界面, 网站 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.8.2.png) + +**说明:** + +- 一个数据项只能选择一个数据源,如果需要从多个数据源中选择数据进行交叉比较,需要新建一个数据项 + +- 每个数据源只能同时被一个数据项选择 + +#### 3.3.8.3 **删除数据项** + +同3.3.3.3 + +#### 3.3.8.4 绘制可视化图表 + +同3.3.3.4 + +![图表 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.8.4.png) + +### 3.3.9 饼状图 + +#### 3.3.9.1 添加数据项 + +同3.3.3.1 + +**说明:**饼状图只能有一个数据项 + +#### 3.3.9.2 配置数据项 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.9.2.png) + +#### 3.3.9.3 删除数据项 + +同3.3.3.3 + +#### 3.3.9.4 绘制可视化图表 + +同3.3.3.4 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.9.4.png) + +### 3.3.10 雷达图 + +#### 3.3.10.1 添加数据项 + +同3.3.3.1 + +**说明:**雷达图只能有一个数据项 + +#### 3.3.10.2 配置数据项 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.10.2.png) + +**说明:**维度只有选择三个及以上才能体现雷达图的效果(一个维度是一个点,两个维度是一条线) + +#### 3.3.10.3 删除数据项 + +同3.3.3.3 + +#### 3.3.10.4 绘制可视化图表 + +同3.3.3.4 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.10.4.png) + +### 3.3.11 3D散点图 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.11.png) + +## 3.4 可视化图表详细设置 + +### 3.4.1 柱状图 + +#### 3.4.1.1 选择数据范围 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.1.1.png) +**说明:** + +- 如果有多个数据项,数据条数取决于数据条数最多的那个数据项 + +- 默认先加载数据源的前10条数据 + +- !!!特别注意!!!虽然理论上可以全量加载数据,但是根据工具运行环境的性能差异,工具在大数据可视化时体现的性能不同,!!!强烈不建议同时加载大量数据!!! + +#### **3.4.1.2 标题设置** + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.1.2.png) + +#### 3.4.1.3 图例设置 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.1.3.png) + +#### 3.4.1.4 绘图网格设置 + +![图表, 条形图 描述已自动生成](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.1.4.png) + +**说明:** + +- 网格左右侧距离的单位是%,上下侧距离的单位是px + +- 根据用户显示器分辨率不同,距离调整会有偏差,如:网格下侧距离设置为0,可能图表横轴会超出屏幕范围 + +#### **3.4.1.5 横轴设置** + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.1.5.png) + +**说明:** + +- 当横轴数据太多,标签展示不全时,可以采取 + + a. 增加标签间隔 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.1.5_a.png) + +b. 旋转标签 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.1.5_b.png) + +#### **3.4.1.6 纵轴设置** + +同3.4.1.5 + +#### **3.4.1.7 其他设置** + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.1.7.png) + +#### **3.4.1.8 保存图表等其他功能** + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.1.8.png) + +**说明:** + +- "转换为折线图""转换为柱状图"仅对柱状图、折线图生效 + +### 3.4.2 折线图 + +同3.4.1 + +### 3.4.3 面积图 + +同3.4.1 + +### 3.4.4 散点图 + +同3.4.1 + +### 3.4.5 条形图 + +同3.4.1 + +### 3.4.6 组合图 + +同3.4.1 + +### 3.4.7 饼状图 + +本节未提到的设置均与3.4.1相同 + +#### 3.4.7.1 图例设置 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.7.1.png) + +**说明:** + +- 饼状图会自动为图例设置颜色,不能自己设置图例颜色 + +- 饼状图的图例只有9种颜色 + + a. 当有10条数据的时候,第10条数据和第1条数据颜色会相同,依次类推。 + + b. 为了区分,可以打开"南丁格尔图"选项。 + +#### **3.4.7.2 饼图设置** + +**说明:**饼图没有横轴、纵轴设置、其他设置 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.7.2.png) + +##### **3.4.7.2.1 南丁格尔图** + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.3.7.2.1.png) + +### 3.4.8 雷达图 + +#### 3.4.8.1 图例设置 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.8.1.png) + +**说明:** + +雷达图图例不能指定颜色 + +#### **3.4.8.2 雷达图设置** + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.8.2.png) + +### 3.4.9 3D散点图 + +同3.4.1 + +**说明:**3D散点图只支持如下图所示的个性化定制功能 + +![](https://gitee.com/liliangjie123/easyVisualization/raw/master/information/img/3.4.9.png) + +# 四 删除Data Show GUI +1.退出浏览器并在终端关闭DataShowGUI进程(ctrl + c 终止进程) + +2.删除DataShowGUI.jar + +3.删除运行目录下的data-source目录和data-source-edit目录 diff --git a/information/Third_Party_Open_Source_Software_List.yaml b/information/Third_Party_Open_Source_Software_List.yaml new file mode 100644 index 0000000000000000000000000000000000000000..42ac74cacccd5b17db87aa47557c5f21bb5beff5 --- /dev/null +++ b/information/Third_Party_Open_Source_Software_List.yaml @@ -0,0 +1,59 @@ +spring-boot-starter-web: + cpeName: spring-boot-starter-web + version: 2.3.7.RELEASE + url: 'https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web' + +mybatis-plus-boot-starter: + cpeName: mybatis-plus-boot-starter + version: 3.5.1 + url: 'https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter/' + +dynamic-datasource-spring-boot-starter: + cpeName: dynamic-datasource-spring-boot-starter + version: 3.5.1 + url: 'https://mvnrepository.com/artifact/com.baomidou/dynamic-datasource-spring-boot-starter' + +lombok: + cpeName: lombok + version: 1.18.16 + url: 'https://mvnrepository.com/artifact/org.projectlombok/lombok' + +spring-boot-starter-test: + cpeName: spring-boot-starter-test + version: 2.3.7.RELEASE + url: 'https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test' + +junit-vintage-engine: + cpeName: junit-vintage-engine + version: + url: 'https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine' + +validation-api: + cpeName: validation-api + version: 2.0.1.Final + url: 'https://mvnrepository.com/artifact/javax.validation/validation-api' + +poi-ooxml: + cpeName: poi-ooxml + version: 4.1.2 + url: 'https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml' + +commons-io: + cpeName: commons-io + version: 2.4 + url: 'https://mvnrepository.com/artifact/commons-io/commons-io' + +fastjson: + cpeName: fastjson + version: 1.2.75 + url: 'https://mvnrepository.com/artifact/com.alibaba/fastjson' + +commons-csv: + cpeName: commons-csv + version: 1.7 + url: 'https://mvnrepository.com/artifact/org.apache.commons/commons-csv' + +snakeyaml: + cpeName: snakeyaml + version: 1.3 + url: 'https://mvnrepository.com/artifact/org.yaml/snakeyaml' \ No newline at end of file diff --git a/information/img/2.3.1.png b/information/img/2.3.1.png new file mode 100644 index 0000000000000000000000000000000000000000..016925d50200b720c3882f1d915827d07dc52bc7 Binary files /dev/null and b/information/img/2.3.1.png differ diff --git a/information/img/2.3.2.png b/information/img/2.3.2.png new file mode 100644 index 0000000000000000000000000000000000000000..49d5bbf2c5460b27c9c5dac8858ebc9c7c722a7f Binary files /dev/null and b/information/img/2.3.2.png differ diff --git a/information/img/2.3.3.png b/information/img/2.3.3.png new file mode 100644 index 0000000000000000000000000000000000000000..f33c1632bb280818a670968812b0791f7cfe5ce1 Binary files /dev/null and b/information/img/2.3.3.png differ diff --git a/information/img/2.3.3_1.png b/information/img/2.3.3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f9308473bc2fc5a3abb1317803c59e078f2fe415 Binary files /dev/null and b/information/img/2.3.3_1.png differ diff --git a/information/img/2.3.3_2.png b/information/img/2.3.3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..727438041834692a8c57a15b01f0d29059626d49 Binary files /dev/null and b/information/img/2.3.3_2.png differ diff --git a/information/img/2.3.3_3.png b/information/img/2.3.3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..738ed5de3e5780c905814bd786dc4989630eef3d Binary files /dev/null and b/information/img/2.3.3_3.png differ diff --git a/information/img/3.1.1.1.png b/information/img/3.1.1.1.png new file mode 100644 index 0000000000000000000000000000000000000000..b864d2b5bf1995f4a2da7694deca8cfd56460143 Binary files /dev/null and b/information/img/3.1.1.1.png differ diff --git a/information/img/3.1.1.2.png b/information/img/3.1.1.2.png new file mode 100644 index 0000000000000000000000000000000000000000..99b429bcd5d2dbba16284245083f90d909a99628 Binary files /dev/null and b/information/img/3.1.1.2.png differ diff --git a/information/img/3.1.1.3.png b/information/img/3.1.1.3.png new file mode 100644 index 0000000000000000000000000000000000000000..86f34378d2cb3c62cb0cc99392d5442e223ebef3 Binary files /dev/null and b/information/img/3.1.1.3.png differ diff --git a/information/img/3.1.1.4.png b/information/img/3.1.1.4.png new file mode 100644 index 0000000000000000000000000000000000000000..190ef3442191297a1deaebe5d40b2a957791d659 Binary files /dev/null and b/information/img/3.1.1.4.png differ diff --git a/information/img/3.1.1.5.png b/information/img/3.1.1.5.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8be38df077c2e48a618ad6e429b4e98c8c8e55 Binary files /dev/null and b/information/img/3.1.1.5.png differ diff --git a/information/img/3.1.1.5_1.png b/information/img/3.1.1.5_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e6aa2d54786bc73327596927e61c91732edc635c Binary files /dev/null and b/information/img/3.1.1.5_1.png differ diff --git a/information/img/3.1.2.1.png b/information/img/3.1.2.1.png new file mode 100644 index 0000000000000000000000000000000000000000..ca123edeabb3588345d607c571b1ed09e83bfffc Binary files /dev/null and b/information/img/3.1.2.1.png differ diff --git a/information/img/3.1.png b/information/img/3.1.png new file mode 100644 index 0000000000000000000000000000000000000000..c67449009a3c1b902e07eac49456f65db895d527 Binary files /dev/null and b/information/img/3.1.png differ diff --git a/information/img/3.2.1.png b/information/img/3.2.1.png new file mode 100644 index 0000000000000000000000000000000000000000..75950eb7ff327fbacd5a19daac8fafe3d02cd33f Binary files /dev/null and b/information/img/3.2.1.png differ diff --git a/information/img/3.2.2.png b/information/img/3.2.2.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab11b3f4b1c2c313d4b87b41c0ab014019695bc Binary files /dev/null and b/information/img/3.2.2.png differ diff --git a/information/img/3.2.3.png b/information/img/3.2.3.png new file mode 100644 index 0000000000000000000000000000000000000000..fdccf287164e972397f46c929f7d1a764574d46e Binary files /dev/null and b/information/img/3.2.3.png differ diff --git a/information/img/3.2.4.png b/information/img/3.2.4.png new file mode 100644 index 0000000000000000000000000000000000000000..424588891e34bd2a09dd8db997962ef34c3839d2 Binary files /dev/null and b/information/img/3.2.4.png differ diff --git a/information/img/3.2.5.png b/information/img/3.2.5.png new file mode 100644 index 0000000000000000000000000000000000000000..d2fc45b6ab45ab1237eb401f4daf8f8cd893c9fe Binary files /dev/null and b/information/img/3.2.5.png differ diff --git a/information/img/3.2.5_1.png b/information/img/3.2.5_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f75b2896d4b300559f16b7e27c9bc76b33fc1d06 Binary files /dev/null and b/information/img/3.2.5_1.png differ diff --git a/information/img/3.2.6.png b/information/img/3.2.6.png new file mode 100644 index 0000000000000000000000000000000000000000..74fe44e9d8e99404e4907286bc053f02149731ef Binary files /dev/null and b/information/img/3.2.6.png differ diff --git a/information/img/3.2.6_1.png b/information/img/3.2.6_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c0349f058cbdd6f27c1f8e09e45eae49f3a2ac8a Binary files /dev/null and b/information/img/3.2.6_1.png differ diff --git a/information/img/3.3.1.1.png b/information/img/3.3.1.1.png new file mode 100644 index 0000000000000000000000000000000000000000..62642a0c210f2d03276f1a49cab83cdd4725542c Binary files /dev/null and b/information/img/3.3.1.1.png differ diff --git a/information/img/3.3.1.2.png b/information/img/3.3.1.2.png new file mode 100644 index 0000000000000000000000000000000000000000..8125d5898a1366489c27dca67ab6eabb9e1b0e97 Binary files /dev/null and b/information/img/3.3.1.2.png differ diff --git a/information/img/3.3.10.2.png b/information/img/3.3.10.2.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1934f3b8fb547f2b0c69cdd1357a99a5d7458f Binary files /dev/null and b/information/img/3.3.10.2.png differ diff --git a/information/img/3.3.10.4.png b/information/img/3.3.10.4.png new file mode 100644 index 0000000000000000000000000000000000000000..c1114071ba92c1dff140e35d33f3ee8daef6bf55 Binary files /dev/null and b/information/img/3.3.10.4.png differ diff --git a/information/img/3.3.11.png b/information/img/3.3.11.png new file mode 100644 index 0000000000000000000000000000000000000000..94545ee8da41e59a74c7f49edc38c4beb5573547 Binary files /dev/null and b/information/img/3.3.11.png differ diff --git a/information/img/3.3.2.png b/information/img/3.3.2.png new file mode 100644 index 0000000000000000000000000000000000000000..cefe2a59f95ba1eef2f29e252efb3863c383cb22 Binary files /dev/null and b/information/img/3.3.2.png differ diff --git a/information/img/3.3.3.1.png b/information/img/3.3.3.1.png new file mode 100644 index 0000000000000000000000000000000000000000..27a38e31432597e3f8fe932367462211177ce7dd Binary files /dev/null and b/information/img/3.3.3.1.png differ diff --git a/information/img/3.3.3.2.png b/information/img/3.3.3.2.png new file mode 100644 index 0000000000000000000000000000000000000000..81fc143b157b3bf73fecbf00c0d8acb02a710a56 Binary files /dev/null and b/information/img/3.3.3.2.png differ diff --git a/information/img/3.3.3.3.png b/information/img/3.3.3.3.png new file mode 100644 index 0000000000000000000000000000000000000000..4574cf9cc4cefdc05b9cbcda05d6a64f7d090423 Binary files /dev/null and b/information/img/3.3.3.3.png differ diff --git a/information/img/3.3.3.4.png b/information/img/3.3.3.4.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d7ec6dc608d4ae2f8fc7ca78425f5248761e9b Binary files /dev/null and b/information/img/3.3.3.4.png differ diff --git a/information/img/3.3.3.4_1.png b/information/img/3.3.3.4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..278218a0cd11b1b3e7cf48ee91b84b1db6ae2c7b Binary files /dev/null and b/information/img/3.3.3.4_1.png differ diff --git a/information/img/3.3.7.2.1.png b/information/img/3.3.7.2.1.png new file mode 100644 index 0000000000000000000000000000000000000000..8eb1c717300e90b65b797e0ac11e9592b26b33bc Binary files /dev/null and b/information/img/3.3.7.2.1.png differ diff --git a/information/img/3.3.8.2.png b/information/img/3.3.8.2.png new file mode 100644 index 0000000000000000000000000000000000000000..de6fd7a9e2e3d123258a0f2175bd1be029c67f1b Binary files /dev/null and b/information/img/3.3.8.2.png differ diff --git a/information/img/3.3.8.4.png b/information/img/3.3.8.4.png new file mode 100644 index 0000000000000000000000000000000000000000..1647624ee9319f43e7d2397a46255f7b9478f228 Binary files /dev/null and b/information/img/3.3.8.4.png differ diff --git a/information/img/3.3.9.2.png b/information/img/3.3.9.2.png new file mode 100644 index 0000000000000000000000000000000000000000..c34133954e847008549ee34b3742a631356ed248 Binary files /dev/null and b/information/img/3.3.9.2.png differ diff --git a/information/img/3.3.9.4.png b/information/img/3.3.9.4.png new file mode 100644 index 0000000000000000000000000000000000000000..5f7ba76b7f16c08ccaa170942e07a48d24302473 Binary files /dev/null and b/information/img/3.3.9.4.png differ diff --git a/information/img/3.3.png b/information/img/3.3.png new file mode 100644 index 0000000000000000000000000000000000000000..b5ffae73f74834ecae8457db103de10dde08554f Binary files /dev/null and b/information/img/3.3.png differ diff --git a/information/img/3.4.1.1.png b/information/img/3.4.1.1.png new file mode 100644 index 0000000000000000000000000000000000000000..8362132f3cff1f2bd66cfc6b19adefa08f9b426f Binary files /dev/null and b/information/img/3.4.1.1.png differ diff --git a/information/img/3.4.1.2.png b/information/img/3.4.1.2.png new file mode 100644 index 0000000000000000000000000000000000000000..bf35645eaf1ea5529af2154d2f852ec98bfdb1e1 Binary files /dev/null and b/information/img/3.4.1.2.png differ diff --git a/information/img/3.4.1.3.png b/information/img/3.4.1.3.png new file mode 100644 index 0000000000000000000000000000000000000000..fe7a3eb698c2582bdfe7d56bfd43b25a4e3ffcf7 Binary files /dev/null and b/information/img/3.4.1.3.png differ diff --git a/information/img/3.4.1.4.png b/information/img/3.4.1.4.png new file mode 100644 index 0000000000000000000000000000000000000000..1df772149694ff5b5516bb4972e4672df5ca9f00 Binary files /dev/null and b/information/img/3.4.1.4.png differ diff --git a/information/img/3.4.1.5.png b/information/img/3.4.1.5.png new file mode 100644 index 0000000000000000000000000000000000000000..cdacc8327fcfd11970c8073344c99929b4cb98bd Binary files /dev/null and b/information/img/3.4.1.5.png differ diff --git a/information/img/3.4.1.5_a.png b/information/img/3.4.1.5_a.png new file mode 100644 index 0000000000000000000000000000000000000000..43f68297c70cb54fc8c340606a1a8074ce6c9f8f Binary files /dev/null and b/information/img/3.4.1.5_a.png differ diff --git a/information/img/3.4.1.5_b.png b/information/img/3.4.1.5_b.png new file mode 100644 index 0000000000000000000000000000000000000000..5e3ebe555b611d274b27f9ca9ac1710d8a2b0150 Binary files /dev/null and b/information/img/3.4.1.5_b.png differ diff --git a/information/img/3.4.1.7.png b/information/img/3.4.1.7.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b7d8dfddb7734fa3df0940c6622f5b61e3170d Binary files /dev/null and b/information/img/3.4.1.7.png differ diff --git a/information/img/3.4.1.8.png b/information/img/3.4.1.8.png new file mode 100644 index 0000000000000000000000000000000000000000..aab996de2672ad980a4dd091d58a5dfc46a2ba6c Binary files /dev/null and b/information/img/3.4.1.8.png differ diff --git a/information/img/3.4.7.1.png b/information/img/3.4.7.1.png new file mode 100644 index 0000000000000000000000000000000000000000..0b39e531e2a183c65348e0047a0dcf6c05ecb524 Binary files /dev/null and b/information/img/3.4.7.1.png differ diff --git a/information/img/3.4.7.2.png b/information/img/3.4.7.2.png new file mode 100644 index 0000000000000000000000000000000000000000..6b7de3ddd9e59f031b8950bfd3830addd388c138 Binary files /dev/null and b/information/img/3.4.7.2.png differ diff --git a/information/img/3.4.8.1.png b/information/img/3.4.8.1.png new file mode 100644 index 0000000000000000000000000000000000000000..9e70a987c2abf2f72f843533568a982c6483d4d8 Binary files /dev/null and b/information/img/3.4.8.1.png differ diff --git a/information/img/3.4.8.2.png b/information/img/3.4.8.2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec9ab270b6d65d8deea3f54b02dbdc81574bab8 Binary files /dev/null and b/information/img/3.4.8.2.png differ diff --git a/information/img/3.4.9.png b/information/img/3.4.9.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a33b373477774572951744b23823e3f0f84969 Binary files /dev/null and b/information/img/3.4.9.png differ diff --git a/pom.xml b/pom.xml index a090623819159cb206cfb886affb42c8d4fe4179..72099aec99ecf0639f0dd718ee2fe6ef4e75d0e7 100644 --- a/pom.xml +++ b/pom.xml @@ -9,6 +9,7 @@ openGauss可视化项目 + true 1.8 UTF-8 UTF-8 @@ -49,6 +50,19 @@ + + org.junit + junit-bom + 5.3.1 + pom + + + junit + junit + 4.13.1 + test + + javax.validation validation-api @@ -114,6 +128,14 @@ + + org.apache.maven.plugins + maven-surefire-plugin + 2.12.4 + + true + + org.apache.maven.plugins maven-compiler-plugin diff --git a/src/main/java/com/huawei/datashow/controller/ConnectionPoolController.java b/src/main/java/com/huawei/datashow/controller/ConnectionPoolController.java index 687d55e1c1c141283f2d89b773efde0b5cf54642..7a643f229d5310c99a84b3ff1c05d03b3b504028 100644 --- a/src/main/java/com/huawei/datashow/controller/ConnectionPoolController.java +++ b/src/main/java/com/huawei/datashow/controller/ConnectionPoolController.java @@ -34,7 +34,7 @@ public class ConnectionPoolController { try { connectionPoolService.addHikariCP(dto); - return Result.OK("建立数据源连接成功!"); + return Result.OK(); } catch (MyException e) { return Result.error(e.getMessage()); } diff --git a/src/main/java/com/huawei/datashow/controller/HandleDataSourceController.java b/src/main/java/com/huawei/datashow/controller/HandleDataSourceController.java index 2f93253f65a80dac0af2c49734897af94e8c4d7f..5be20401a5a320fbc066c619c00eb5f3c4a10d5f 100644 --- a/src/main/java/com/huawei/datashow/controller/HandleDataSourceController.java +++ b/src/main/java/com/huawei/datashow/controller/HandleDataSourceController.java @@ -2,6 +2,7 @@ package com.huawei.datashow.controller; import com.huawei.datashow.bean.ParamDataSourceEditBean; import com.huawei.datashow.service.HandleDataSourceService; +import com.huawei.datashow.util.MyException; import com.huawei.datashow.util.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -26,10 +27,10 @@ public class HandleDataSourceController { { try { handleDataSourceServiceImpl.saveDataSource(pollName, sql, dataSourceName); - return Result.OK("数据源保存成功"); + return Result.OK(); } catch (Exception e) { e.printStackTrace(); - return Result.error("数据源保存失败"); + return Result.error("error"); } } @@ -43,7 +44,7 @@ public class HandleDataSourceController { return Result.OK(data); } catch (IOException ioException) { ioException.printStackTrace(); - return Result.error("读取失败"); + return Result.error("error"); } } @@ -54,7 +55,7 @@ public class HandleDataSourceController { return Result.OK(dataSourceSize); } catch (IOException ioException) { ioException.printStackTrace(); - return Result.error("接口调用失败!"); + return Result.error("error"); } } @@ -62,10 +63,10 @@ public class HandleDataSourceController { public Result removeDataSource(@RequestParam("dataSourceName") String dataSourceName){ try { handleDataSourceServiceImpl.removeDataSource(dataSourceName); - return Result.OK("删除成功"); + return Result.OK(); } catch (IOException ioException) { ioException.printStackTrace(); - return Result.error("删除失败"); + return Result.error("error"); } } @@ -78,10 +79,10 @@ public class HandleDataSourceController { public Result editDataSource(@RequestBody ParamDataSourceEditBean paramDataSourceEditBean) { try { handleDataSourceServiceImpl.editDataSource(paramDataSourceEditBean.getDataSourceName(), paramDataSourceEditBean.getDataSourceEditBean()); - return Result.OK("删除成功"); + return Result.OK(); } catch (IOException ioException) { ioException.printStackTrace(); - return Result.error("接口调用失败"); + return Result.error("error"); } } @@ -92,7 +93,7 @@ public class HandleDataSourceController { return Result.OK(); } catch (IOException ioException) { ioException.printStackTrace(); - return Result.error("接口调用失败"); + return Result.error("error"); } } @@ -103,7 +104,20 @@ public class HandleDataSourceController { return Result.OK(); } catch (IOException ioException) { ioException.printStackTrace(); - return Result.error("接口调用失败"); + return Result.error("error"); + } catch (MyException myException) { + return Result.error("Data source is empty! Please Delete Instead."); + } + } + + @GetMapping("/get-edit-status") + public Result getEditStatus(@RequestParam("dataSourceName") String dataSourceName) { + try { + boolean editStatus = handleDataSourceServiceImpl.getEditStatus(dataSourceName); + return Result.OK(editStatus); + } catch (IOException ioException) { + ioException.printStackTrace(); + return Result.error("error"); } } diff --git a/src/main/java/com/huawei/datashow/controller/OpenGaussDataBaseController.java b/src/main/java/com/huawei/datashow/controller/OpenGaussDataBaseController.java index 9bbc3d6c042af2399b4d8eb5e4c3c6899de45520..99473b6812b251343fe523cb766dfc28e2929b06 100644 --- a/src/main/java/com/huawei/datashow/controller/OpenGaussDataBaseController.java +++ b/src/main/java/com/huawei/datashow/controller/OpenGaussDataBaseController.java @@ -1,8 +1,8 @@ package com.huawei.datashow.controller; -import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; + import com.fasterxml.jackson.core.JsonProcessingException; -import com.huawei.datashow.bean.smbms_3DdataBean; + import com.huawei.datashow.mapper.OpenGaussDataBaseMapper; import com.huawei.datashow.service.OpenGaussDataBaseService; import com.huawei.datashow.util.SQLUtil; @@ -12,8 +12,7 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestParam; @RestController -public class OpenGaussDataBaseController -{ +public class OpenGaussDataBaseController { @Autowired private OpenGaussDataBaseService openGaussDataBaseServiceImpl; @@ -28,8 +27,9 @@ public class OpenGaussDataBaseController /** * Get tables + * * @param pollName - * @param sql SELECT tablename FROM pg_tables WHERE schemaname = 'xxx' + * @param sql SELECT tablename FROM pg_tables WHERE schemaname = 'xxx' * @return * @throws JsonProcessingException */ @@ -41,6 +41,7 @@ public class OpenGaussDataBaseController /** * Get source data from table + * * @param pollName * @param sql * @return @@ -49,11 +50,12 @@ public class OpenGaussDataBaseController @GetMapping("/getSourceData") public String getSourceData(@RequestParam("pollName") String pollName, @RequestParam("sql") String sql) throws Exception { - return openGaussDataBaseServiceImpl.getSourceData(pollName,sql); + return openGaussDataBaseServiceImpl.getSourceData(pollName, sql); } /** * Get data in the database in pages + * * @param pollName * @param sql * @param startIndex diff --git a/src/main/java/com/huawei/datashow/controller/UploadFileController.java b/src/main/java/com/huawei/datashow/controller/UploadFileController.java index 0ef2abad84c32d72d83db75b0fd1cb60ffbc5ee2..67d9af28dcc723e6269c2ff87e410bcdb00926bf 100644 --- a/src/main/java/com/huawei/datashow/controller/UploadFileController.java +++ b/src/main/java/com/huawei/datashow/controller/UploadFileController.java @@ -27,7 +27,7 @@ public class UploadFileController return Result.OK(); } catch (IOException ioException) { ioException.printStackTrace(); - return Result.error("已上传,但文件为空或格式不匹配,请删除并重新上传!"); + return Result.error("Empty Or Not XLS/XLSX File!"); } } @@ -39,7 +39,7 @@ public class UploadFileController return Result.OK(); } catch (IOException ioException) { ioException.printStackTrace(); - return Result.error("已上传,但上传文件为空或格式不匹配,请删除并重新上传!"); + return Result.error("Empty Or Not CSV/TXT File!"); } } } diff --git a/src/main/java/com/huawei/datashow/mapper/OpenGaussDataBaseMapper.java b/src/main/java/com/huawei/datashow/mapper/OpenGaussDataBaseMapper.java index 55db189f6efa02e5be1d65076ab5b8650836074d..040cbb6bf6449f46591df899df4395b73d7fb7e0 100644 --- a/src/main/java/com/huawei/datashow/mapper/OpenGaussDataBaseMapper.java +++ b/src/main/java/com/huawei/datashow/mapper/OpenGaussDataBaseMapper.java @@ -1,6 +1,6 @@ package com.huawei.datashow.mapper; -import com.huawei.datashow.bean.smbms_3DdataBean; + import java.util.List; import java.util.Map; @@ -8,5 +8,5 @@ import java.util.Map; public interface OpenGaussDataBaseMapper { List customSql(String sql); - void insert(smbms_3DdataBean bean); + } diff --git a/src/main/java/com/huawei/datashow/service/ConnectionPoolServiceImpl.java b/src/main/java/com/huawei/datashow/service/ConnectionPoolServiceImpl.java index b3a4f9ffd58cb8ff10a289ab1a5e39b150698fa0..5db2f94e4c2968b02f3f18954acde50966160d0c 100644 --- a/src/main/java/com/huawei/datashow/service/ConnectionPoolServiceImpl.java +++ b/src/main/java/com/huawei/datashow/service/ConnectionPoolServiceImpl.java @@ -9,13 +9,13 @@ import com.huawei.datashow.util.MyException; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + import javax.sql.DataSource; import java.util.Set; @Service -public class ConnectionPoolServiceImpl implements ConnectionPoolService -{ +public class ConnectionPoolServiceImpl implements ConnectionPoolService { @Autowired private DataSource dataSource; @Autowired @@ -24,8 +24,7 @@ public class ConnectionPoolServiceImpl implements ConnectionPoolService private OpenGaussDataBaseService openGaussDataBaseService; @Override - public String getConnectionPoolsNow() - { + public String getConnectionPoolsNow() { DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource; Set keySet = ds.getDataSources().keySet(); String ConnectionPoolsNowJson = JSON.toJSONString(keySet); @@ -41,36 +40,29 @@ public class ConnectionPoolServiceImpl implements ConnectionPoolService DataSource dataSource = hikariDataSourceCreator.createDataSource(dataSourceProperty); ds.addDataSource(dto.getPollName(), dataSource); try { - openGaussDataBaseService.getSourceData(dto.getPollName(),"select datname from pg_database"); - } - catch (Exception e) { + openGaussDataBaseService.getSourceData(dto.getPollName(), "select datname from pg_database"); + } catch (Exception e) { ds.removeDataSource(dto.getPollName()); String exception = e.toString(); if (exception.contains("Invalid username/password")) { - throw new MyException("[Invalid username/password] 用户名或密码错误"); - } - else if (exception.contains("Forbid remote connection with initial user")) { - throw new MyException("[Forbid remote connection with initial user] 禁止使用数据库初始用户进行远程连接"); - } - else if (exception.contains("no pg_hba.conf entry")) { - throw new MyException("[no pg_hba.conf entry for host] 未配置openGauss远程访问白名单"); - } - else if (exception.contains("database") && exception.contains("does not exist")) { - throw new MyException("[database does not exist] 数据库不存在"); - } - else if (exception.contains("Check that the hostname and port are correct")) { + throw new MyException("[Invalid username/password]"); + } else if (exception.contains("Forbid remote connection with initial user")) { + throw new MyException("[Forbid remote connection with initial user]"); + } else if (exception.contains("no pg_hba.conf entry")) { + throw new MyException("[no pg_hba.conf entry for host]"); + } else if (exception.contains("database") && exception.contains("does not exist")) { + throw new MyException("[database does not exist]"); + } else if (exception.contains("Check that the hostname and port are correct")) { throw new MyException("[Check that the hostname and port are correct and " + - "that the postmaster is accepting TCP/IP connections] 请检查主机、端口号是否正确"); - } - else { - throw new MyException("请检查是否有非法输入,或联系开发者"); + "that the postmaster is accepting TCP/IP connections]"); + } else { + throw new MyException("[Invalid input or other]"); } } } @Override - public String removeHikariCP(String poolName) - { + public String removeHikariCP(String poolName) { DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource; ds.removeDataSource(poolName); return "success"; diff --git a/src/main/java/com/huawei/datashow/service/HandleDataSourceService.java b/src/main/java/com/huawei/datashow/service/HandleDataSourceService.java index 1704621a8849cc2f53da37b8c02c267a18b9d277..647acf666cfd862f394370f62db199a01781acf8 100644 --- a/src/main/java/com/huawei/datashow/service/HandleDataSourceService.java +++ b/src/main/java/com/huawei/datashow/service/HandleDataSourceService.java @@ -1,6 +1,8 @@ package com.huawei.datashow.service; import com.huawei.datashow.bean.DataSourceEditBean; +import com.huawei.datashow.util.MyException; + import java.io.IOException; @@ -15,7 +17,7 @@ public interface HandleDataSourceService { * @param dataSourceName * @return */ - public void saveDataSource(String pollName, String sql, String dataSourceName) throws Exception; + void saveDataSource(String pollName, String sql, String dataSourceName) throws Exception; /** * Read source data from local file @@ -24,7 +26,7 @@ public interface HandleDataSourceService { * @param limit * @return */ - public String readDataSource(String dataSourceName, int startIndex, int limit) throws IOException; + String readDataSource(String dataSourceName, int startIndex, int limit) throws IOException; /** * Get data source size @@ -32,28 +34,30 @@ public interface HandleDataSourceService { * @return * @throws IOException */ - public int getDataSourceSize(String dataSourceName) throws IOException; + int getDataSourceSize(String dataSourceName) throws IOException; /** * Remove data source * @param dataSourceName * @return */ - public void removeDataSource(String dataSourceName) throws IOException; + void removeDataSource(String dataSourceName) throws IOException; /** * Get data source list * @return */ - public String getDataSourceList(); + String getDataSourceList(); /** * Remove columns or rows * @param dataSourceEditBean */ - public void editDataSource(String dataSourceName, DataSourceEditBean dataSourceEditBean) throws IOException; + void editDataSource(String dataSourceName, DataSourceEditBean dataSourceEditBean) throws IOException; + + void reloadDataSource(String dataSourceName) throws IOException; - public void reloadDataSource(String dataSourceName) throws IOException; + void saveEditDataSource(String dataSourceName) throws IOException, MyException; - public void saveEditDataSource(String dataSourceName) throws IOException; + boolean getEditStatus(String dataSourceName) throws IOException; } diff --git a/src/main/java/com/huawei/datashow/service/HandleDataSourceServiceImpl.java b/src/main/java/com/huawei/datashow/service/HandleDataSourceServiceImpl.java index a261a43ecb955c4a4d5094fd41beaeee5a61c453..e96116fa8abae04b00a76f4ebabcf21942a257d3 100644 --- a/src/main/java/com/huawei/datashow/service/HandleDataSourceServiceImpl.java +++ b/src/main/java/com/huawei/datashow/service/HandleDataSourceServiceImpl.java @@ -8,6 +8,7 @@ import com.huawei.datashow.util.fileUtils.CommonUtil; import com.huawei.datashow.util.fileUtils.YAMLUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + import java.io.File; import java.io.IOException; import java.util.Map; @@ -18,7 +19,7 @@ import java.util.UUID; @Service -public class HandleDataSourceServiceImpl implements HandleDataSourceService{ +public class HandleDataSourceServiceImpl implements HandleDataSourceService { @Autowired OpenGaussDataBaseService openGaussDataBaseServiceImpl; @@ -32,12 +33,12 @@ public class HandleDataSourceServiceImpl implements HandleDataSourceService{ sql = sql + " limit %d, %d"; if (batch > 0) { - for (int i = 0; i < batch; i++){ + for (int i = 0; i < batch; i++) { String jsonListMap = openGaussDataBaseServiceImpl.getSourceData(pollName, String.format(sql, i * 1000, 1000)); List listMap = JSON.parseObject(jsonListMap, ArrayList.class); CSVUtil.writeCSVFile(dataSourceName, listMap, i != 0); } - String jsonListMap = openGaussDataBaseServiceImpl.getSourceData(pollName, String.format(sql, batch * 1000, count - batch*1000 + 1)); + String jsonListMap = openGaussDataBaseServiceImpl.getSourceData(pollName, String.format(sql, batch * 1000, count - batch * 1000 + 1)); List listMap = JSON.parseObject(jsonListMap, ArrayList.class); CSVUtil.writeCSVFile(dataSourceName, listMap, true); } else { @@ -68,13 +69,13 @@ public class HandleDataSourceServiceImpl implements HandleDataSourceService{ public String getDataSourceList() { File dir = new File(CommonUtil.DATA_SOURCE_DIR); - if(!dir.exists()){ + if (!dir.exists()) { dir.mkdir(); } File[] files = dir.listFiles(); List dataSourceList = new ArrayList<>(); for (File file : files) { - if (file.isFile()){ + if (file.isFile()) { dataSourceList.add(file.getName()); } } @@ -101,13 +102,13 @@ public class HandleDataSourceServiceImpl implements HandleDataSourceService{ if (batch > 0) { for (int i = 0; i < batch; i++) { String s = CSVUtil.readCSVFile(dataSourceName, 1000, i * 1000, CSVUtil.SAVE_DATA_SOURCE_EDIT_MODE); - CSVUtil.writeCSVFile(tmpFileName, (List) JSON.parseObject(s, LinkedHashMap.class).get("sourceData"),i != 0); + CSVUtil.writeCSVFile(tmpFileName, (List) JSON.parseObject(s, LinkedHashMap.class).get("sourceData"), i != 0); } String s = CSVUtil.readCSVFile(dataSourceName, rowCount - batch * 1000, batch * 1000, CSVUtil.SAVE_DATA_SOURCE_EDIT_MODE); - CSVUtil.writeCSVFile(tmpFileName, (List) JSON.parseObject(s, LinkedHashMap.class).get("sourceData"),true); + CSVUtil.writeCSVFile(tmpFileName, (List) JSON.parseObject(s, LinkedHashMap.class).get("sourceData"), true); } else { String s = CSVUtil.readCSVFile(dataSourceName, rowCount, 0, CSVUtil.SAVE_DATA_SOURCE_EDIT_MODE); - CSVUtil.writeCSVFile(tmpFileName, (List) JSON.parseObject(s, LinkedHashMap.class).get("sourceData"),false); + CSVUtil.writeCSVFile(tmpFileName, (List) JSON.parseObject(s, LinkedHashMap.class).get("sourceData"), false); } @@ -119,5 +120,13 @@ public class HandleDataSourceServiceImpl implements HandleDataSourceService{ YAMLUtil.createYAMLFile(dataSourceName); } - -} + @Override + public boolean getEditStatus(String dataSourceName) throws IOException { + boolean flag = false; + DataSourceEditBean dataSourceEditBean = YAMLUtil.readYAMLFile(dataSourceName); + if (dataSourceEditBean.getDeleteColumnName().size() > 0 || dataSourceEditBean.getDeleteRowIndex().size() > 0) { + flag = true; + } + return flag; + } +} \ No newline at end of file diff --git a/src/main/java/com/huawei/datashow/service/OpenGaussDataBaseServiceImpl.java b/src/main/java/com/huawei/datashow/service/OpenGaussDataBaseServiceImpl.java index 9c8fd9a4f231de6afe30f0afee8a12526e20a69c..e58653fba8513fc14a4d16ff8118603017fa14d0 100644 --- a/src/main/java/com/huawei/datashow/service/OpenGaussDataBaseServiceImpl.java +++ b/src/main/java/com/huawei/datashow/service/OpenGaussDataBaseServiceImpl.java @@ -19,7 +19,7 @@ public class OpenGaussDataBaseServiceImpl implements OpenGaussDataBaseService private ValueFilter filter = (obj, s, v) -> { if (v == null){ - return "数据为空"; + return "null"; } return v; }; diff --git a/src/main/java/com/huawei/datashow/util/MyException.java b/src/main/java/com/huawei/datashow/util/MyException.java index 92b17e140c6846dd3bc5680b648c7e18288011fe..707a145b9ae7a1e7ff528cbd3311c2ff0468300a 100644 --- a/src/main/java/com/huawei/datashow/util/MyException.java +++ b/src/main/java/com/huawei/datashow/util/MyException.java @@ -4,6 +4,8 @@ public class MyException extends java.lang.Exception { private String message; + public MyException(){}; + public MyException(String message){ super(message); this.message = message; diff --git a/src/main/java/com/huawei/datashow/util/Result.java b/src/main/java/com/huawei/datashow/util/Result.java index 6634bf26066529da05b24ab17f753c09a2033985..108f787c98ec3c9262558945b7595258b50f80f9 100644 --- a/src/main/java/com/huawei/datashow/util/Result.java +++ b/src/main/java/com/huawei/datashow/util/Result.java @@ -20,7 +20,7 @@ public class Result implements Serializable { /** * message */ - private String message = "操作成功!"; + private String message = "success"; /** * result code @@ -50,7 +50,7 @@ public class Result implements Serializable { Result r = new Result(); r.setSuccess(true); r.setCode(200); - r.setMessage("成功"); + r.setMessage("success"); return r; } diff --git a/src/main/java/com/huawei/datashow/util/fileUtils/CSVUtil.java b/src/main/java/com/huawei/datashow/util/fileUtils/CSVUtil.java index fc72c3a98a7debfbe2ee279411e310160aadf528..4c72c6ee6a923f4f801fdd869cd76f53b1f2d56b 100644 --- a/src/main/java/com/huawei/datashow/util/fileUtils/CSVUtil.java +++ b/src/main/java/com/huawei/datashow/util/fileUtils/CSVUtil.java @@ -116,11 +116,13 @@ public class CSVUtil { } Map result = new LinkedHashMap<>(); result.put("sourceData", list); - LinkedHashMap linkedHashMap = JSON.parseObject(csvRecords.get(0).get(0), LinkedHashMap.class); - for (String columnName : deleteColumnName) { - linkedHashMap.remove(columnName); + if (csvRecords.size() > 0) { + LinkedHashMap linkedHashMap = JSON.parseObject(csvRecords.get(0).get(0), LinkedHashMap.class); + for (String columnName : deleteColumnName) { + linkedHashMap.remove(columnName); + } + result.put("columnNames", linkedHashMap.keySet()); } - result.put("columnNames", linkedHashMap.keySet()); in.close(); return JSON.toJSONString(result); } diff --git a/src/main/java/com/huawei/datashow/util/fileUtils/YAMLUtil.java b/src/main/java/com/huawei/datashow/util/fileUtils/YAMLUtil.java index 2f831dd5c017936873efa6a554fb1095186600c3..aaded030256de301be9ae624869b049337cd121a 100644 --- a/src/main/java/com/huawei/datashow/util/fileUtils/YAMLUtil.java +++ b/src/main/java/com/huawei/datashow/util/fileUtils/YAMLUtil.java @@ -6,7 +6,6 @@ import org.yaml.snakeyaml.Yaml; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.nio.file.Files; diff --git a/src/main/java/com/huawei/datashow/vue/package-lock.json b/src/main/java/com/huawei/datashow/vue/package-lock.json index ef1613b03c873cda5c8f314744905b521e1fd0a3..36032637256bbe1bcbe42f14656bd85ff3b27972 100644 --- a/src/main/java/com/huawei/datashow/vue/package-lock.json +++ b/src/main/java/com/huawei/datashow/vue/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "axios": "^0.26.0", "core-js": "^3.8.3", - "echarts": "^5.3.0", + "echarts": "^5.3.3", "echarts-gl": "^2.0.9", "element-ui": "^2.15.6", "less-loader": "^10.2.0", diff --git a/src/main/java/com/huawei/datashow/vue/package.json b/src/main/java/com/huawei/datashow/vue/package.json index 0808a02b4c8ded45385621f86d5def3aef5c92a1..5a4713e8ba5df272956ba218b21547d2aff1b49f 100644 --- a/src/main/java/com/huawei/datashow/vue/package.json +++ b/src/main/java/com/huawei/datashow/vue/package.json @@ -10,7 +10,7 @@ "dependencies": { "axios": "^0.26.0", "core-js": "^3.8.3", - "echarts": "^5.3.0", + "echarts": "^5.3.3", "echarts-gl": "^2.0.9", "element-ui": "^2.15.6", "less-loader": "^10.2.0", diff --git a/src/main/java/com/huawei/datashow/vue/src/assets/css/echarts/echarts.css b/src/main/java/com/huawei/datashow/vue/src/assets/css/echarts/echarts.css index 74d725b80a3c890a634664d8dd1391193a1aece0..660fe70633529192667a16a1f2d593b527646d72 100644 --- a/src/main/java/com/huawei/datashow/vue/src/assets/css/echarts/echarts.css +++ b/src/main/java/com/huawei/datashow/vue/src/assets/css/echarts/echarts.css @@ -1,9 +1,6 @@ #echarts_container .el-aside { background-color:#EBEEF5 } -/* #echarts_container .scrollbar { - height: 100% -} */ #echarts_container .el-form-item { margin-top:20px; margin-left:20px diff --git a/src/main/java/com/huawei/datashow/vue/src/assets/css/selectdata/selectdata.css b/src/main/java/com/huawei/datashow/vue/src/assets/css/selectdata/selectdata.css index c3108576410ca08791126566f848de83bbe63697..36851963b9b8c956c71aa195974a22e6b8f04099 100644 --- a/src/main/java/com/huawei/datashow/vue/src/assets/css/selectdata/selectdata.css +++ b/src/main/java/com/huawei/datashow/vue/src/assets/css/selectdata/selectdata.css @@ -12,7 +12,7 @@ } #select-echarts-type{ - width:250px + width: 400px; } #button-add-echarts-form{ diff --git a/src/main/java/com/huawei/datashow/vue/src/assets/css/uisourcedata/uisourcedata.css b/src/main/java/com/huawei/datashow/vue/src/assets/css/uisourcedata/uisourcedata.css index e6dfce4a34796b41c75e66698acf1e69e263f9cb..aa73602b098bc1a8748c676b0172d86ef401cbd2 100644 --- a/src/main/java/com/huawei/datashow/vue/src/assets/css/uisourcedata/uisourcedata.css +++ b/src/main/java/com/huawei/datashow/vue/src/assets/css/uisourcedata/uisourcedata.css @@ -19,7 +19,7 @@ #select-poll-name{ margin-left:20px; - width:150px; + width:160px; } @@ -29,7 +29,7 @@ } #select-schema{ - width:150px; + width:160px; } #item-table-headers{ @@ -38,7 +38,7 @@ } #select-table-headers{ - width:150px; + width:160px; } #item-where-table-header{ @@ -47,7 +47,7 @@ } #select-where-table-header{ - width:150px; + width:160px; } #item-where-operate{ @@ -56,7 +56,7 @@ } #select-where-operate{ - width:150px; + width:160px; } #item-where-bigger-smaller-equals{ @@ -64,6 +64,10 @@ margin-left:20px } +#input-where-bigger-smaller-equals{ + width:160px; +} + #item-where-scope-0{ margin-top:20px; margin-left:20px @@ -84,7 +88,7 @@ } #select-sort-headers{ - width:150px; + width:160px; } #item-sort-desc-or-asc{ @@ -93,7 +97,7 @@ } #select-sort-desc-or-asc{ - width:150px; + width:160px; } #alert-group{ @@ -106,7 +110,7 @@ } #select-group-header{ - width:150px; + width:160px; } #item-aggregate-header{ @@ -115,7 +119,7 @@ } #select-aggregate-header{ - width:150px + width:160px } #item-aggregate-function{ @@ -124,7 +128,7 @@ } #select-aggregate-function{ - width:150px + width:160px } #item-aggregate-name{ @@ -133,7 +137,7 @@ } #input-aggregate-name{ - width:150px + width:160px } diff --git a/src/main/java/com/huawei/datashow/vue/src/assets/css/uploadcsvfile/uploadcsvfile.css b/src/main/java/com/huawei/datashow/vue/src/assets/css/uploadcsvfile/uploadcsvfile.css index 58a36f33bdb1548eba0d4c67c227a9d633ecde81..d3bdf007aa844f59b3b501f66c9bd9c298b19766 100644 --- a/src/main/java/com/huawei/datashow/vue/src/assets/css/uploadcsvfile/uploadcsvfile.css +++ b/src/main/java/com/huawei/datashow/vue/src/assets/css/uploadcsvfile/uploadcsvfile.css @@ -6,6 +6,7 @@ border-radius: 15px; background-clip: padding-box; margin: 180px auto; + height: 150px; width: 350px; padding: 35px 35px 15px 35px; background-color: #fff; diff --git a/src/main/java/com/huawei/datashow/vue/src/assets/css/uploadxlsorxlsxfile/uploadxlsorxlsxfile.css b/src/main/java/com/huawei/datashow/vue/src/assets/css/uploadxlsorxlsxfile/uploadxlsorxlsxfile.css index 713d108ee52e425c6ef57ffb6a87d7292446a51d..32546be75f6b189cd42d937fb20ce8a9d85e62df 100644 --- a/src/main/java/com/huawei/datashow/vue/src/assets/css/uploadxlsorxlsxfile/uploadxlsorxlsxfile.css +++ b/src/main/java/com/huawei/datashow/vue/src/assets/css/uploadxlsorxlsxfile/uploadxlsorxlsxfile.css @@ -7,6 +7,7 @@ background-clip: padding-box; margin: 180px auto; width: 350px; + height: 150px; height: 110px; padding: 35px 35px 15px 35px; background-color: #fff; diff --git a/src/main/java/com/huawei/datashow/vue/src/assets/language/local_en.json b/src/main/java/com/huawei/datashow/vue/src/assets/language/local_en.json index 75512b6fe14d4e9dcd95d0330e430293824fa6ee..6f2f39106fc86014219abcb11806c6a9416c7103 100644 --- a/src/main/java/com/huawei/datashow/vue/src/assets/language/local_en.json +++ b/src/main/java/com/huawei/datashow/vue/src/assets/language/local_en.json @@ -28,7 +28,10 @@ }, "message": { "deleteMessage":"Deleted data is selected, please do not delete it repeatedly", - "bigSizeMessage":"The amount of data is large and it takes a long time to save and modify!" + "reloadMessage":"Confirm reload?", + "preserveMessage":"Confirm preserve edit?", + "bigSizeMessage":"The amount of data is large and it takes a long time to save and modify!", + "deleteSourceData":"Confirm delete source data?" } }, "dialog-form": { @@ -138,7 +141,7 @@ "Radar_chart_settings": "Radar chart setting" } }, - "Surface": { + "Scatter3D": { "button": { "button_refreshEcharts": "刷新" } @@ -286,7 +289,8 @@ "button_submit": "Submit" }, "message": { - "data_source_name": "Please enter a data source name (please avoid duplication with existing data source names and exclude'.')", + "empty":"data source is empty!", + "data_source_name": "Please enter a data source name (please avoid duplication with existing data source names and exclude'.' '/' '\\')", "wrong_data_source_name": "Data source name is empty or illegal!" } }, @@ -353,7 +357,8 @@ }, "message": { "file_num":"The current limit is 1 file!", - "upload_error":"Oversize!" + "upload_error":"Oversize!", + "data_source_name":"Data source name existed! Override?" } }, "uploadtxtfile": { @@ -365,6 +370,9 @@ "make_sure": "Please make sure that the first line in the uploaded TXT file is the header!", "make_sure_separator": "Please make sure the delimiter of the uploaded TXT file is', '", "size": "Size of file must smaller than 5MB" + }, + "message": { + "data_source_name":"Data source name existed! Override?" } }, "uploadxlsorxlsxfile": { @@ -375,6 +383,9 @@ "div": { "make_sure": "Please make sure that the first line in the uploaded xls and xlsx files is the header!", "size": "Size of file must smaller than 5MB" + }, + "message": { + "data_source_name":"Data source name existed! Override?" } }, "echartsType":{ @@ -386,10 +397,10 @@ "combination":"Combination diagram", "pie":"Pie chart", "radar":"Radar chart", - "surface":"3D surface diagram" + "scatter3D":"3D scatter diagram" }, "loading": { - "text": "Loading" + "text": "Loading..." }, "selectAll":"All", "show":"display", diff --git a/src/main/java/com/huawei/datashow/vue/src/assets/language/local_zh.json b/src/main/java/com/huawei/datashow/vue/src/assets/language/local_zh.json index 7879e35caacc64d0ed8dbc52c65ba1acf7df7d45..c99fb7d7b70cf7aedff6e580664d59f7d4fc3e62 100644 --- a/src/main/java/com/huawei/datashow/vue/src/assets/language/local_zh.json +++ b/src/main/java/com/huawei/datashow/vue/src/assets/language/local_zh.json @@ -28,7 +28,10 @@ }, "message": { "deleteMessage":"选择了已删除的数据,请勿重复删除", - "bigSizeMessage":"数据量较大,保存修改耗时较长!" + "reloadMessage":"此操作将撤销所有已经做出的修改,是否继续?", + "preserveMessage":"确认保存修改?", + "bigSizeMessage":"数据量较大,保存修改耗时较长!", + "deleteSourceData":"此操作将永久删除数据源,是否继续?" } }, "dialog-form": { @@ -138,7 +141,7 @@ "Radar_chart_settings": "雷达图设置" } }, - "Surface": { + "Scatter3D": { "button": { "button_refreshEcharts": "刷新" } @@ -286,7 +289,8 @@ "button_submit": "提交" }, "message": { - "data_source_name": "请输入数据源名称(请避免与已有数据源名称重复且不包含'.')", + "empty":"数据源为空!", + "data_source_name": "请输入数据源名称(请避免与已有数据源名称重复且不包含'.' '/' '\\')", "wrong_data_source_name": "请检查数据源名称是否已存在或为空或不合法!" } }, @@ -353,7 +357,8 @@ }, "message": { "file_num":"当前限制选择1个文件!", - "upload_error":"超出文件大小限制" + "upload_error":"超出文件大小限制", + "data_source_name":"数据源名已存在,是否上传并覆盖之前的数据源文件?" } }, "uploadtxtfile": { @@ -365,6 +370,9 @@ "make_sure": "请务必确认上传的TXT文件中的第一行是表头!", "make_sure_separator": "请务必确认上传的TXT文件的分隔符为','", "size": "文件大小上限为5MB" + }, + "message": { + "data_source_name":"数据源名已存在,是否上传并覆盖之前的数据源文件?" } }, "uploadxlsorxlsxfile": { @@ -375,6 +383,9 @@ "div": { "make_sure": "请务必确认上传的xls、xlsx文件中的第一行是表头!", "size": "文件大小上限为5MB" + }, + "message": { + "data_source_name":"数据源名已存在,是否上传并覆盖之前的数据源文件?" } }, "echartsType":{ @@ -386,10 +397,10 @@ "combination":"组合图", "pie":"饼状图", "radar":"雷达图", - "surface":"3D曲面图" + "scatter3D":"3D散点图" }, "loading": { - "text": "正在加载" + "text": "正在处理..." }, "selectAll":"全选", "show":"显示", diff --git a/src/main/java/com/huawei/datashow/vue/src/components/datasource/index.vue b/src/main/java/com/huawei/datashow/vue/src/components/datasource/index.vue index 19094591165f77eab3d4e053a6bcd0bd26c4c881..1a022d084a82117cc62f6ea2ba48ebbf5b87717f 100644 --- a/src/main/java/com/huawei/datashow/vue/src/components/datasource/index.vue +++ b/src/main/java/com/huawei/datashow/vue/src/components/datasource/index.vue @@ -5,14 +5,12 @@ + v-loading.fullscreen.lock="el_table_loading" + :element-loading-text="$t('loading.text')"> @@ -41,17 +39,20 @@ > {{$t('datasource.button.button_deleteSelection')}} {{$t('datasource.button.button_reload')}} @@ -73,14 +74,9 @@ - - + \ No newline at end of file diff --git a/src/main/java/com/huawei/datashow/vue/src/components/dialog/dialog-form/index.vue b/src/main/java/com/huawei/datashow/vue/src/components/dialog/dialog-form/index.vue index 8eabf1ae39dca3131ace1f3e3f9c4b07f3cbde2b..6723964eec9de2f79d05660061bf8747c010687b 100644 --- a/src/main/java/com/huawei/datashow/vue/src/components/dialog/dialog-form/index.vue +++ b/src/main/java/com/huawei/datashow/vue/src/components/dialog/dialog-form/index.vue @@ -150,9 +150,9 @@ - + - + - + - + - + {{formIndex}} {{form.dataSourceName}} {{form.yOptions}} - {{form.xOption}} + {{form.xOption}} {{$t('discription.button.delete')}} import { radar } from '@/components/echarts/mixin/radar/radar' export default { - props: [], mixins: [radar], } diff --git a/src/main/java/com/huawei/datashow/vue/src/components/echarts/Scatter3D.vue b/src/main/java/com/huawei/datashow/vue/src/components/echarts/Scatter3D.vue new file mode 100644 index 0000000000000000000000000000000000000000..90126059a610e778b8b6a240fda376e623d5c57d --- /dev/null +++ b/src/main/java/com/huawei/datashow/vue/src/components/echarts/Scatter3D.vue @@ -0,0 +1,123 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/normal/normal.js b/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/normal/normal.js index ec7f6c2658e6afd2b35291afc206c21c5ba38799..0c742d85b6f3dd4693bcdefe15ce89f0b4725a86 100644 --- a/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/normal/normal.js +++ b/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/normal/normal.js @@ -47,11 +47,7 @@ export const normal = { toolbox:{ show:true, right:60, - feature:{ - dataView:{ - title:'datas', - readOnly:false - }, + feature:{ saveAsImage:{ type: 'jpg', show: true, @@ -91,7 +87,7 @@ export const normal = { }, dataSourceSizeList:[], startIndex: 0, - endIndex:10, + endIndex:9, origin_option:{}, diff --git a/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/pie/pie.js b/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/pie/pie.js index a0b9dcd1f8abffc5162af21b6338f98c3597d1da..ed81936ef46b48f916d82beddd6346e852068fd9 100644 --- a/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/pie/pie.js +++ b/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/pie/pie.js @@ -15,7 +15,7 @@ export const pie = { option: { title: { - text: 'echarts', + text: this.$t('请输入标题'), show: true, textStyle:{ color: '#000000', @@ -39,11 +39,7 @@ export const pie = { toolbox:{ show:true, right:60, - feature:{ - dataView:{ - title:'datas', - readOnly:false - }, + feature:{ saveAsImage:{ type: 'jpg', show: true, @@ -55,14 +51,13 @@ export const pie = { series:[], tooltip:{ trigger:'item', - } }, dataSourceSizeList:[], startIndex: 0, - endIndex:10, + endIndex:9, echarts_title_show:true, @@ -355,7 +350,7 @@ export const pie = { let echartsForm = echartsFormList[i]; let yOption = echartsForm.yOptions var serie = { - name: echartsForm.dataSourceName + '-' + yOption, + name: String(echartsForm.dataSourceName), datasetIndex: 0, type: 'pie', radius: [0,250], @@ -365,11 +360,12 @@ export const pie = { borderRadius:0 }, label:{ - fontSize:12 + fontSize:12, + formatter: '{b} \n 占比{d}%' }, encode: { itemName: echartsForm.xOption, - value: echartsForm.yOption + value: yOption }, }; this.series.push(serie) diff --git a/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/radar/radar.js b/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/radar/radar.js index b64183fcd98cacc5f3a023dc3d9b3e2b3a3be26e..aae6cc2b29aa1ba1743200f6b1a0881d5cff42ca 100644 --- a/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/radar/radar.js +++ b/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/radar/radar.js @@ -1,5 +1,4 @@ import * as echarts from 'echarts' -import 'echarts-gl' import axios from 'axios' var myChart export const radar = { @@ -44,11 +43,7 @@ export const radar = { toolbox:{ show:true, right:60, - feature:{ - dataView:{ - title:'datas', - readOnly:false - }, + feature:{ saveAsImage:{ type: 'jpg', show: true, @@ -76,7 +71,7 @@ export const radar = { dataSourceSizeList:[], startIndex: 0, - endIndex:0, + endIndex:9, diff --git a/src/main/java/com/huawei/datashow/vue/src/components/echarts/Surface.vue b/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/scatter3D/scatter3D.js similarity index 39% rename from src/main/java/com/huawei/datashow/vue/src/components/echarts/Surface.vue rename to src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/scatter3D/scatter3D.js index 02728f0bc519c7ae1f2f5b06ea7db0e1063ea9d9..c3e2bf1dee02aeb5f45227ea4eee79958c35d57c 100644 --- a/src/main/java/com/huawei/datashow/vue/src/components/echarts/Surface.vue +++ b/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/scatter3D/scatter3D.js @@ -1,51 +1,39 @@ - - - \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/ybar/ybar.js b/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/ybar/ybar.js index 134b4d5e91a26d34b7b6ba6a9dd1be9dc825b37e..81e5fa1544836b8218e4ef6e1749ab3cb5245491 100644 --- a/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/ybar/ybar.js +++ b/src/main/java/com/huawei/datashow/vue/src/components/echarts/mixin/ybar/ybar.js @@ -53,11 +53,7 @@ export const ybar = { toolbox:{ show:true, right:60, - feature:{ - dataView:{ - title:'datas', - readOnly:false - }, + feature:{ saveAsImage:{ type: 'jpg', show: true, @@ -100,7 +96,7 @@ export const ybar = { dataSourceSizeList:[], startIndex: 0, - endIndex:10, + endIndex:9, diff --git a/src/main/java/com/huawei/datashow/vue/src/components/login/index.vue b/src/main/java/com/huawei/datashow/vue/src/components/login/index.vue index 137f77f01fbedcb15d8337e889203504d3d18ba5..f1ca336bd270049993170c53f95fbb3c9ac9f474 100644 --- a/src/main/java/com/huawei/datashow/vue/src/components/login/index.vue +++ b/src/main/java/com/huawei/datashow/vue/src/components/login/index.vue @@ -9,9 +9,7 @@ id = "login_container" size="mini" v-loading.fullscreen.lock="loading" - :element-loading-text="$t('loading.text')" - element-loading-spinner="el-icon-loading" - element-loading-background="rgba(0, 0, 0, 0.8)"> + :element-loading-text="$t('loading.text')">