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

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


The following commit(s) were added to refs/heads/dev by this push:
     new f2c23ff16 [Fix]: spark app error (#4086)
f2c23ff16 is described below

commit f2c23ff169d02c792f36a76537fab10e17d78b0a
Author: Kriszu <[email protected]>
AuthorDate: Tue Sep 24 23:17:12 2024 +0800

    [Fix]: spark app error (#4086)
    
    * [Fix]: spark app error
    
    * fix: web ui text
---
 .../src/api/flink/app.type.ts                      |  2 +-
 .../src/components/Modal/src/props.ts              |  6 ++--
 .../src/locales/lang/en/spark/app.ts               | 18 +++++------
 .../src/locales/lang/en/spark/home.ts              |  3 +-
 .../src/locales/lang/zh-CN/spark/app.ts            | 15 +++++-----
 .../src/locales/lang/zh-CN/spark/home.ts           |  3 +-
 .../flink/app/components/AppDetail/DetailTab.vue   |  1 -
 .../components/AppView/StopApplicationModal.vue    |  2 +-
 .../src/views/flink/app/styles/Add.less            | 10 +++++--
 .../src/views/spark/app/components/DetailTab.vue   | 17 ++++++-----
 .../src/views/spark/app/components/ProgramArgs.vue | 16 +++++-----
 .../src/views/spark/app/components/SparkSql.vue    | 14 ++-------
 .../spark/app/components/SparkSqlDifferent.vue     |  2 +-
 .../views/spark/app/components/SparkSqlReview.vue  |  4 +--
 .../src/views/spark/app/components/State.tsx       |  8 ++---
 .../views/spark/app/components/VariableReview.vue  | 12 ++++----
 .../src/views/spark/app/create.vue                 | 18 ++++-------
 .../src/views/spark/app/detail.vue                 |  2 +-
 .../src/views/spark/app/edit.vue                   | 19 +++++-------
 .../src/views/spark/app/hooks/useAppFormSchema.tsx |  4 +--
 .../src/views/spark/app/hooks/useSparkAction.tsx   | 16 +++++-----
 .../src/views/spark/app/hooks/useSparkRender.tsx   | 35 ++--------------------
 .../views/spark/app/hooks/useSparkTableAction.ts   | 10 ++-----
 .../src/views/spark/app/index.vue                  |  8 ++---
 .../src/views/spark/home/components/Modal.vue      |  2 +-
 .../src/views/spark/home/index.vue                 |  8 ++---
 26 files changed, 104 insertions(+), 151 deletions(-)

diff --git 
a/streampark-console/streampark-console-webapp/src/api/flink/app.type.ts 
b/streampark-console/streampark-console-webapp/src/api/flink/app.type.ts
index cd89292d4..b1c604990 100644
--- a/streampark-console/streampark-console-webapp/src/api/flink/app.type.ts
+++ b/streampark-console/streampark-console-webapp/src/api/flink/app.type.ts
@@ -151,7 +151,7 @@ export interface CancelParam {
   id: string;
   restoreOrTriggerSavepoint: boolean;
   drain: boolean;
-  nativeFormat: boolean;
+  nativeFormat?: boolean;
   savepointPath: string;
 }
 // create Params
diff --git 
a/streampark-console/streampark-console-webapp/src/components/Modal/src/props.ts
 
b/streampark-console/streampark-console-webapp/src/components/Modal/src/props.ts
index 911af43a7..809b309e9 100644
--- 
a/streampark-console/streampark-console-webapp/src/components/Modal/src/props.ts
+++ 
b/streampark-console/streampark-console-webapp/src/components/Modal/src/props.ts
@@ -1,4 +1,4 @@
-import type { PropType, CSSProperties } from 'vue';
+import type { PropType, CSSProperties, HTMLAttributes } from 'vue';
 import type { ModalWrapperProps } from './typing';
 import { ButtonProps } from 'ant-design-vue/es/button/buttonTypes';
 import { useI18n } from '/@/hooks/web/useI18n';
@@ -67,9 +67,9 @@ export const basicProps = Object.assign({}, modalProps, {
 
   okType: { type: String, default: 'primary' },
 
-  okButtonProps: Object as PropType<ButtonProps>,
+  okButtonProps: Object as PropType<ButtonProps & HTMLAttributes>,
 
-  cancelButtonProps: Object as PropType<ButtonProps>,
+  cancelButtonProps: Object as PropType<ButtonProps & HTMLAttributes>,
 
   title: { type: String },
 
diff --git 
a/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/app.ts 
b/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/app.ts
index 7a02aa2a2..58bc169c7 100644
--- 
a/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/app.ts
+++ 
b/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/app.ts
@@ -77,13 +77,13 @@ export default {
   jmMemoryOptions: 'JM Memory',
   tmMemoryOptions: 'TM Memory',
   podTemplate: 'Kubernetes Pod Template',
-  flinkCluster: 'Flink Cluster',
+  sparkCluster: 'Spark Cluster',
   yarnQueue: 'Yarn Queue',
   mavenPom: 'Maven POM',
   uploadJar: 'Upload Dependency Jar File',
   kubernetesNamespace: 'Kubernetes Namespace',
   kubernetesClusterId: 'Kubernetes Cluster ID',
-  flinkBaseDockerImage: 'Flink Base Docker Image',
+  sparkBaseDockerImage: 'Spark Base Docker Image',
   restServiceExposedType: 'Rest-Service Exposed Type',
   resourceFrom: 'Resource Source',
   uploadJobJar: 'Upload Jar File',
@@ -103,8 +103,6 @@ export default {
   startTime: 'Start Time',
   endTime: 'End Time',
   hadoopUser: 'Hadoop User',
-  restoreModeTip:
-    'Flink 1.15 and later supports restore mode; generally, this parameter 
does not need to be set',
   success: 'Submission Successful',
   appidCheck: 'appId cannot be empty!',
   release: {
@@ -122,7 +120,7 @@ export default {
   },
   detail: {
     detailTitle: 'Job Details',
-    flinkWebUi: 'Flink Web UI',
+    webUI: 'Spark Web UI',
     compareConfig: 'Compare Configuration',
     compareSparkSql: 'Compare Spark SQL',
     candidate: 'Candidate',
@@ -211,7 +209,7 @@ export default {
     start: 'Start Job',
     cancel: 'Stop Job',
     detail: 'Job Details',
-    startLog: 'View Flink Start Log',
+    startLog: 'View Spark Start Log',
     abort: 'Terminate Job',
     copy: 'Copy Job',
     remapping: 'Remap Job',
@@ -269,7 +267,7 @@ export default {
       'Characters must be (Chinese or English or "-" or "_") and cannot have 
two consecutive spaces',
     appNameNotValid:
       'Job name is invalid. Characters must be (Chinese or English or "-" or 
"_") and cannot have two consecutive spaces. Please check',
-    flinkClusterIsRequiredMessage: 'Flink cluster is required',
+    sparkClusterIsRequiredMessage: 'Spark cluster is required',
     sparkSqlIsRequiredMessage: 'Spark SQL is required',
     tagsPlaceholder: 'Please enter tags, if more than one, separate with 
commas (,)',
     parallelismPlaceholder: 'Parallelism for running the program',
@@ -285,9 +283,9 @@ export default {
     kubernetesClusterIdRequire:
       'Lowercase letters, numbers, "-", and must start and end with 
alphanumeric characters, and not exceed 45 characters',
     kubernetesClusterIdIsRequiredMessage: 'Kubernetes Cluster ID is required',
-    flinkImagePlaceholder:
-      'Please enter the tag of the Flink base Docker image, e.g., 
flink:1.13.0-scala_2.11-java8',
-    flinkImageIsRequiredMessage: 'Flink base Docker image is required',
+    sparkImagePlaceholder:
+      'Please enter the tag of the spark base Docker image, e.g., 
spark:1.13.0-java8',
+    sparkImageIsRequiredMessage: 'spark base Docker image is required',
     k8sRestExposedTypePlaceholder: 'Kubernetes Rest-Service Exposed Type',
     hadoopXmlConfigFileTips:
       'Automatically copy configuration file from system environment 
parameters',
diff --git 
a/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/home.ts
 
b/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/home.ts
index 209702450..b3ef87b7d 100644
--- 
a/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/home.ts
+++ 
b/streampark-console/streampark-console-webapp/src/locales/lang/en/spark/home.ts
@@ -20,7 +20,8 @@ export default {
   searchByName: 'Search by Spark Name',
   conf: 'Spark Conf',
   sync: 'Sync Conf',
-  edit: 'Edit Spark Env',
+  edit: 'Edit Spark Home',
+  delete: 'Are you sure delete this spark home ?',
   tips: {
     remove: 'The current spark home has been successfully deleted.',
     setDefault: 'Successfully set the default spark home.',
diff --git 
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/app.ts
 
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/app.ts
index 501ac24fd..495c04a85 100644
--- 
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/app.ts
+++ 
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/app.ts
@@ -77,13 +77,13 @@ export default {
   jmMemoryOptions: 'JM内存',
   tmMemoryOptions: 'TM内存',
   podTemplate: 'Kubernetes Pod 模板',
-  flinkCluster: 'Flink集群',
+  sparkCluster: 'Flink集群',
   yarnQueue: 'Yarn队列',
   mavenPom: 'maven pom',
   uploadJar: '上传依赖Jar文件',
   kubernetesNamespace: 'Kubernetes 命名空间',
   kubernetesClusterId: 'Kubernetes ClusterId',
-  flinkBaseDockerImage: 'Flink 基础docker镜像',
+  sparkBaseDockerImage: 'Spark 基础docker镜像',
   restServiceExposedType: 'Rest-Service Exposed Type',
   resourceFrom: '资源来源',
   uploadJobJar: '上传jar文件',
@@ -103,7 +103,6 @@ export default {
   startTime: '启动时间',
   endTime: '结束时间',
   hadoopUser: 'Hadoop User',
-  restoreModeTip: 'flink 1.15开始支持restore模式,一般情况下不用设置该参数',
   success: '提交成功',
   appidCheck: 'appId 不能为空!',
   release: {
@@ -121,7 +120,7 @@ export default {
   },
   detail: {
     detailTitle: '应用详情',
-    flinkWebUi: 'Flink Web UI',
+    webUI: 'Spark Web UI',
     compareConfig: '比较配置',
     compareSparkSql: '比较 Spark SQL',
     candidate: '侯选',
@@ -209,7 +208,7 @@ export default {
     start: '启动作业',
     cancel: '取消作业',
     detail: '作业详情',
-    startLog: '查看 Flink 启动日志',
+    startLog: '查看 Spark 启动日志',
     abort: '终止作业',
     copy: '复制作业',
     remapping: '重新映射作业',
@@ -264,7 +263,7 @@ export default {
     appNameRoleContent: '字符必须是(中文 或 英文 或 "-" 或 "_"),不能出现两个连续的空格',
     appNameNotValid:
       '作业名称无效。字符必须是(中文 或 英文 或 "-" 或 "_"),不能出现两个连续的空格,请检查',
-    flinkClusterIsRequiredMessage: 'Flink集群必填',
+    sparkClusterIsRequiredMessage: 'spark集群必填',
     sparkSqlIsRequiredMessage: 'Spark SQL必填',
     tagsPlaceholder: '请输入标签,如果超过一个,用逗号(,)分隔',
     parallelismPlaceholder: '运行程序的并行度',
@@ -280,8 +279,8 @@ export default {
     kubernetesClusterIdRequire:
       '小写字母、数字、“-”,并且必须以字母数字字符开头和结尾,并且不超过45个字符',
     kubernetesClusterIdIsRequiredMessage: 'Kubernetes ClusterId 必填',
-    flinkImagePlaceholder: 
'请输入Flink基础docker镜像的标签,如:flink:1.13.0-scala_2.11-java8',
-    flinkImageIsRequiredMessage: 'Flink基础docker镜像是必填的',
+    sparkImagePlaceholder: '请输入Spark基础docker镜像的标签,如:spark:1.13.0-java8',
+    sparkImageIsRequiredMessage: 'Spark基础docker镜像是必填的',
     k8sRestExposedTypePlaceholder: 'Kubernetes Rest-Service Exposed Type',
     hadoopXmlConfigFileTips: '从系统环境参数自动复制配置文件',
     dynamicPropertiesPlaceholder: '$key=$value,如果有多个参数,可以换行输入(-D <arg>)',
diff --git 
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/home.ts
 
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/home.ts
index c046f9722..a81d74bcc 100644
--- 
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/home.ts
+++ 
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/spark/home.ts
@@ -20,7 +20,8 @@ export default {
   searchByName: '按Spark名称搜索',
   conf: 'Spark Conf',
   sync: '同步 Conf',
-  edit: '编辑 Spark 环境',
+  edit: '编辑 Spark Home',
+  delete: '确定删除此 Spark home?',
   tips: {
     remove: '当前的 spark home 已被成功删除。',
     setDefault: '成功设置默认spark home',
diff --git 
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppDetail/DetailTab.vue
 
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppDetail/DetailTab.vue
index 59a256238..7df156c9d 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppDetail/DetailTab.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppDetail/DetailTab.vue
@@ -46,7 +46,6 @@
     fetchOptionLog,
     fetchRemoveBackup,
     fetchDeleteOperationLog,
-    fetchYarn,
   } from '/@/api/flink/app';
   import { decodeByBase64 } from '/@/utils/cipher';
   import { useModal } from '/@/components/Modal';
diff --git 
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StopApplicationModal.vue
 
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StopApplicationModal.vue
index fc1aa9b0e..158431864 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StopApplicationModal.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/AppView/StopApplicationModal.vue
@@ -88,7 +88,7 @@
   async function handleSubmit() {
     try {
       const { triggerSavepoint, customSavepoint, drain } = (await validate()) 
as Recordable;
-      const stopReq = {
+      const stopReq: CancelParam = {
         id: app.id,
         restoreOrTriggerSavepoint: triggerSavepoint,
         savepointPath: customSavepoint,
diff --git 
a/streampark-console/streampark-console-webapp/src/views/flink/app/styles/Add.less
 
b/streampark-console/streampark-console-webapp/src/views/flink/app/styles/Add.less
index 5159a19b8..7cc9a6333 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/flink/app/styles/Add.less
+++ 
b/streampark-console/streampark-console-webapp/src/views/flink/app/styles/Add.less
@@ -103,7 +103,8 @@
 }
 
 .pod-template-tool,
-.flinksql-tool {
+.flinksql-tool,
+.sparkSql-tool {
   z-index: 99;
   float: right;
   margin-right: 5px;
@@ -111,7 +112,8 @@
   margin-top: 5px;
 }
 
-.flinksql-tool-item {
+.flinksql-tool-item,
+.sparkSql-tool-item {
   font-size: 12px;
   display: flex;
   align-items: center;
@@ -200,6 +202,7 @@
       padding: 0 6px;
       width: unset;
       float: left;
+
       .ant-alert-close-icon {
         position: relative;
         left: 5px;
@@ -212,7 +215,7 @@
     cursor: pointer;
   }
 
-  .form-required > .ant-form-item-label > label::before {
+  .form-required>.ant-form-item-label>label::before {
     display: inline-block;
     margin-right: 4px;
     color: #f5222d;
@@ -268,6 +271,7 @@
     .icon-close {
       color: #ffffff73;
     }
+
     .dependency-box {
       background-color: #111b26;
       border: 1px solid #153450;
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/DetailTab.vue
 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/DetailTab.vue
index efba63368..40b1952c6 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/DetailTab.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/DetailTab.vue
@@ -38,7 +38,6 @@
     fetchSparkDeleteOptLog,
     fetchSparkOptionLog,
     fetchSparkRemoveBackup,
-    fetchSparkYarn,
   } from '/@/api/spark/app';
   import { decodeByBase64 } from '/@/utils/cipher';
   import { useModal } from '/@/components/Modal';
@@ -52,6 +51,7 @@
   import SparkSqlCompareModal from './SparkSqlCompareModal.vue';
   import { fetchSparkSql, fetchSparkSqlList, fetchSparkSqlRemove } from 
'/@/api/spark/sql';
   import { SparkApplication } from '/@/api/spark/app.type';
+  import { baseUrl } from '/@/api';
   const DescriptionItem = Descriptions.Item;
   const TabPane = Tabs.TabPane;
 
@@ -251,9 +251,12 @@
     });
   }
 
-  async function handleYarnUrl(yarnAppId: string) {
-    const res = await fetchSparkYarn();
-    window.open(res + '/proxy/' + yarnAppId + '/');
+  async function handleYarnUrl(id: string) {
+    window.open(baseUrl() + '/proxy/yarn/' + id + '/');
+  }
+
+  async function handleViewHistory(id: string) {
+    window.open(baseUrl() + '/proxy/history/' + id + '/');
   }
 
   function getBackupAction(record: Recordable): ActionItem[] {
@@ -344,9 +347,9 @@
                 {{ record.yarnAppId }}
               </a>
             </template>
-            <template v-if="column.dataIndex === 'jobManagerUrl'">
-              <a type="link" :href="record.jobManagerUrl" target="_blank">
-                {{ record.jobManagerUrl }}
+            <template v-if="column.dataIndex === 'trackUrl'">
+              <a type="link" @click="handleViewHistory(record.id)" 
target="_blank">
+                {{ record.trackUrl }}
               </a>
             </template>
             <template v-if="column.dataIndex === 'optionTime'">
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/ProgramArgs.vue
 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/ProgramArgs.vue
index 0da0d6366..69deabbd7 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/ProgramArgs.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/ProgramArgs.vue
@@ -29,19 +29,19 @@
       </Tooltip>
     </div>
     <div ref="programArgRef" :class="fullEditorClass" class="w-full 
program-box mt-5px"> </div>
-    <ButtonGroup class="flinksql-tool" v-if="!fullScreenStatus">
+    <ButtonGroup class="sparkSql-tool" v-if="!fullScreenStatus">
       <a-button
-        class="flinksql-tool-item"
+        class="sparkSql-tool-item"
         v-if="canReview"
         type="primary"
         @click="emit('preview', value)"
         size="small"
       >
         <Icon icon="ant-design:eye-outlined" />
-        {{ t('flink.app.flinkSql.preview') }}
+        {{ t('spark.app.sparkSql.preview') }}
       </a-button>
       <a-button
-        class="flinksql-tool-item"
+        class="sparkSql-tool-item"
         size="small"
         :type="canReview ? 'default' : 'primary'"
         @click="toggle"
@@ -50,18 +50,18 @@
         {{ t('layout.header.tooltipEntryFull') }}
       </a-button>
     </ButtonGroup>
-    <ButtonGroup v-else class="flinksql-tool">
+    <ButtonGroup v-else class="sparkSql-tool">
       <a-button
         type="primary"
-        class="flinksql-tool-item"
+        class="sparkSql-tool-item"
         v-if="canReview"
         @click="emit('preview', value)"
       >
         <Icon icon="ant-design:eye-outlined" />
-        {{ t('flink.app.flinkSql.preview') }}
+        {{ t('spark.app.sparkSql.preview') }}
       </a-button>
       <a-button
-        class="flinksql-tool-item"
+        class="sparkSql-tool-item"
         size="small"
         :type="canReview ? 'default' : 'primary'"
         @click="toggle"
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSql.vue
 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSql.vue
index 8d6f2c6d0..c2e5b6f96 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSql.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSql.vue
@@ -133,15 +133,7 @@
     const formatSql = format(props.value);
     setContent(formatSql);
   }
-  /* full screen */
-  // function handleBigScreen() {
-  //   toggle();
-  //   unref(flinkSql).style.width = '0';
-  //   setTimeout(() => {
-  //     unref(flinkSql).style.width = '100%';
-  //     unref(flinkSql).style.height = isFullscreen.value ? 'calc(100vh - 
50px)' : '550px';
-  //   }, 500);
-  // }
+
   const { onChange, setContent, getInstance, getMonacoInstance, 
setMonacoSuggest } = useMonaco(
     sparkSql,
     {
@@ -163,7 +155,7 @@
   const canPreview = computed(() => {
     return /\${.+}/.test(props.value);
   });
-  const flinkEditorClass = computed(() => {
+  const sparkEditorClass = computed(() => {
     return {
       ...fullEditorClass.value,
       ['syntax-' + (verifyRes.errorMsg ? 'false' : 'true')]: true,
@@ -195,7 +187,7 @@
     <div
       ref="sparkSql"
       class="overflow-hidden w-full mt-5px sql-bordered"
-      :class="flinkEditorClass"
+      :class="sparkEditorClass"
     ></div>
     <ButtonGroup class="sql-tool" v-if="!fullScreenStatus">
       <a-button size="small" class="sql-tool-item" type="primary" 
@click="handleVerifySql">
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlDifferent.vue
 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlDifferent.vue
index 90f92d1c3..acae65110 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlDifferent.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlDifferent.vue
@@ -14,7 +14,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<script setup lang="ts" name="FlinkSqlDifferent">
+<script setup lang="ts">
   import { nextTick, reactive, ref } from 'vue';
   import { getMonacoOptions } from '/@/views/flink/app/data/index';
   import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlReview.vue
 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlReview.vue
index f7b3edb49..b8c4f92a6 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlReview.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/SparkSqlReview.vue
@@ -26,7 +26,7 @@
       <EyeOutlined style="color: green" />
       Spark SQL preview
     </template>
-    <div ref="sparkReviewRef" class="h-[calc(100vh-150px)] 
flink-preview"></div>
+    <div ref="sparkReviewRef" class="h-[calc(100vh-150px)] 
spark-preview"></div>
   </BasicDrawer>
 </template>
 
@@ -49,7 +49,7 @@
   });
 </script>
 <style lang="less">
-  .flink-preview {
+  .spark-preview {
     border: 1px solid @border-color-base;
   }
 </style>
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/State.tsx
 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/State.tsx
index ad6fdf2af..3895abd30 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/State.tsx
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/State.tsx
@@ -25,7 +25,7 @@ const { t } = useI18n();
 
 /*  state map*/
 export const stateMap = {
-  [AppStateEnum.ADDED]: { color: '#2f54eb', title: 
t('spark.app.runState.added') },
+  [AppStateEnum.ADDED]: { color: '#477de9', title: 
t('spark.app.runState.added') },
   [AppStateEnum.NEW_SAVING]: {
     color: '#738df8',
     title: t('spark.app.runState.saving'),
@@ -53,11 +53,11 @@ export const stateMap = {
     class: 'status-processing-success',
   },
   [AppStateEnum.RUNNING]: {
-    color: '#fa541c',
+    color: '#1890ff',
     title: t('spark.app.runState.running'),
     class: 'status-processing-failing',
   },
-  [AppStateEnum.FINISHED]: { color: '#1890ff', title: 
t('spark.app.runState.finished') },
+  [AppStateEnum.FINISHED]: { color: '#52c41a', title: 
t('spark.app.runState.finished') },
   [AppStateEnum.FAILED]: { color: '#f5222d', title: 
t('spark.app.runState.failed') },
   [AppStateEnum.LOST]: { color: '#333333', title: t('spark.app.runState.lost') 
},
   [AppStateEnum.MAPPING]: {
@@ -73,7 +73,7 @@ export const stateMap = {
   },
 
   [AppStateEnum.STOPPING]: {
-    color: '#738df8',
+    color: '#f5222d',
     title: t('spark.app.runState.stopping'),
     class: 'status-processing-initializing',
   },
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/VariableReview.vue
 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/VariableReview.vue
index 3022a4361..dbbfb5dbc 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/components/VariableReview.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/components/VariableReview.vue
@@ -24,9 +24,9 @@
   >
     <template #title>
       <EyeOutlined style="color: green" />
-      Flink SQL preview
+      Spark SQL preview
     </template>
-    <div ref="flinkReviewRef" class="h-[calc(100vh-150px)] 
flink-preview"></div>
+    <div ref="sparkReviewRef" class="h-[calc(100vh-150px)] 
spark-preview"></div>
   </BasicDrawer>
 </template>
 
@@ -36,8 +36,8 @@
   import { getMonacoOptions } from '../data';
   import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
   import { useMonaco } from '/@/hooks/web/useMonaco';
-  const flinkReviewRef = ref();
-  const { setContent } = useMonaco(flinkReviewRef, {
+  const sparkReviewRef = ref();
+  const { setContent } = useMonaco(sparkReviewRef, {
     language: 'sql',
     code: '',
     options: getMonacoOptions(true) as any,
@@ -58,8 +58,8 @@
     }
   });
 </script>
-<style lang="less">
-  .flink-preview {
+<style lang="less" scoped>
+  .spark-preview {
     border: 1px solid @border-color-base;
   }
 </style>
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/create.vue 
b/streampark-console/streampark-console-webapp/src/views/spark/app/create.vue
index cf1b7e5d2..4d783d94b 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/create.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/create.vue
@@ -100,11 +100,11 @@
   }
   /* Submit to create */
   async function handleAppSubmit(formValue: Recordable) {
-    let config = formValue.configOverride;
-    if (config != null && config !== undefined && config.trim() != '') {
-      config = encryptByBase64(config);
+    let { configOverride } = formValue;
+    if (configOverride != null && configOverride !== undefined && 
configOverride.trim() != '') {
+      formValue.config = encryptByBase64(configOverride);
     } else {
-      config = null;
+      formValue.config = null;
     }
     if (formValue.jobType == JobTypeEnum.SQL) {
       if (formValue.sparkSql == null || formValue.sparkSql.trim() === '') {
@@ -116,15 +116,9 @@
           throw new Error(access);
         }
       }
-      handleSQLMode({
-        ...formValue,
-        config,
-      });
+      handleSQLMode(formValue);
     } else {
-      handleCustomJobMode({
-        ...formValue,
-        config,
-      });
+      handleCustomJobMode(formValue);
     }
   }
   /* send create request */
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/detail.vue 
b/streampark-console/streampark-console-webapp/src/views/spark/app/detail.vue
index 455476f70..96f4406e5 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/detail.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/detail.vue
@@ -211,7 +211,7 @@
         class="float-right -mt-8px mr-20px"
       >
         <Icon icon="ant-design:cloud-outlined" />
-        {{ t('spark.app.detail.flinkWebUi') }}
+        {{ t('spark.app.detail.webUI') }}
       </a-button>
     </div>
     <Description @register="registerDescription" />
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/edit.vue 
b/streampark-console/streampark-console-webapp/src/views/spark/app/edit.vue
index 7dfffe044..76c90b6ed 100644
--- a/streampark-console/streampark-console-webapp/src/views/spark/app/edit.vue
+++ b/streampark-console/streampark-console-webapp/src/views/spark/app/edit.vue
@@ -100,6 +100,7 @@
       appType: AppTypeEnum.APACHE_SPARK,
       versionId: values.versionId,
       sparkSql: values.sparkSql,
+      sqlId: sparkApp.value.sqlId,
       jar: null,
       mainClass: null,
       appName: values.appName,
@@ -115,11 +116,11 @@
   }
   /* Submit to create */
   async function handleAppSubmit(formValue: Recordable) {
-    let config = formValue.configOverride;
-    if (config != null && config !== undefined && config.trim() != '') {
-      config = encryptByBase64(config);
+    const { configOverride } = formValue;
+    if (configOverride != null && configOverride !== undefined && 
configOverride.trim() != '') {
+      formValue.config = encryptByBase64(configOverride);
     } else {
-      config = null;
+      formValue.config = null;
     }
 
     if (formValue.jobType == JobTypeEnum.SQL) {
@@ -132,15 +133,9 @@
           throw new Error(access);
         }
       }
-      handleSQLMode({
-        ...formValue,
-        config,
-      });
+      handleSQLMode(formValue);
     } else {
-      handleCustomJobMode({
-        ...formValue,
-        config,
-      });
+      handleCustomJobMode(formValue);
     }
   }
   /* send create request */
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useAppFormSchema.tsx
 
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useAppFormSchema.tsx
index 55a2735f7..acade5001 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useAppFormSchema.tsx
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useAppFormSchema.tsx
@@ -153,7 +153,7 @@ export function useSparkSchema(sparkEnvs: Ref<SparkEnv[]>) {
           fieldNames: { label: 'sparkName', value: 'id', options: 'options' },
         },
         rules: [
-          { required: true, message: 
t('spark.app.addAppTips.flinkVersionIsRequiredMessage') },
+          { required: true, message: 
t('spark.app.addAppTips.sparkVersionIsRequiredMessage') },
         ],
       },
       {
@@ -221,7 +221,7 @@ export function useSparkSchema(sparkEnvs: Ref<SparkEnv[]>) {
               <p class="conf-desc mt-10px">
                 <span class="note-info">
                   <Tag color="#2db7f5" class="tag-note">
-                    {t('flink.app.noteInfo.note')}
+                    {t('spark.app.noteInfo.note')}
                   </Tag>
                   {t('setting.yarnQueue.selectionHint')}
                 </span>
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkAction.tsx
 
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkAction.tsx
index 37d1e5091..f69fe39ba 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkAction.tsx
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkAction.tsx
@@ -55,8 +55,8 @@ export const useSparkAction = (optionApps: Recordable) => {
       createWarningModal({
         title: 'WARNING',
         content: `
-          <p class="pt-10px">${t('flink.app.release.releaseTitle')}</p>
-          <p>${t('flink.app.release.releaseDesc')}</p>
+          <p class="pt-10px">${t('spark.app.release.releaseTitle')}</p>
+          <p>${t('spark.app.release.releaseDesc')}</p>
         `,
         okType: 'danger',
         onOk: () => handleReleaseApp(app, true),
@@ -73,13 +73,13 @@ export const useSparkAction = (optionApps: Recordable) => {
     if (!res.data) {
       let message = res.message || '';
       if (!message) {
-        message = t('flink.app.release.releaseFail') + 
message.replaceAll(/\[StreamPark]/g, '');
+        message = t('spark.app.release.releaseFail') + 
message.replaceAll(/\[StreamPark]/g, '');
       }
       Swal.fire('Failed', message, 'error');
     } else {
       Swal.fire({
         icon: 'success',
-        title: t('flink.app.release.releasing'),
+        title: t('spark.app.release.releasing'),
         showConfirmButton: false,
         timer: 2000,
       });
@@ -315,13 +315,13 @@ export const useSparkAction = (optionApps: Recordable) => 
{
         } else {
           validateStatus.value = 'error';
           if (code === 1) {
-            help = t('flink.app.addAppTips.appNameNotUniqueMessage');
+            help = t('spark.app.addAppTips.appNameNotUniqueMessage');
           } else if (code === 2) {
-            help = t('flink.app.addAppTips.appNameExistsInYarnMessage');
+            help = t('spark.app.addAppTips.appNameExistsInYarnMessage');
           } else if (code === 3) {
-            help = t('flink.app.addAppTips.appNameExistsInK8sMessage');
+            help = t('spark.app.addAppTips.appNameExistsInK8sMessage');
           } else {
-            help = t('flink.app.addAppTips.appNameNotValid');
+            help = t('spark.app.addAppTips.appNameNotValid');
           }
           return Promise.reject('copy application error');
         }
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkRender.tsx
 
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkRender.tsx
index b3b2acb29..30191fa70 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkRender.tsx
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkRender.tsx
@@ -95,7 +95,7 @@ export const renderYarnQueue = ({ model, field }: 
RenderCallbackParams) => {
       <p class="conf-desc mt-10px">
         <span class="note-info">
           <Tag color="#2db7f5" class="tag-note">
-            {t('flink.app.noteInfo.note')}
+            {t('spark.app.noteInfo.note')}
           </Tag>
           {t('setting.yarnQueue.selectionHint')}
         </span>
@@ -104,35 +104,6 @@ export const renderYarnQueue = ({ model, field }: 
RenderCallbackParams) => {
   );
 };
 
-/* render memory option */
-export const renderDynamicProperties = ({ model, field }: 
RenderCallbackParams) => {
-  return (
-    <div>
-      <Input.TextArea
-        rows={8}
-        name="dynamicProperties"
-        placeholder="$key=$value,If there are multiple parameters,you can new 
line enter them (-D <arg>)"
-        value={model[field]}
-        onInput={(e: ChangeEvent) => (model[field] = e?.target?.value)}
-      />
-      <p class="conf-desc mt-10px">
-        <span class="note-info">
-          <Tag color="#2db7f5" class="tag-note">
-            {t('flink.app.noteInfo.note')}
-          </Tag>
-          <a
-            
href="https://ci.apache.org/projects/flink/flink-docs-stable/ops/config.html";
-            target="_blank"
-            class="pl-5px"
-          >
-            Flink {t('flink.app.noteInfo.officialDoc')}
-          </a>
-        </span>
-      </p>
-    </div>
-  );
-};
-
 export const getAlertSvgIcon = (name: string, text: string) => {
   return (
     <Alert type="info">
@@ -275,7 +246,7 @@ export const renderStreamParkResource = ({ model, resources 
}) => {
         optionFilterProp="label"
         onChange={(value) => (model.jar = value)}
         value={model.jar}
-        placeholder={t('flink.app.resourcePlaceHolder')}
+        placeholder={t('spark.app.resourcePlaceHolder')}
       >
         {renderOptions()}
       </Select>
@@ -316,7 +287,7 @@ export const renderStreamParkJarApp = ({ model, resources 
}) => {
         optionFilterProp="label"
         onChange={handleAppChange}
         value={model.uploadJobJar}
-        placeholder={t('flink.app.selectAppPlaceHolder')}
+        placeholder={t('spark.app.selectAppPlaceHolder')}
       >
         {renderOptions()}
       </Select>
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkTableAction.ts
 
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkTableAction.ts
index f20e72907..c46542c39 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkTableAction.ts
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/app/hooks/useSparkTableAction.ts
@@ -23,11 +23,7 @@ import { AppStateEnum, JobTypeEnum, OptionStateEnum } from 
'/@/enums/sparkEnum';
 import { usePermission } from '/@/hooks/web/usePermission';
 import { useI18n } from '/@/hooks/web/useI18n';
 import { isFunction, isNullAndUnDef, isObject } from '/@/utils/is';
-import {
-  fetchSparkAppForcedStop,
-  fetchSparkAppRecord,
-  fetchSparkAppRemove,
-} from '/@/api/spark/app';
+import { fetchSparkAppCancel, fetchSparkAppRecord, fetchSparkAppRemove } from 
'/@/api/spark/app';
 import type { SparkApplication } from '/@/api/spark/app.type';
 import { useSparkAction } from './useSparkAction';
 import { useDrawer } from '/@/components/Drawer';
@@ -98,7 +94,7 @@ export const useSparkTableAction = (handlePageDataReload: Fn, 
optionApps: Record
       {
         tooltip: { title: t('spark.app.operation.cancel') },
         ifShow:
-          record.state == AppStateEnum.RUNNING && record['optionState'] == 
OptionStateEnum.NONE,
+          record.state == AppStateEnum.ACCEPTED && record['optionState'] == 
OptionStateEnum.NONE,
         auth: 'app:cancel',
         icon: 'ant-design:pause-circle-outlined',
         popConfirm: {
@@ -218,7 +214,7 @@ export const useSparkTableAction = (handlePageDataReload: 
Fn, optionApps: Record
   // click stop application
   async function handleCancel(app: SparkApplication) {
     if (!optionApps.stopping.get(app.id) || app['optionState'] == 
OptionStateEnum.NONE) {
-      await fetchSparkAppForcedStop({
+      await fetchSparkAppCancel({
         id: app.id,
       });
       Swal.fire({
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/app/index.vue 
b/streampark-console/streampark-console-webapp/src/views/spark/app/index.vue
index ef6c70b34..1837326d9 100644
--- a/streampark-console/streampark-console-webapp/src/views/spark/app/index.vue
+++ b/streampark-console/streampark-console-webapp/src/views/spark/app/index.vue
@@ -354,11 +354,11 @@
               <Popover :title="t('common.detailText')">
                 <template #content>
                   <div class="flex">
-                    <span class="pr-6px font-bold">{{ t('flink.app.appName') 
}}:</span>
+                    <span class="pr-6px font-bold">{{ t('spark.app.appName') 
}}:</span>
                     <div class="max-w-300px break-words">{{ record.appName 
}}</div>
                   </div>
                   <div class="pt-2px">
-                    <span class="pr-6px font-bold">{{ t('flink.app.jobType') 
}}:</span>
+                    <span class="pr-6px font-bold">{{ t('spark.app.jobType') 
}}:</span>
                     <Tag color="blue">
                       <span v-if="record['jobType'] == JobTypeEnum.JAR"> Spark 
JAR </span>
                       <span v-if="record['jobType'] == JobTypeEnum.SQL"> Spark 
SQL </span>
@@ -379,13 +379,13 @@
                 v-if="record.release === ReleaseStateEnum.NEED_CHECK"
                 class="build-badge"
                 count="NEW"
-                :title="t('flink.app.view.recheck')"
+                :title="t('spark.app.view.recheck')"
               />
               <Badge
                 v-else-if="record.release >= ReleaseStateEnum.RELEASING"
                 class="build-badge"
                 count="NEW"
-                :title="t('flink.app.view.changed')"
+                :title="t('spark.app.view.changed')"
               />
             </template>
           </template>
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/home/components/Modal.vue
 
b/streampark-console/streampark-console-webapp/src/views/spark/home/components/Modal.vue
index b6ce18e84..ba1e4f260 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/home/components/Modal.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/home/components/Modal.vue
@@ -165,7 +165,7 @@
   >
     <template #title>
       <SvgIcon name="spark" />
-      {{ versionId ? t('common.edit') : t('common.') }}
+      {{ versionId ? t('common.edit') : t('common.add') }}
     </template>
     <BasicForm @register="registerForm" />
   </BasicModal>
diff --git 
a/streampark-console/streampark-console-webapp/src/views/spark/home/index.vue 
b/streampark-console/streampark-console-webapp/src/views/spark/home/index.vue
index 0f228f7b0..b2c1fda83 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/spark/home/index.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/spark/home/index.vue
@@ -132,9 +132,9 @@
         </Col>
       </template>
       <template #bodyCell="{ column, record }">
-        <template v-if="column.dataIndex === 'flinkName'">
-          <svg-icon class="avatar" name="flink" :size="20" />
-          {{ record.flinkName }}
+        <template v-if="column.dataIndex === 'sparkName'">
+          <svg-icon class="avatar" name="spark" :size="20" />
+          {{ record.sparkName }}
         </template>
         <template v-if="column.dataIndex === 'default'">
           <Switch
@@ -165,7 +165,7 @@
                 tooltip: t('common.delText'),
                 disabled: record.isDefault && getDataSource()?.length > 1,
                 popConfirm: {
-                  title: t('common.delText'),
+                  title: t('spark.home.delete'),
                   placement: 'left',
                   confirm: handleDelete.bind(null, record),
                 },


Reply via email to