This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 27d577702c [INLONG-10008][Dashboard][Manager] Supplement fields of 
MongoDB data source for Dashboard (#10009)
27d577702c is described below

commit 27d577702cdebff218d24f4e16a23a9947b029be
Author: haifxu <[email protected]>
AuthorDate: Fri Apr 19 12:33:55 2024 +0800

    [INLONG-10008][Dashboard][Manager] Supplement fields of MongoDB data source 
for Dashboard (#10009)
---
 .../src/plugins/sources/defaults/Mongodb.ts        | 126 ++++++++++++++++++++-
 inlong-dashboard/src/ui/locales/cn.json            |   3 +
 inlong-dashboard/src/ui/locales/en.json            |   3 +
 .../manager/pojo/source/mongodb/MongoDBSource.java |   3 +
 .../pojo/source/mongodb/MongoDBSourceDTO.java      |   3 +
 .../pojo/source/mongodb/MongoDBSourceRequest.java  |   3 +
 6 files changed, 135 insertions(+), 6 deletions(-)

diff --git a/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts 
b/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
index 2c3a8ba33d..3f2b614ad2 100644
--- a/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
@@ -21,6 +21,8 @@ import { DataWithBackend } from '@/plugins/DataWithBackend';
 import { RenderRow } from '@/plugins/RenderRow';
 import { RenderList } from '@/plugins/RenderList';
 import { SourceInfo } from '../common/SourceInfo';
+import rulesPattern from '@/core/utils/pattern';
+import i18n from '@/i18n';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator, SyncField, IngestionField } = RenderRow;
@@ -30,11 +32,102 @@ export default class MongodbSource
   extends SourceInfo
   implements DataWithBackend, RenderRow, RenderList
 {
+  @FieldDecorator({
+    type: 'select',
+    rules: [{ required: true }],
+    props: values => ({
+      disabled: Boolean(values.id),
+      showSearch: true,
+      allowClear: true,
+      filterOption: false,
+      options: {
+        requestTrigger: ['onOpen', 'onSearch'],
+        requestService: keyword => ({
+          url: '/cluster/list',
+          method: 'POST',
+          data: {
+            keyword,
+            type: 'AGENT',
+            pageNum: 1,
+            pageSize: 10,
+          },
+        }),
+        requestParams: {
+          formatResult: result =>
+            result?.list?.map(item => ({
+              ...item,
+              label: item.displayName,
+              value: item.name,
+            })),
+        },
+      },
+      onChange: (value, option) => {
+        return {
+          clusterId: option.id,
+        };
+      },
+    }),
+  })
+  @ColumnDecorator()
+  @IngestionField()
+  @I18n('meta.Sources.File.ClusterName')
+  inlongClusterName: string;
+
+  @FieldDecorator({
+    type: 'text',
+    hidden: true,
+  })
+  @I18n('clusterId')
+  @IngestionField()
+  clusterId: number;
+
+  @FieldDecorator({
+    type: 'select',
+    rules: [
+      {
+        pattern: rulesPattern.ip,
+        message: i18n.t('meta.Sources.File.IpRule'),
+        required: true,
+      },
+    ],
+    props: values => ({
+      disabled: Boolean(values.id),
+      showSearch: true,
+      allowClear: true,
+      filterOption: false,
+      options: {
+        requestTrigger: ['onOpen', 'onSearch'],
+        requestService: keyword => ({
+          url: '/cluster/node/list',
+          method: 'POST',
+          data: {
+            keyword,
+            parentId: values.clusterId,
+            pageNum: 1,
+            pageSize: 10,
+          },
+        }),
+        requestParams: {
+          formatResult: result =>
+            result?.list?.map(item => ({
+              ...item,
+              label: item.ip,
+              value: item.ip,
+            })),
+        },
+      },
+    }),
+  })
+  @ColumnDecorator()
+  @IngestionField()
+  @I18n('meta.Sources.File.DataSourceIP')
+  agentIp: string;
+
   @FieldDecorator({
     type: 'input',
     rules: [{ required: true }],
     props: values => ({
-      disabled: values?.status === 101,
+      disabled: Boolean(values.id),
       placeholder: 'localhost:27017,localhost:27018',
     }),
   })
@@ -48,7 +141,7 @@ export default class MongodbSource
     type: 'input',
     rules: [{ required: true }],
     props: values => ({
-      disabled: values?.status === 101,
+      disabled: Boolean(values.id),
     }),
   })
   @ColumnDecorator()
@@ -61,7 +154,7 @@ export default class MongodbSource
     type: 'password',
     rules: [{ required: true }],
     props: values => ({
-      disabled: values?.status === 101,
+      disabled: Boolean(values.id),
     }),
   })
   @SyncField()
@@ -73,7 +166,7 @@ export default class MongodbSource
     type: 'input',
     rules: [{ required: true }],
     props: values => ({
-      disabled: values?.status === 101,
+      disabled: Boolean(values.id),
     }),
   })
   @SyncField()
