This is an automated email from the ASF dual-hosted git repository.

benjobs pushed a commit to branch dev-2.1.3
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git


The following commit(s) were added to refs/heads/dev-2.1.3 by this push:
     new f6b972e06 [Improve] start flink job from cp/sp improvement
f6b972e06 is described below

commit f6b972e0635b0bf21c85df13e8eabdf7e6f6d867
Author: benjobs <[email protected]>
AuthorDate: Fri Feb 16 01:30:58 2024 +0800

    [Improve] start flink job from cp/sp improvement
---
 .../src/locales/lang/en/flink/app.ts               |  6 ++--
 .../src/locales/lang/zh-CN/flink/app.ts            |  5 ++--
 .../src/locales/lang/zh-CN/setting/flinkCluster.ts |  2 +-
 .../components/AppView/StartApplicationModal.vue   | 32 +++++++++++++++++++---
 4 files changed, 36 insertions(+), 9 deletions(-)

diff --git 
a/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts 
b/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts
index 755533a2b..c91427c96 100644
--- 
a/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts
+++ 
b/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts
@@ -169,9 +169,10 @@ export default {
     fromSavepoint: 'From savepoint',
     savepointTip: 'Restore the job from savepoint or latest checkpoint',
     savepointInput:
-      'Select or manually specify the savepoint/checkpoint path, Same 
as:-allowNonRestoredState(-n)',
+      'Specify the savepoint/checkpoint path (Double-click to switch between 
"manual input" and "dropdown selection")',
     ignoreRestored: 'Ignore failed',
-    ignoreRestoredTip: 'ignore savepoint then cannot be restored,',
+    ignoreRestoredTip:
+      'ignore savepoint then cannot be restored, Same 
as:-allowNonRestoredState(-n)',
     recheck: 'the associated project has changed and this job need to be 
rechecked',
     changed: 'the application has changed.',
   },
@@ -219,6 +220,7 @@ export default {
     enableDrain: 'Send MAX_WATERMARK before taking the savepoint and stopping 
the pipeline',
     invalidSavePoint: 'Custom savepoint path invalid: ',
     canceling: 'The current job is canceling',
+    starting: 'The current job is starting',
   },
   dashboard: {
     availableTaskSlots: 'Available Task Slots',
diff --git 
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts
 
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts
index ce3096ad9..8e7aba279 100644
--- 
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts
+++ 
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts
@@ -153,14 +153,14 @@ export default {
     logTitle: '启动日志 : 应用名称 [ {0} ]',
     refreshTime: '上次刷新时间',
     refresh: '刷新',
-    start: '开启应用',
+    start: '启动作业',
     stop: '停止应用',
     savepoint: '触发 Savepoint',
     recheck: '关联的项目已更改,需要重新检查此作业',
     changed: '应用程序已更改。',
     fromSavepoint: 'Savepoint 恢复',
     savepointTip: '作业从 savepoint 或 checkpoint 恢复状态',
-    savepointInput: '选择或者手动指定 savepoint/checkpoint 路径',
+    savepointInput: '指定 savepoint/checkpoint 路径 (双击切换"手动输入"或"下拉框选择")',
     ignoreRestored: '跳过恢复失败',
     ignoreRestoredTip: '当状态恢复失败时跳过错误,作业继续运行, 同参数:-allowNonRestoredState(-n)',
   },
@@ -208,6 +208,7 @@ export default {
     enableDrain: '在触发 savepoint 和停止作业之前发送 MAX_WATERMARK',
     invalidSavePoint: 'savepoint 路径无效: ',
     canceling: '当前作业正在停止中',
+    starting: '当前作业正在q启动中',
   },
   dashboard: {
     availableTaskSlots: '可用的任务槽数',
diff --git 
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/setting/flinkCluster.ts
 
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/setting/flinkCluster.ts
index 92be88546..eaf9e396a 100644
--- 
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/setting/flinkCluster.ts
+++ 
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/setting/flinkCluster.ts
@@ -18,7 +18,7 @@ export default {
   title: 'Flink 集群',
   detail: '查看集群详情',
   stop: '停止集群',
-  start: '开启集群',
+  start: '启动集群',
   edit: '编辑集群',
   delete: '确定要删除此集群 ?',
   form: {
diff --git 
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StartApplicationModal.vue
 
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StartApplicationModal.vue
index 88632acbb..6e3a347ca 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StartApplicationModal.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StartApplicationModal.vue
@@ -24,7 +24,7 @@
   });
 </script>
 <script setup lang="ts" name="StartApplicationModal">
-  import { h } from 'vue';
+  import { h, ref } from 'vue';
   import { Select, Input, Tag } from 'ant-design-vue';
   import { BasicForm, useForm } from '/@/components/Form';
   import { SvgIcon, Icon } from '/@/components/Icon';
@@ -39,6 +39,8 @@
   const { t } = useI18n();
   const { Swal } = useMessage();
   const router = useRouter();
+  const selectInput = ref<boolean>(false);
+  const selectValue = ref<string>(null);
 
   const emits = defineEmits(['register', 'updateOption']);
   const receiveData = reactive<Recordable>({});
@@ -113,12 +115,18 @@
     await handleDoSubmit();
   }
 
+  async function handleReset() {
+    selectInput.value = false;
+    selectValue.value = null;
+  }
+
   /* submit */
   async function handleDoSubmit() {
     try {
       const formValue = (await validate()) as Recordable;
       const savePointed = formValue.startSavePointed;
       const savePointPath = savePointed ? formValue['startSavePoint'] : null;
+      handleReset();
       const { data } = await fetchStart({
         id: receiveData.application.id,
         savePointed,
@@ -128,7 +136,7 @@
       if (data.data) {
         Swal.fire({
           icon: 'success',
-          title: 'The current job is starting',
+          title: t('flink.app.operation.starting'),
           showConfirmButton: false,
           timer: 2000,
         });
@@ -165,12 +173,23 @@
       console.error(error);
     }
   }
+
+  function handleSavepoint(model, field, input) {
+    selectInput.value = input;
+    if (input) {
+      selectValue.value = model[field];
+      model[field] = null;
+    } else {
+      model[field] = selectValue.value;
+    }
+  }
 </script>
 <template>
   <BasicModal
     @register="registerModal"
     :minHeight="100"
     @ok="handleSubmit"
+    @cancel="handleReset"
     :okText="t('common.apply')"
     :cancelText="t('common.cancelText')"
   >
@@ -181,8 +200,12 @@
 
     <BasicForm @register="registerForm" class="!pt-40px">
       <template #savepoint="{ model, field }">
-        <template v-if="receiveData.historySavePoint && 
receiveData.historySavePoint.length > 0">
-          <Select allow-clear v-model:value="model[field]">
+        <template
+          v-if="
+            !selectInput && receiveData.historySavePoint && 
receiveData.historySavePoint.length > 0
+          "
+        >
+          <Select v-model:value="model[field]" 
@dblclick="handleSavepoint(model, field, true)">
             <SelectOption v-for="(k, i) in receiveData.historySavePoint" 
:key="i" :value="k.path">
               <span style="color: darkgrey">
                 <Icon icon="ant-design:clock-circle-outlined" />
@@ -202,6 +225,7 @@
         </template>
         <Input
           v-else
+          @dblclick="handleSavepoint(model, field, false)"
           type="text"
           placeholder="Please enter savepoint manually"
           v-model:value="model[field]"

Reply via email to