Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
dataease
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
njgzx
dataease
Commits
d46a40dc
提交
d46a40dc
authored
8月 06, 2021
作者:
wangjiahao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:仪表板联动设置浮层
上级
4f81ca0f
隐藏空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
362 行增加
和
115 行删除
+362
-115
DatasetTableField.java
.../main/java/io/dataease/base/domain/DatasetTableField.java
+5
-2
PanelViewLinkageField.java
...n/java/io/dataease/base/domain/PanelViewLinkageField.java
+2
-2
PanelViewLinkageFieldExample.java
...io/dataease/base/domain/PanelViewLinkageFieldExample.java
+56
-56
PanelViewLinkageFieldMapper.xml
...a/io/dataease/base/mapper/PanelViewLinkageFieldMapper.xml
+27
-27
ExtPanelViewLinkageMapper.java
...o/dataease/base/mapper/ext/ExtPanelViewLinkageMapper.java
+6
-1
ExtPanelViewLinkageMapper.xml
...io/dataease/base/mapper/ext/ExtPanelViewLinkageMapper.xml
+36
-12
PanelViewLinkageController.java
...dataease/controller/panel/PanelViewLinkageController.java
+10
-0
PanelLinkageRequest.java
...ataease/controller/request/panel/PanelLinkageRequest.java
+13
-0
PanelViewLinkageDTO.java
...nd/src/main/java/io/dataease/dto/PanelViewLinkageDTO.java
+4
-3
PanelViewLinkageService.java
...va/io/dataease/service/panel/PanelViewLinkageService.java
+67
-3
V20__linkage_table.sql
...nd/src/main/resources/db/migration/V20__linkage_table.sql
+33
-0
linkage.js
frontend/src/api/panel/linkage.js
+9
-0
LinkageField.vue
.../src/components/canvas/components/Editor/LinkageField.vue
+80
-6
SettingMenu.vue
...d/src/components/canvas/components/Editor/SettingMenu.vue
+2
-1
Toolbar.vue
frontend/src/components/canvas/components/Toolbar.vue
+12
-2
没有找到文件。
backend/src/main/java/io/dataease/base/domain/DatasetTableField.java
浏览文件 @
d46a40dc
...
...
@@ -2,11 +2,15 @@ package io.dataease.base.domain;
import
java.io.Serializable
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@Builder
@AllArgsConstructor
//全参构造函数
@NoArgsConstructor
//无参构造函数
public
class
DatasetTableField
implements
Serializable
{
private
String
id
;
...
...
@@ -39,4 +43,4 @@ public class DatasetTableField implements Serializable {
private
Long
lastSyncTime
;
private
static
final
long
serialVersionUID
=
1L
;
}
\ No newline at end of file
}
backend/src/main/java/io/dataease/base/domain/PanelViewLinkageField.java
浏览文件 @
d46a40dc
...
...
@@ -9,9 +9,9 @@ public class PanelViewLinkageField implements Serializable {
private
String
linkageId
;
private
String
sourceFi
le
d
;
private
String
sourceFi
el
d
;
private
String
targetFi
le
d
;
private
String
targetFi
el
d
;
private
Long
updateTime
;
...
...
backend/src/main/java/io/dataease/base/domain/PanelViewLinkageFieldExample.java
浏览文件 @
d46a40dc
...
...
@@ -244,143 +244,143 @@ public class PanelViewLinkageFieldExample {
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dIsNull
()
{
addCriterion
(
"source_fi
le
d is null"
);
public
Criteria
andSourceFi
el
dIsNull
()
{
addCriterion
(
"source_fi
el
d is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dIsNotNull
()
{
addCriterion
(
"source_fi
le
d is not null"
);
public
Criteria
andSourceFi
el
dIsNotNull
()
{
addCriterion
(
"source_fi
el
d is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dEqualTo
(
String
value
)
{
addCriterion
(
"source_fi
led ="
,
value
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dEqualTo
(
String
value
)
{
addCriterion
(
"source_fi
eld ="
,
value
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dNotEqualTo
(
String
value
)
{
addCriterion
(
"source_fi
led <>"
,
value
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dNotEqualTo
(
String
value
)
{
addCriterion
(
"source_fi
eld <>"
,
value
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dGreaterThan
(
String
value
)
{
addCriterion
(
"source_fi
led >"
,
value
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dGreaterThan
(
String
value
)
{
addCriterion
(
"source_fi
eld >"
,
value
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"source_fi
led >="
,
value
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"source_fi
eld >="
,
value
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dLessThan
(
String
value
)
{
addCriterion
(
"source_fi
led <"
,
value
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dLessThan
(
String
value
)
{
addCriterion
(
"source_fi
eld <"
,
value
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"source_fi
led <="
,
value
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"source_fi
eld <="
,
value
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dLike
(
String
value
)
{
addCriterion
(
"source_fi
led like"
,
value
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dLike
(
String
value
)
{
addCriterion
(
"source_fi
eld like"
,
value
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dNotLike
(
String
value
)
{
addCriterion
(
"source_fi
led not like"
,
value
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dNotLike
(
String
value
)
{
addCriterion
(
"source_fi
eld not like"
,
value
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dIn
(
List
<
String
>
values
)
{
addCriterion
(
"source_fi
led in"
,
values
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dIn
(
List
<
String
>
values
)
{
addCriterion
(
"source_fi
eld in"
,
values
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"source_fi
led not in"
,
values
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"source_fi
eld not in"
,
values
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"source_fi
led between"
,
value1
,
value2
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"source_fi
eld between"
,
value1
,
value2
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSourceFi
le
dNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"source_fi
led not between"
,
value1
,
value2
,
"sourceFile
d"
);
public
Criteria
andSourceFi
el
dNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"source_fi
eld not between"
,
value1
,
value2
,
"sourceFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dIsNull
()
{
addCriterion
(
"target_fi
le
d is null"
);
public
Criteria
andTargetFi
el
dIsNull
()
{
addCriterion
(
"target_fi
el
d is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dIsNotNull
()
{
addCriterion
(
"target_fi
le
d is not null"
);
public
Criteria
andTargetFi
el
dIsNotNull
()
{
addCriterion
(
"target_fi
el
d is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dEqualTo
(
String
value
)
{
addCriterion
(
"target_fi
led ="
,
value
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dEqualTo
(
String
value
)
{
addCriterion
(
"target_fi
eld ="
,
value
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dNotEqualTo
(
String
value
)
{
addCriterion
(
"target_fi
led <>"
,
value
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dNotEqualTo
(
String
value
)
{
addCriterion
(
"target_fi
eld <>"
,
value
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dGreaterThan
(
String
value
)
{
addCriterion
(
"target_fi
led >"
,
value
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dGreaterThan
(
String
value
)
{
addCriterion
(
"target_fi
eld >"
,
value
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"target_fi
led >="
,
value
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"target_fi
eld >="
,
value
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dLessThan
(
String
value
)
{
addCriterion
(
"target_fi
led <"
,
value
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dLessThan
(
String
value
)
{
addCriterion
(
"target_fi
eld <"
,
value
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"target_fi
led <="
,
value
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"target_fi
eld <="
,
value
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dLike
(
String
value
)
{
addCriterion
(
"target_fi
led like"
,
value
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dLike
(
String
value
)
{
addCriterion
(
"target_fi
eld like"
,
value
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dNotLike
(
String
value
)
{
addCriterion
(
"target_fi
led not like"
,
value
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dNotLike
(
String
value
)
{
addCriterion
(
"target_fi
eld not like"
,
value
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dIn
(
List
<
String
>
values
)
{
addCriterion
(
"target_fi
led in"
,
values
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dIn
(
List
<
String
>
values
)
{
addCriterion
(
"target_fi
eld in"
,
values
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"target_fi
led not in"
,
values
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"target_fi
eld not in"
,
values
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"target_fi
led between"
,
value1
,
value2
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"target_fi
eld between"
,
value1
,
value2
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTargetFi
le
dNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"target_fi
led not between"
,
value1
,
value2
,
"targetFile
d"
);
public
Criteria
andTargetFi
el
dNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"target_fi
eld not between"
,
value1
,
value2
,
"targetFiel
d"
);
return
(
Criteria
)
this
;
}
...
...
backend/src/main/java/io/dataease/base/mapper/PanelViewLinkageFieldMapper.xml
浏览文件 @
d46a40dc
...
...
@@ -4,8 +4,8 @@
<resultMap
id=
"BaseResultMap"
type=
"io.dataease.base.domain.PanelViewLinkageField"
>
<id
column=
"id"
jdbcType=
"VARCHAR"
property=
"id"
/>
<result
column=
"linkage_id"
jdbcType=
"VARCHAR"
property=
"linkageId"
/>
<result
column=
"source_fi
led"
jdbcType=
"VARCHAR"
property=
"sourceFile
d"
/>
<result
column=
"target_fi
led"
jdbcType=
"VARCHAR"
property=
"targetFile
d"
/>
<result
column=
"source_fi
eld"
jdbcType=
"VARCHAR"
property=
"sourceFiel
d"
/>
<result
column=
"target_fi
eld"
jdbcType=
"VARCHAR"
property=
"targetFiel
d"
/>
<result
column=
"update_time"
jdbcType=
"BIGINT"
property=
"updateTime"
/>
</resultMap>
<sql
id=
"Example_Where_Clause"
>
...
...
@@ -67,7 +67,7 @@
</where>
</sql>
<sql
id=
"Base_Column_List"
>
id, linkage_id, source_fi
led, target_file
d, update_time
id, linkage_id, source_fi
eld, target_fiel
d, update_time
</sql>
<select
id=
"selectByExample"
parameterType=
"io.dataease.base.domain.PanelViewLinkageFieldExample"
resultMap=
"BaseResultMap"
>
select
...
...
@@ -100,10 +100,10 @@
</if>
</delete>
<insert
id=
"insert"
parameterType=
"io.dataease.base.domain.PanelViewLinkageField"
>
insert into panel_view_linkage_field (id, linkage_id, source_fi
le
d,
target_fi
le
d, update_time)
values (#{id,jdbcType=VARCHAR}, #{linkageId,jdbcType=VARCHAR}, #{sourceFi
le
d,jdbcType=VARCHAR},
#{targetFi
le
d,jdbcType=VARCHAR}, #{updateTime,jdbcType=BIGINT})
insert into panel_view_linkage_field (id, linkage_id, source_fi
el
d,
target_fi
el
d, update_time)
values (#{id,jdbcType=VARCHAR}, #{linkageId,jdbcType=VARCHAR}, #{sourceFi
el
d,jdbcType=VARCHAR},
#{targetFi
el
d,jdbcType=VARCHAR}, #{updateTime,jdbcType=BIGINT})
</insert>
<insert
id=
"insertSelective"
parameterType=
"io.dataease.base.domain.PanelViewLinkageField"
>
insert into panel_view_linkage_field
...
...
@@ -114,11 +114,11 @@
<if
test=
"linkageId != null"
>
linkage_id,
</if>
<if
test=
"sourceFi
le
d != null"
>
source_fi
le
d,
<if
test=
"sourceFi
el
d != null"
>
source_fi
el
d,
</if>
<if
test=
"targetFi
le
d != null"
>
target_fi
le
d,
<if
test=
"targetFi
el
d != null"
>
target_fi
el
d,
</if>
<if
test=
"updateTime != null"
>
update_time,
...
...
@@ -131,11 +131,11 @@
<if
test=
"linkageId != null"
>
#{linkageId,jdbcType=VARCHAR},
</if>
<if
test=
"sourceFi
le
d != null"
>
#{sourceFi
le
d,jdbcType=VARCHAR},
<if
test=
"sourceFi
el
d != null"
>
#{sourceFi
el
d,jdbcType=VARCHAR},
</if>
<if
test=
"targetFi
le
d != null"
>
#{targetFi
le
d,jdbcType=VARCHAR},
<if
test=
"targetFi
el
d != null"
>
#{targetFi
el
d,jdbcType=VARCHAR},
</if>
<if
test=
"updateTime != null"
>
#{updateTime,jdbcType=BIGINT},
...
...
@@ -157,11 +157,11 @@
<if
test=
"record.linkageId != null"
>
linkage_id = #{record.linkageId,jdbcType=VARCHAR},
</if>
<if
test=
"record.sourceFi
le
d != null"
>
source_fi
led = #{record.sourceFile
d,jdbcType=VARCHAR},
<if
test=
"record.sourceFi
el
d != null"
>
source_fi
eld = #{record.sourceFiel
d,jdbcType=VARCHAR},
</if>
<if
test=
"record.targetFi
le
d != null"
>
target_fi
led = #{record.targetFile
d,jdbcType=VARCHAR},
<if
test=
"record.targetFi
el
d != null"
>
target_fi
eld = #{record.targetFiel
d,jdbcType=VARCHAR},
</if>
<if
test=
"record.updateTime != null"
>
update_time = #{record.updateTime,jdbcType=BIGINT},
...
...
@@ -175,8 +175,8 @@
update panel_view_linkage_field
set id = #{record.id,jdbcType=VARCHAR},
linkage_id = #{record.linkageId,jdbcType=VARCHAR},
source_fi
led = #{record.sourceFile
d,jdbcType=VARCHAR},
target_fi
led = #{record.targetFile
d,jdbcType=VARCHAR},
source_fi
eld = #{record.sourceFiel
d,jdbcType=VARCHAR},
target_fi
eld = #{record.targetFiel
d,jdbcType=VARCHAR},
update_time = #{record.updateTime,jdbcType=BIGINT}
<if
test=
"_parameter != null"
>
<include
refid=
"Update_By_Example_Where_Clause"
/>
...
...
@@ -188,11 +188,11 @@
<if
test=
"linkageId != null"
>
linkage_id = #{linkageId,jdbcType=VARCHAR},
</if>
<if
test=
"sourceFi
le
d != null"
>
source_fi
led = #{sourceFile
d,jdbcType=VARCHAR},
<if
test=
"sourceFi
el
d != null"
>
source_fi
eld = #{sourceFiel
d,jdbcType=VARCHAR},
</if>
<if
test=
"targetFi
le
d != null"
>
target_fi
led = #{targetFile
d,jdbcType=VARCHAR},
<if
test=
"targetFi
el
d != null"
>
target_fi
eld = #{targetFiel
d,jdbcType=VARCHAR},
</if>
<if
test=
"updateTime != null"
>
update_time = #{updateTime,jdbcType=BIGINT},
...
...
@@ -203,8 +203,8 @@
<update
id=
"updateByPrimaryKey"
parameterType=
"io.dataease.base.domain.PanelViewLinkageField"
>
update panel_view_linkage_field
set linkage_id = #{linkageId,jdbcType=VARCHAR},
source_fi
led = #{sourceFile
d,jdbcType=VARCHAR},
target_fi
led = #{targetFile
d,jdbcType=VARCHAR},
source_fi
eld = #{sourceFiel
d,jdbcType=VARCHAR},
target_fi
eld = #{targetFiel
d,jdbcType=VARCHAR},
update_time = #{updateTime,jdbcType=BIGINT}
where id = #{id,jdbcType=VARCHAR}
</update>
...
...
backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewLinkageMapper.java
浏览文件 @
d46a40dc
...
...
@@ -9,6 +9,11 @@ import java.util.List;
public
interface
ExtPanelViewLinkageMapper
{
List
<
PanelViewLinkageDTO
>
getViewLinkageGather
(
@Param
(
"panelId"
)
String
panelId
,
@Param
(
"sourceViewId"
)
String
sourceViewId
,
@Param
(
"targetViewIds"
)
List
<
String
>
targetViewIds
);
List
<
DatasetTableField
>
queryTableField
(
@Param
(
"tableId"
)
String
tableId
);
List
<
DatasetTableField
>
queryTableField
(
@Param
(
"table_id"
)
String
tableId
);
void
deleteViewLinkage
(
@Param
(
"panelId"
)
String
panelId
,
@Param
(
"sourceViewId"
)
String
sourceViewId
);
void
deleteViewLinkageField
(
@Param
(
"panelId"
)
String
panelId
,
@Param
(
"sourceViewId"
)
String
sourceViewId
);
}
backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewLinkageMapper.xml
浏览文件 @
d46a40dc
...
...
@@ -3,7 +3,7 @@
<mapper
namespace=
"io.dataease.base.mapper.ext.ExtPanelViewLinkageMapper"
>
<resultMap
id=
"TableFieldMap"
type=
"io.dataease.base.domain.DatasetTableField"
>
<
id
column=
"id"
jdbcType=
"VARCHAR"
property=
"id"
/>
<
result
column=
"id"
jdbcType=
"VARCHAR"
property=
"id"
/>
<result
column=
"table_id"
jdbcType=
"VARCHAR"
property=
"tableId"
/>
<result
column=
"origin_name"
jdbcType=
"VARCHAR"
property=
"originName"
/>
<result
column=
"name"
jdbcType=
"VARCHAR"
property=
"name"
/>
...
...
@@ -15,12 +15,12 @@
<result
column=
"table_id"
jdbcType=
"VARCHAR"
property=
"tableId"
/>
<result
column=
"targetViewName"
jdbcType=
"VARCHAR"
property=
"targetViewName"
/>
<result
column=
"linkageActive"
property=
"linkageActive"
/>
<!-- <collection property="targetViewFields" ofType="io.dataease.base.domain.DatasetTableField" column="table_id"-->
<!-- select="queryTableField">--
>
<!-- </collection>--
>
<collection
property=
"linkageFields"
ofType=
"io.dataease.
dto.PanelViewLinkageFieldDTO
"
>
<result
column=
"source_fi
led"
jdbcType=
"VARCHAR"
property=
"sourceFile
d"
/>
<result
column=
"target_fi
led"
jdbcType=
"VARCHAR"
property=
"targetFile
d"
/>
<collection
property=
"targetViewFields"
ofType=
"io.dataease.base.domain.DatasetTableField"
column=
"table_id"
select=
"queryTableField"
>
</collection
>
<collection
property=
"linkageFields"
ofType=
"io.dataease.
base.domain.PanelViewLinkageField
"
>
<result
column=
"source_fi
eld"
jdbcType=
"VARCHAR"
property=
"sourceFiel
d"
/>
<result
column=
"target_fi
eld"
jdbcType=
"VARCHAR"
property=
"targetFiel
d"
/>
</collection>
</resultMap>
...
...
@@ -30,14 +30,14 @@
chart_view.id as 'target_view_id',
chart_view.table_id,
(case when panel_view_linkage.target_view_id is null then 0 else 1 end) as 'linkageActive',
panel_view_linkage_field.source_fi
le
d,
panel_view_linkage_field.target_fi
le
d
panel_view_linkage_field.source_fi
el
d,
panel_view_linkage_field.target_fi
el
d
FROM
chart_view
LEFT JOIN panel_view_linkage ON chart_view.id = panel_view_linkage.target_view_id
LEFT JOIN panel_view_linkage_field ON panel_view_linkage.id = panel_view_linkage_field.linkage_id
AND panel_view_linkage.panel_id = #{panelId}
AND panel_view_linkage.source_view_id = #{sourceViewId}
LEFT JOIN panel_view_linkage_field ON panel_view_linkage.id = panel_view_linkage_field.linkage_id
where chart_view.id in
<foreach
collection=
"targetViewIds"
item=
"targetViewId"
index=
"index"
open=
"("
close=
")"
separator=
","
>
#{targetViewId}
...
...
@@ -49,9 +49,33 @@
dataset_table_field.id,
dataset_table_field.table_id,
dataset_table_field.origin_name,
dataset_table_field.
name
,
dataset_table_field.
`name`
,
dataset_table_field.de_type
from dataset_table_field where table_id = #{tableI
d}
from dataset_table_field where table_id = #{table_i
d}
</select>
<delete
id=
"deleteViewLinkage"
>
delete from panel_view_linkage where panel_view_linkage.panel_id = #{panelId}
AND panel_view_linkage.source_view_id = #{sourceViewId}
</delete>
<delete
id=
"deleteViewLinkageField"
>
DELETE pvl
FROM
panel_view_linkage pvl,
panel_view_linkage_field pvlf
WHERE
pvl.id = pvlf.linkage_id
AND pvl.source_view_id = #{panelId}
AND pvl.panel_id = #{panelId}
</delete>
<insert
id=
"savePluginMenu"
>
INSERT INTO `panel_view_linkage` ( menu_id, title, pid, sub_count, permission, hidden,i_frame ) VALUES
<foreach
collection=
"menuList"
item=
"menu"
index=
"index"
separator=
","
>
(#{menu.menuId},#{menu.title},#{menu.pid},#{menu.subCount},#{menu.permission},#{menu.hidden},ifnull(#{menu.hidden},0))
</foreach>
</insert>
</mapper>
backend/src/main/java/io/dataease/controller/panel/PanelViewLinkageController.java
浏览文件 @
d46a40dc
...
...
@@ -2,6 +2,7 @@ package io.dataease.controller.panel;
import
com.github.xiaoymin.knife4j.annotations.ApiSupport
;
import
io.dataease.controller.request.panel.PanelLinkageRequest
;
import
io.dataease.dto.PanelViewLinkageDTO
;
import
io.dataease.service.panel.PanelViewLinkageService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
...
...
@@ -30,4 +31,13 @@ public class PanelViewLinkageController {
return
panelViewLinkageService
.
getViewLinkageGather
(
request
);
}
@ApiOperation
(
"获取仪表板视图联动信息"
)
@PostMapping
(
"/saveLinkage"
)
public
void
saveLinkage
(
@RequestBody
PanelLinkageRequest
request
){
panelViewLinkageService
.
saveLinkage
(
request
);
}
}
backend/src/main/java/io/dataease/controller/request/panel/PanelLinkageRequest.java
浏览文件 @
d46a40dc
package
io
.
dataease
.
controller
.
request
.
panel
;
import
io.dataease.dto.PanelViewLinkageDTO
;
import
java.util.List
;
import
java.util.Map
;
/**
* Author: wangjiahao
...
...
@@ -15,6 +18,16 @@ public class PanelLinkageRequest {
private
List
<
String
>
targetViewIds
;
private
Map
<
String
,
PanelViewLinkageDTO
>
linkageInfo
;
public
Map
<
String
,
PanelViewLinkageDTO
>
getLinkageInfo
()
{
return
linkageInfo
;
}
public
void
setLinkageInfo
(
Map
<
String
,
PanelViewLinkageDTO
>
linkageInfo
)
{
this
.
linkageInfo
=
linkageInfo
;
}
public
String
getPanelId
()
{
return
panelId
;
}
...
...
backend/src/main/java/io/dataease/dto/PanelViewLinkageDTO.java
浏览文件 @
d46a40dc
...
...
@@ -2,6 +2,7 @@ package io.dataease.dto;
import
io.dataease.base.domain.DatasetTableField
;
import
io.dataease.base.domain.PanelViewLinkage
;
import
io.dataease.base.domain.PanelViewLinkageField
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -19,7 +20,7 @@ public class PanelViewLinkageDTO extends PanelViewLinkage {
//关联状态
private
boolean
linkageActive
=
false
;
private
List
<
PanelViewLinkageField
DTO
>
linkageFields
=
new
ArrayList
<>();
private
List
<
PanelViewLinkageField
>
linkageFields
=
new
ArrayList
<>();
private
List
<
DatasetTableField
>
targetViewFields
=
new
ArrayList
<>();
...
...
@@ -68,11 +69,11 @@ public class PanelViewLinkageDTO extends PanelViewLinkage {
this
.
linkageActive
=
linkageActive
;
}
public
List
<
PanelViewLinkageField
DTO
>
getLinkageFields
()
{
public
List
<
PanelViewLinkageField
>
getLinkageFields
()
{
return
linkageFields
;
}
public
void
setLinkageFields
(
List
<
PanelViewLinkageField
DTO
>
linkageFields
)
{
public
void
setLinkageFields
(
List
<
PanelViewLinkageField
>
linkageFields
)
{
this
.
linkageFields
=
linkageFields
;
}
}
backend/src/main/java/io/dataease/service/panel/PanelViewLinkageService.java
浏览文件 @
d46a40dc
package
io
.
dataease
.
service
.
panel
;
import
io.dataease.base.domain.PanelViewLinkage
;
import
io.dataease.base.domain.PanelViewLinkageExample
;
import
io.dataease.base.domain.PanelViewLinkageField
;
import
io.dataease.base.mapper.PanelViewLinkageFieldMapper
;
import
io.dataease.base.mapper.PanelViewLinkageMapper
;
import
io.dataease.base.mapper.ext.ExtPanelViewLinkageMapper
;
import
io.dataease.commons.utils.AuthUtils
;
import
io.dataease.controller.request.panel.PanelLinkageRequest
;
import
io.dataease.dto.PanelViewLinkageDTO
;
import
io.dataease.dto.PanelViewLinkageFieldDTO
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.Assert
;
import
javax.annotation.Resource
;
import
java.util.*
;
...
...
@@ -22,6 +30,9 @@ public class PanelViewLinkageService {
@Resource
private
PanelViewLinkageMapper
panelViewLinkageMapper
;
@Resource
private
PanelViewLinkageFieldMapper
panelViewLinkageFieldMapper
;
@Resource
private
ExtPanelViewLinkageMapper
extPanelViewLinkageMapper
;
...
...
@@ -29,9 +40,6 @@ public class PanelViewLinkageService {
public
Map
<
String
,
PanelViewLinkageDTO
>
getViewLinkageGather
(
PanelLinkageRequest
request
)
{
if
(
CollectionUtils
.
isNotEmpty
(
request
.
getTargetViewIds
())){
List
<
PanelViewLinkageDTO
>
linkageDTOList
=
extPanelViewLinkageMapper
.
getViewLinkageGather
(
request
.
getPanelId
(),
request
.
getSourceViewId
(),
request
.
getTargetViewIds
());
linkageDTOList
.
stream
().
forEach
(
linkage
->{
linkage
.
setTargetViewFields
(
extPanelViewLinkageMapper
.
queryTableField
(
linkage
.
getTableId
()));
});
Map
<
String
,
PanelViewLinkageDTO
>
result
=
linkageDTOList
.
stream
()
.
collect
(
Collectors
.
toMap
(
PanelViewLinkageDTO:
:
getTargetViewId
,
PanelViewLinkageDTO
->
PanelViewLinkageDTO
));
return
result
;
...
...
@@ -39,5 +47,61 @@ public class PanelViewLinkageService {
return
new
HashMap
<>();
}
@Transactional
public
void
saveLinkage
(
PanelLinkageRequest
request
){
Long
updateTime
=
System
.
currentTimeMillis
();
Map
<
String
,
PanelViewLinkageDTO
>
linkageInfo
=
request
.
getLinkageInfo
();
String
sourceViewId
=
request
.
getSourceViewId
();
String
panelId
=
request
.
getPanelId
();
Assert
.
notNull
(
sourceViewId
,
"source View ID can not be null"
);
Assert
.
notNull
(
panelId
,
"panelId can not be null"
);
//去掉source view 的信息
linkageInfo
.
remove
(
sourceViewId
);
// 清理原有关系
extPanelViewLinkageMapper
.
deleteViewLinkageField
(
panelId
,
sourceViewId
);
extPanelViewLinkageMapper
.
deleteViewLinkage
(
panelId
,
sourceViewId
);
//重新建立关系
for
(
Map
.
Entry
<
String
,
PanelViewLinkageDTO
>
entry
:
linkageInfo
.
entrySet
()){
String
targetViewId
=
entry
.
getKey
();
PanelViewLinkageDTO
linkageDTO
=
entry
.
getValue
();
List
<
PanelViewLinkageField
>
linkageFields
=
linkageDTO
.
getLinkageFields
();
if
(
CollectionUtils
.
isNotEmpty
(
linkageFields
)&&
linkageDTO
.
isLinkageActive
()){
String
linkageId
=
UUID
.
randomUUID
().
toString
();
PanelViewLinkage
linkage
=
new
PanelViewLinkage
();
linkage
.
setId
(
linkageId
);
linkage
.
setPanelId
(
panelId
);
linkage
.
setSourceViewId
(
sourceViewId
);
linkage
.
setTargetViewId
(
targetViewId
);
linkage
.
setUpdatePeople
(
AuthUtils
.
getUser
().
getUsername
());
linkage
.
setUpdateTime
(
updateTime
);
panelViewLinkageMapper
.
insert
(
linkage
);
linkageFields
.
stream
().
forEach
(
linkageField
->{
linkageField
.
setId
(
UUID
.
randomUUID
().
toString
());
linkageField
.
setLinkageId
(
linkageId
);
linkageField
.
setUpdateTime
(
updateTime
);
panelViewLinkageFieldMapper
.
insert
(
linkageField
);
});
}
}
}
}
backend/src/main/resources/db/migration/V20__linkage_table.sql
0 → 100644
浏览文件 @
d46a40dc
SET
NAMES
utf8mb4
;
SET
FOREIGN_KEY_CHECKS
=
0
;
-- ----------------------------
-- Table structure for panel_view_linkage
-- ----------------------------
DROP
TABLE
IF
EXISTS
`panel_view_linkage`
;
CREATE
TABLE
`panel_view_linkage`
(
`id`
varchar
(
50
)
NOT
NULL
,
`panel_id`
varchar
(
50
)
DEFAULT
NULL
,
`source_view_id`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'源视图id'
,
`target_view_id`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'联动视图id'
,
`update_time`
bigint
(
13
)
DEFAULT
NULL
COMMENT
'更新时间'
,
`update_people`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'更新人'
,
`ext1`
varchar
(
2000
)
DEFAULT
NULL
,
`ext2`
varchar
(
2000
)
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
-- ----------------------------
-- Table structure for panel_view_linkage_field
-- ----------------------------
DROP
TABLE
IF
EXISTS
`panel_view_linkage_field`
;
CREATE
TABLE
`panel_view_linkage_field`
(
`id`
varchar
(
50
)
NOT
NULL
,
`linkage_id`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'联动ID'
,
`source_field`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'源视图字段'
,
`target_field`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'目标视图字段'
,
`update_time`
bigint
(
13
)
DEFAULT
NULL
COMMENT
'更新时间'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
SET
FOREIGN_KEY_CHECKS
=
1
;
frontend/src/api/panel/linkage.js
浏览文件 @
d46a40dc
...
...
@@ -9,3 +9,12 @@ export function getViewLinkageGather(requestInfo) {
})
}
export
function
saveLinkage
(
requestInfo
)
{
return
request
({
url
:
'/linkage/saveLinkage'
,
method
:
'post'
,
data
:
requestInfo
,
loading
:
true
})
}
frontend/src/components/canvas/components/Editor/LinkageField.vue
浏览文件 @
d46a40dc
<
template
>
<el-popover
width=
"
3
00"
width=
"
4
00"
trigger=
"click"
>
<el-row>
<el-col
:span=
"1
0
"
>
<div
class=
"ellip"
>
联动视图
</div>
<el-col
:span=
"1
1
"
>
<div
class=
"ellip"
>
{{
sourceLinkageInfo
.
targetViewName
}}
</div>
</el-col>
<el-col
:span=
"1
0
"
>
<el-col
:span=
"1
1
"
>
<div
class=
"ellip"
>
{{
linkageInfo
.
targetViewName
}}
</div>
</el-col>
</el-row>
linkageInfo
{{
linkageInfo
}}
<el-row
v-for=
"(item, index) in linkageInfo.linkageFields"
:key=
"index"
>
<el-col
:span=
"11"
>
<div
class=
"select-filed"
>
<el-select
v-model=
"item.sourceField"
size=
"mini"
placeholder=
"请选择"
>
<el-option
v-for=
"item in sourceLinkageInfo.targetViewFields"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
>
<span
style=
"float: left"
>
<svg-icon
v-if=
"item.deType === 0"
icon-class=
"field_text"
class=
"field-icon-text"
/>
<svg-icon
v-if=
"item.deType === 1"
icon-class=
"field_time"
class=
"field-icon-time"
/>
<svg-icon
v-if=
"item.deType === 2 || item.value === 3"
icon-class=
"field_value"
class=
"field-icon-value"
/>
<svg-icon
v-if=
"item.deType === 5"
icon-class=
"field_location"
class=
"field-icon-location"
/>
</span>
<span
style=
"float: left; color: #8492a6; font-size: 12px"
>
{{
item
.
name
}}
</span>
</el-option>
</el-select>
</div>
</el-col>
<el-col
:span=
"11"
>
<div
class=
"select-filed"
>
<el-select
v-model=
"item.targetField"
size=
"mini"
placeholder=
"请选择"
>
<el-option
v-for=
"item in linkageInfo.targetViewFields"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
>
<span
style=
"float: left"
>
<svg-icon
v-if=
"item.deType === 0"
icon-class=
"field_text"
class=
"field-icon-text"
/>
<svg-icon
v-if=
"item.deType === 1"
icon-class=
"field_time"
class=
"field-icon-time"
/>
<svg-icon
v-if=
"item.deType === 2 || item.value === 3"
icon-class=
"field_value"
class=
"field-icon-value"
/>
<svg-icon
v-if=
"item.deType === 5"
icon-class=
"field_location"
class=
"field-icon-location"
/>
</span>
<span
style=
"float: left; color: #8492a6; font-size: 12px"
>
{{
item
.
name
}}
</span>
</el-option>
</el-select>
</div>
</el-col>
<el-col
:span=
"2"
>
<div>
<el-button
icon=
"el-icon-delete"
type=
"text"
size=
"small"
style=
"float: left"
@
click=
"deleteLinkageField(index)"
/>
</div>
</el-col>
</el-row>
<el-row
class=
"bottom"
>
<el-button
size=
"mini"
type=
"success"
icon=
"el-icon-plus"
round
>
追加联动依赖字段
</el-button>
<el-button
size=
"mini"
type=
"success"
icon=
"el-icon-plus"
round
@
click=
"addLinkageField"
>
追加联动依赖字段
</el-button>
</el-row>
<!--
<el-button
slot=
"reference"
>
T
</el-button>
-->
...
...
@@ -60,6 +106,9 @@ export default {
linkageInfo
()
{
return
this
.
targetLinkageInfo
[
this
.
element
.
propValue
.
viewId
]
},
sourceLinkageInfo
()
{
return
this
.
targetLinkageInfo
[
this
.
curLinkageView
.
propValue
.
viewId
]
},
...
mapState
([
'menuTop'
,
'menuLeft'
,
...
...
@@ -81,6 +130,16 @@ export default {
},
linkageEdit
()
{
},
deleteLinkageField
(
index
)
{
this
.
linkageInfo
.
linkageFields
.
splice
(
index
,
1
)
},
addLinkageField
()
{
const
linkageFieldItem
=
{
sourceViewId
:
null
,
targetViewId
:
null
}
this
.
linkageInfo
.
linkageFields
.
push
(
linkageFieldItem
)
}
}
}
...
...
@@ -92,6 +151,7 @@ export default {
}
.bottom
{
margin-top
:
20px
;
text-align
:
center
;
}
...
...
@@ -110,4 +170,18 @@ export default {
border-radius
:
3px
;
}
.select-filed
{
/*width: 100%;*/
margin-left
:
10px
;
margin-right
:
10px
;
overflow
:
hidden
;
/*超出部分隐藏*/
white-space
:
nowrap
;
/*不换行*/
text-overflow
:ellipsis
;
/*超出部分文字以...显示*/
color
:
#3d4d66
;
font-size
:
12px
;
line-height
:
35px
;
height
:
35px
;
border-radius
:
3px
;
}
</
style
>
frontend/src/components/canvas/components/Editor/SettingMenu.vue
浏览文件 @
d46a40dc
...
...
@@ -124,7 +124,8 @@ export default {
},
linkageSetting
()
{
debugger
const
targetViewIds
=
this
.
componentData
.
filter
(
item
=>
item
.
type
===
'view'
&&
item
.
propValue
&&
item
.
propValue
.
viewId
&&
item
!==
this
.
curComponent
)
// sourceViewId 也加入查询
const
targetViewIds
=
this
.
componentData
.
filter
(
item
=>
item
.
type
===
'view'
&&
item
.
propValue
&&
item
.
propValue
.
viewId
)
.
map
(
item
=>
item
.
propValue
.
viewId
)
// 获取当前仪表板当前视图联动信息
...
...
frontend/src/components/canvas/components/Toolbar.vue
浏览文件 @
d46a40dc
...
...
@@ -101,6 +101,7 @@ import { commonStyle, commonAttr } from '@/components/canvas/custom-component/co
import
eventBus
from
'@/components/canvas/utils/eventBus'
import
{
deepCopy
}
from
'@/components/canvas/utils/utils'
import
{
panelSave
}
from
'@/api/panel/panel'
import
{
saveLinkage
}
from
'@/api/panel/linkage'
import
bus
from
'@/utils/bus'
import
{
DEFAULT_COMMON_CANVAS_STYLE_STRING
...
...
@@ -137,7 +138,9 @@ export default {
'changeTimes'
,
'snapshotIndex'
,
'lastSaveSnapshotIndex'
,
'linkageSettingStatus'
'linkageSettingStatus'
,
'curLinkageView'
,
'targetLinkageInfo'
]),
created
()
{
...
...
@@ -316,7 +319,14 @@ export default {
this
.
close
()
},
saveLinkage
()
{
this
.
cancelLinkageSettingStatus
()
const
request
=
{
panelId
:
this
.
$store
.
state
.
panel
.
panelInfo
.
id
,
sourceViewId
:
this
.
curLinkageView
.
propValue
.
viewId
,
linkageInfo
:
this
.
targetLinkageInfo
}
saveLinkage
(
request
).
then
(
rsp
=>
{
this
.
cancelLinkageSettingStatus
()
})
},
cancelLinkage
()
{
this
.
cancelLinkageSettingStatus
()
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论