This is an automated email from the ASF dual-hosted git repository.
benjobs pushed a commit to branch resource
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git
The following commit(s) were added to refs/heads/resource by this push:
new ec78386e0 minor improvement
ec78386e0 is described below
commit ec78386e06e37b4b566cd82f3343eb992d7aa955
Author: benjobs <[email protected]>
AuthorDate: Mon Jul 17 08:05:19 2023 +0800
minor improvement
---
.../core/controller/ApplicationController.java | 8 ++-
.../core/controller/ResourceController.java | 9 ++++
.../console/core/service/ApplicationService.java | 3 --
.../console/core/service/ResourceService.java | 4 ++
.../core/service/impl/ApplicationServiceImpl.java | 21 --------
.../core/service/impl/ResourceServiceImpl.java | 32 ++++++++++++
.../core/service/ApplicationServiceTest.java | 29 ----------
.../console/core/service/ResourceServiceTest.java | 61 ++++++++++++++++++++++
.../src/api/flink/resource/index.ts | 13 +++++
.../src/views/flink/resource/View.vue | 39 +++++++-------
.../views/flink/resource/components/Resource.vue | 6 ++-
.../flink/resource/components/ResourceDrawer.vue | 49 ++++++++---------
.../src/views/flink/resource/useResourceRender.tsx | 7 ++-
13 files changed, 172 insertions(+), 109 deletions(-)
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ApplicationController.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ApplicationController.java
index 12486ef8a..374542b4e 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ApplicationController.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ApplicationController.java
@@ -32,10 +32,6 @@ import
org.apache.streampark.console.core.entity.ApplicationBackUp;
import org.apache.streampark.console.core.entity.ApplicationLog;
import org.apache.streampark.console.core.enums.AppExistsState;
import org.apache.streampark.console.core.enums.PermissionType;
-import org.apache.streampark.console.core.service.AppBuildPipeService;
-import org.apache.streampark.console.core.service.ApplicationBackUpService;
-import org.apache.streampark.console.core.service.ApplicationLogService;
-import org.apache.streampark.console.core.service.ApplicationService;
import org.apache.streampark.flink.packer.pipeline.PipelineStatus;
import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -80,6 +76,8 @@ public class ApplicationController {
@Autowired private AppBuildPipeService appBuildPipeService;
+ @Autowired private ResourceService resourceService;
+
@Operation(summary = "Get application")
@ApiAccess
@PostMapping("get")
@@ -397,7 +395,7 @@ public class ApplicationController {
@PostMapping("upload")
@RequiresPermissions("app:create")
public RestResponse upload(MultipartFile file) throws Exception {
- String uploadPath = applicationService.upload(file);
+ String uploadPath = resourceService.upload(file);
return RestResponse.success(uploadPath);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ResourceController.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ResourceController.java
index 27c95b555..932da573d 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ResourceController.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ResourceController.java
@@ -36,6 +36,7 @@ import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
@@ -87,4 +88,12 @@ public class ResourceController {
List<Resource> resourceList = resourceService.findByTeamId(teamId);
return RestResponse.success(resourceList);
}
+
+ @Operation(summary = "Upload the resource jar")
+ @PostMapping("upload")
+ @RequiresPermissions("resource:add")
+ public RestResponse upload(MultipartFile file) throws Exception {
+ String uploadPath = resourceService.upload(file);
+ return RestResponse.success(uploadPath);
+ }
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ApplicationService.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ApplicationService.java
index cba588c65..8e51c155f 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ApplicationService.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ApplicationService.java
@@ -25,7 +25,6 @@ import
org.apache.streampark.console.core.enums.AppExistsState;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
-import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.Serializable;
@@ -75,8 +74,6 @@ public interface ApplicationService extends
IService<Application> {
Map<String, Serializable> dashboard(Long teamId);
- String upload(MultipartFile file) throws Exception;
-
/** set the latest to Effective, it will really become the current effective
*/
void toEffective(Application application);
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ResourceService.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ResourceService.java
index d59df4a59..071de717d 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ResourceService.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ResourceService.java
@@ -22,7 +22,9 @@ import org.apache.streampark.console.core.entity.Resource;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.IOException;
import java.util.List;
public interface ResourceService extends IService<Resource> {
@@ -87,4 +89,6 @@ public interface ResourceService extends IService<Resource> {
* @param targetUserId target user id
*/
void changeOwnership(Long userId, Long targetUserId);
+
+ String upload(MultipartFile file) throws IOException;
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
index 886756770..96253c6d7 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
@@ -95,7 +95,6 @@ import
org.apache.streampark.flink.packer.pipeline.BuildResult;
import org.apache.streampark.flink.packer.pipeline.ShadedBuildResponse;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.flink.api.common.JobID;
import org.apache.flink.configuration.CoreOptions;
@@ -119,7 +118,6 @@ import
org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Nonnull;
import javax.annotation.PostConstruct;
@@ -137,7 +135,6 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.CancellationException;
import java.util.concurrent.CompletableFuture;
@@ -304,24 +301,6 @@ public class ApplicationServiceImpl extends
ServiceImpl<ApplicationMapper, Appli
return map;
}
- @Override
- public String upload(MultipartFile file) throws Exception {
- File temp = WebUtils.getAppTempDir();
- String fileName =
FilenameUtils.getName(Objects.requireNonNull(file.getOriginalFilename()));
- File saveFile = new File(temp, fileName);
- // delete when exists
- if (saveFile.exists()) {
- saveFile.delete();
- }
- // save file to temp dir
- try {
- file.transferTo(saveFile);
- } catch (Exception e) {
- throw new ApiDetailException(e);
- }
- return saveFile.getAbsolutePath();
- }
-
@Override
public void toEffective(Application application) {
// set latest to Effective
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ResourceServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ResourceServiceImpl.java
index f702ad004..cbbd8d552 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ResourceServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ResourceServiceImpl.java
@@ -21,6 +21,7 @@ import org.apache.streampark.common.conf.Workspace;
import org.apache.streampark.common.fs.FsOperator;
import org.apache.streampark.console.base.domain.RestRequest;
import org.apache.streampark.console.base.exception.ApiAlertException;
+import org.apache.streampark.console.base.exception.ApiDetailException;
import org.apache.streampark.console.base.mybatis.pager.MybatisPager;
import org.apache.streampark.console.base.util.WebUtils;
import org.apache.streampark.console.core.bean.Dependency;
@@ -37,6 +38,7 @@ import
org.apache.streampark.console.core.service.ResourceService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.hadoop.shaded.org.apache.commons.codec.digest.DigestUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -48,8 +50,10 @@ import
org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -199,6 +203,34 @@ public class ResourceServiceImpl extends
ServiceImpl<ResourceMapper, Resource>
this.baseMapper.update(null, updateWrapper);
}
+ /**
+ * @param file
+ * @return
+ */
+ @Override
+ public String upload(MultipartFile file) throws IOException {
+ File temp = WebUtils.getAppTempDir();
+
+ String name = file.getOriginalFilename();
+ String suffix = name.substring(name.lastIndexOf("."));
+
+ String sha256Hex = DigestUtils.sha256Hex(file.getInputStream());
+ String fileName = sha256Hex.concat(suffix);
+
+ File saveFile = new File(temp, fileName);
+
+ if (!saveFile.exists()) {
+ // save file to temp dir
+ try {
+ file.transferTo(saveFile);
+ } catch (Exception e) {
+ throw new ApiDetailException(e);
+ }
+ }
+
+ return saveFile.getAbsolutePath();
+ }
+
private void transferTeamResource(Long teamId, String resourceName) {
String teamUploads = String.format("%s/%d",
Workspace.local().APP_UPLOADS(), teamId);
if (!FsOperator.lfs().exists(teamUploads)) {
diff --git
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ApplicationServiceTest.java
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ApplicationServiceTest.java
index aae093e7f..ea5c34560 100644
---
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ApplicationServiceTest.java
+++
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ApplicationServiceTest.java
@@ -23,22 +23,13 @@ import
org.apache.streampark.console.core.entity.Application;
import org.apache.streampark.console.core.entity.YarnQueue;
import org.apache.streampark.console.core.service.impl.ApplicationServiceImpl;
-import org.apache.hc.core5.http.ContentType;
-
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.h2.store.fs.FileUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.io.TempDir;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.web.multipart.MultipartFile;
-import java.io.File;
-import java.io.FileInputStream;
-import java.nio.file.Path;
import java.util.Date;
import static org.assertj.core.api.Assertions.assertThat;
@@ -105,26 +96,6 @@ class ApplicationServiceTest extends SpringTestBase {
applicationService.start(application, false);
}
- @Test
- void testUpload(@TempDir Path tempDir) throws Exception {
- // specify the file path
- File fileToStoreUploadFile =
- new File(tempDir.toFile().getAbsolutePath() +
"/fileToStoreUploadFile");
- FileUtils.createFile(fileToStoreUploadFile.getAbsolutePath());
-
- File fileToUpload = new File(tempDir.toFile().getAbsolutePath() +
"/fileToUpload.jar");
- FileUtils.createFile(fileToUpload.getAbsolutePath());
- assertThat(fileToUpload).exists();
- MultipartFile mulFile =
- new MockMultipartFile(
- "test", // fileName (eg: streampark.jar)
- fileToUpload.getAbsolutePath(), // originalFilename (eg: path +
fileName =
- // /tmp/file/streampark.jar)
- ContentType.APPLICATION_OCTET_STREAM.toString(),
- new FileInputStream(fileToStoreUploadFile));
- applicationService.upload(mulFile);
- }
-
@Test
void testCheckQueueValidationIfNeeded() {
ApplicationServiceImpl applicationServiceImpl = (ApplicationServiceImpl)
applicationService;
diff --git
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ResourceServiceTest.java
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ResourceServiceTest.java
new file mode 100644
index 000000000..e6c00ec71
--- /dev/null
+++
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ResourceServiceTest.java
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+package org.apache.streampark.console.core.service;
+
+import org.apache.streampark.console.SpringTestBase;
+
+import org.apache.hc.core5.http.ContentType;
+
+import org.h2.store.fs.FileUtils;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.nio.file.Path;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/** org.apache.streampark.console.core.service.ResourceServiceTest. */
+class ResourceServiceTest extends SpringTestBase {
+
+ @Autowired private ResourceService resourceService;
+
+ @Test
+ void testUpload(@TempDir Path tempDir) throws Exception {
+ // specify the file path
+ File fileToStoreUploadFile =
+ new File(tempDir.toFile().getAbsolutePath() +
"/fileToStoreUploadFile");
+ FileUtils.createFile(fileToStoreUploadFile.getAbsolutePath());
+
+ File fileToUpload = new File(tempDir.toFile().getAbsolutePath() +
"/fileToUpload.jar");
+ FileUtils.createFile(fileToUpload.getAbsolutePath());
+ assertThat(fileToUpload).exists();
+ MultipartFile mulFile =
+ new MockMultipartFile(
+ "test", // fileName (eg: streampark.jar)
+ fileToUpload.getAbsolutePath(), // originalFilename (eg: path +
fileName =
+ // /tmp/file/streampark.jar)
+ ContentType.APPLICATION_OCTET_STREAM.toString(),
+ new FileInputStream(fileToStoreUploadFile));
+ resourceService.upload(mulFile);
+ }
+}
diff --git
a/streampark-console/streampark-console-webapp/src/api/flink/resource/index.ts
b/streampark-console/streampark-console-webapp/src/api/flink/resource/index.ts
index 1b279c7a6..9e6f1601a 100644
---
a/streampark-console/streampark-console-webapp/src/api/flink/resource/index.ts
+++
b/streampark-console/streampark-console-webapp/src/api/flink/resource/index.ts
@@ -23,11 +23,13 @@ import {
ResourceListRecord,
ResourceParam,
} from './model/resourceModel';
+import { ContentTypeEnum } from '/@/enums/httpEnum';
enum RESOURCE_API {
PAGE = '/resource/page',
POST = '/resource/add',
UPDATE = '/resource/update',
+ UPLOAD = '/resource/upload',
DELETE = '/resource/delete',
LIST = '/resource/list',
}
@@ -76,3 +78,14 @@ export function fetchResourceDelete(data:
ResourceDeleteParam): Promise<AxiosRes
export function fetchTeamResource(data: Recordable):
Promise<ResourceListRecord[]> {
return defHttp.post({ url: RESOURCE_API.LIST, data });
}
+
+export function fetchUpload(params) {
+ return defHttp.post<string>({
+ url: RESOURCE_API.UPLOAD,
+ params,
+ headers: {
+ 'Content-Type': ContentTypeEnum.FORM_DATA,
+ },
+ timeout: 1000 * 60 * 10, // Uploading files timed out for 10 minutes
+ });
+}
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/resource/View.vue
b/streampark-console/streampark-console-webapp/src/views/flink/resource/View.vue
index 49a1e7674..bdb7ae75a 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/resource/View.vue
+++
b/streampark-console/streampark-console-webapp/src/views/flink/resource/View.vue
@@ -28,45 +28,45 @@
<template v-if="column.dataIndex === 'resourceType'">
<Tag color="processing" v-if="record.resourceType ===
ResourceTypeEnum.FLINK_APP">
<template #icon>
- <img :src=flinkAppSvg class="svg-icon" alt="Flink App"/>
+ <img :src="flinkAppSvg" class="svg-icon" alt="Flink App" />
</template>
Flink App
</Tag>
<Tag color="processing" v-if="record.resourceType ===
ResourceTypeEnum.CONNECTOR">
<template #icon>
- <img :src=connectorSvg class="svg-icon" alt="Connector"/>
+ <img :src="connectorSvg" class="svg-icon" alt="Connector" />
</template>
Connector
</Tag>
<Tag color="processing" v-if="record.resourceType ===
ResourceTypeEnum.UDXF">
<template #icon>
- <img :src=udxfSvg class="svg-icon" alt="UDXF"/>
+ <img :src="udxfSvg" class="svg-icon" alt="UDXF" />
</template>
UDXF
</Tag>
<Tag color="processing" v-if="record.resourceType ===
ResourceTypeEnum.NORMAL_JAR">
<template #icon>
- <img :src=normalJarSvg class="svg-icon" alt="Normal jar"/>
+ <img :src="normalJarSvg" class="svg-icon" alt="Normal jar" />
</template>
Normal Jar
</Tag>
<Tag color="processing" v-if="record.resourceType ===
ResourceTypeEnum.GROUP">
<template #icon>
- <img :src=groupSvg class="svg-icon" alt="GROUP"/>
+ <img :src="groupSvg" class="svg-icon" alt="GROUP" />
</template>
GROUP
</Tag>
</template>
<template v-if="column.dataIndex === 'engineType'">
<span v-if="record.engineType === EngineTypeEnum.FLINK">
- <SvgIcon name="flink"/> Apache Flink
+ <SvgIcon name="flink" /> Apache Flink
</span>
<span v-if="record.engineType === EngineTypeEnum.SPARK">
- <SvgIcon name="spark"/> Apache Spark
+ <SvgIcon name="spark" /> Apache Spark
</span>
</template>
<template v-if="column.dataIndex === 'action'">
@@ -118,11 +118,9 @@
import { fetchResourceDelete, fetchResourceList, fetchTeamResource } from
'/@/api/flink/resource';
import { EngineTypeEnum, ResourceTypeEnum } from
'/@/views/flink/resource/resource.data';
import { Tag } from 'ant-design-vue';
- import SvgIcon from "/@/components/Icon/src/SvgIcon.vue";
-
+ import SvgIcon from '/@/components/Icon/src/SvgIcon.vue';
import flinkAppSvg from '/@/assets/icons/flink2.svg';
- import sparkSvg from '/@/assets/icons/spark.svg';
import connectorSvg from '/@/assets/icons/connector.svg';
import udxfSvg from '/@/assets/icons/fx.svg';
import normalJarSvg from '/@/assets/icons/jar.svg';
@@ -188,7 +186,7 @@
});
if (data.status === 'success') {
createMessage.success(t('flink.resource.deleteResource') +
t('flink.resource.success'));
- reload();
+ await reload();
updateTeamResource();
} else {
createMessage.error(t('flink.resource.deleteResource') +
t('flink.resource.fail'));
@@ -216,16 +214,15 @@
</script>
<style lang="less" scoped>
-.svg-icon {
- display: inline-block;
- width: 14px;
- height: 14px;
-
- .svg-connector {
- svg path {
- fill: #fff0f6 !important;
+ .svg-icon {
+ display: inline-block;
+ width: 14px;
+ height: 14px;
+
+ .svg-connector {
+ svg path {
+ fill: #fff0f6 !important;
+ }
}
}
-}
-
</style>
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/resource/components/Resource.vue
b/streampark-console/streampark-console-webapp/src/views/flink/resource/components/Resource.vue
index 7c6db92e2..10b4538d9 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/resource/components/Resource.vue
+++
b/streampark-console/streampark-console-webapp/src/views/flink/resource/components/Resource.vue
@@ -28,8 +28,10 @@
import { Icon } from '/@/components/Icon';
import { useMonaco } from '/@/hooks/web/useMonaco';
import { Tabs, Alert, Tag, Space } from 'ant-design-vue';
- import { fetchUpload } from '/@/api/flink/app/app';
+ import { fetchUpload } from '/@/api/flink/resource';
+
import UploadJobJar from '/@/views/flink/app/components/UploadJobJar.vue';
+ import { ResourceTypeEnum } from '/@/views/flink/resource/resource.data';
interface DependencyType {
artifactId: string;
@@ -211,7 +213,7 @@
</script>
<template>
- <template v-if="props.formModel.resourceType == 'FLINK_APP'">
+ <template v-if="props.formModel.resourceType === ResourceTypeEnum.FLINK_APP">
<UploadJobJar :custom-request="handleCustomDepsRequest"
v-model:loading="loading" />
</template>
<template v-else>
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/resource/components/ResourceDrawer.vue
b/streampark-console/streampark-console-webapp/src/views/flink/resource/components/ResourceDrawer.vue
index 675bbc9fe..82ea4b1cc 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/resource/components/ResourceDrawer.vue
+++
b/streampark-console/streampark-console-webapp/src/views/flink/resource/components/ResourceDrawer.vue
@@ -41,13 +41,13 @@
<script lang="ts" setup>
import { ref, computed, unref } from 'vue';
- import { BasicForm, FormSchema, useForm } from '/@/components/Form';
+ import { BasicForm, useForm } from '/@/components/Form';
import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
import { Icon } from '/@/components/Icon';
import { useI18n } from '/@/hooks/web/useI18n';
import Resource from '/@/views/flink/resource/components/Resource.vue';
import { fetchAddResource, fetchUpdateResource } from
'/@/api/flink/resource';
- import { EngineTypeEnum } from '/@/views/flink/resource/resource.data';
+ import { EngineTypeEnum, ResourceTypeEnum } from
'/@/views/flink/resource/resource.data';
import {
renderEngineType,
renderResourceType,
@@ -71,15 +71,8 @@
const resourceId = ref<Nullable<number>>(null);
const resourceRef = ref();
- const getResourceFormSchema = computed((): FormSchema[] => {
+ const getResourceFormSchema = computed(() => {
return [
- {
- field: 'resourceName',
- label: t('flink.resource.resourceName'),
- component: 'Input',
- componentProps: { placeholder:
t('flink.resource.resourceNamePlaceholder') },
- rules: [{ required: true, message:
t('flink.resource.form.resourceNameIsRequiredMessage') }],
- },
{
field: 'resourceType',
label: t('flink.resource.resourceType'),
@@ -89,22 +82,30 @@
{ required: true, message:
t('flink.resource.form.resourceTypeIsRequiredMessage') },
],
},
+ {
+ field: 'resourceName',
+ label: t('flink.resource.resourceName'),
+ component: 'Input',
+ ifShow: ({ values }) => values?.resourceType !==
ResourceTypeEnum.CONNECTOR,
+ componentProps: { placeholder:
t('flink.resource.resourceNamePlaceholder') },
+ rules: [
+ { required: true, message:
t('flink.resource.form.resourceNameIsRequiredMessage') },
+ ],
+ },
{
field: 'engineType',
label: t('flink.resource.engineType'),
component: 'Select',
render: ({ model }) => renderEngineType({ model }),
defaultValue: EngineTypeEnum.FLINK,
- rules: [
- { required: true, message:
t('flink.resource.form.engineTypeIsRequiredMessage') }
- ],
+ rules: [{ required: true, message:
t('flink.resource.form.engineTypeIsRequiredMessage') }],
},
{
field: 'resourceName',
label: t('flink.resource.groupName'),
component: 'Input',
componentProps: { placeholder:
t('flink.resource.groupNamePlaceholder') },
- ifShow: ({ values }) => values?.resourceType == 'GROUP',
+ ifShow: ({ values }) => values?.resourceType ===
ResourceTypeEnum.GROUP,
rules: [{ required: true, message:
t('flink.resource.groupNameIsRequiredMessage') }],
},
{
@@ -113,21 +114,21 @@
component: 'Select',
render: ({ model }) =>
renderStreamParkResourceGroup({ model, resources:
unref(props.teamResource) }),
- ifShow: ({ values }) => values?.resourceType == 'GROUP',
+ ifShow: ({ values }) => values?.resourceType ===
ResourceTypeEnum.GROUP,
},
{
field: 'dependency',
label: t('flink.resource.addResource'),
component: 'Input',
slot: 'resource',
- ifShow: ({ values }) => values?.resourceType !== 'GROUP',
+ ifShow: ({ values }) => values?.resourceType !==
ResourceTypeEnum.GROUP,
},
{
field: 'mainClass',
label: t('flink.app.mainClass'),
component: 'Input',
componentProps: { placeholder:
t('flink.app.addAppTips.mainClassPlaceholder') },
- ifShow: ({ values }) => values?.resourceType == 'FLINK_APP',
+ ifShow: ({ values }) => values?.resourceType ===
ResourceTypeEnum.FLINK_APP,
rules: [{ required: true, message:
t('flink.app.addAppTips.mainClassIsRequiredMessage') }],
},
{
@@ -152,17 +153,17 @@
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(
async (data: Recordable) => {
unref(resourceRef)?.setDefaultValue({});
- resetFields();
+ await resetFields();
setDrawerProps({ confirmLoading: false });
isUpdate.value = !!data?.isUpdate;
if (unref(isUpdate)) {
resourceId.value = data.record.id;
- setFieldsValue(data.record);
+ await setFieldsValue(data.record);
- if (data.record?.resourceType == 'GROUP') {
- setFieldsValue({ resourceGroup: JSON.parse(data.record.resource ||
'[]') });
+ if (data.record?.resourceType === ResourceTypeEnum.GROUP) {
+ await setFieldsValue({ resourceGroup:
JSON.parse(data.record.resource || '[]') });
} else {
- setFieldsValue({ dependency: data.record.resource });
+ await setFieldsValue({ dependency: data.record.resource });
unref(resourceRef)?.setDefaultValue(JSON.parse(data.record.resource
|| '{}'));
}
}
@@ -179,7 +180,7 @@
const values = await validate();
let resourceJson = '';
- if (values.resourceType == 'GROUP') {
+ if (values.resourceType == ResourceTypeEnum.GROUP) {
resourceJson = JSON.stringify(values.resourceGroup);
} else {
const resource: { pom?: string; jar?: string } = {};
@@ -221,7 +222,7 @@
? fetchUpdateResource({ id: resourceId.value, resource: resourceJson,
...values })
: fetchAddResource({ resource: resourceJson, ...values }));
unref(resourceRef)?.setDefaultValue({});
- resetFields();
+ await resetFields();
closeDrawer();
emit('success', isUpdate.value);
} finally {
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/resource/useResourceRender.tsx
b/streampark-console/streampark-console-webapp/src/views/flink/resource/useResourceRender.tsx
index 67a98d65b..1a35f1b22 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/resource/useResourceRender.tsx
+++
b/streampark-console/streampark-console-webapp/src/views/flink/resource/useResourceRender.tsx
@@ -16,7 +16,7 @@
*/
import { Select, Tag } from 'ant-design-vue';
import { useI18n } from '/@/hooks/web/useI18n';
-import {EngineTypeEnum, ResourceTypeEnum} from
'/@/views/flink/resource/resource.data';
+import { EngineTypeEnum, ResourceTypeEnum } from
'/@/views/flink/resource/resource.data';
import flinkAppSvg from '/@/assets/icons/flink2.svg';
import sparkSvg from '/@/assets/icons/spark.svg';
@@ -70,9 +70,9 @@ export const renderEngineType = ({ model }) => {
{ label: 'Apache Flink', value: EngineTypeEnum.FLINK, disabled: false,
src: flinkAppSvg },
{ label: 'Apache Spark', value: EngineTypeEnum.SPARK, disabled: true,
src: sparkSvg },
];
- return options.map(({ label, value,disabled, src }) => {
+ return options.map(({ label, value, disabled, src }) => {
return (
- <Select.Option key={value} label={label} disabled={disabled} >
+ <Select.Option key={value} label={label} disabled={disabled}>
<div>
<img src={src} style="display: inline-block; width: 20px; height:
20px"></img>
<span style="vertical-align: middle; margin-left:
5px;">{label}</span>
@@ -96,7 +96,6 @@ export const renderEngineType = ({ model }) => {
);
};
-
export const renderStreamParkResourceGroup = ({ model, resources }) => {
const renderOptions = () => {
console.log('resources', resources);