Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dlink
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhaowei
dlink
Commits
42a72dcc
Commit
42a72dcc
authored
May 29, 2021
by
wenmo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面调整
parent
311685bf
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
232 additions
and
296 deletions
+232
-296
logback-spring.xml
dlink-admin/src/main/resources/logback-spring.xml
+0
-11
defaultSettings.ts
dlink-web/config/defaultSettings.ts
+1
-1
routes.ts
dlink-web/config/routes.ts
+2
-0
index.tsx
dlink-web/src/components/Footer/index.tsx
+4
-4
model.ts
dlink-web/src/components/Studio/model.ts
+19
-0
CreateForm.tsx
dlink-web/src/pages/Cluster/components/CreateForm.tsx
+1
-1
data.d.ts
dlink-web/src/pages/Cluster/data.d.ts
+0
-22
service.ts
dlink-web/src/pages/Cluster/service.ts
+0
-40
updateForm.tsx
dlink-web/src/pages/Task/components/updateForm.tsx
+141
-106
data.d.ts
dlink-web/src/pages/Task/data.d.ts
+14
-35
index.tsx
dlink-web/src/pages/Task/index.tsx
+49
-35
service.ts
dlink-web/src/pages/Task/service.ts
+0
-40
index.tsx
dlink-web/src/pages/user/Login/index.tsx
+1
-1
No files found.
dlink-admin/src/main/resources/logback-spring.xml
View file @
42a72dcc
...
...
@@ -92,17 +92,6 @@
<discardingThreshold>
0
</discardingThreshold>
<appender-ref
ref=
"FileAppender"
/>
</appender>
<appender
name=
"audit_log_async"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<discardingThreshold>
0
</discardingThreshold>
<appender-ref
ref=
"audit_log"
/>
</appender>
<logger
name=
"com.datalink.log.monitor"
level=
"debug"
addtivity=
"false"
>
<appender-ref
ref=
"point_log_async"
/>
</logger>
<logger
name=
"com.datalink.log.service.impl.LoggerAuditServiceImpl"
level=
"debug"
addtivity=
"false"
>
<appender-ref
ref=
"audit_log_async"
/>
</logger>
<root
level=
"INFO"
>
<appender-ref
ref=
"StdoutAppender"
/>
<appender-ref
ref=
"file_async"
/>
...
...
dlink-web/config/defaultSettings.ts
View file @
42a72dcc
...
...
@@ -12,7 +12,7 @@ const Settings: LayoutSettings & {
fixedHeader
:
false
,
fixSiderbar
:
true
,
colorWeak
:
false
,
title
:
'Dlink
开发平台
'
,
title
:
'Dlink'
,
pwa
:
false
,
logo
:
'https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg'
,
iconfontUrl
:
''
,
...
...
dlink-web/config/routes.ts
View file @
42a72dcc
...
...
@@ -42,6 +42,7 @@ export default [
{
path
:
'/dev'
,
name
:
'dev'
,
icon
:
'crown'
,
routes
:
[
{
path
:
'/dev/flink'
,
...
...
@@ -90,6 +91,7 @@ export default [
{
path
:
'/demo'
,
name
:
'demo'
,
icon
:
'crown'
,
//access: 'canAdmin',
routes
:
[
{
...
...
dlink-web/src/components/Footer/index.tsx
View file @
42a72dcc
...
...
@@ -6,7 +6,7 @@ export default () => {
const
intl
=
useIntl
();
const
defaultMessage
=
intl
.
formatMessage
({
id
:
'app.copyright.produced'
,
defaultMessage
:
'D
ataLink 数据中台 开源
'
,
defaultMessage
:
'D
link
'
,
});
return
(
...
...
@@ -14,15 +14,15 @@ export default () => {
copyright=
{
`2021 ${defaultMessage}`
}
links=
{
[
{
key
:
'D
ataL
ink'
,
title
:
'D
ataL
ink'
,
key
:
'D
l
ink'
,
title
:
'D
l
ink'
,
href
:
''
,
blankTarget
:
true
,
},
{
key
:
'github'
,
title
:
<
GithubOutlined
/>,
href
:
'https://github.com/aiwenmo/D
ataL
ink'
,
href
:
'https://github.com/aiwenmo/D
l
ink'
,
blankTarget
:
true
,
},
]
}
...
...
dlink-web/src/components/Studio/model.ts
0 → 100644
View file @
42a72dcc
import
{
Effect
,
Reducer
}
from
"umi"
;
export
type
StateType
=
{
current
?:
string
;
data
?:
{
sql
:
string
;
};
};
export
type
ModelType
=
{
namespace
:
string
;
state
:
StateType
;
effects
:
{
executeSql
:
Effect
;
};
reducers
:
{
saveSql
:
Reducer
<
StateType
>
;
};
};
dlink-web/src/pages/Cluster/components/CreateForm.tsx
View file @
42a72dcc
...
...
@@ -12,7 +12,7 @@ const CreateForm: React.FC<CreateFormProps> = (props) => {
return
(
<
Modal
destroyOnClose
title=
"添加
任务
"
title=
"添加
Flink 集群
"
visible=
{
modalVisible
}
onCancel=
{
()
=>
onCancel
()
}
footer=
{
null
}
...
...
dlink-web/src/pages/Cluster/data.d.ts
View file @
42a72dcc
...
...
@@ -13,25 +13,3 @@ export type ClusterTableListItem = {
createTime
:
Date
,
updateTime
:
Date
,
};
export
type
TableListPagination
=
{
total
:
number
;
pageSize
:
number
;
current
:
number
;
};
export
type
TableListData
=
{
list
:
TableListItem
[];
pagination
:
Partial
<
TableListPagination
>
;
};
export
type
TableListParams
=
{
status
?:
string
;
name
?:
string
;
desc
?:
string
;
key
?:
number
;
pageSize
?:
number
;
currentPage
?:
number
;
filter
?:
Record
<
string
,
any
[]
>
;
sorter
?:
Record
<
string
,
any
>
;
};
dlink-web/src/pages/Cluster/service.ts
deleted
100644 → 0
View file @
311685bf
import
request
from
'umi-request'
;
import
type
{
TableListParams
}
from
'./data.d'
;
import
{
ClusterTableListItem
}
from
"./data.d"
;
export
async
function
queryCluster
(
params
?:
TableListParams
)
{
return
request
(
'/api/task'
,
{
method
:
'POST'
,
data
:
{
...
params
,
},
});
}
export
async
function
removeCluster
(
params
:
number
[])
{
return
request
(
'/api/task'
,
{
method
:
'DELETE'
,
data
:
{
...
params
,
},
});
}
export
async
function
submitCluster
(
params
:
number
[])
{
return
request
(
'/api/cluster/submit'
,
{
method
:
'POST'
,
data
:
{
...
params
,
},
});
}
export
async
function
addOrUpdateCluster
(
params
:
ClusterTableListItem
)
{
return
request
(
'/api/task'
,
{
method
:
'PUT'
,
data
:
{
...
params
,
},
});
}
dlink-web/src/pages/Task/components/updateForm.tsx
View file @
42a72dcc
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Form
,
Button
,
Input
,
Modal
}
from
'antd'
;
import
{
Form
,
Button
,
Input
,
Modal
}
from
'antd'
;
import
type
{
TableListItem
}
from
'../data.d'
;
import
type
{
TableListItem
}
from
'../data.d'
;
import
Switch
from
"antd/es/switch"
;
export
type
UpdateFormProps
=
{
onCancel
:
(
flag
?:
boolean
,
formVals
?:
Partial
<
TableListItem
>
)
=>
void
;
onSubmit
:
(
values
:
Partial
<
TableListItem
>
)
=>
void
;
updateModalVisible
:
boolean
;
values
:
Partial
<
TableListItem
>
;
onCancel
:
(
flag
?:
boolean
,
formVals
?:
Partial
<
TableListItem
>
)
=>
void
;
onSubmit
:
(
values
:
Partial
<
TableListItem
>
)
=>
void
;
updateModalVisible
:
boolean
;
values
:
Partial
<
TableListItem
>
;
};
const
FormItem
=
Form
.
Item
;
const
formLayout
=
{
labelCol
:
{
span
:
7
},
wrapperCol
:
{
span
:
13
},
labelCol
:
{
span
:
7
},
wrapperCol
:
{
span
:
13
},
};
const
UpdateForm
:
React
.
FC
<
UpdateFormProps
>
=
(
props
)
=>
{
const
[
formVals
,
setFormVals
]
=
useState
<
Partial
<
TableListItem
>>
({
id
:
props
.
values
.
id
,
name
:
props
.
values
.
name
,
alias
:
props
.
values
.
alias
,
type
:
props
.
values
.
type
,
note
:
props
.
values
.
note
,
enabled
:
props
.
values
.
enabled
,
createUser
:
props
.
values
.
createUser
,
updateUser
:
props
.
values
.
updateUser
,
tenantId
:
props
.
values
.
tenant
Id
,
});
const
[
form
]
=
Form
.
useForm
(
);
const
[
formVals
,
setFormVals
]
=
useState
<
Partial
<
TableListItem
>>
({
id
:
props
.
values
.
id
,
name
:
props
.
values
.
name
,
alias
:
props
.
values
.
alias
,
type
:
props
.
values
.
type
,
checkPoint
:
props
.
values
.
checkPoint
,
savePointPath
:
props
.
values
.
savePointPath
,
parallelism
:
props
.
values
.
parallelism
,
fragemnt
:
props
.
values
.
fragment
,
clusterId
:
props
.
values
.
cluster
Id
,
note
:
props
.
values
.
note
,
enabled
:
props
.
values
.
enabled
,
}
);
const
{
onSubmit
:
handleUpdate
,
onCancel
:
handleUpdateModalVisible
,
updateModalVisible
,
values
,
}
=
props
;
const
[
form
]
=
Form
.
useForm
();
const
submitForm
=
async
()
=>
{
const
fieldsValue
=
await
form
.
validateFields
();
setFormVals
({
...
formVals
,
...
fieldsValue
});
handleUpdate
({
...
formVals
,
...
fieldsValue
});
};
const
{
onSubmit
:
handleUpdate
,
onCancel
:
handleUpdateModalVisible
,
updateModalVisible
,
values
,
}
=
props
;
const
renderContent
=
(
formVals
)
=>
{
return
(
<>
<
FormItem
name=
"name"
label=
"名称"
rules=
{
[{
required
:
true
,
message
:
'请输入名称!'
}]
}
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"alias"
label=
"别名"
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"type"
label=
"类型"
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"note"
label=
"注释"
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"enabled"
label=
"是否启用"
rules=
{
[{
required
:
true
,
message
:
'请输入是否启用!'
}]
}
>
<
Switch
checkedChildren=
"启用"
unCheckedChildren=
"禁用"
defaultChecked=
{
formVals
.
enabled
}
/>
</
FormItem
>
</>
);
};
const
renderFooter
=
()
=>
{
return
(
<>
<
Button
onClick=
{
()
=>
handleUpdateModalVisible
(
false
,
values
)
}
>
取消
</
Button
>
<
Button
type=
"primary"
onClick=
{
()
=>
submitForm
()
}
>
完成
</
Button
>
</>
);
};
const
submitForm
=
async
()
=>
{
const
fieldsValue
=
await
form
.
validateFields
();
setFormVals
({...
formVals
,
...
fieldsValue
});
handleUpdate
({...
formVals
,
...
fieldsValue
});
};
const
renderContent
=
(
formVals
)
=>
{
return
(
<
Modal
width=
{
640
}
bodyStyle=
{
{
padding
:
'32px 40px 48px'
}
}
destroyOnClose
title=
"编辑任务"
visible=
{
updateModalVisible
}
footer=
{
renderFooter
()
}
onCancel=
{
()
=>
handleUpdateModalVisible
()
}
<>
<
FormItem
name=
"name"
label=
"名称"
rules=
{
[{
required
:
true
,
message
:
'请输入名称!'
}]
}
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"alias"
label=
"别名"
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"type"
label=
"类型"
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"note"
label=
"注释"
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"checkPoint"
label=
"CheckPoint"
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"savePointPath"
label=
"SavePointPath"
>
<
Form
{
...
formLayout
}
form=
{
form
}
initialValues=
{
{
id
:
formVals
.
id
,
name
:
formVals
.
name
,
alias
:
formVals
.
alias
,
type
:
formVals
.
type
,
note
:
formVals
.
note
,
enabled
:
formVals
.
enabled
,
createUser
:
formVals
.
createUser
,
updateUser
:
formVals
.
updateUser
,
tenantId
:
formVals
.
tenantId
,
}
}
>
{
renderContent
(
formVals
)
}
</
Form
>
</
Modal
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"parallelism"
label=
"Parallelism"
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"fragemnt"
label=
"Fragment"
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"note"
label=
"注释"
>
<
Input
placeholder=
"请输入"
/>
</
FormItem
>
<
FormItem
name=
"enabled"
label=
"是否启用"
rules=
{
[{
required
:
true
,
message
:
'请输入是否启用!'
}]
}
>
<
Switch
checkedChildren=
"启用"
unCheckedChildren=
"禁用"
defaultChecked=
{
formVals
.
enabled
}
/>
</
FormItem
>
</>
);
};
const
renderFooter
=
()
=>
{
return
(
<>
<
Button
onClick=
{
()
=>
handleUpdateModalVisible
(
false
,
values
)
}
>
取消
</
Button
>
<
Button
type=
"primary"
onClick=
{
()
=>
submitForm
()
}
>
完成
</
Button
>
</>
);
};
return
(
<
Modal
width=
{
640
}
bodyStyle=
{
{
padding
:
'32px 40px 48px'
}
}
destroyOnClose
title=
"编辑任务"
visible=
{
updateModalVisible
}
footer=
{
renderFooter
()
}
onCancel=
{
()
=>
handleUpdateModalVisible
()
}
>
<
Form
{
...
formLayout
}
form=
{
form
}
initialValues=
{
{
id
:
formVals
.
id
,
name
:
formVals
.
name
,
alias
:
formVals
.
alias
,
type
:
formVals
.
type
,
note
:
formVals
.
note
,
checkPoint
:
formVals
.
checkPoint
,
savePointPath
:
formVals
.
savePointPath
,
parallelism
:
formVals
.
parallelism
,
fragemnt
:
formVals
.
fragemnt
,
clusterId
:
formVals
.
clusterId
,
enabled
:
formVals
.
enabled
,
}
}
>
{
renderContent
(
formVals
)
}
</
Form
>
</
Modal
>
);
};
export
default
UpdateForm
;
dlink-web/src/pages/Task/data.d.ts
View file @
42a72dcc
export
type
TaskTableListItem
=
{
id
:
number
,
name
:
string
,
alias
:
string
,
type
:
string
,
checkPoint
:
number
,
savePointPath
:
string
,
parallelism
:
number
,
fragment
:
boolean
,
clusterId
:
number
,
note
:
string
,
enabled
:
boolean
,
createTime
:
Date
,
updateTime
:
Date
,
};
export
type
TableListPagination
=
{
total
:
number
;
pageSize
:
number
;
current
:
number
;
};
export
type
TableListData
=
{
list
:
TableListItem
[];
pagination
:
Partial
<
TableListPagination
>
;
};
export
type
TableListParams
=
{
status
?:
string
;
name
?:
string
;
desc
?:
string
;
key
?:
number
;
pageSize
?:
number
;
currentPage
?:
number
;
filter
?:
Record
<
string
,
any
[]
>
;
sorter
?:
Record
<
string
,
any
>
;
id
:
number
,
name
:
string
,
alias
:
string
,
type
:
string
,
checkPoint
:
number
,
savePointPath
:
string
,
parallelism
:
number
,
fragment
:
boolean
,
clusterId
:
number
,
clusterName
:
string
,
note
:
string
,
enabled
:
boolean
,
createTime
:
Date
,
updateTime
:
Date
,
};
dlink-web/src/pages/Task/index.tsx
View file @
42a72dcc
...
...
@@ -15,7 +15,7 @@ import Dropdown from "antd/es/dropdown/dropdown";
import
Menu
from
"antd/es/menu"
;
import
{
handleAddOrUpdate
,
handleRemove
,
handleSubmit
,
queryData
,
updateEnabled
}
from
"@/components/Common/crud"
;
const
url
=
'/api
-dlink
/task'
;
const
url
=
'/api/task'
;
const
TaskTableList
:
React
.
FC
<
{}
>
=
()
=>
{
const
[
createModalVisible
,
handleModalVisible
]
=
useState
<
boolean
>
(
false
);
...
...
@@ -112,6 +112,54 @@ const TaskTableList: React.FC<{}> = () => {
hideInSearch
:
true
,
hideInTable
:
false
,
},
{
title
:
'CheckPoint'
,
sorter
:
true
,
dataIndex
:
'checkPoint'
,
hideInForm
:
false
,
hideInSearch
:
true
,
hideInTable
:
true
,
},
{
title
:
'SavePointPath'
,
sorter
:
true
,
dataIndex
:
'savePointPath'
,
hideInForm
:
false
,
hideInSearch
:
true
,
hideInTable
:
true
,
},
{
title
:
'Parallelism'
,
sorter
:
true
,
dataIndex
:
'parallelism'
,
hideInForm
:
false
,
hideInSearch
:
true
,
hideInTable
:
true
,
},
{
title
:
'Fragment'
,
sorter
:
true
,
dataIndex
:
'fragment'
,
hideInForm
:
false
,
hideInSearch
:
true
,
hideInTable
:
true
,
},
{
title
:
'集群ID'
,
sorter
:
true
,
dataIndex
:
'clusterId'
,
hideInForm
:
false
,
hideInSearch
:
true
,
hideInTable
:
true
,
},
{
title
:
'集群'
,
sorter
:
true
,
dataIndex
:
'clusterName'
,
hideInForm
:
true
,
hideInSearch
:
true
,
hideInTable
:
true
,
},
{
title
:
'注释'
,
sorter
:
true
,
...
...
@@ -143,23 +191,6 @@ const TaskTableList: React.FC<{}> = () => {
false
:
{
text
:
'禁用'
,
status
:
'Error'
},
},
},
{
title
:
'创建人ID'
,
sorter
:
true
,
dataIndex
:
'createUser'
,
hideInForm
:
true
,
hideInSearch
:
true
,
hideInTable
:
true
,
hideInDescriptions
:
true
,
},
{
title
:
'创建人'
,
sorter
:
true
,
dataIndex
:
'createNickName'
,
hideInForm
:
true
,
hideInSearch
:
true
,
hideInTable
:
true
,
},
{
title
:
'创建时间'
,
dataIndex
:
'createTime'
,
...
...
@@ -178,23 +209,6 @@ const TaskTableList: React.FC<{}> = () => {
return
defaultRender
(
item
);
},
},
{
title
:
'更新人ID'
,
sorter
:
true
,
dataIndex
:
'updateUser'
,
hideInForm
:
true
,
hideInSearch
:
true
,
hideInTable
:
true
,
hideInDescriptions
:
true
,
},
{
title
:
'更新人'
,
sorter
:
true
,
dataIndex
:
'updateNickName'
,
hideInForm
:
true
,
hideInSearch
:
true
,
hideInTable
:
false
,
},
{
title
:
'最近更新时间'
,
dataIndex
:
'updateTime'
,
...
...
dlink-web/src/pages/Task/service.ts
deleted
100644 → 0
View file @
311685bf
import
request
from
'umi-request'
;
import
type
{
TableListParams
}
from
'./data.d'
;
import
{
TaskTableListItem
}
from
"./data.d"
;
export
async
function
queryTask
(
params
?:
TableListParams
)
{
return
request
(
'/api/task'
,
{
method
:
'POST'
,
data
:
{
...
params
,
},
});
}
export
async
function
removeTask
(
params
:
number
[])
{
return
request
(
'/api/task'
,
{
method
:
'DELETE'
,
data
:
{
...
params
,
},
});
}
export
async
function
submitTask
(
params
:
number
[])
{
return
request
(
'/api/task/submit'
,
{
method
:
'POST'
,
data
:
{
...
params
,
},
});
}
export
async
function
addOrUpdateTask
(
params
:
TaskTableListItem
)
{
return
request
(
'/api/task'
,
{
method
:
'PUT'
,
data
:
{
...
params
,
},
});
}
dlink-web/src/pages/user/Login/index.tsx
View file @
42a72dcc
...
...
@@ -95,7 +95,7 @@ const Login: React.FC = () => {
<
div
className=
{
styles
.
header
}
>
<
Link
to=
"/"
>
<
img
alt=
"logo"
className=
{
styles
.
logo
}
src=
"/logo.svg"
/>
<
span
className=
{
styles
.
title
}
>
D
ataL
ink
</
span
>
<
span
className=
{
styles
.
title
}
>
D
l
ink
</
span
>
</
Link
>
</
div
>
<
div
className=
{
styles
.
desc
}
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment