dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dvc.ts (148 lines of code) (raw):
/*
* 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 { useI18n } from 'vue-i18n'
import type { IJsonItem } from '../types'
import { watch, ref } from 'vue'
export const DVC_TASK_TYPE = [
{
label: 'Upload',
value: 'Upload'
},
{
label: 'Download',
value: 'Download'
},
{
label: 'Init DVC',
value: 'Init DVC'
}
]
export function useDvc(model: { [field: string]: any }): IJsonItem[] {
const { t } = useI18n()
const dvcLoadSaveDataPathSpan = ref(0)
const dvcDataLocationSpan = ref(0)
const dvcVersionSpan = ref(0)
const dvcMessageSpan = ref(0)
const dvcStoreUrlSpan = ref(0)
const setFlag = () => {
model.isUpload = model.dvcTaskType === 'Upload'
model.isDownload = model.dvcTaskType === 'Download'
model.isInit = model.dvcTaskType === 'Init DVC'
}
const resetData = () => {
dvcLoadSaveDataPathSpan.value = model.isUpload || model.isDownload ? 24 : 0
dvcDataLocationSpan.value = model.isUpload || model.isDownload ? 24 : 0
dvcVersionSpan.value = model.isUpload || model.isDownload ? 24 : 0
dvcMessageSpan.value = model.isUpload ? 24 : 0
dvcStoreUrlSpan.value = model.isInit ? 24 : 0
}
watch(
() => [model.dvcTaskType],
() => {
setFlag()
resetData()
}
)
setFlag()
resetData()
return [
{
type: 'select',
field: 'dvcTaskType',
name: t('project.node.dvc_task_type'),
span: 12,
options: DVC_TASK_TYPE
},
{
type: 'input',
field: 'dvcRepository',
name: t('project.node.dvc_repository'),
span: 24,
props: {
placeholder: t('project.node.dvc_repository_tips')
},
validate: {
trigger: ['input', 'blur'],
required: true,
message: t('project.node.dvc_empty_tips')
}
},
{
type: 'input',
field: 'dvcDataLocation',
name: t('project.node.dvc_data_location'),
props: { placeholder: 'dvcDataLocation' },
span: dvcDataLocationSpan,
validate: {
trigger: ['input', 'blur'],
required: true,
validator(validate: any, value: string) {
if ((model.isUpload || model.isDownload) && !value) {
return new Error(t('project.node.dvc_empty_tips'))
}
}
}
},
{
type: 'input',
field: 'dvcLoadSaveDataPath',
name: t('project.node.dvc_load_save_data_path'),
span: dvcLoadSaveDataPathSpan,
validate: {
trigger: ['input', 'blur'],
required: true,
validator(validate: any, value: string) {
if ((model.isUpload || model.isDownload) && !value) {
return new Error(t('project.node.dvc_empty_tips'))
}
}
}
},
{
type: 'input',
field: 'dvcVersion',
name: t('project.node.dvc_version'),
span: dvcVersionSpan,
props: {
placeholder: t('project.node.dvc_version_tips')
},
validate: {
trigger: ['input', 'blur'],
required: true,
validator(validate: any, value: string) {
if ((model.isUpload || model.isDownload) && !value) {
return new Error(t('project.node.dvc_empty_tips'))
}
}
}
},
{
type: 'input',
field: 'dvcMessage',
name: t('project.node.dvc_message'),
span: dvcMessageSpan,
validate: {
trigger: ['input', 'blur'],
required: true,
validator(validate: any, value: string) {
if (model.isUpload && !value) {
return new Error(t('project.node.dvc_empty_tips'))
}
}
}
},
{
type: 'input',
field: 'dvcStoreUrl',
name: t('project.node.dvc_store_url'),
span: dvcStoreUrlSpan,
validate: {
trigger: ['input', 'blur'],
required: true,
validator(validate: any, value: string) {
if (!model.isInit && value) {
return new Error(t('project.node.dvc_empty_tips'))
}
}
}
}
]
}