Browse Source

优化表选择器,支持筛选已添加的表

AE86 9 months ago
parent
commit
efa8544cfe

+ 3 - 2
dbsyncer-biz/src/main/java/org/dbsyncer/biz/MappingService.java

@@ -53,12 +53,13 @@ public interface MappingService {
     MappingVo getMapping(String id);
 
     /**
-     * 获取驱动(过滤已匹配的表)
+     * 获取驱动
      *
      * @param id
+     * @param exclude 0-过滤已添加的表;1-显示所有表,包含已添加的表
      * @return
      */
-    MappingVo getMappingWithoutMatchedTables(String id);
+    MappingVo getMapping(String id, Integer exclude);
 
     /**
      * 获取所有驱动

+ 8 - 3
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/MappingServiceImpl.java

@@ -172,12 +172,17 @@ public class MappingServiceImpl extends BaseServiceImpl implements MappingServic
     }
 
     @Override
-    public MappingVo getMappingWithoutMatchedTables(String id) {
+    public MappingVo getMapping(String id, Integer exclude) {
         Mapping mapping = profileComponent.getMapping(id);
+        // 显示所有表
+        if (exclude != null && exclude == 1) {
+            return convertMapping2Vo(mapping);
+        }
+
+        // 过滤已映射的表
         MappingVo vo = convertMapping2Vo(mapping);
         List<TableGroup> tableGroupAll = tableGroupService.getTableGroupAll(id);
-        // 过滤已映射的表
-        if(!CollectionUtils.isEmpty(tableGroupAll)){
+        if (!CollectionUtils.isEmpty(tableGroupAll)) {
             final Set<String> sTables = new HashSet<>();
             final Set<String> tTables = new HashSet<>();
             tableGroupAll.forEach(tableGroup -> {

+ 2 - 2
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/AbstractConfigModel.java

@@ -17,10 +17,10 @@ public abstract class AbstractConfigModel extends ConfigModel {
     private Map<String, String> params = new HashMap<>();
 
     // 过滤条件
-    private List<Filter> filter = new ArrayList<>();;
+    private List<Filter> filter = new ArrayList<>();
 
     // 转换配置
-    private List<Convert> convert = new ArrayList<>();;
+    private List<Convert> convert = new ArrayList<>();
 
     // 插件配置
     private Plugin plugin;

+ 2 - 2
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/index/MappingController.java

@@ -42,8 +42,8 @@ public class MappingController extends BaseController {
     }
 
     @GetMapping("/page/{page}")
-    public String page(ModelMap model, @PathVariable("page") String page, @RequestParam(value = "id") String id) {
-        model.put("mapping", mappingService.getMappingWithoutMatchedTables(id));
+    public String page(ModelMap model, @PathVariable("page") String page, @RequestParam(value = "id") String id, Integer exclude) {
+        model.put("mapping", mappingService.getMapping(id, exclude));
         model.put("tableGroups", tableGroupService.getTableGroupAll(id));
         initConfig(model);
         return "mapping/" + page;

+ 19 - 3
dbsyncer-web/src/main/resources/static/js/mapping/edit.js

@@ -120,6 +120,20 @@ function bindTableSelect(){
     bindMappingTableGroupAddClick($sourceSelect, $targetSelect);
 }
 
+// 绑定下拉过滤按钮点击事件
+function bindMultipleSelectFilterBtnClick() {
+    $(".actions-btn").parent().append('<button type="button" class="actions-btn bs-show-all btn btn-default" title="显示所有表,包含已添加的表">取消过滤</button><button type="button" class="actions-btn bs-exclude-all btn btn-default" title="不显示已添加的表">过滤</button>');
+    $(".actions-btn").css('width', '25%');
+    $(".bs-show-all").bind("click", function () {
+        doLoader('/mapping/page/edit?id=' + $("#mappingId").val() + '&exclude=1');
+        bootGrowl("取消过滤成功!", "success");
+    });
+    $(".bs-exclude-all").bind("click", function () {
+        refresh($("#mappingId").val());
+        bootGrowl("过滤成功!", "success");
+    });
+}
+
 // 绑定新增表关系点击事件
 function bindMappingTableGroupAddClick($sourceSelect, $targetSelect) {
     let $addBtn = $("#tableGroupAddBtn");
@@ -213,7 +227,7 @@ function bindRefreshTablesClick() {
         doPoster("/mapping/refreshTables", {'id': id}, function (data) {
             if (data.success == true) {
                 bootGrowl("刷新表成功!", "success");
-                doLoader('/mapping/page/edit?id=' + id);
+                refresh(id);
             } else {
                 bootGrowl(data.resultValue, "danger");
             }
@@ -240,12 +254,14 @@ $(function () {
 
     // 初始化select插件
     initSelectIndex($(".select-control-table"), -1);
+    // 绑定下拉过滤按钮点击事件
+    bindMultipleSelectFilterBtnClick();
 
     // 保存
     $("#mappingSubmitBtn").click(function () {
-        var $form = $("#mappingModifyForm");
+        let $form = $("#mappingModifyForm");
         if ($form.formValidate() == true) {
-            var data = $form.serializeJson();
+            let data = $form.serializeJson();
             submit(data);
         }
     });