From 3b947cebc71fac613c775dbbbb95e7939af91629 Mon Sep 17 00:00:00 2001 From: Kerwin <37063904+zhuangchong@users.noreply.github.com> Date: Mon, 19 Sep 2022 09:47:54 +0800 Subject: [PATCH] [3.0.1-preapre][cherry-pick]3.0.1 UI (#12020) --- .../src/components/crontab/common.ts | 39 ++++++++++- .../src/components/crontab/index.tsx | 19 +++++ .../src/components/crontab/modules/day.tsx | 17 ++--- .../src/components/crontab/modules/time.tsx | 70 +++++++++++++------ .../src/components/crontab/types.ts | 9 ++- .../src/locales/en_US/project.ts | 1 + .../src/locales/zh_CN/project.ts | 1 + .../src/views/datasource/list/detail.tsx | 4 +- .../task/components/node/fields/use-sql.ts | 3 + .../components/dag/dag-context-menu.tsx | 20 ++++-- .../components/dag/dag-startup-param.tsx | 7 +- .../workflow/components/dag/index.tsx | 1 + .../definition/components/start-modal.tsx | 23 +++++- .../projects/workflow/instance/use-table.ts | 2 +- 14 files changed, 169 insertions(+), 47 deletions(-) diff --git a/dolphinscheduler-ui/src/components/crontab/common.ts b/dolphinscheduler-ui/src/components/crontab/common.ts index 5069801d5d..af4168f1ae 100644 --- a/dolphinscheduler-ui/src/components/crontab/common.ts +++ b/dolphinscheduler-ui/src/components/crontab/common.ts @@ -16,6 +16,7 @@ */ import _ from 'lodash' +import type { ISpecialSelect } from './types' const timeI18n = { second: { @@ -190,4 +191,40 @@ const isWeek = (str: string) => { return flag } -export { isStr, isWeek, timeI18n, week, specificWeek, lastWeeks } +const range = (start: number, stop: number, step = 1) => + Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + i * step) + +const specificList: ISpecialSelect = { + 60: _.map(range(0, 59), (v) => { + return { + value: v + '', + label: v + '' + } + }), + 24: _.map(range(0, 23), (v) => { + return { + value: v + '', + label: v + '' + } + }), + 12: _.map(range(1, 12), (v) => { + return { + value: v + '', + label: v + '' + } + }), + year: _.map(range(2018, 2030), (v) => { + return { + value: v + '', + label: v + '' + } + }), + day: _.map(range(1, 31), (v) => { + return { + value: v + '', + label: v + '' + } + }) +} + +export { isStr, isWeek, timeI18n, week, specificWeek, lastWeeks, specificList } diff --git a/dolphinscheduler-ui/src/components/crontab/index.tsx b/dolphinscheduler-ui/src/components/crontab/index.tsx index d74623f841..c0bc835f70 100644 --- a/dolphinscheduler-ui/src/components/crontab/index.tsx +++ b/dolphinscheduler-ui/src/components/crontab/index.tsx @@ -93,18 +93,27 @@ export default defineComponent({ @@ -117,12 +126,22 @@ export default defineComponent({ diff --git a/dolphinscheduler-ui/src/components/crontab/modules/day.tsx b/dolphinscheduler-ui/src/components/crontab/modules/day.tsx index 9c67ff9db3..201e9b777a 100644 --- a/dolphinscheduler-ui/src/components/crontab/modules/day.tsx +++ b/dolphinscheduler-ui/src/components/crontab/modules/day.tsx @@ -18,7 +18,14 @@ import { defineComponent, onMounted, PropType, ref, watch } from 'vue' import { NInputNumber, NRadio, NRadioGroup, NSelect } from 'naive-ui' import { useI18n } from 'vue-i18n' -import { isStr, isWeek, week, specificWeek, lastWeeks } from '../common' +import { + isStr, + isWeek, + week, + specificWeek, + lastWeeks, + specificList +} from '../common' import styles from '../index.module.scss' const props = { @@ -39,11 +46,6 @@ export default defineComponent({ setup(props, ctx) { const { t } = useI18n() - const options = Array.from({ length: 60 }, (x, i) => ({ - label: i.toString(), - value: i - })) - const weekOptions = week.map((v) => ({ label: t(v.label), value: v.value @@ -430,7 +432,6 @@ export default defineComponent({ onMounted(() => analyticalValue()) return { - options, weekOptions, lastWeekOptions, radioRef, @@ -551,7 +552,7 @@ export default defineComponent({ , + default: 0 + }, + timeMax: { + type: Number as PropType, + default: 60 + }, + intervalPerform: { + type: Number as PropType, + default: 5 + }, + intervalStart: { + type: Number as PropType, + default: 3 + }, + cycleStart: { + type: Number as PropType, + default: 1 + }, + cycleEnd: { + type: Number as PropType, + default: 1 + }, + timeSpecial: { + type: Number as PropType, + default: 60 + }, timeValue: { type: String as PropType, default: '*' @@ -46,11 +74,11 @@ export default defineComponent({ const timeRef = ref() const radioRef = ref() - const intervalStartRef = ref(0) - const intervalPerformRef = ref(0) + const intervalStartRef = ref(props.intervalStart) + const intervalPerformRef = ref(props.intervalPerform) const specificTimesRef = ref>([]) - const cycleStartRef = ref(0) - const cycleEndRef = ref(0) + const cycleStartRef = ref(props.cycleStart) + const cycleEndRef = ref(props.cycleEnd) /** * Parse parameter value @@ -73,8 +101,10 @@ export default defineComponent({ // Positive integer (times) if ( - ($timeVal.length === 1 && _.isInteger(parseInt($timeVal))) || - ($timeVal.length === 2 && _.isInteger(parseInt($timeVal))) + ($timeVal.length === 1 || + $timeVal.length === 2 || + $timeVal.length === 4) && + _.isInteger(parseInt($timeVal)) ) { radioRef.value = 'specificTime' specificTimesRef.value = [parseInt($timeVal)] @@ -232,9 +262,9 @@ export default defineComponent({
{t(this.timeI18n!.every)}
@@ -244,9 +274,9 @@ export default defineComponent({
@@ -261,7 +291,7 @@ export default defineComponent({
{t(this.timeI18n!.cycleFrom)}
@@ -285,9 +315,9 @@ export default defineComponent({
{t(this.timeI18n!.to)}
diff --git a/dolphinscheduler-ui/src/components/crontab/types.ts b/dolphinscheduler-ui/src/components/crontab/types.ts index 77d28676d5..99177ceadd 100644 --- a/dolphinscheduler-ui/src/components/crontab/types.ts +++ b/dolphinscheduler-ui/src/components/crontab/types.ts @@ -27,4 +27,11 @@ interface ICrontabI18n { time: string } -export { ICrontabI18n } +interface ISpecialSelect { + [key: number | string]: { + label: string + value: string + }[] +} + +export { ICrontabI18n, ISpecialSelect } diff --git a/dolphinscheduler-ui/src/locales/en_US/project.ts b/dolphinscheduler-ui/src/locales/en_US/project.ts index 7d5068d081..7b1b58d87b 100644 --- a/dolphinscheduler-ui/src/locales/en_US/project.ts +++ b/dolphinscheduler-ui/src/locales/en_US/project.ts @@ -43,6 +43,7 @@ export default { create_workflow: 'Create Workflow', import_workflow: 'Import Workflow', workflow_name: 'Workflow Name', + workflow_instance_name: 'Workflow Instance Name', current_selection: 'Current Selection', online: 'Online', offline: 'Offline', diff --git a/dolphinscheduler-ui/src/locales/zh_CN/project.ts b/dolphinscheduler-ui/src/locales/zh_CN/project.ts index ae2d4c80d4..9b8b42d0a6 100644 --- a/dolphinscheduler-ui/src/locales/zh_CN/project.ts +++ b/dolphinscheduler-ui/src/locales/zh_CN/project.ts @@ -43,6 +43,7 @@ export default { create_workflow: '创建工作流', import_workflow: '导入工作流', workflow_name: '工作流名称', + workflow_instance_name: '工作流实例名称', current_selection: '当前选择', online: '已上线', offline: '已下线', diff --git a/dolphinscheduler-ui/src/views/datasource/list/detail.tsx b/dolphinscheduler-ui/src/views/datasource/list/detail.tsx index cd521e3e54..68b793c7ed 100644 --- a/dolphinscheduler-ui/src/views/datasource/list/detail.tsx +++ b/dolphinscheduler-ui/src/views/datasource/list/detail.tsx @@ -87,13 +87,13 @@ const DetailModal = defineComponent({ watch( () => props.show, async () => { - props.show && props.id && setFieldsValue(await queryById(props.id)) props.show && state.detailForm.type && - changeType( + await changeType( state.detailForm.type, datasourceType[state.detailForm.type] ) + props.show && props.id && setFieldsValue(await queryById(props.id)) } ) diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-sql.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-sql.ts index 602f3d6790..46e489d40e 100644 --- a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-sql.ts +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-sql.ts @@ -43,6 +43,9 @@ export function useSql(model: { [field: string]: any }): IJsonItem[] { trigger: ['input', 'trigger'], required: true, message: t('project.node.sql_empty_tips') + }, + props: { + language: 'sql' } }, useUdfs(model), diff --git a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag-context-menu.tsx b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag-context-menu.tsx index 74b8317b88..87161c3d27 100644 --- a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag-context-menu.tsx +++ b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag-context-menu.tsx @@ -26,6 +26,10 @@ import { IWorkflowTaskInstance } from './types' import { NButton } from 'naive-ui' const props = { + startButtonDisplay: { + type: Boolean as PropType, + default: true + }, startReadonly: { type: Boolean as PropType, default: false @@ -127,13 +131,15 @@ export default defineComponent({ class={styles['dag-context-menu']} style={{ left: `${this.left}px`, top: `${this.top}px` }} > - - {t('project.node.start')} - + {this.startButtonDisplay && ( + + {t('project.node.start')} + ) + } { listAlertGroupById().then((res: any) => { - alertGroupListRef.value = res.map((item: any) => ({ - label: item.groupName, - value: item.id - })) + alertGroupListRef.value = res }) } @@ -83,7 +80,7 @@ export default defineComponent({ const o = _.filter(alertGroupListRef.value, (v) => v.id === id) if (o && o.length) { - return o[0].code + return o[0].groupName } return '-' }) diff --git a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/index.tsx b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/index.tsx index fcb49bbe8f..3e167bd81e 100644 --- a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/index.tsx +++ b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/index.tsx @@ -362,6 +362,7 @@ export default defineComponent({ onCancel={taskCancel} /> route.name === 'workflow-definition-detail') + const renderLabel = (option: any) => { return [ h( @@ -201,6 +206,7 @@ export default defineComponent({ return { t, + showTaskDependType, parallelismRef, hideModal, handleStart, @@ -219,7 +225,6 @@ export default defineComponent({ render() { const { t } = this - return ( + {this.showTaskDependType && ( + + + + {t('project.workflow.backward_execution')} + {t('project.workflow.forward_execution')} + {t('project.workflow.current_node_execution')} + + + ) + } rowIndex + 1 }, { - title: t('project.workflow.workflow_name'), + title: t('project.workflow.workflow_instance_name'), key: 'name', ...COLUMN_WIDTH_CONFIG['linkName'], className: 'workflow-name',