diff --git a/frontend/src/global/form-rules.ts b/frontend/src/global/form-rules.ts index c6749924e..be3886e49 100644 --- a/frontend/src/global/form-rules.ts +++ b/frontend/src/global/form-rules.ts @@ -236,6 +236,19 @@ const checkIntegerNumber = (rule: any, value: any, callback: any) => { } }; +const checkIntegerNumberWith0 = (rule: any, value: any, callback: any) => { + if (value === '' || typeof value === 'undefined' || value == null) { + callback(new Error(i18n.global.t('commons.rule.integer'))); + } else { + const reg = /^[0-9]*$/; + if (!reg.test(value) && value !== '') { + callback(new Error(i18n.global.t('commons.rule.integer'))); + } else { + callback(); + } + } +}; + const checkFloatNumber = (rule: any, value: any, callback: any) => { if (value === '' || typeof value === 'undefined' || value == null) { callback(new Error(i18n.global.t('commons.rule.integer'))); @@ -413,6 +426,7 @@ interface CommonRule { email: FormItemRule; number: FormItemRule; integerNumber: FormItemRule; + integerNumberWith0: FormItemRule; floatNumber: FormItemRule; ip: FormItemRule; ipV4V6: FormItemRule; @@ -515,6 +529,11 @@ export const Rules: CommonRule = { validator: checkIntegerNumber, trigger: 'blur', }, + integerNumberWith0: { + required: true, + validator: checkIntegerNumberWith0, + trigger: 'blur', + }, floatNumber: { required: true, validator: checkFloatNumber, diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index bdb38cf82..c57e08afc 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -504,7 +504,8 @@ const message = { appHelper: 'This container is sourced from the application store. Upgrading it may cause the service to be unavailable. Do you want to continue?', - forcePull: 'Pull the latest image', + forcePull: 'forced image pull ', + forcePullHelper: 'Ignore existing images on the server and pull again.', server: 'Host', serverExample: 'e.g. 80, 80-88, ip:80 or ip:80-88', containerExample: 'e.g. 80 or 80-88', diff --git a/frontend/src/lang/modules/tw.ts b/frontend/src/lang/modules/tw.ts index bb77659de..0f2e1779d 100644 --- a/frontend/src/lang/modules/tw.ts +++ b/frontend/src/lang/modules/tw.ts @@ -493,7 +493,8 @@ const message = { targetImageHelper: '請輸入目標鏡像版本', appHelper: '該容器來源於應用商店,升級可能導致該服務不可用,是否繼續?', - forcePull: '拉取最新鏡像', + forcePull: '強製拉取鏡像', + forcePullHelper: '忽略服務器已存在的鏡像,重新拉取一次', server: '服務器', serverExample: '例: 80, 80-88, ip:80 或者 ip:80-88', containerExample: '例: 80 或者 80-88', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 835ed9501..5d4d476e2 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -493,7 +493,8 @@ const message = { targetImageHelper: '请输入目标镜像版本', appHelper: '该容器来源于应用商店,升级可能导致该服务不可用,是否继续?', - forcePull: '拉取最新镜像', + forcePull: '强制拉取镜像', + forcePullHelper: '忽略服务器已存在的镜像,重新拉取一次', server: '服务器', serverExample: '例: 80, 80-88, ip:80 或者 ip:80-88', containerExample: '例: 80 或者 80-88', diff --git a/frontend/src/views/container/container/index.vue b/frontend/src/views/container/container/index.vue index 4e4c76e00..4a08502ed 100644 --- a/frontend/src/views/container/container/index.vue +++ b/frontend/src/views/container/container/index.vue @@ -453,6 +453,12 @@ const buttons = [ dialogContainerLogRef.value!.acceptParams({ containerID: row.containerID, container: row.name }); }, }, + { + label: i18n.global.t('commons.button.upgrade'), + click: (row: Container.ContainerInfo) => { + dialogUpgradeRef.value!.acceptParams({ container: row.name, image: row.imageName, fromApp: row.isFromApp }); + }, + }, { label: i18n.global.t('container.monitor'), disabled: (row: Container.ContainerInfo) => { @@ -462,12 +468,6 @@ const buttons = [ onMonitor(row); }, }, - { - label: i18n.global.t('commons.button.upgrade'), - click: (row: Container.ContainerInfo) => { - dialogUpgradeRef.value!.acceptParams({ container: row.name, image: row.imageName, fromApp: row.isFromApp }); - }, - }, { label: i18n.global.t('container.rename'), click: (row: Container.ContainerInfo) => { diff --git a/frontend/src/views/container/container/operate/index.vue b/frontend/src/views/container/container/operate/index.vue index 20fa3fea6..5ee09a383 100644 --- a/frontend/src/views/container/container/operate/index.vue +++ b/frontend/src/views/container/container/operate/index.vue @@ -30,6 +30,7 @@ {{ $t('container.forcePull') }} + {{ $t('container.forcePullHelper') }} @@ -302,7 +303,7 @@ const rules = reactive({ name: [Rules.requiredInput, Rules.volumeName], image: [Rules.requiredSelect], network: [Rules.requiredSelect], - cpuShares: [Rules.floatNumber, checkNumberRange(0, 262144)], + cpuShares: [Rules.integerNumberWith0, checkNumberRange(0, 262144)], nanoCPUs: [Rules.floatNumber], memory: [Rules.floatNumber], }); @@ -385,7 +386,6 @@ const onSubmit = async (formEl: FormInstance | undefined) => { return; } dialogData.value.rowData!.memory = Number(dialogData.value.rowData!.memory); - dialogData.value.rowData!.cpuShares = Number(dialogData.value.rowData!.cpuShares); dialogData.value.rowData!.nanoCPUs = Number(dialogData.value.rowData!.nanoCPUs); loading.value = true; diff --git a/frontend/src/views/container/container/upgrade/index.vue b/frontend/src/views/container/container/upgrade/index.vue index 85dbae877..9ce9d77c2 100644 --- a/frontend/src/views/container/container/upgrade/index.vue +++ b/frontend/src/views/container/container/upgrade/index.vue @@ -1,5 +1,5 @@