in dolphinscheduler-ui/src/views/projects/workflow/definition/components/start-modal.tsx [75:310]
setup(props, ctx) {
const { t } = useI18n()
const route = useRoute()
const { startState } = useForm()
const {
variables,
handleStartDefinition,
getWorkerGroups,
getTenantList,
getAlertGroups,
getEnvironmentList,
getStartParamsList
} = useModal(startState, ctx)
const hideModal = () => {
ctx.emit('update:show')
}
const handleStart = () => {
handleStartDefinition(props.row.code, props.row.version)
}
const generalWarningTypeListOptions = () => [
{
value: 'NONE',
label: t('project.workflow.none_send')
},
{
value: 'SUCCESS',
label: t('project.workflow.success_send')
},
{
value: 'FAILURE',
label: t('project.workflow.failure_send')
},
{
value: 'ALL',
label: t('project.workflow.all_send')
}
]
const generalPriorityList = () => [
{
value: 'HIGHEST',
label: 'HIGHEST',
color: '#ff0000',
icon: ArrowUpOutlined
},
{
value: 'HIGH',
label: 'HIGH',
color: '#ff0000',
icon: ArrowUpOutlined
},
{
value: 'MEDIUM',
label: 'MEDIUM',
color: '#EA7D24',
icon: ArrowUpOutlined
},
{
value: 'LOW',
label: 'LOW',
color: '#2A8734',
icon: ArrowDownOutlined
},
{
value: 'LOWEST',
label: 'LOWEST',
color: '#2A8734',
icon: ArrowDownOutlined
}
]
const showTaskDependType = computed(
() => route.name === 'workflow-definition-detail'
)
const renderLabel = (option: any) => {
return [
h(
NIcon,
{
style: {
verticalAlign: 'middle',
marginRight: '4px',
marginBottom: '3px'
},
color: option.color
},
{
default: () => h(option.icon)
}
),
option.label
]
}
const projectPreferences = ref({} as any)
const initProjectPreferences = async (projectCode: number) => {
if (projectCode) {
await queryProjectPreferenceByProjectCode(projectCode).then(
(result: any) => {
if (result?.preferences && result.state === 1) {
projectPreferences.value = JSON.parse(result.preferences)
}
}
)
}
}
const containValueInOptions = (
options: Array<any>,
findingValue: string
): boolean => {
for (const { value } of options) {
if (findingValue === value) {
return true
}
}
return false
}
const restructureForm = async (form: any) => {
await initProjectPreferences(props.row.projectCode)
if (projectPreferences.value?.taskPriority) {
form.workflowInstancePriority = projectPreferences.value.taskPriority
}
if (projectPreferences.value?.warningType) {
form.warningType = projectPreferences.value.warningType
}
if (projectPreferences.value?.workerGroup) {
if (
containValueInOptions(
variables.workerGroups,
projectPreferences.value.workerGroup
)
) {
form.workerGroup = projectPreferences.value.workerGroup
}
}
if (projectPreferences.value?.tenant) {
if (
containValueInOptions(
variables.tenantList,
projectPreferences.value.tenant
)
) {
form.tenantCode = projectPreferences.value.tenant
}
}
if (
projectPreferences.value?.environmentCode &&
variables?.environmentList
) {
if (
containValueInOptions(
variables.environmentList,
projectPreferences.value.environmentCode
)
) {
form.environmentCode = projectPreferences.value.environmentCode
}
}
if (projectPreferences.value?.alertGroups && variables?.alertGroups) {
if (
containValueInOptions(
variables.alertGroups,
projectPreferences.value.alertGroups
)
) {
form.warningGroupId = projectPreferences.value.alertGroups
}
}
}
const updateWorkerGroup = () => {
startState.startForm.environmentCode = null
}
const addStartParams = () => {
variables.startParamsList.push({
prop: '',
value: ''
})
}
const updateParamsList = (index: number, param: Array<string>) => {
variables.startParamsList[index].prop = param[0]
variables.startParamsList[index].value = param[1]
}
const removeStartParams = (index: number) => {
variables.startParamsList.splice(index, 1)
}
const trim = getCurrentInstance()?.appContext.config.globalProperties.trim
onMounted(() => {
getWorkerGroups()
getTenantList()
getAlertGroups()
getEnvironmentList()
})
watch(
() => props.show,
() => {
if (props.show) {
getStartParamsList(props.row.code)
restructureForm(startState.startForm)
if (props.taskCode)
startState.startForm.startNodeList = props.taskCode
}
}
)
return {
t,
showTaskDependType,
hideModal,
handleStart,
generalWarningTypeListOptions,
generalPriorityList,
renderLabel,
updateWorkerGroup,
removeStartParams,
addStartParams,
updateParamsList,
...toRefs(variables),
...toRefs(startState),
...toRefs(props),
trim
}
},