This is an automated email from the ASF dual-hosted git repository.
lzwang 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 7b5d1bfadb [INLONG-8302][Dashboard] Data synchronization source and
sink type optimization (#8303)
7b5d1bfadb is described below
commit 7b5d1bfadb81438f99f04b801941baf5272dcc91
Author: Lizhen <[email protected]>
AuthorDate: Thu Jun 29 20:11:20 2023 +0800
[INLONG-8302][Dashboard] Data synchronization source and sink type
optimization (#8303)
---
inlong-dashboard/src/plugins/RenderRow.ts | 6 +-
.../src/plugins/sinks/common/SinkDefaultInfo.ts | 17 +-
.../src/plugins/sinks/defaults/ClickHouse.ts | 17 +-
.../src/plugins/sinks/defaults/Doris.ts | 12 +-
.../src/plugins/sinks/defaults/Elasticsearch.ts | 10 +-
.../src/plugins/sinks/defaults/Greenplum.ts | 8 +-
.../src/plugins/sinks/defaults/HBase.ts | 10 +-
.../src/plugins/sinks/defaults/Hive.ts | 12 +-
.../src/plugins/sinks/defaults/Hudi.ts | 11 +-
.../src/plugins/sinks/defaults/Iceberg.ts | 9 +-
.../src/plugins/sinks/defaults/Kafka.ts | 7 +-
.../src/plugins/sinks/defaults/Kudu.ts | 8 +-
.../src/plugins/sinks/defaults/MySQL.ts | 6 +-
.../src/plugins/sinks/defaults/Oracle.ts | 8 +-
.../src/plugins/sinks/defaults/PostgreSQL.ts | 9 +-
.../src/plugins/sinks/defaults/Redis.ts | 18 +-
.../src/plugins/sinks/defaults/SQLServer.ts | 11 +-
.../src/plugins/sinks/defaults/StarRocks.ts | 10 +-
.../src/plugins/sinks/defaults/TDSQLPostgreSQL.ts | 9 +-
.../plugins/sources/common/SourceDefaultInfo.ts | 42 ++-
.../src/plugins/sources/defaults/Hudi.ts | 9 +-
.../src/plugins/sources/defaults/MQTT.ts | 9 +-
.../src/plugins/sources/defaults/Mongodb.ts | 8 +-
.../src/plugins/sources/defaults/MySQLBinlog.ts | 11 +-
.../src/plugins/sources/defaults/Oracle.ts | 12 +-
.../src/plugins/sources/defaults/PostgreSQL.ts | 11 +-
.../src/plugins/sources/defaults/Redis.ts | 13 +-
.../src/plugins/sources/defaults/SQLServer.ts | 12 +-
.../src/plugins/sources/defaults/index.ts | 3 +
inlong-dashboard/src/plugins/types.ts | 1 +
.../src/ui/components/FieldList/DetailModal.tsx | 6 +-
.../src/ui/components/FieldList/FieldTypeConf.tsx | 404 +++++++++++++++++++++
.../SynchronizeDetail/SyncSink/DetailModal.tsx | 2 +-
.../ui/pages/SynchronizeDetail/SyncSink/index.tsx | 17 +-
.../SynchronizeDetail/SyncSources/DetailModal.tsx | 2 +-
.../pages/SynchronizeDetail/SyncSources/index.tsx | 17 +-
36 files changed, 731 insertions(+), 46 deletions(-)
diff --git a/inlong-dashboard/src/plugins/RenderRow.ts
b/inlong-dashboard/src/plugins/RenderRow.ts
index 7a5cf5e135..c9f78d50d2 100644
--- a/inlong-dashboard/src/plugins/RenderRow.ts
+++ b/inlong-dashboard/src/plugins/RenderRow.ts
@@ -22,7 +22,7 @@ import merge from 'lodash/merge';
export abstract class RenderRow {
static FieldList: FieldItemType[] = [];
- static LightFieldSet = new Set<string>();
+ static SyncFieldSet = new Set<string>();
static FieldDecorator(config: FieldItemType): PropertyDecorator {
return (target: any, propertyKey: string) => {
@@ -47,9 +47,9 @@ export abstract class RenderRow {
};
}
- static LightField(): PropertyDecorator {
+ static SyncField(): PropertyDecorator {
return (target: any, propertyKey: string) => {
- target.constructor.LightFieldSet.add(propertyKey);
+ target.constructor.SyncFieldSet.add(propertyKey);
};
}
diff --git a/inlong-dashboard/src/plugins/sinks/common/SinkDefaultInfo.ts
b/inlong-dashboard/src/plugins/sinks/common/SinkDefaultInfo.ts
index 689e203963..d662c76391 100644
--- a/inlong-dashboard/src/plugins/sinks/common/SinkDefaultInfo.ts
+++ b/inlong-dashboard/src/plugins/sinks/common/SinkDefaultInfo.ts
@@ -26,14 +26,14 @@ import { statusList, genStatusTag } from './status';
import { sinks, defaultValue } from '..';
const { I18nMap, I18n } = DataWithBackend;
-const { FieldList, FieldDecorator, LightField, LightFieldSet } = RenderRow;
+const { FieldList, FieldDecorator, SyncField, SyncFieldSet } = RenderRow;
const { ColumnList, ColumnDecorator } = RenderList;
export class SinkDefaultInfo implements DataWithBackend, RenderRow, RenderList
{
static I18nMap = I18nMap;
static FieldList = FieldList;
static ColumnList = ColumnList;
- static LightFieldSet = LightFieldSet;
+ static SyncFieldSet = SyncFieldSet;
readonly id: number;
@@ -42,6 +42,7 @@ export class SinkDefaultInfo implements DataWithBackend,
RenderRow, RenderList {
type: 'text',
hidden: true,
})
+ @SyncField()
@I18n('inlongGroupId')
readonly inlongGroupId: string;
@@ -49,6 +50,7 @@ export class SinkDefaultInfo implements DataWithBackend,
RenderRow, RenderList {
type: 'text',
hidden: true,
})
+ @SyncField()
@I18n('inlongStreamId')
readonly inlongStreamId: string;
@@ -72,7 +74,7 @@ export class SinkDefaultInfo implements DataWithBackend,
RenderRow, RenderList {
@ColumnDecorator({
render: type => sinks.find(c => c.value === type)?.label || type,
})
- @LightField()
+ @SyncField()
@I18n('meta.Sinks.SinkType')
sinkType: string;
@@ -92,6 +94,7 @@ export class SinkDefaultInfo implements DataWithBackend,
RenderRow, RenderList {
visible: values => Boolean(values.sinkType),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.SinkName')
sinkName: string;
@@ -103,6 +106,7 @@ export class SinkDefaultInfo implements DataWithBackend,
RenderRow, RenderList {
},
visible: values => Boolean(values.sinkType),
})
+ @SyncField()
@I18n('meta.Sinks.Description')
description: string;
@@ -118,6 +122,7 @@ export class SinkDefaultInfo implements DataWithBackend,
RenderRow, RenderList {
@ColumnDecorator({
render: text => genStatusTag(text),
})
+ @SyncField()
@I18n('basic.Status')
readonly status: string;
@@ -138,10 +143,10 @@ export class SinkDefaultInfo implements DataWithBackend,
RenderRow, RenderList {
return data;
}
- renderLightRow() {
+ renderSyncRow() {
const constructor = this.constructor as typeof SinkDefaultInfo;
- const { FieldList, LightFieldSet } = constructor;
- return FieldList.filter(item => LightFieldSet.has(item.name as string));
+ const { FieldList, SyncFieldSet } = constructor;
+ return FieldList.filter(item => SyncFieldSet.has(item.name as string));
}
renderRow() {
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/ClickHouse.ts
b/inlong-dashboard/src/plugins/sinks/defaults/ClickHouse.ts
index 780f61da5b..0d22639d07 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/ClickHouse.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/ClickHouse.ts
@@ -27,7 +27,7 @@ import { sourceFields } from '../common/sourceFields';
import NodeSelect from '@/ui/components/NodeSelect';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const clickHouseTargetTypes = [
@@ -57,6 +57,7 @@ export default class ClickHouseSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.ClickHouse.DbName')
dbName: string;
@@ -68,6 +69,7 @@ export default class ClickHouseSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.ClickHouse.TableName')
tableName: string;
@@ -102,6 +104,8 @@ export default class ClickHouseSink
}),
})
@I18n('meta.Sinks.DataNodeName')
+ @SyncField()
+ @ColumnDecorator()
dataNodeName: string;
@FieldDecorator({
@@ -115,6 +119,7 @@ export default class ClickHouseSink
suffix: i18n.t('meta.Sinks.ClickHouse.FlushIntervalUnit'),
})
@I18n('meta.Sinks.ClickHouse.FlushInterval')
+ @ColumnDecorator()
flushInterval: number;
@FieldDecorator({
@@ -128,6 +133,7 @@ export default class ClickHouseSink
suffix: i18n.t('meta.Sinks.ClickHouse.FlushRecordUnit'),
})
@I18n('meta.Sinks.ClickHouse.FlushRecord')
+ @ColumnDecorator()
flushRecord: number;
@FieldDecorator({
@@ -141,6 +147,7 @@ export default class ClickHouseSink
suffix: i18n.t('meta.Sinks.ClickHouse.RetryTimesUnit'),
})
@I18n('meta.Sinks.ClickHouse.RetryTimes')
+ @ColumnDecorator()
retryTime: number;
@FieldDecorator({
@@ -162,6 +169,7 @@ export default class ClickHouseSink
rules: [{ required: true }],
})
@I18n('meta.Sinks.ClickHouse.IsDistributed')
+ @ColumnDecorator()
isDistributed: number;
@FieldDecorator({
@@ -188,6 +196,7 @@ export default class ClickHouseSink
visible: values => values.isDistributed,
})
@I18n('meta.Sinks.ClickHouse.PartitionStrategy')
+ @ColumnDecorator()
partitionStrategy: string;
@FieldDecorator({
@@ -199,6 +208,7 @@ export default class ClickHouseSink
}),
})
@I18n('meta.Sinks.ClickHouse.PartitionFields')
+ @ColumnDecorator()
partitionFields: string;
@FieldDecorator({
@@ -224,6 +234,7 @@ export default class ClickHouseSink
}),
})
@I18n('meta.Sinks.ClickHouse.Engine')
+ @ColumnDecorator()
engine: string;
@FieldDecorator({
@@ -242,6 +253,7 @@ export default class ClickHouseSink
}),
})
@I18n('meta.Sinks.ClickHouse.PartitionBy')
+ @ColumnDecorator()
partitionBy: string;
@FieldDecorator({
@@ -251,6 +263,7 @@ export default class ClickHouseSink
}),
})
@I18n('meta.Sinks.ClickHouse.PrimaryKey')
+ @SyncField()
primaryKey: string;
@FieldDecorator({
@@ -260,6 +273,7 @@ export default class ClickHouseSink
}),
})
@I18n('meta.Sinks.ClickHouse.Cluster')
+ @ColumnDecorator()
cluster: string;
@FieldDecorator({
@@ -313,6 +327,7 @@ export default class ClickHouseSink
}),
})
@I18n('Time To Live')
+ @ColumnDecorator()
ttl: number;
@FieldDecorator({
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/Doris.ts
b/inlong-dashboard/src/plugins/sinks/defaults/Doris.ts
index cf2b9c8136..973bb5b7c2 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/Doris.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Doris.ts
@@ -26,7 +26,7 @@ import { SinkInfo } from '../common/SinkInfo';
import { sourceFields } from '../common/sourceFields';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const dorisTargetTypes = [
@@ -62,6 +62,7 @@ export default class DorisSink extends SinkInfo implements
DataWithBackend, Rend
})
@ColumnDecorator()
@I18n('meta.Sinks.Doris.HttpAddress')
+ @SyncField()
feNodes: string;
@FieldDecorator({
@@ -72,6 +73,7 @@ export default class DorisSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@I18n('meta.Sinks.Username')
+ @SyncField()
username: string;
@FieldDecorator({
@@ -82,6 +84,7 @@ export default class DorisSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@I18n('meta.Sinks.Password')
+ @SyncField()
password: string;
@FieldDecorator({
@@ -93,6 +96,7 @@ export default class DorisSink extends SinkInfo implements
DataWithBackend, Rend
})
@ColumnDecorator()
@I18n('meta.Sinks.Doris.TableIdentifier')
+ @SyncField()
tableIdentifier: string;
@FieldDecorator({
@@ -103,6 +107,7 @@ export default class DorisSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Doris.LabelPrefix')
labelPrefix: string;
@@ -114,6 +119,7 @@ export default class DorisSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Doris.PrimaryKey')
primaryKey: string;
@@ -136,6 +142,7 @@ export default class DorisSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@I18n('meta.Sinks.Doris.SinkMultipleEnable')
+ @SyncField()
sinkMultipleEnable: boolean;
@FieldDecorator({
@@ -147,6 +154,7 @@ export default class DorisSink extends SinkInfo implements
DataWithBackend, Rend
})
@ColumnDecorator()
@I18n('meta.Sinks.Doris.SinkMultipleFormat')
+ @SyncField()
sinkMultipleFormat: string;
@FieldDecorator({
@@ -157,6 +165,7 @@ export default class DorisSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Doris.DatabasePattern')
databasePattern: string;
@@ -168,6 +177,7 @@ export default class DorisSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Doris.TablePattern')
tablePattern: string;
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/Elasticsearch.ts
b/inlong-dashboard/src/plugins/sinks/defaults/Elasticsearch.ts
index 5d19d7dce9..b71048a9d9 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/Elasticsearch.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Elasticsearch.ts
@@ -27,7 +27,7 @@ import { SinkInfo } from '../common/SinkInfo';
import NodeSelect from '@/ui/components/NodeSelect';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const esTypes = [
@@ -61,6 +61,7 @@ export default class ElasticsearchSink
}),
})
@I18n('meta.Sinks.DataNodeName')
+ @SyncField()
dataNodeName: string;
@FieldDecorator({
@@ -72,6 +73,7 @@ export default class ElasticsearchSink
})
@ColumnDecorator()
@I18n('meta.Sinks.ES.IndexName')
+ @SyncField()
indexName: string;
@FieldDecorator({
@@ -83,6 +85,7 @@ export default class ElasticsearchSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.ES.PrimaryKey')
primaryKey: string;
@@ -94,6 +97,7 @@ export default class ElasticsearchSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.ES.DocumentType')
documentType: string;
@@ -117,6 +121,7 @@ export default class ElasticsearchSink
}),
})
@I18n('meta.Sinks.EnableCreateResource')
+ @SyncField()
enableCreateResource: number;
@FieldDecorator({
@@ -130,6 +135,7 @@ export default class ElasticsearchSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.ES.FlushRecord')
flushRecord: number;
@@ -144,6 +150,7 @@ export default class ElasticsearchSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.ES.RetryTimes')
retryTime: number;
@@ -157,6 +164,7 @@ export default class ElasticsearchSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.ES.EsVersion')
esVersion: number;
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/Greenplum.ts
b/inlong-dashboard/src/plugins/sinks/defaults/Greenplum.ts
index dde187f908..fb15f7c92f 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/Greenplum.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Greenplum.ts
@@ -24,7 +24,7 @@ import { sourceFields } from '../common/sourceFields';
import { SinkInfo } from '../common/SinkInfo';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const fieldTypesConf = {
@@ -76,6 +76,7 @@ export default class GreenplumSink
})
@ColumnDecorator()
@I18n('JDBC URL')
+ @SyncField()
jdbcUrl: string;
@FieldDecorator({
@@ -86,6 +87,7 @@ export default class GreenplumSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Greenplum.TableName')
tableName: string;
@@ -97,6 +99,7 @@ export default class GreenplumSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Greenplum.PrimaryKey')
primaryKey: string;
@@ -119,6 +122,7 @@ export default class GreenplumSink
],
}),
})
+ @SyncField()
@I18n('meta.Sinks.EnableCreateResource')
enableCreateResource: number;
@@ -130,6 +134,7 @@ export default class GreenplumSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Username')
username: string;
@@ -141,6 +146,7 @@ export default class GreenplumSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Password')
password: string;
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/HBase.ts
b/inlong-dashboard/src/plugins/sinks/defaults/HBase.ts
index fa9b71e5d0..c134ad264f 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/HBase.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/HBase.ts
@@ -24,7 +24,7 @@ import { SinkInfo } from '../common/SinkInfo';
import { sourceFields } from '../common/sourceFields';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const hbaseFieldTypes = [
@@ -51,6 +51,7 @@ export default class HBaseSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.HBase.Namespace')
namespace: string;
@@ -62,6 +63,7 @@ export default class HBaseSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.HBase.TableName')
tableName: string;
@@ -73,6 +75,7 @@ export default class HBaseSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.HBase.RowKey')
rowKey: string;
@@ -85,6 +88,7 @@ export default class HBaseSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.HBase.ZkQuorum')
zkQuorum: string;
@@ -97,6 +101,7 @@ export default class HBaseSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.HBase.ZkNodeParent')
zkNodeParent: string;
@@ -110,6 +115,7 @@ export default class HBaseSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.HBase.BufferFlushMaxSize')
bufferFlushMaxSize: number;
@@ -123,6 +129,7 @@ export default class HBaseSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.HBase.BufferFlushMaxRows')
bufferFlushMaxRows: number;
@@ -137,6 +144,7 @@ export default class HBaseSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.HBase.BufferFlushInterval')
bufferFlushInterval: number;
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/Hive.ts
b/inlong-dashboard/src/plugins/sinks/defaults/Hive.ts
index 99548215cc..10936b82a1 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/Hive.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Hive.ts
@@ -27,7 +27,7 @@ import { sourceFields } from '../common/sourceFields';
import NodeSelect from '@/ui/components/NodeSelect';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const hiveFieldTypes = [
@@ -61,6 +61,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Hive.DbName')
dbName: string;
@@ -72,6 +73,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Hive.TableName')
tableName: string;
@@ -94,6 +96,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
],
}),
})
+ @SyncField()
@I18n('meta.Sinks.EnableCreateResource')
enableCreateResource: number;
@@ -105,6 +108,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@I18n('meta.Sinks.Username')
+ @SyncField()
username: string;
@FieldDecorator({
@@ -115,6 +119,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@I18n('meta.Sinks.Password')
+ @SyncField()
password: string;
@FieldDecorator({
@@ -126,6 +131,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@I18n('meta.Sinks.DataNodeName')
+ @SyncField()
dataNodeName: string;
@FieldDecorator({
@@ -163,6 +169,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@I18n('meta.Sinks.Hive.FileFormat')
+ @SyncField()
fileFormat: string;
@FieldDecorator({
@@ -184,6 +191,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
rules: [{ required: true }],
})
@I18n('meta.Sinks.Hive.DataEncoding')
+ @SyncField()
dataEncoding: string;
@FieldDecorator({
@@ -236,6 +244,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
],
})
@I18n('meta.Sinks.Hive.DataSeparator')
+ @SyncField()
dataSeparator: string;
@FieldDecorator({
@@ -292,6 +301,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
},
})
@I18n('meta.Sinks.Hive.PartitionFieldList')
+ @SyncField()
partitionFieldList: Record<string, unknown>[];
}
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/Hudi.ts
b/inlong-dashboard/src/plugins/sinks/defaults/Hudi.ts
index f0b2056322..1e8ca6f2b4 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/Hudi.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Hudi.ts
@@ -27,7 +27,7 @@ import { SinkInfo } from '../common/SinkInfo';
import NodeSelect from '@/ui/components/NodeSelect';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const hudiFieldTypes = [
@@ -115,6 +115,7 @@ export default class HudiSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Hudi.DbName')
dbName: string;
@@ -127,6 +128,7 @@ export default class HudiSink extends SinkInfo implements
DataWithBackend, Rende
})
@ColumnDecorator()
@I18n('meta.Sinks.Hudi.TableName')
+ @SyncField()
tableName: string;
@FieldDecorator({
@@ -149,6 +151,7 @@ export default class HudiSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@I18n('meta.Sinks.EnableCreateResource')
+ @SyncField()
enableCreateResource: number;
@FieldDecorator({
@@ -160,6 +163,7 @@ export default class HudiSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@I18n('meta.Sinks.DataNodeName')
+ @SyncField()
dataNodeName: string;
@FieldDecorator({
@@ -186,6 +190,7 @@ export default class HudiSink extends SinkInfo implements
DataWithBackend, Rende
})
@ColumnDecorator()
@I18n('meta.Sinks.Hudi.FileFormat')
+ @SyncField()
fileFormat: string;
@FieldDecorator({
@@ -214,6 +219,7 @@ export default class HudiSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Hudi.ExtList')
extList: string;
@@ -237,6 +243,7 @@ export default class HudiSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Hudi.DataConsistency')
dataConsistency: string;
@@ -261,6 +268,7 @@ export default class HudiSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Hudi.PrimaryKey')
primaryKey: string;
@@ -273,6 +281,7 @@ export default class HudiSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Hudi.PartitionKey')
partitionKey: string;
}
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/Iceberg.ts
b/inlong-dashboard/src/plugins/sinks/defaults/Iceberg.ts
index 2a1b29a146..d6b24c252a 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/Iceberg.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Iceberg.ts
@@ -27,7 +27,7 @@ import { SinkInfo } from '../common/SinkInfo';
import NodeSelect from '@/ui/components/NodeSelect';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const icebergFieldTypes = [
@@ -118,6 +118,7 @@ export default class IcebergSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Iceberg.DbName')
dbName: string;
@@ -129,6 +130,7 @@ export default class IcebergSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Iceberg.TableName')
tableName: string;
@@ -152,6 +154,7 @@ export default class IcebergSink
}),
})
@I18n('meta.Sinks.EnableCreateResource')
+ @SyncField()
enableCreateResource: number;
@FieldDecorator({
@@ -163,6 +166,7 @@ export default class IcebergSink
}),
})
@I18n('meta.Sinks.DataNodeName')
+ @SyncField()
dataNodeName: string;
@FieldDecorator({
@@ -188,6 +192,7 @@ export default class IcebergSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Iceberg.FileFormat')
fileFormat: string;
@@ -215,6 +220,7 @@ export default class IcebergSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Iceberg.ExtList')
extList: string;
@@ -238,6 +244,7 @@ export default class IcebergSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Iceberg.DataConsistency')
dataConsistency: string;
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/Kafka.ts
b/inlong-dashboard/src/plugins/sinks/defaults/Kafka.ts
index 119a019e65..747ffc4ad8 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/Kafka.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Kafka.ts
@@ -23,7 +23,7 @@ import { RenderList } from '@/plugins/RenderList';
import { SinkInfo } from '../common/SinkInfo';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
export default class KafkaSink extends SinkInfo implements DataWithBackend,
RenderRow, RenderList {
@@ -37,6 +37,7 @@ export default class KafkaSink extends SinkInfo implements
DataWithBackend, Rend
})
@ColumnDecorator()
@I18n('meta.Sinks.Kafka.Server')
+ @SyncField()
bootstrapServers: string;
@FieldDecorator({
@@ -48,6 +49,7 @@ export default class KafkaSink extends SinkInfo implements
DataWithBackend, Rend
})
@ColumnDecorator()
@I18n('Topic')
+ @SyncField()
topicName: string;
@FieldDecorator({
@@ -74,6 +76,7 @@ export default class KafkaSink extends SinkInfo implements
DataWithBackend, Rend
})
@ColumnDecorator()
@I18n('meta.Sinks.Kafka.SerializationType')
+ @SyncField()
serializationType: string;
@FieldDecorator({
@@ -87,6 +90,7 @@ export default class KafkaSink extends SinkInfo implements
DataWithBackend, Rend
rules: [{ required: true }],
})
@I18n('meta.Sinks.Kafka.PartitionNum')
+ @SyncField()
partitionNum: number;
@FieldDecorator({
@@ -112,5 +116,6 @@ export default class KafkaSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@I18n('meta.Sinks.Kafka.AutoOffsetReset')
+ @SyncField()
autoOffsetReset: string;
}
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/Kudu.ts
b/inlong-dashboard/src/plugins/sinks/defaults/Kudu.ts
index 5ab325174b..815c18615f 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/Kudu.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Kudu.ts
@@ -27,7 +27,7 @@ import { SinkInfo } from '../common/SinkInfo';
import NodeSelect from '@/ui/components/NodeSelect';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const kuduFieldTypes = [
@@ -82,6 +82,7 @@ export default class KuduSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@I18n('meta.Sinks.DataNodeName')
+ @SyncField()
dataNodeName: string;
@FieldDecorator({
@@ -93,6 +94,7 @@ export default class KuduSink extends SinkInfo implements
DataWithBackend, Rende
})
@ColumnDecorator()
@I18n('meta.Sinks.Kudu.TableName')
+ @SyncField()
tableName: string;
@FieldDecorator({
@@ -115,6 +117,7 @@ export default class KuduSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@I18n('meta.Sinks.EnableCreateResource')
+ @SyncField()
enableCreateResource: number;
@FieldDecorator({
@@ -128,6 +131,7 @@ export default class KuduSink extends SinkInfo implements
DataWithBackend, Rende
})
@ColumnDecorator()
@I18n('meta.Sinks.Kudu.buckets')
+ @SyncField()
buckets: number;
@FieldDecorator({
@@ -156,6 +160,7 @@ export default class KuduSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Kudu.ExtList')
extList: string;
@@ -179,6 +184,7 @@ export default class KuduSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Kudu.DataConsistency')
dataConsistency: string;
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/MySQL.ts
b/inlong-dashboard/src/plugins/sinks/defaults/MySQL.ts
index 98d9184fb3..fbb92eab1b 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/MySQL.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/MySQL.ts
@@ -25,7 +25,7 @@ import { SinkInfo } from '../common/SinkInfo';
import NodeSelect from '@/ui/components/NodeSelect';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const fieldTypesConf = {
@@ -73,6 +73,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
})
@ColumnDecorator()
@I18n('meta.Sinks.MySQL.DatabaseName')
+ @SyncField()
databaseName: string;
@FieldDecorator({
@@ -84,6 +85,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
})
@ColumnDecorator()
@I18n('meta.Sinks.MySQL.TableName')
+ @SyncField()
tableName: string;
@FieldDecorator({
@@ -95,6 +97,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
})
@ColumnDecorator()
@I18n('meta.Sinks.MySQL.PrimaryKey')
+ @SyncField()
primaryKey: string;
@FieldDecorator({
@@ -117,6 +120,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@I18n('meta.Sinks.EnableCreateResource')
+ @SyncField()
enableCreateResource: number;
@FieldDecorator({
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/Oracle.ts
b/inlong-dashboard/src/plugins/sinks/defaults/Oracle.ts
index 4f7c9baa1d..a6a145d395 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/Oracle.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Oracle.ts
@@ -24,7 +24,7 @@ import { sourceFields } from '../common/sourceFields';
import EditableTable from '@/ui/components/EditableTable';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const fieldTypesConf = {
@@ -69,6 +69,7 @@ export default class OracleSink extends SinkInfo implements
DataWithBackend, Ren
})
@ColumnDecorator()
@I18n('JDBC URL')
+ @SyncField()
jdbcUrl: string;
@FieldDecorator({
@@ -79,6 +80,7 @@ export default class OracleSink extends SinkInfo implements
DataWithBackend, Ren
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Oracle.TableName')
tableName: string;
@@ -91,6 +93,7 @@ export default class OracleSink extends SinkInfo implements
DataWithBackend, Ren
})
@ColumnDecorator()
@I18n('meta.Sinks.Oracle.PrimaryKey')
+ @SyncField()
primaryKey: string;
@FieldDecorator({
@@ -113,6 +116,7 @@ export default class OracleSink extends SinkInfo implements
DataWithBackend, Ren
}),
})
@I18n('meta.Sinks.EnableCreateResource')
+ @SyncField()
enableCreateResource: number;
@FieldDecorator({
@@ -124,6 +128,7 @@ export default class OracleSink extends SinkInfo implements
DataWithBackend, Ren
})
@ColumnDecorator()
@I18n('meta.Sinks.Username')
+ @SyncField()
username: string;
@FieldDecorator({
@@ -134,6 +139,7 @@ export default class OracleSink extends SinkInfo implements
DataWithBackend, Ren
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Password')
password: string;
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/PostgreSQL.ts
b/inlong-dashboard/src/plugins/sinks/defaults/PostgreSQL.ts
index 6159eda722..dcda0d2aac 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/PostgreSQL.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/PostgreSQL.ts
@@ -24,7 +24,7 @@ import { SinkInfo } from '../common/SinkInfo';
import { sourceFields } from '../common/sourceFields';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const fieldTypesConf = {
@@ -72,6 +72,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('JDBC URL')
jdbcUrl: string;
@@ -83,6 +84,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.PostgreSQL.DbName')
dbName: string;
@@ -94,6 +96,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.PostgreSQL.TableName')
tableName: string;
@@ -105,6 +108,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.PostgreSQL.PrimaryKey')
primaryKey: string;
@@ -127,6 +131,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
],
}),
})
+ @SyncField()
@I18n('meta.Sinks.EnableCreateResource')
enableCreateResource: number;
@@ -138,6 +143,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Username')
username: string;
@@ -149,6 +155,7 @@ export default class HiveSink extends SinkInfo implements
DataWithBackend, Rende
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Password')
password: string;
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/Redis.ts
b/inlong-dashboard/src/plugins/sinks/defaults/Redis.ts
index 0d89d644b8..930efdf682 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/Redis.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Redis.ts
@@ -27,7 +27,7 @@ import { SinkInfo } from '../common/SinkInfo';
import NodeSelect from '@/ui/components/NodeSelect';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const redisTargetTypes = [
@@ -77,6 +77,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
nodeType: 'Redis',
}),
})
+ @SyncField()
@I18n('meta.Sinks.DataNodeName')
dataNodeName: string;
@@ -103,6 +104,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Redis.DataType')
dataType: string;
@@ -115,6 +117,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Redis.SchemaMapMode')
schemaMapMode: string;
@@ -145,6 +148,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
}),
rules: [{ required: true }],
})
+ @SyncField()
@I18n('meta.Sinks.Redis.FormatDataType')
formatDataType: string;
@@ -167,6 +171,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
],
}),
})
+ @SyncField()
@I18n('meta.Sinks.Redis.FormatIgnoreParseError')
formatIgnoreParseError: boolean;
@@ -189,6 +194,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
}),
rules: [{ required: true }],
})
+ @SyncField()
@I18n('meta.Sinks.Redis.FormatDataEncoding')
formatDataEncoding: string;
@@ -241,6 +247,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
},
],
})
+ @SyncField()
@I18n('meta.Sinks.Redis.FormatDataSeparator')
formatDataSeparator: string;
@@ -254,6 +261,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.Redis.Database')
database: number;
@@ -267,6 +275,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
rules: [{ required: false }],
suffix: i18n.t('meta.Sinks.Redis.TtlUnit'),
})
+ @SyncField()
@I18n('meta.Sinks.Redis.Ttl')
ttl: number;
@@ -306,6 +315,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
],
}),
})
+ @SyncField()
@I18n('meta.Sinks.Redis.ExtList')
properties: string;
@@ -319,6 +329,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
}),
suffix: i18n.t('meta.Sinks.Redis.TimeoutUnit'),
})
+ @SyncField()
@I18n('meta.Sinks.Redis.Timeout')
timeout: number;
@@ -332,6 +343,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
}),
suffix: i18n.t('meta.Sinks.Redis.SoTimeoutUnit'),
})
+ @SyncField()
@I18n('meta.Sinks.Redis.SoTimeout')
soTimeout: number;
@@ -344,6 +356,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sinks.Redis.MaxTotal')
maxTotal: number;
@@ -356,6 +369,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sinks.Redis.MaxIdle')
maxIdle: number;
@@ -368,6 +382,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sinks.Redis.MinIdle')
minIdle: number;
@@ -381,6 +396,7 @@ export default class RedisSink extends SinkInfo implements
DataWithBackend, Rend
min: 1,
}),
})
+ @SyncField()
@I18n('meta.Sinks.Redis.MaxRetries')
maxRetries: number;
}
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/SQLServer.ts
b/inlong-dashboard/src/plugins/sinks/defaults/SQLServer.ts
index f5e696a2fc..88a917f98f 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/SQLServer.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/SQLServer.ts
@@ -24,7 +24,7 @@ import { SinkInfo } from '../common/SinkInfo';
import { sourceFields } from '../common/sourceFields';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const fieldTypesConf = {
@@ -76,6 +76,7 @@ export default class SqlServerSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('JDBC URL')
jdbcUrl: string;
@@ -87,6 +88,7 @@ export default class SqlServerSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.SQLServer.SchemaName')
schemaName: string;
@@ -99,6 +101,7 @@ export default class SqlServerSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.SQLServer.ServerTimezone')
serverTimezone: string;
@@ -111,6 +114,7 @@ export default class SqlServerSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.SQLServer.TableName')
tableName: string;
@@ -123,6 +127,7 @@ export default class SqlServerSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.SQLServer.PrimaryKey')
primaryKey: string;
@@ -145,6 +150,7 @@ export default class SqlServerSink
],
}),
})
+ @SyncField()
@I18n('meta.Sinks.EnableCreateResource')
enableCreateResource: number;
@@ -166,6 +172,7 @@ export default class SqlServerSink
],
}),
})
+ @SyncField()
@I18n('meta.Sinks.SQLServer.AllMigration')
allMigration: boolean;
@@ -176,6 +183,7 @@ export default class SqlServerSink
disabled: [110, 130].includes(values?.status),
}),
})
+ @SyncField()
@I18n('meta.Sinks.Username')
username: string;
@@ -186,6 +194,7 @@ export default class SqlServerSink
disabled: [110, 130].includes(values?.status),
}),
})
+ @SyncField()
@I18n('meta.Sinks.Password')
password: string;
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/StarRocks.ts
b/inlong-dashboard/src/plugins/sinks/defaults/StarRocks.ts
index eaa754d193..6798c23c35 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/StarRocks.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/StarRocks.ts
@@ -25,7 +25,7 @@ import { SinkInfo } from '../common/SinkInfo';
import NodeSelect from '@/ui/components/NodeSelect';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const fieldTypesConf = {
@@ -69,6 +69,7 @@ export default class StarRocksSink
nodeType: 'STARROCKS',
}),
})
+ @SyncField()
@I18n('meta.Sinks.DataNodeName')
dataNodeName: string;
@@ -80,6 +81,7 @@ export default class StarRocksSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.StarRocks.DatabaseName')
databaseName: string;
@@ -91,6 +93,7 @@ export default class StarRocksSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.StarRocks.TableName')
tableName: string;
@@ -102,6 +105,7 @@ export default class StarRocksSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.StarRocks.PrimaryKey')
primaryKey: string;
@@ -123,6 +127,7 @@ export default class StarRocksSink
],
}),
})
+ @SyncField()
@I18n('meta.Sinks.StarRocks.SinkMultipleEnable')
sinkMultipleEnable: boolean;
@@ -135,6 +140,7 @@ export default class StarRocksSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.StarRocks.SinkMultipleFormat')
sinkMultipleFormat: string;
@@ -147,6 +153,7 @@ export default class StarRocksSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.StarRocks.DatabasePattern')
databasePattern: string;
@@ -159,6 +166,7 @@ export default class StarRocksSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.StarRocks.TablePattern')
tablePattern: string;
diff --git a/inlong-dashboard/src/plugins/sinks/defaults/TDSQLPostgreSQL.ts
b/inlong-dashboard/src/plugins/sinks/defaults/TDSQLPostgreSQL.ts
index 244b854dab..9690179bc5 100644
--- a/inlong-dashboard/src/plugins/sinks/defaults/TDSQLPostgreSQL.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/TDSQLPostgreSQL.ts
@@ -24,7 +24,7 @@ import { sourceFields } from '../common/sourceFields';
import { SinkInfo } from '../common/SinkInfo';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
const tdsqlPostgreSQLFieldTypes = [
@@ -69,6 +69,7 @@ export default class TDSQLPostgreSQLSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('JDBC URL')
jdbcUrl: string;
@@ -80,6 +81,7 @@ export default class TDSQLPostgreSQLSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.TDSQLPostgreSQL.SchemaName')
schemaName: string;
@@ -91,6 +93,7 @@ export default class TDSQLPostgreSQLSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.TDSQLPostgreSQL.TableName')
tableName: string;
@@ -102,6 +105,7 @@ export default class TDSQLPostgreSQLSink
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sinks.TDSQLPostgreSQL.PrimaryKey')
primaryKey: string;
@@ -124,6 +128,7 @@ export default class TDSQLPostgreSQLSink
],
}),
})
+ @SyncField()
@I18n('meta.Sinks.EnableCreateResource')
enableCreateResource: number;
@@ -134,6 +139,7 @@ export default class TDSQLPostgreSQLSink
disabled: [110, 130].includes(values?.status),
}),
})
+ @SyncField()
@I18n('meta.Sinks.Username')
username: string;
@@ -144,6 +150,7 @@ export default class TDSQLPostgreSQLSink
disabled: [110, 130].includes(values?.status),
}),
})
+ @SyncField()
@I18n('meta.Sinks.Password')
password: string;
diff --git a/inlong-dashboard/src/plugins/sources/common/SourceDefaultInfo.ts
b/inlong-dashboard/src/plugins/sources/common/SourceDefaultInfo.ts
index 7321838694..b119c086bd 100644
--- a/inlong-dashboard/src/plugins/sources/common/SourceDefaultInfo.ts
+++ b/inlong-dashboard/src/plugins/sources/common/SourceDefaultInfo.ts
@@ -26,13 +26,14 @@ import { sources, defaultValue } from '..';
import i18n from '@/i18n';
const { I18nMap, I18n } = DataWithBackend;
-const { FieldList, FieldDecorator } = RenderRow;
+const { FieldList, FieldDecorator, SyncField, SyncFieldSet } = RenderRow;
const { ColumnList, ColumnDecorator } = RenderList;
export class SourceDefaultInfo implements DataWithBackend, RenderRow,
RenderList {
static I18nMap = I18nMap;
static FieldList = FieldList;
static ColumnList = ColumnList;
+ static SyncFieldSet = SyncFieldSet;
readonly id: number;
@@ -41,6 +42,7 @@ export class SourceDefaultInfo implements DataWithBackend,
RenderRow, RenderList
type: 'text',
hidden: true,
})
+ @SyncField()
@I18n('inlongGroupId')
readonly inlongGroupId: string;
@@ -48,6 +50,7 @@ export class SourceDefaultInfo implements DataWithBackend,
RenderRow, RenderList
type: 'text',
hidden: true,
})
+ @SyncField()
@I18n('inlongStreamId')
readonly inlongStreamId: string;
@@ -69,6 +72,7 @@ export class SourceDefaultInfo implements DataWithBackend,
RenderRow, RenderList
@ColumnDecorator({
render: type => sources.find(c => c.value === type)?.label || type,
})
+ @SyncField()
@I18n('meta.Sources.Type')
sourceType: string;
@@ -88,6 +92,7 @@ export class SourceDefaultInfo implements DataWithBackend,
RenderRow, RenderList
visible: values => Boolean(values.sourceType),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Name')
sourceName: string;
@@ -103,6 +108,7 @@ export class SourceDefaultInfo implements DataWithBackend,
RenderRow, RenderList
@ColumnDecorator({
render: text => genStatusTag(text),
})
+ @SyncField()
@I18n('basic.Status')
readonly status: string;
@@ -114,8 +120,42 @@ export class SourceDefaultInfo implements DataWithBackend,
RenderRow, RenderList
return data;
}
+ renderSyncRow() {
+ const constructor = this.constructor as typeof SourceDefaultInfo;
+ const { FieldList, SyncFieldSet } = constructor;
+ return FieldList.filter(item => {
+ if (item.name === 'sourceType') {
+ item.props = values => ({
+ disabled: Boolean(values.id),
+ dropdownMatchSelectWidth: false,
+ options: sources
+ .filter(item => item.useSync !== false)
+ .map(item => ({
+ label: item.label,
+ value: item.value,
+ })),
+ });
+ }
+ return SyncFieldSet.has(item.name as string);
+ });
+ }
+
renderRow() {
const constructor = this.constructor as typeof SourceDefaultInfo;
+ constructor.FieldList.map(item => {
+ if (item.name === 'sourceType') {
+ item.props = values => ({
+ disabled: Boolean(values.id),
+ dropdownMatchSelectWidth: false,
+ options: sources
+ .filter(item => item.value)
+ .map(item => ({
+ label: item.label,
+ value: item.value,
+ })),
+ });
+ }
+ });
return constructor.FieldList;
}
diff --git a/inlong-dashboard/src/plugins/sources/defaults/Hudi.ts
b/inlong-dashboard/src/plugins/sources/defaults/Hudi.ts
index aecc542551..c88773cad6 100644
--- a/inlong-dashboard/src/plugins/sources/defaults/Hudi.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/Hudi.ts
@@ -25,7 +25,7 @@ import i18n from '@/i18n';
import EditableTable from '@/ui/components/EditableTable';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
export default class HudiSource
@@ -40,6 +40,7 @@ export default class HudiSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Hudi.DbName')
dbName: string;
@@ -51,6 +52,7 @@ export default class HudiSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Hudi.TableName')
tableName: string;
@@ -63,6 +65,7 @@ export default class HudiSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('Catalog URI')
catalogUri: string;
@@ -75,6 +78,7 @@ export default class HudiSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Hudi.Warehouse')
warehouse: string;
@@ -98,6 +102,7 @@ export default class HudiSource
tooltip: i18n.t('meta.Sources.Hudi.ReadStreamingSkipCompactionHelp'),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Hudi.ReadStreamingSkipCompaction')
readStreamingSkipCompaction: boolean;
@@ -111,6 +116,7 @@ export default class HudiSource
tooltip: i18n.t('meta.Sources.Hudi.ReadStartCommitHelp'),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Hudi.ReadStartCommit')
readStartCommit: string;
@@ -140,6 +146,7 @@ export default class HudiSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Hudi.ExtList')
extList: string;
}
diff --git a/inlong-dashboard/src/plugins/sources/defaults/MQTT.ts
b/inlong-dashboard/src/plugins/sources/defaults/MQTT.ts
index 970b73d079..1ef65436b2 100644
--- a/inlong-dashboard/src/plugins/sources/defaults/MQTT.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/MQTT.ts
@@ -23,7 +23,7 @@ import { RenderList } from '@/plugins/RenderList';
import { SourceInfo } from '../common/SourceInfo';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
export default class MQTTSource
extends SourceInfo
@@ -37,6 +37,7 @@ export default class MQTTSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('Server URI')
serverURI: string;
@@ -47,6 +48,7 @@ export default class MQTTSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.MQTT.Username')
username: string;
@@ -57,6 +59,7 @@ export default class MQTTSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.MQTT.Password')
password: string;
@@ -67,6 +70,7 @@ export default class MQTTSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('Topic')
topic: string;
@@ -77,6 +81,7 @@ export default class MQTTSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('Client ID')
clientId: string;
@@ -89,6 +94,7 @@ export default class MQTTSource
max: 2,
}),
})
+ @SyncField()
@I18n('QoS')
qos: number;
@@ -98,6 +104,7 @@ export default class MQTTSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.MQTT.MqttVersion')
mqttVersion: string;
}
diff --git a/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
b/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
index 34f4bb0f75..442b1e91f4 100644
--- a/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
@@ -23,7 +23,7 @@ import { RenderList } from '@/plugins/RenderList';
import { SourceInfo } from '../common/SourceInfo';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
export default class MongodbSource
@@ -39,6 +39,7 @@ export default class MongodbSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Mongodb.Hosts')
hosts: string;
@@ -50,6 +51,7 @@ export default class MongodbSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Mongodb.Username')
username: string;
@@ -60,6 +62,7 @@ export default class MongodbSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Mongodb.Password')
password: string;
@@ -70,6 +73,7 @@ export default class MongodbSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Mongodb.Database')
database: string;
@@ -80,6 +84,7 @@ export default class MongodbSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Mongodb.Collection')
collection: string;
@@ -89,6 +94,7 @@ export default class MongodbSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Mongodb.PrimaryKey')
primaryKey: string;
}
diff --git a/inlong-dashboard/src/plugins/sources/defaults/MySQLBinlog.ts
b/inlong-dashboard/src/plugins/sources/defaults/MySQLBinlog.ts
index c765a2a216..517bd57a2d 100644
--- a/inlong-dashboard/src/plugins/sources/defaults/MySQLBinlog.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/MySQLBinlog.ts
@@ -24,7 +24,7 @@ import i18n from '@/i18n';
import { SourceInfo } from '../common/SourceInfo';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
export default class TubeMqSource
@@ -38,6 +38,7 @@ export default class TubeMqSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@ColumnDecorator()
@I18n('meta.Sources.Db.Server')
hostname: string;
@@ -52,6 +53,7 @@ export default class TubeMqSource
max: 65535,
}),
})
+ @SyncField()
@ColumnDecorator()
@I18n('meta.Sources.Db.Port')
port: number;
@@ -63,6 +65,7 @@ export default class TubeMqSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Db.User')
user: string;
@@ -73,6 +76,7 @@ export default class TubeMqSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Db.Password')
password: string;
@@ -131,6 +135,7 @@ export default class TubeMqSource
],
}),
})
+ @SyncField()
@I18n('meta.Sources.Db.AllMigration')
allMigration: boolean;
@@ -143,17 +148,19 @@ export default class TubeMqSource
}),
visible: values => !values?.allMigration,
})
+ @SyncField()
@I18n('meta.Sources.Db.TableWhiteList')
tableWhiteList: boolean;
@FieldDecorator({
type: 'input',
+ rules: [{ required: true }],
tooltip: i18n.t('meta.Sources.Db.DatabaseWhiteListHelp'),
props: values => ({
disabled: values?.status === 101,
}),
- visible: values => values?.allMigration,
})
+ @SyncField()
@I18n('meta.Sources.Db.DatabaseWhiteList')
databaseWhiteList: string;
}
diff --git a/inlong-dashboard/src/plugins/sources/defaults/Oracle.ts
b/inlong-dashboard/src/plugins/sources/defaults/Oracle.ts
index 0e87bd9257..aa05728f67 100644
--- a/inlong-dashboard/src/plugins/sources/defaults/Oracle.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/Oracle.ts
@@ -24,7 +24,7 @@ import { SourceInfo } from '../common/SourceInfo';
import i18n from '@/i18n';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
export default class OracleSource
@@ -39,6 +39,7 @@ export default class OracleSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Oracle.Hostname')
hostname: string;
@@ -53,6 +54,7 @@ export default class OracleSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Oracle.Port')
port: number;
@@ -64,6 +66,7 @@ export default class OracleSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Oracle.Username')
username: string;
@@ -74,6 +77,7 @@ export default class OracleSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Oracle.Password')
password: string;
@@ -84,6 +88,7 @@ export default class OracleSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Oracle.Database')
database: string;
@@ -94,6 +99,7 @@ export default class OracleSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Oracle.SchemaName')
schemaName: string;
@@ -104,6 +110,7 @@ export default class OracleSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Oracle.TableName')
tableName: string;
@@ -125,6 +132,7 @@ export default class OracleSource
],
}),
})
+ @SyncField()
@I18n('meta.Sources.Oracle.AllMigration')
allMigration: boolean;
@@ -146,6 +154,7 @@ export default class OracleSource
],
}),
})
+ @SyncField()
@I18n('meta.Sources.Oracle.ScanStartupMode')
scanStartupMode: string;
@@ -155,6 +164,7 @@ export default class OracleSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Oracle.PrimaryKey')
primaryKey: string;
}
diff --git a/inlong-dashboard/src/plugins/sources/defaults/PostgreSQL.ts
b/inlong-dashboard/src/plugins/sources/defaults/PostgreSQL.ts
index a2b8ac0993..4c60c8a40f 100644
--- a/inlong-dashboard/src/plugins/sources/defaults/PostgreSQL.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/PostgreSQL.ts
@@ -24,7 +24,7 @@ import { SourceInfo } from '../common/SourceInfo';
import i18n from '@/i18n';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
export default class PostgreSQLSource
@@ -39,6 +39,7 @@ export default class PostgreSQLSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.PostgreSQL.Hostname')
hostname: string;
@@ -53,6 +54,7 @@ export default class PostgreSQLSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.PostgreSQL.Port')
port: number;
@@ -63,6 +65,7 @@ export default class PostgreSQLSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.PostgreSQL.Database')
database: string;
@@ -73,6 +76,7 @@ export default class PostgreSQLSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.PostgreSQL.SchemaName')
schema: string;
@@ -83,6 +87,7 @@ export default class PostgreSQLSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@ColumnDecorator()
@I18n('meta.Sources.PostgreSQL.Username')
username: string;
@@ -94,6 +99,7 @@ export default class PostgreSQLSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.PostgreSQL.Password')
password: string;
@@ -105,6 +111,7 @@ export default class PostgreSQLSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.PostgreSQL.TableName')
tableNameList: string;
@@ -114,6 +121,7 @@ export default class PostgreSQLSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.PostgreSQL.PrimaryKey')
primaryKey: string;
@@ -150,6 +158,7 @@ export default class PostgreSQLSource
],
}),
})
+ @SyncField()
@I18n('meta.Sources.PostgreSQL.decodingPluginName')
decodingPluginName: string;
diff --git a/inlong-dashboard/src/plugins/sources/defaults/Redis.ts
b/inlong-dashboard/src/plugins/sources/defaults/Redis.ts
index 1798dd310d..715c294971 100644
--- a/inlong-dashboard/src/plugins/sources/defaults/Redis.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/Redis.ts
@@ -23,7 +23,7 @@ import { RenderList } from '@/plugins/RenderList';
import { SourceInfo } from '../common/SourceInfo';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
export default class RedisSource
@@ -38,6 +38,7 @@ export default class RedisSource
min: 0,
}),
})
+ @SyncField()
@I18n('meta.Sources.Redis.Database')
database: number;
@@ -49,6 +50,7 @@ export default class RedisSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Redis.Username')
username: string;
@@ -59,6 +61,7 @@ export default class RedisSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Redis.Password')
password: string;
@@ -88,6 +91,7 @@ export default class RedisSource
],
}),
})
+ @SyncField()
@I18n('meta.Sources.Redis.RedisCommand')
redisCommand: string;
@@ -112,6 +116,7 @@ export default class RedisSource
],
}),
})
+ @SyncField()
@I18n('meta.Sources.Redis.RedisMode')
redisMode: string;
@@ -123,6 +128,7 @@ export default class RedisSource
placeholder: '127.0.0.1:6379,127.0.0.1:6378',
}),
})
+ @SyncField()
@I18n('meta.Sources.Redis.ClusterNodes')
clusterNodes: string;
@@ -143,6 +149,7 @@ export default class RedisSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Redis.AdditionalKey')
additionalKey: string;
@@ -154,6 +161,7 @@ export default class RedisSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Redis.Hostname')
host: string;
@@ -168,6 +176,7 @@ export default class RedisSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.Redis.Port')
port: number;
@@ -177,6 +186,7 @@ export default class RedisSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Redis.PrimaryKey')
primaryKey: string;
@@ -187,6 +197,7 @@ export default class RedisSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.Redis.Timeout')
timeout: number;
}
diff --git a/inlong-dashboard/src/plugins/sources/defaults/SQLServer.ts
b/inlong-dashboard/src/plugins/sources/defaults/SQLServer.ts
index b33b642af8..d2c691cd9a 100644
--- a/inlong-dashboard/src/plugins/sources/defaults/SQLServer.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/SQLServer.ts
@@ -24,7 +24,7 @@ import { SourceInfo } from '../common/SourceInfo';
import i18n from '@/i18n';
const { I18n } = DataWithBackend;
-const { FieldDecorator } = RenderRow;
+const { FieldDecorator, SyncField } = RenderRow;
const { ColumnDecorator } = RenderList;
export default class SQLServerSource
@@ -39,6 +39,7 @@ export default class SQLServerSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.SQLServer.Hostname')
hostname: string;
@@ -53,6 +54,7 @@ export default class SQLServerSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.SQLServer.Port')
port: number;
@@ -64,6 +66,7 @@ export default class SQLServerSource
}),
})
@ColumnDecorator()
+ @SyncField()
@I18n('meta.Sources.SQLServer.Username')
username: string;
@@ -74,6 +77,7 @@ export default class SQLServerSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.SQLServer.Password')
password: string;
@@ -84,6 +88,7 @@ export default class SQLServerSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.SQLServer.Database')
database: string;
@@ -105,6 +110,7 @@ export default class SQLServerSource
],
}),
})
+ @SyncField()
@I18n('meta.Sources.SQLServer.AllMigration')
allMigration: boolean;
@@ -116,6 +122,7 @@ export default class SQLServerSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.SQLServer.ServerTimezone')
serverTimezone: string;
@@ -126,6 +133,7 @@ export default class SQLServerSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.SQLServer.SchemaName')
schemaName: string;
@@ -136,6 +144,7 @@ export default class SQLServerSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.SQLServer.TableName')
tableName: string;
@@ -145,6 +154,7 @@ export default class SQLServerSource
disabled: values?.status === 101,
}),
})
+ @SyncField()
@I18n('meta.Sources.SQLServer.PrimaryKey')
primaryKey: string;
}
diff --git a/inlong-dashboard/src/plugins/sources/defaults/index.ts
b/inlong-dashboard/src/plugins/sources/defaults/index.ts
index 6e4d912b9e..4d9ef7b974 100644
--- a/inlong-dashboard/src/plugins/sources/defaults/index.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/index.ts
@@ -24,16 +24,19 @@ export const allDefaultSources:
MetaExportWithBackendList<SourceMetaType> = [
{
label: 'ALL',
value: '',
+ useSync: false,
LoadEntity: () => import('../common/SourceInfo').then(r => ({ default:
r.SourceInfo })),
},
{
label: 'Auto-Push',
value: 'AUTO_PUSH',
+ useSync: false,
LoadEntity: () => import('./AutoPush'),
},
{
label: 'File',
value: 'FILE',
+ useSync: false,
LoadEntity: () => import('./File'),
},
{
diff --git a/inlong-dashboard/src/plugins/types.ts
b/inlong-dashboard/src/plugins/types.ts
index a20310c903..a1a06da6d6 100644
--- a/inlong-dashboard/src/plugins/types.ts
+++ b/inlong-dashboard/src/plugins/types.ts
@@ -26,6 +26,7 @@ export type MetaExportStaticList<T> = {
export type MetaExportWithBackendList<T> = {
label: string;
value: string;
+ useSync?: boolean;
LoadEntity: () => Promise<{ default: T }>;
}[];
diff --git a/inlong-dashboard/src/ui/components/FieldList/DetailModal.tsx
b/inlong-dashboard/src/ui/components/FieldList/DetailModal.tsx
index 13d9b86d8b..a4324d2b61 100644
--- a/inlong-dashboard/src/ui/components/FieldList/DetailModal.tsx
+++ b/inlong-dashboard/src/ui/components/FieldList/DetailModal.tsx
@@ -27,6 +27,7 @@ import { useDefaultMeta, useLoadMeta, TransformMetaType }
from '@/plugins';
import request from '@/core/utils/request';
import EditableTable, { ColumnsItemProps } from '../EditableTable';
import i18n from '@/i18n';
+import { fieldAllTypes } from './FieldTypeConf';
export interface Props extends ModalProps {
// When editing, use the ID to call the interface for obtaining details
@@ -114,10 +115,10 @@ const Comp: React.FC<Props> = ({
title: i18n.t('meta.Stream.FieldType'),
dataIndex: 'fieldType',
type: 'select',
- initialValue: fieldTypes[0].value,
+ initialValue: '',
props: (text, record) => ({
disabled: record.id,
- options: fieldTypes,
+ options: isSource === true ? fieldTypes : fieldAllTypes[sinkType],
}),
rules: [{ required: true }],
},
@@ -170,6 +171,7 @@ const Comp: React.FC<Props> = ({
if (inlongStreamId) {
getData(inlongStreamId);
getSinkData();
+ setSinkType(sinkData?.list[0]?.sinkType);
}
}, [getData, getSinkData, inlongStreamId]);
diff --git a/inlong-dashboard/src/ui/components/FieldList/FieldTypeConf.tsx
b/inlong-dashboard/src/ui/components/FieldList/FieldTypeConf.tsx
new file mode 100644
index 0000000000..aa0b8d92da
--- /dev/null
+++ b/inlong-dashboard/src/ui/components/FieldList/FieldTypeConf.tsx
@@ -0,0 +1,404 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { ColumnsType } from 'antd/es/table';
+
+export interface Props {
+ inlongGroupId: string;
+ inlongStreamId?: string;
+ isSource: boolean;
+ columns: ColumnsType;
+ // readonly?: string;
+}
+
+const clickhouseFieldType = [
+ 'String',
+ 'Int8',
+ 'Int16',
+ 'Int32',
+ 'Int64',
+ 'Float32',
+ 'Float64',
+ 'DateTime',
+ 'Date',
+].map(item => ({
+ label: item,
+ value: item,
+}));
+
+const dorisFieldTypes = [
+ 'NULL_TYPE',
+ 'BOOLEAN',
+ 'TINYINT',
+ 'SMALLINT',
+ 'INT',
+ 'BIGINT',
+ 'FLOAT',
+ 'DOUBLE',
+ 'DATE',
+ 'DATETIME',
+ 'DECIMAL',
+ 'CHAR',
+ 'LARGEINT',
+ 'VARCHAR',
+ 'DECIMALV2',
+ 'TIME',
+ 'HLL',
+].map(item => ({
+ label: item,
+ value: item,
+}));
+
+const esFieldTypes = [
+ 'text',
+ 'keyword',
+ 'date',
+ 'boolean',
+ 'long',
+ 'integer',
+ 'short',
+ 'byte',
+ 'double',
+ 'float',
+ 'half_float',
+ 'scaled_float',
+].map(item => ({
+ label: item,
+ value: item,
+}));
+
+const hbaseFieldTypes = [
+ 'int',
+ 'short',
+ 'long',
+ 'float',
+ 'double',
+ 'byte',
+ 'bytes',
+ 'string',
+ 'boolean',
+].map(item => ({
+ label: item,
+ value: item,
+}));
+
+const hiveFieldTypes = [
+ 'string',
+ 'varchar',
+ 'char',
+ 'tinyint',
+ 'smallint',
+ 'int',
+ 'bigint',
+ 'float',
+ 'double',
+ 'decimal',
+ 'numeric',
+ 'boolean',
+ 'binary',
+ 'timestamp',
+ 'date',
+ // 'interval',
+].map(item => ({
+ label: item,
+ value: item,
+}));
+
+const hudiFieldTypes = [
+ 'int',
+ 'long',
+ 'string',
+ 'float',
+ 'double',
+ 'date',
+ 'timestamp',
+ 'time',
+ 'boolean',
+ 'decimal',
+ 'timestamptz',
+ 'binary',
+ 'fixed',
+ 'uuid',
+].map(item => ({
+ label: item,
+ value: item,
+}));
+
+const icebergFieldTypes = [
+ 'string',
+ 'boolean',
+ 'int',
+ 'long',
+ 'float',
+ 'double',
+ 'decimal',
+ 'date',
+ 'time',
+ 'timestamp',
+ 'timestamptz',
+ 'binary',
+ 'fixed',
+ 'uuid',
+].map(item => ({
+ label: item,
+ value: item,
+}));
+
+const kuduFieldTypes = [
+ 'int',
+ 'long',
+ 'string',
+ 'float',
+ 'double',
+ 'date',
+ 'timestamp',
+ 'time',
+ 'boolean',
+ 'decimal',
+ 'timestamptz',
+ 'binary',
+ 'fixed',
+ 'uuid',
+].map(item => ({
+ label: item,
+ value: item,
+}));
+
+const redisFieldTypes = [
+ 'int',
+ 'long',
+ 'string',
+ 'float',
+ 'double',
+ 'date',
+ 'timestamp',
+ 'time',
+ 'boolean',
+ 'timestamptz',
+ 'binary',
+].map(item => ({
+ label: item,
+ value: item,
+}));
+
+const tdsqlPgFieldTypes = [
+ 'SMALLINT',
+ 'SMALLSERIAL',
+ 'INT2',
+ 'SERIAL2',
+ 'INTEGER',
+ 'SERIAL',
+ 'BIGINT',
+ 'BIGSERIAL',
+ 'REAL',
+ 'FLOAT4',
+ 'FLOAT8',
+ 'DOUBLE',
+ 'NUMERIC',
+ 'DECIMAL',
+ 'BOOLEAN',
+ 'DATE',
+ 'TIME',
+ 'TIMESTAMP',
+ 'CHAR',
+ 'CHARACTER',
+ 'VARCHAR',
+ 'TEXT',
+ 'BYTEA',
+].map(item => ({
+ label: item,
+ value: item,
+}));
+
+const greenplumTypesConf = {
+ SMALLINT: (m, d) => (1 <= m && m <= 6 ? '' : '1 <= M <= 6'),
+ INT2: () => '',
+ SMALLSERIAL: (m, d) => (1 <= m && m <= 6 ? '' : '1 <= M <= 6'),
+ SERIAL: (m, d) => (1 <= m && m <= 11 ? '' : '1 <= M <= 11'),
+ SERIAL2: () => '',
+ INTEGER: (m, d) => (1 <= m && m <= 11 ? '' : '1 <= M <= 11'),
+ BIGINT: (m, d) => (1 <= m && m <= 20 ? '' : '1 <= M <= 20'),
+ BIGSERIAL: (m, d) => (1 <= m && m <= 20 ? '' : '1 <= M <= 20'),
+ REAL: () => '',
+ FLOAT4: () => '',
+ FLOAT8: () => '',
+ DOUBLE: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D < M'),
+ NUMERIC: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D < M'),
+ DECIMAL: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D < M'),
+ BOOLEAN: () => '',
+ DATE: () => '',
+ TIME: () => '',
+ TIMESTAMP: () => '',
+ CHAR: (m, d) => (1 <= m && m <= 255 ? '' : '1 <= M <= 255'),
+ CHARACTER: (m, d) => (1 <= m && m <= 255 ? '' : '1 <= M <= 255'),
+ VARCHAR: (m, d) => (1 <= m && m <= 255 ? '' : '1 <= M <= 255'),
+ TEXT: () => '',
+ BYTEA: () => '',
+};
+
+const mysqlTypesConf = {
+ TINYINT: (m, d) => (1 <= m && m <= 4 ? '' : '1<=M<=4'),
+ SMALLINT: (m, d) => (1 <= m && m <= 6 ? '' : '1<=M<=6'),
+ MEDIUMINT: (m, d) => (1 <= m && m <= 9 ? '' : '1<=M<=9'),
+ INT: (m, d) => (1 <= m && m <= 11 ? '' : '1<=M<=11'),
+ FLOAT: (m, d) =>
+ 1 <= m && m <= 255 && 1 <= d && d <= 30 && d <= m - 2 ? '' :
'1<=M<=255,1<=D<=30,D<=M-2',
+ BIGINT: (m, d) => (1 <= m && m <= 20 ? '' : '1<=M<=20'),
+ DOUBLE: (m, d) =>
+ 1 <= m && m <= 255 && 1 <= d && d <= 30 && d <= m - 2 ? '' :
'1<=M<=255,1<=D<=30,D<=M-2',
+ NUMERIC: (m, d) =>
+ 1 <= m && m <= 255 && 1 <= d && d <= 30 && d <= m - 2 ? '' :
'1<=M<=255,1<=D<=30,D<=M-2',
+ DECIMAL: (m, d) =>
+ 1 <= m && m <= 255 && 1 <= d && d <= 30 && d <= m - 2 ? '' :
'1<=M<=255,1<=D<=30,D<=M-2',
+ BOOLEAN: () => '',
+ DATE: () => '',
+ TIME: () => '',
+ DATETIME: () => '',
+ CHAR: (m, d) => (1 <= m && m <= 255 ? '' : '1<=M<=255'),
+ VARCHAR: (m, d) => (1 <= m && m <= 255 ? '' : '1<=M<=255'),
+ TEXT: () => '',
+ BINARY: (m, d) => (1 <= m && m <= 64 ? '' : '1<=M<=64'),
+ VARBINARY: (m, d) => (1 <= m && m <= 64 ? '' : '1<=M<=64'),
+ BLOB: () => '',
+};
+
+const oracleTypesConf = {
+ BINARY_FLOAT: (m, d) => (1 <= m && m <= 6 ? '' : '1 <= M <= 6'),
+ BINARY_DOUBLE: (m, d) => (1 <= m && m <= 10 ? '' : '1 <= M <= 10'),
+ SMALLINT: (m, d) => (1 <= m && m <= 6 ? '' : '1 <= M <= 6'),
+ FLOAT: (m, d) => (1 <= m && m <= 126 ? '' : '1 <= M <= 126'),
+ FLOAT4: () => '',
+ FLOAT8: () => '',
+ DOUBLE: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D < M'),
+ REAL: () => '',
+ NUMBER: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D < M'),
+ NUMERIC: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D < M'),
+ DATE: () => '',
+ DECIMAL: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D < M'),
+ BOOLEAN: () => '',
+ TIMESTAMP: () => '',
+ CHAR: (m, d) => (1 <= m && m <= 4000 ? '' : '1 <= M <= 4000'),
+ VARCHAR: (m, d) => (1 <= m && m <= 4000 ? '' : '1 <= M <= 4000'),
+ CLOB: () => '',
+ RAW: (m, d) => (1 <= m && m <= 2000 ? '' : ' 1 <= M <= 2000'),
+ BLOB: () => '',
+};
+
+const pgTypesConf = {
+ SMALLINT: (m, d) => (1 <= m && m <= 6 ? '' : '1 <= M <= 6'),
+ INT2: (m, d) => (1 <= m && m <= 11 ? '' : '1 <= M <= 11'),
+ SMALLSERIAL: (m, d) => (1 <= m && m <= 6 ? '' : '1 <= M <= 6'),
+ SERIAL2: () => '',
+ INTEGER: (m, d) => (1 <= m && m <= 11 ? '' : '1 <= M <= 11'),
+ SERIAL: (m, d) => (1 <= m && m <= 11 ? '' : '1 <= M <= 11'),
+ BIGINT: (m, d) => (1 <= m && m <= 20 ? '' : '1 <= M <= 20'),
+ BIGSERIAL: (m, d) => (1 <= m && m <= 20 ? '' : '1 <= M <= 20'),
+ REAL: (m, d) => (1 <= m && m <= 24 ? '' : '1 <= M <= 24'),
+ FLOAT4: (m, d) => (1 <= m && m <= 24 ? '' : '1 <= M <= 24'),
+ FLOAT8: (m, d) => (24 < m && m <= 53 ? '' : '24 < M <= 53'),
+ DOUBLE: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D < M'),
+ NUMERIC: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D < M'),
+ DECIMAL: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D < M'),
+ BOOLEAN: () => '',
+ DATE: () => '',
+ TIME: () => '',
+ TIMESTAMP: () => '',
+ CHAR: (m, d) => (1 <= m && m <= 4000 ? '' : '1 <= M <= 4000'),
+ CHARACTER: (m, d) => (1 <= m && m <= 4000 ? '' : '1 <= M <= 4000'),
+ VARCHAR: (m, d) => (1 <= m && m <= 4000 ? '' : '1 <= M <= 4000'),
+ TEXT: () => '',
+ BYTEA: () => '',
+};
+
+const sqlServerTypesConf = {
+ CHAR: (m, d) => (1 <= m && m <= 8000 ? '' : '1 <= M <= 8000'),
+ VARCHAR: (m, d) => (1 <= m && m <= 8000 ? '' : '1 <= M<= 8000'),
+ NCHAR: (m, d) => (1 <= m && m <= 4000 ? '' : '1 <= M <= 4000'),
+ NVARCHAR: (m, d) => (1 <= m && m <= 4000 ? '' : '1 <= M <= 4000'),
+ TEXT: () => '',
+ NTEXT: () => '',
+ XML: () => '',
+ BIGINT: (m, d) => (1 <= m && m <= 20 ? '' : '1 <= M <= 20'),
+ BIGSERIAL: (m, d) => (1 <= m && m <= 20 ? '' : '1 <= M <= 20'),
+ DECIMAL: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D < M'),
+ MONEY: (m, d) => (1 <= m && m <= 15 && 1 <= d && d <= 4 ? '' : '1 <= M <=
15, 1 <= D <= 4'),
+ SMALLMONEY: (m, d) => (1 <= m && m <= 7 && 1 <= d && d <= 4 ? '' : '1 <= M
<= 7, 1 <= D <= 4'),
+ NUMERIC: (m, d) => (1 <= m && m <= 38 && 0 <= d && d < m ? '' : '1 <= M <=
38, 0 <= D <= M'),
+ FLOAT: (m, d) => (1 <= m && m <= 24 ? '' : '1 <= M <= 24'),
+ REAL: (m, d) => (1 <= m && m <= 24 ? '' : '1 <= M <= 24'),
+ BIT: (m, d) => (1 <= m && m <= 64 ? '' : '1 <= M <= 64'),
+ INT: (m, d) => (1 <= m && m <= 11 ? '' : '1 <= M <= 11'),
+ TINYINT: (m, d) => (1 <= m && m <= 4 ? '' : '1 <= M <= 4'),
+ SMALLINT: (m, d) => (1 <= m && m <= 6 ? '' : '1 <= M <= 6'),
+ TIME: () => '',
+ DATETIME: () => '',
+ DATETIME2: () => '',
+ SMALLDATETIME: () => '',
+ DATETIMEOFFSET: () => '',
+};
+
+const starRocksTypesConf = {
+ CHAR: (m, d) => (1 <= m && m <= 255 ? '' : '1<=M<=255'),
+ VARCHAR: (m, d) => (1 <= m && m <= 255 ? '' : '1<=M<=255'),
+ DATE: () => '',
+ TINYINT: (m, d) => (1 <= m && m <= 4 ? '' : '1<=M<=4'),
+ SMALLINT: (m, d) => (1 <= m && m <= 6 ? '' : '1<=M<=6'),
+ INT: (m, d) => (1 <= m && m <= 11 ? '' : '1<=M<=11'),
+ BIGINT: (m, d) => (1 <= m && m <= 20 ? '' : '1<=M<=20'),
+ LARGEINT: () => '',
+ STRING: () => '',
+ DATETIME: () => '',
+ FLOAT: (m, d) =>
+ 1 <= m && m <= 255 && 1 <= d && d <= 30 && d <= m - 2 ? '' :
'1<=M<=255,1<=D<=30,D<=M-2',
+ DOUBLE: (m, d) =>
+ 1 <= m && m <= 255 && 1 <= d && d <= 30 && d <= m - 2 ? '' :
'1<=M<=255,1<=D<=30,D<=M-2',
+ DECIMAL: (m, d) =>
+ 1 <= m && m <= 255 && 1 <= d && d <= 30 && d <= m - 2 ? '' :
'1<=M<=255,1<=D<=30,D<=M-2',
+ BOOLEAN: () => '',
+};
+
+const getFieldTypes = fieldTypesConf => {
+ return Object.keys(fieldTypesConf).reduce(
+ (acc, key) =>
+ acc.concat({
+ label: key,
+ value: key,
+ }),
+ [],
+ );
+};
+
+export const fieldAllTypes = {
+ CLICKHOUSE: clickhouseFieldType,
+ DORIS: dorisFieldTypes,
+ ELASTICSEARCH: esFieldTypes,
+ GREENPLUM: getFieldTypes(greenplumTypesConf),
+ HIVE: hiveFieldTypes,
+ HBASE: hbaseFieldTypes,
+ ICEBERG: icebergFieldTypes,
+ HUDI: hudiFieldTypes,
+ MYSQL: getFieldTypes(mysqlTypesConf),
+ ORACLE: getFieldTypes(oracleTypesConf),
+ POSTGRESQL: getFieldTypes(pgTypesConf),
+ SQLSERVER: getFieldTypes(sqlServerTypesConf),
+ STARROCKS: getFieldTypes(starRocksTypesConf),
+ TDSQLPOSTGRESQL: tdsqlPgFieldTypes,
+ REDIS: redisFieldTypes,
+ KUDU: kuduFieldTypes,
+};
diff --git
a/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSink/DetailModal.tsx
b/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSink/DetailModal.tsx
index 1f458cce5b..872cb6564b 100644
--- a/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSink/DetailModal.tsx
+++ b/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSink/DetailModal.tsx
@@ -94,7 +94,7 @@ const Comp: React.FC<DetailModalProps> = ({
const formContent = useMemo(() => {
if (Entity) {
- const row = new Entity().renderRow();
+ const row = new Entity().renderSyncRow();
return row.map(item => ({
...item,
col: item.name === 'sinkType' || item.type === EditableTable ? 24 : 12,
diff --git a/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSink/index.tsx
b/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSink/index.tsx
index a3c3bdea70..1044704400 100644
--- a/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSink/index.tsx
+++ b/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSink/index.tsx
@@ -18,7 +18,7 @@
*/
import React, { useState, useMemo, forwardRef, useCallback } from 'react';
-import { Badge, Button, Card, Modal, List, Tag, Segmented, message } from
'antd';
+import { Badge, Button, Card, Modal, List, Tag, Segmented, message,
PaginationProps } from 'antd';
import { PaginationConfig } from 'antd/lib/pagination';
import {
UnorderedListOutlined,
@@ -127,6 +127,10 @@ const Comp = ({ inlongGroupId, inlongStreamId, readonly }:
Props, ref) => {
size: 'small',
};
+ const onChangeList: PaginationProps['onChange'] = page => {
+ setOptions({ pageSize: defaultSize, pageNum: page, sinkType: defaultValue
});
+ };
+
const { Entity } = useLoadMeta<SinkMetaType>('sink', options.sinkType);
const entityColumns = useMemo(() => {
@@ -134,7 +138,7 @@ const Comp = ({ inlongGroupId, inlongStreamId, readonly }:
Props, ref) => {
}, [Entity]);
const entityFields = useMemo(() => {
- return Entity ? new Entity().renderRow() : [];
+ return Entity ? new Entity().renderSyncRow() : [];
}, [Entity]);
const getFilterFormContent = useCallback(
@@ -222,7 +226,14 @@ const Comp = ({ inlongGroupId, inlongStreamId, readonly }:
Props, ref) => {
size="small"
loading={loading}
dataSource={data?.list as Record<string, any>[]}
- pagination={pagination}
+ pagination={{
+ pageSize: defaultSize,
+ current: options.pageNum,
+ total: data?.total,
+ simple: true,
+ size: 'small',
+ onChange: onChangeList,
+ }}
renderItem={item => (
<List.Item
actions={[
diff --git
a/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSources/DetailModal.tsx
b/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSources/DetailModal.tsx
index 2389bc6627..d90830cc47 100644
---
a/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSources/DetailModal.tsx
+++
b/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSources/DetailModal.tsx
@@ -108,7 +108,7 @@ const Comp: React.FC<Props> = ({
}, [modalProps.open]);
const formContent = useMemo(() => {
- return Entity ? new Entity().renderRow() : [];
+ return Entity ? new Entity().renderSyncRow() : [];
}, [Entity]);
return (
diff --git
a/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSources/index.tsx
b/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSources/index.tsx
index 9d327d5c31..ca4ddfbb5a 100644
--- a/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSources/index.tsx
+++ b/inlong-dashboard/src/ui/pages/SynchronizeDetail/SyncSources/index.tsx
@@ -18,7 +18,7 @@
*/
import React, { useState, forwardRef, useMemo, useCallback } from 'react';
-import { Badge, Button, Card, Modal, List, Tag, Segmented, message } from
'antd';
+import { Badge, Button, Card, Modal, List, Tag, Segmented, message,
PaginationProps } from 'antd';
import { PaginationConfig } from 'antd/lib/pagination';
import {
UnorderedListOutlined,
@@ -170,6 +170,10 @@ const Comp = ({ inlongGroupId, inlongStreamId, readonly }:
Props, ref) => {
size: 'small',
};
+ const onChangeList: PaginationProps['onChange'] = page => {
+ setOptions({ pageSize: defaultSize, pageNum: page, sourceType:
defaultValue });
+ };
+
const { Entity } = useLoadMeta<SourceMetaType>('source', options.sourceType);
const entityColumns = useMemo(() => {
@@ -177,7 +181,7 @@ const Comp = ({ inlongGroupId, inlongStreamId, readonly }:
Props, ref) => {
}, [Entity]);
const entityFields = useMemo(() => {
- return Entity ? new Entity().renderRow() : [];
+ return Entity ? new Entity().renderSyncRow() : [];
}, [Entity]);
const getFilterFormContent = useCallback(
@@ -277,7 +281,14 @@ const Comp = ({ inlongGroupId, inlongStreamId, readonly }:
Props, ref) => {
size="small"
loading={loading}
dataSource={data?.list as Record<string, any>[]}
- pagination={pagination}
+ pagination={{
+ pageSize: defaultSize,
+ current: options.pageNum,
+ total: data?.total,
+ simple: true,
+ size: 'small',
+ onChange: onChangeList,
+ }}
split={true}
renderItem={item => (
<List.Item