@@ -85,7 +178,7 @@ export default class MongodbSource
     type: 'input',
     rules: [{ required: true }],
     props: values => ({
-      disabled: values?.status === 101,
+      disabled: Boolean(values.id),
     }),
   })
   @SyncField()
@@ -93,10 +186,31 @@ export default class MongodbSource
   @I18n('meta.Sources.Mongodb.Collection')
   collection: string;
 
+  @FieldDecorator({
+    type: 'radio',
+    props: values => ({
+      disabled: Boolean(values.id),
+      initialValue: 'initial',
+      options: [
+        {
+          label: i18n.t('meta.Sources.Mongodb.SnapshotMode.Initial'),
+          value: 'initial',
+        },
+        {
+          label: i18n.t('meta.Sources.Mongodb.SnapshotMode.Never'),
+          value: 'never',
+        },
+      ],
+    }),
+  })
+  @IngestionField()
+  @I18n('meta.Sources.Mongodb.SnapshotMode')
+  snapshotMode: string;
+
   @FieldDecorator({
     type: 'input',
     props: values => ({
-      disabled: values?.status === 101,
+      disabled: Boolean(values.id),
     }),
   })
   @SyncField()
diff --git a/inlong-dashboard/src/ui/locales/cn.json 
b/inlong-dashboard/src/ui/locales/cn.json
index 614a2e73cd..e11a79fb27 100644
--- a/inlong-dashboard/src/ui/locales/cn.json
+++ b/inlong-dashboard/src/ui/locales/cn.json
@@ -61,6 +61,9 @@
   "meta.Sources.Mongodb.Password": "密码",
   "meta.Sources.Mongodb.Database": "数据库名",
   "meta.Sources.Mongodb.Collection": "集合名称",
+  "meta.Sources.Mongodb.SnapshotMode": "读取模式",
+  "meta.Sources.Mongodb.SnapshotMode.Initial": "全量 + 增量",
+  "meta.Sources.Mongodb.SnapshotMode.Never": "增量",
   "meta.Sources.Mongodb.PrimaryKey": "主键",
   "meta.Sources.Oracle.Hostname": "服务器主机",
   "meta.Sources.Oracle.Port": "端口",
diff --git a/inlong-dashboard/src/ui/locales/en.json 
b/inlong-dashboard/src/ui/locales/en.json
index 57bae06cb5..90e438b3ff 100644
--- a/inlong-dashboard/src/ui/locales/en.json
+++ b/inlong-dashboard/src/ui/locales/en.json
@@ -61,6 +61,9 @@
   "meta.Sources.Mongodb.Password": "Password",
   "meta.Sources.Mongodb.Database": "Database",
   "meta.Sources.Mongodb.Collection": "Collection",
+  "meta.Sources.Mongodb.SnapshotMode": "Snapshot Mode",
+  "meta.Sources.Mongodb.SnapshotMode.Initial": "Initial",
+  "meta.Sources.Mongodb.SnapshotMode.Never": "Never",
   "meta.Sources.Mongodb.PrimaryKey": "Primary key",
   "meta.Sources.Oracle.Hostname": "Hostname",
   "meta.Sources.Oracle.Port": "Port",
diff --git 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSource.java
 
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSource.java
index 1e6389d429..dc77de9737 100644
--- 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSource.java
+++ 
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSource.java
@@ -58,6 +58,9 @@ public class MongoDBSource extends StreamSource {
     @ApiModelProperty("MongoDB collection name")
     private String collection;
 
+    @ApiModelProperty("Debezium snapshot mode. Available options are initial 
and never, default is initial")
+    private String snapshotMode;
+
     @ApiModelProperty("Primary key must be shared by all tables")
     private String primaryKey;
 
diff --git 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceDTO.java
 
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceDTO.java
index 97e702180d..9e83f8dfea 100644
--- 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceDTO.java
+++ 
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceDTO.java
@@ -57,6 +57,9 @@ public class MongoDBSourceDTO {
     @ApiModelProperty("MongoDB collection name")
     private String collection;
 
+    @ApiModelProperty("Debezium snapshot mode. Available options are initial 
and never, default is initial")
+    private String snapshotMode;
+
     @ApiModelProperty("Primary key must be shared by all tables")
     private String primaryKey;
 
diff --git 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceRequest.java
 
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceRequest.java
index 8959052f80..5221e59b4c 100644
--- 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceRequest.java
+++ 
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceRequest.java
@@ -53,6 +53,9 @@ public class MongoDBSourceRequest extends SourceRequest {
     @ApiModelProperty("MongoDB collection name")
     private String collection;
 
+    @ApiModelProperty("Debezium snapshot mode. Available options are initial 
and never, default is initial")
+    private String snapshotMode = "initial";
+
     @ApiModelProperty("Primary key must be shared by all tables")
     private String primaryKey;
 

Reply via email to