This is an automated email from the ASF dual-hosted git repository.
roryqi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-uniffle.git
The following commit(s) were added to refs/heads/master by this push:
new 8eff38e29 [#1778] improvement(dashboard): Dashboard adds the ability
to automatically format code. (#1779)
8eff38e29 is described below
commit 8eff38e29ba9e9326fc460b231925de927aa412f
Author: yl09099 <[email protected]>
AuthorDate: Sun Jun 16 00:19:40 2024 +0800
[#1778] improvement(dashboard): Dashboard adds the ability to automatically
format code. (#1779)
### What changes were proposed in this pull request?
Introducing the front-end eslint code validation tool and formatting the
front-end code.
### Why are the changes needed?
Fix: #1778
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Existential test.
---
.../uniffle/common}/web/resource/BaseResource.java | 4 +-
.../uniffle/common/web/resource}/Response.java | 2 +-
.../coordinator/web/resource/AdminResource.java | 3 +-
.../web/resource/ApplicationResource.java | 3 +-
.../web/resource/CoordinatorServerResource.java | 3 +-
.../coordinator/web/resource/ServerResource.java | 3 +-
.../coordinator/web/UniffleServicesRESTTest.java | 2 +-
.../dashboard/web/resource/BaseResource.java | 36 -------
.../web/resource/CoordinatorResource.java | 3 +
.../uniffle/dashboard/web/resource/Response.java | 70 --------------
dashboard/src/main/webapp/.eslintignore | 21 ++++
.../main/webapp/{babel.config.js => .eslintrc.js} | 17 +++-
.../webapp/{jsconfig.json => .prettierrc.json} | 22 +----
dashboard/src/main/webapp/babel.config.js | 4 +-
dashboard/src/main/webapp/jsconfig.json | 11 +--
dashboard/src/main/webapp/package.json | 33 ++-----
.../src/main/webapp/packagescript/cleanfile.js | 12 +--
.../src/main/webapp/packagescript/fileutils.js | 106 ++++++++++-----------
dashboard/src/main/webapp/public/index.html | 15 +--
dashboard/src/main/webapp/src/App.vue | 2 +-
dashboard/src/main/webapp/src/api/api.js | 54 +++++------
.../src/main/webapp/src/components/LayoutPage.vue | 44 +++++----
dashboard/src/main/webapp/src/main.js | 10 +-
.../src/main/webapp/src/pages/ApplicationPage.vue | 48 +++++-----
.../webapp/src/pages/CoordinatorServerPage.vue | 59 ++++++------
.../main/webapp/src/pages/ShuffleServerPage.vue | 40 ++++----
.../src/pages/serverstatus/ActiveNodeListPage.vue | 67 ++++++++-----
.../serverstatus/DecommissionednodeListPage.vue | 69 ++++++++------
.../serverstatus/DecommissioningNodeListPage.vue | 71 ++++++++------
.../src/pages/serverstatus/ExcludeNodeList.vue | 22 ++---
.../webapp/src/pages/serverstatus/LostNodeList.vue | 71 ++++++++------
.../pages/serverstatus/UnhealthyNodeListPage.vue | 70 ++++++++------
dashboard/src/main/webapp/src/router/index.js | 98 +++++++++++--------
.../main/webapp/src/store/useCurrentServerStore.js | 8 +-
dashboard/src/main/webapp/src/utils/common.js | 26 ++---
dashboard/src/main/webapp/src/utils/http.js | 63 ++++++------
dashboard/src/main/webapp/src/utils/request.js | 66 +++++++------
dashboard/src/main/webapp/vue.config.js | 24 ++---
.../uniffle/test/CoordinatorAdminServiceTest.java | 2 +-
.../java/org/apache/uniffle/test/ServletTest.java | 2 +-
40 files changed, 639 insertions(+), 647 deletions(-)
diff --git
a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/BaseResource.java
b/common/src/main/java/org/apache/uniffle/common/web/resource/BaseResource.java
similarity index 91%
rename from
coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/BaseResource.java
rename to
common/src/main/java/org/apache/uniffle/common/web/resource/BaseResource.java
index 861f91bae..0e5d3cb79 100644
---
a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/BaseResource.java
+++
b/common/src/main/java/org/apache/uniffle/common/web/resource/BaseResource.java
@@ -15,12 +15,10 @@
* limitations under the License.
*/
-package org.apache.uniffle.coordinator.web.resource;
+package org.apache.uniffle.common.web.resource;
import java.util.concurrent.Callable;
-import org.apache.uniffle.coordinator.web.Response;
-
public abstract class BaseResource {
protected <T> Response<T> execute(Callable<T> callable) {
try {
diff --git
a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/Response.java
b/common/src/main/java/org/apache/uniffle/common/web/resource/Response.java
similarity index 97%
rename from
coordinator/src/main/java/org/apache/uniffle/coordinator/web/Response.java
rename to
common/src/main/java/org/apache/uniffle/common/web/resource/Response.java
index 3313459af..25e21c753 100644
--- a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/Response.java
+++ b/common/src/main/java/org/apache/uniffle/common/web/resource/Response.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.uniffle.coordinator.web;
+package org.apache.uniffle.common.web.resource;
public class Response<T> {
private static final int SUCCESS_CODE = 0;
diff --git
a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/AdminResource.java
b/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/AdminResource.java
index d895c1df2..63daef6da 100644
---
a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/AdminResource.java
+++
b/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/AdminResource.java
@@ -28,10 +28,11 @@ import
org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.uniffle.common.web.resource.BaseResource;
+import org.apache.uniffle.common.web.resource.Response;
import org.apache.uniffle.coordinator.AccessManager;
import org.apache.uniffle.coordinator.ServerNode;
import org.apache.uniffle.coordinator.access.checker.AccessChecker;
-import org.apache.uniffle.coordinator.web.Response;
@Produces({MediaType.APPLICATION_JSON})
public class AdminResource extends BaseResource {
diff --git
a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/ApplicationResource.java
b/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/ApplicationResource.java
index 7c621c5b4..7106d66d1 100644
---
a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/ApplicationResource.java
+++
b/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/ApplicationResource.java
@@ -30,8 +30,9 @@ import org.apache.hbase.thirdparty.javax.ws.rs.Produces;
import org.apache.hbase.thirdparty.javax.ws.rs.core.Context;
import org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
+import org.apache.uniffle.common.web.resource.BaseResource;
+import org.apache.uniffle.common.web.resource.Response;
import org.apache.uniffle.coordinator.ApplicationManager;
-import org.apache.uniffle.coordinator.web.Response;
import org.apache.uniffle.coordinator.web.vo.AppInfoVO;
import org.apache.uniffle.coordinator.web.vo.UserAppNumVO;
diff --git
a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/CoordinatorServerResource.java
b/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/CoordinatorServerResource.java
index f6822366c..e09d3dbdc 100644
---
a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/CoordinatorServerResource.java
+++
b/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/CoordinatorServerResource.java
@@ -31,10 +31,11 @@ import org.apache.hbase.thirdparty.javax.ws.rs.core.Context;
import org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
import org.apache.uniffle.common.util.RssUtils;
+import org.apache.uniffle.common.web.resource.BaseResource;
+import org.apache.uniffle.common.web.resource.Response;
import org.apache.uniffle.coordinator.CoordinatorConf;
import org.apache.uniffle.coordinator.CoordinatorServer;
import org.apache.uniffle.coordinator.util.CoordinatorUtils;
-import org.apache.uniffle.coordinator.web.Response;
import org.apache.uniffle.coordinator.web.vo.CoordinatorConfVO;
import static org.apache.uniffle.common.config.RssBaseConf.JETTY_HTTP_PORT;
diff --git
a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/ServerResource.java
b/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/ServerResource.java
index f30027f11..d78796adf 100644
---
a/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/ServerResource.java
+++
b/coordinator/src/main/java/org/apache/uniffle/coordinator/web/resource/ServerResource.java
@@ -39,10 +39,11 @@ import
org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
import org.apache.uniffle.common.Application;
import org.apache.uniffle.common.ServerStatus;
+import org.apache.uniffle.common.web.resource.BaseResource;
+import org.apache.uniffle.common.web.resource.Response;
import org.apache.uniffle.coordinator.ApplicationManager;
import org.apache.uniffle.coordinator.ClusterManager;
import org.apache.uniffle.coordinator.ServerNode;
-import org.apache.uniffle.coordinator.web.Response;
import org.apache.uniffle.coordinator.web.request.ApplicationRequest;
import org.apache.uniffle.coordinator.web.request.CancelDecommissionRequest;
import org.apache.uniffle.coordinator.web.request.DecommissionRequest;
diff --git
a/coordinator/src/test/java/org/apache/uniffle/coordinator/web/UniffleServicesRESTTest.java
b/coordinator/src/test/java/org/apache/uniffle/coordinator/web/UniffleServicesRESTTest.java
index 95e40332b..badd8a246 100644
---
a/coordinator/src/test/java/org/apache/uniffle/coordinator/web/UniffleServicesRESTTest.java
+++
b/coordinator/src/test/java/org/apache/uniffle/coordinator/web/UniffleServicesRESTTest.java
@@ -46,7 +46,7 @@ import org.apache.uniffle.coordinator.CoordinatorConf;
import org.apache.uniffle.coordinator.GenericTestUtils;
import org.apache.uniffle.coordinator.web.request.ApplicationRequest;
-import static org.apache.uniffle.coordinator.web.Response.fail;
+import static org.apache.uniffle.common.web.resource.Response.fail;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
diff --git
a/dashboard/src/main/java/org/apache/uniffle/dashboard/web/resource/BaseResource.java
b/dashboard/src/main/java/org/apache/uniffle/dashboard/web/resource/BaseResource.java
deleted file mode 100644
index 5ed197302..000000000
---
a/dashboard/src/main/java/org/apache/uniffle/dashboard/web/resource/BaseResource.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.uniffle.dashboard.web.resource;
-
-import java.util.concurrent.Callable;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class BaseResource {
- private static final Logger LOG =
LoggerFactory.getLogger(BaseResource.class);
-
- protected <T> Response<T> execute(Callable<T> callable) {
- try {
- return Response.success(callable.call());
- } catch (Throwable e) {
- LOG.error("Call failure:", e);
- return Response.fail(e.getMessage());
- }
- }
-}
diff --git
a/dashboard/src/main/java/org/apache/uniffle/dashboard/web/resource/CoordinatorResource.java
b/dashboard/src/main/java/org/apache/uniffle/dashboard/web/resource/CoordinatorResource.java
index 2aed5ca0d..e563e66b2 100644
---
a/dashboard/src/main/java/org/apache/uniffle/dashboard/web/resource/CoordinatorResource.java
+++
b/dashboard/src/main/java/org/apache/uniffle/dashboard/web/resource/CoordinatorResource.java
@@ -26,6 +26,9 @@ import org.apache.hbase.thirdparty.javax.ws.rs.Produces;
import org.apache.hbase.thirdparty.javax.ws.rs.core.Context;
import org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
+import org.apache.uniffle.common.web.resource.BaseResource;
+import org.apache.uniffle.common.web.resource.Response;
+
@Produces({MediaType.APPLICATION_JSON})
public class CoordinatorResource extends BaseResource {
diff --git
a/dashboard/src/main/java/org/apache/uniffle/dashboard/web/resource/Response.java
b/dashboard/src/main/java/org/apache/uniffle/dashboard/web/resource/Response.java
deleted file mode 100644
index ef71a320b..000000000
---
a/dashboard/src/main/java/org/apache/uniffle/dashboard/web/resource/Response.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.uniffle.dashboard.web.resource;
-
-public class Response<T> {
- private static final int SUCCESS_CODE = 0;
- private static final int ERROR_CODE = -1;
- private int code;
- private T data;
- private String msg;
-
- public Response() {}
-
- public Response(int code, T data, String msg) {
- this.code = code;
- this.data = data;
- this.msg = msg;
- }
-
- public static <T> Response<T> success(T data) {
- return new Response<>(SUCCESS_CODE, data, "success");
- }
-
- public static <T> Response<T> fail(String msg) {
- return new Response<>(ERROR_CODE, null, msg);
- }
-
- public static <T> Response<T> fail(String msg, int code) {
- return new Response<>(code, null, msg);
- }
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public T getData() {
- return data;
- }
-
- public void setData(T data) {
- this.data = data;
- }
-
- public String getErrMsg() {
- return msg;
- }
-
- public void setErrMsg(String errMsg) {
- this.msg = errMsg;
- }
-}
diff --git a/dashboard/src/main/webapp/.eslintignore
b/dashboard/src/main/webapp/.eslintignore
new file mode 100644
index 000000000..fd399c872
--- /dev/null
+++ b/dashboard/src/main/webapp/.eslintignore
@@ -0,0 +1,21 @@
+#
+# 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.
+#
+
+/node_modules
+/package-lock.json
+/dist
+.DS_Store
diff --git a/dashboard/src/main/webapp/babel.config.js
b/dashboard/src/main/webapp/.eslintrc.js
similarity index 76%
copy from dashboard/src/main/webapp/babel.config.js
copy to dashboard/src/main/webapp/.eslintrc.js
index 0b134436b..71e913eec 100644
--- a/dashboard/src/main/webapp/babel.config.js
+++ b/dashboard/src/main/webapp/.eslintrc.js
@@ -16,7 +16,18 @@
*/
module.exports = {
- presets: [
- '@vue/cli-plugin-babel/preset'
- ]
+ env: {
+ browser: true,
+ commonjs: true,
+ es2021: true,
+ node: true
+ },
+ extends: ['plugin:vue/essential', 'standard', '@vue/prettier'],
+ parserOptions: {
+ ecmaVersion: 13
+ },
+ plugins: ['vue'],
+ rules: {
+ quotes: [2, 'single']
+ }
}
diff --git a/dashboard/src/main/webapp/jsconfig.json
b/dashboard/src/main/webapp/.prettierrc.json
similarity index 76%
copy from dashboard/src/main/webapp/jsconfig.json
copy to dashboard/src/main/webapp/.prettierrc.json
index bb01e412c..03b19d246 100644
--- a/dashboard/src/main/webapp/jsconfig.json
+++ b/dashboard/src/main/webapp/.prettierrc.json
@@ -17,21 +17,9 @@
"See the License for the specific language governing permissions and",
"limitations under the License."
],
- "compilerOptions": {
- "target": "es5",
- "module": "esnext",
- "baseUrl": "./",
- "moduleResolution": "node",
- "paths": {
- "@/*": [
- "src/*"
- ]
- },
- "lib": [
- "esnext",
- "dom",
- "dom.iterable",
- "scripthost"
- ]
- }
+ "semi": false,
+ "tabWidth": 2,
+ "singleQuote": true,
+ "printWidth": 100,
+ "trailingComma": "none"
}
diff --git a/dashboard/src/main/webapp/babel.config.js
b/dashboard/src/main/webapp/babel.config.js
index 0b134436b..8f440e211 100644
--- a/dashboard/src/main/webapp/babel.config.js
+++ b/dashboard/src/main/webapp/babel.config.js
@@ -16,7 +16,5 @@
*/
module.exports = {
- presets: [
- '@vue/cli-plugin-babel/preset'
- ]
+ presets: ['@vue/cli-plugin-babel/preset']
}
diff --git a/dashboard/src/main/webapp/jsconfig.json
b/dashboard/src/main/webapp/jsconfig.json
index bb01e412c..ee5027303 100644
--- a/dashboard/src/main/webapp/jsconfig.json
+++ b/dashboard/src/main/webapp/jsconfig.json
@@ -23,15 +23,8 @@
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
- "@/*": [
- "src/*"
- ]
+ "@/*": ["src/*"]
},
- "lib": [
- "esnext",
- "dom",
- "dom.iterable",
- "scripthost"
- ]
+ "lib": ["esnext", "dom", "dom.iterable", "scripthost"]
}
}
diff --git a/dashboard/src/main/webapp/package.json
b/dashboard/src/main/webapp/package.json
index 0ab9bfba4..ad6e8bbfc 100644
--- a/dashboard/src/main/webapp/package.json
+++ b/dashboard/src/main/webapp/package.json
@@ -44,31 +44,18 @@
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-service": "^5.0.8",
- "eslint": "^7.32.0",
- "eslint-plugin-vue": "^8.0.3",
+ "@vue/eslint-config-prettier": "^9.0.0",
+ "eslint": "^8.57.0",
+ "eslint-config-standard": "^17.1.0",
+ "eslint-plugin-import": "^2.29.1",
+ "eslint-plugin-n": "^16.6.2",
+ "eslint-plugin-prettier": "^5.1.3",
+ "eslint-plugin-promise": "^6.2.0",
+ "eslint-plugin-vue": "^9.26.0",
"node-sass": "^9.0.0",
+ "prettier": "^3.3.2",
"sass-loader": "^13.3.1",
"vue-loader": "^17.2.2",
"vue-template-compiler": "^2.7.14"
- },
- "eslintConfig": {
- "root": true,
- "env": {
- "node": true
- },
- "extends": [
- "plugin:vue/vue3-essential",
- "eslint:recommended"
- ],
- "parserOptions": {
- "parser": "@babel/eslint-parser"
- },
- "rules": {}
- },
- "browserslist": [
- "> 1%",
- "last 2 versions",
- "not dead",
- "not ie 11"
- ]
+ }
}
diff --git a/dashboard/src/main/webapp/packagescript/cleanfile.js
b/dashboard/src/main/webapp/packagescript/cleanfile.js
index e7cad78b5..bd4af60cf 100644
--- a/dashboard/src/main/webapp/packagescript/cleanfile.js
+++ b/dashboard/src/main/webapp/packagescript/cleanfile.js
@@ -22,12 +22,12 @@ const nodeModulesPath = p.join(__dirname, '../node_modules')
const lockJsonPath = p.join(__dirname, '../package-lock.json')
if (fs.existsSync(nodeModulesPath)) {
- const fileUtil = require('./fileutils')
+ const fileUtil = require('./fileutils')
- //fileUtil.deleteFolderByRimraf(nodeModulesPath)
- fileUtil.deleteFolder(nodeModulesPath)
- console.log('Deleted node_modules successfully!')
+ // fileUtil.deleteFolderByRimraf(nodeModulesPath)
+ fileUtil.deleteFolder(nodeModulesPath)
+ console.log('Deleted node_modules successfully!')
- fileUtil.deleteFile(lockJsonPath)
- console.log('Delete package-lock.json successfully!')
+ fileUtil.deleteFile(lockJsonPath)
+ console.log('Delete package-lock.json successfully!')
}
diff --git a/dashboard/src/main/webapp/packagescript/fileutils.js
b/dashboard/src/main/webapp/packagescript/fileutils.js
index 221d1c9d1..7021b3d4f 100644
--- a/dashboard/src/main/webapp/packagescript/fileutils.js
+++ b/dashboard/src/main/webapp/packagescript/fileutils.js
@@ -16,44 +16,44 @@
*/
const fs = require('fs')
-const pathName = require("path");
+const pathName = require('path')
/**
* Delete folder
* @param path Path of the folder to be deleted
*/
-function deleteFolder (path) {
- let files = [];
- if (fs.existsSync(path)) {
- if (fs.statSync(path).isDirectory()) {
- files = fs.readdirSync(path)
- files.forEach((file) => {
- const curPath = path + '/' + file;
- if (fs.statSync(curPath).isDirectory()) {
- deleteFolder(curPath)
- } else {
- fs.unlinkSync(curPath)
- }
- })
- fs.rmdirSync(path)
+function deleteFolder(path) {
+ let files = []
+ if (fs.existsSync(path)) {
+ if (fs.statSync(path).isDirectory()) {
+ files = fs.readdirSync(path)
+ files.forEach((file) => {
+ const curPath = path + '/' + file
+ if (fs.statSync(curPath).isDirectory()) {
+ deleteFolder(curPath)
} else {
- fs.unlinkSync(path)
+ fs.unlinkSync(curPath)
}
+ })
+ fs.rmdirSync(path)
+ } else {
+ fs.unlinkSync(path)
}
+ }
}
/**
* Delete file
* @param path Path of the file to be deleted
*/
-function deleteFile (path) {
- if (fs.existsSync(path)) {
- if (fs.statSync(path).isDirectory()) {
- deleteFolder(path)
- } else {
- fs.unlinkSync(path)
- }
+function deleteFile(path) {
+ if (fs.existsSync(path)) {
+ if (fs.statSync(path).isDirectory()) {
+ deleteFolder(path)
+ } else {
+ fs.unlinkSync(path)
}
+ }
}
/**
@@ -61,43 +61,43 @@ function deleteFile (path) {
* @param from Source directory
* @param to Target directory
*/
-function copyFolder (from, to) {
- let files = []
- // Whether the file exists If it does not exist, it is created
- if (fs.existsSync(to)) {
- files = fs.readdirSync(from)
- files.forEach((file) => {
- const targetPath = from + '/' + file;
- const toPath = to + '/' + file;
+function copyFolder(from, to) {
+ let files = []
+ // Whether the file exists If it does not exist, it is created
+ if (fs.existsSync(to)) {
+ files = fs.readdirSync(from)
+ files.forEach((file) => {
+ const targetPath = from + '/' + file
+ const toPath = to + '/' + file
- // Copy folder
- if (fs.statSync(targetPath).isDirectory()) {
- copyFolder(targetPath, toPath)
- } else {
- // Copy file
- fs.copyFileSync(targetPath, toPath)
- }
- })
- } else {
- mkdirsSync(to)
- copyFolder(from, to)
- }
+ // Copy folder
+ if (fs.statSync(targetPath).isDirectory()) {
+ copyFolder(targetPath, toPath)
+ } else {
+ // Copy file
+ fs.copyFileSync(targetPath, toPath)
+ }
+ })
+ } else {
+ mkdirsSync(to)
+ copyFolder(from, to)
+ }
}
// Create a directory synchronization method recursively
function mkdirsSync(dirname) {
- if (fs.existsSync(dirname)) {
- return true;
- } else {
- if (mkdirsSync(pathName.dirname(dirname))) {
- fs.mkdirSync(dirname);
- return true;
- }
+ if (fs.existsSync(dirname)) {
+ return true
+ } else {
+ if (mkdirsSync(pathName.dirname(dirname))) {
+ fs.mkdirSync(dirname)
+ return true
}
+ }
}
module.exports = {
- deleteFolder,
- deleteFile,
- copyFolder
+ deleteFolder,
+ deleteFile,
+ copyFolder
}
diff --git a/dashboard/src/main/webapp/public/index.html
b/dashboard/src/main/webapp/public/index.html
index d703f0fe3..6d36f664e 100644
--- a/dashboard/src/main/webapp/public/index.html
+++ b/dashboard/src/main/webapp/public/index.html
@@ -15,18 +15,21 @@
~ limitations under the License.
-->
-<!DOCTYPE html>
+<!doctype html>
<html lang="">
<head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width,initial-scale=1.0">
- <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+ <meta charset="utf-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0" />
+ <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
- <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't
work properly without JavaScript enabled. Please enable it to continue.</strong>
+ <strong
+ >We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
properly without
+ JavaScript enabled. Please enable it to continue.</strong
+ >
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
diff --git a/dashboard/src/main/webapp/src/App.vue
b/dashboard/src/main/webapp/src/App.vue
index deaa982ad..1eb251396 100644
--- a/dashboard/src/main/webapp/src/App.vue
+++ b/dashboard/src/main/webapp/src/App.vue
@@ -20,7 +20,7 @@
</template>
<script>
-import LayoutPage from "@/components/LayoutPage";
+import LayoutPage from '@/components/LayoutPage'
export default {
name: 'App',
components: {
diff --git a/dashboard/src/main/webapp/src/api/api.js
b/dashboard/src/main/webapp/src/api/api.js
index 8d4c7cd6f..155759a28 100644
--- a/dashboard/src/main/webapp/src/api/api.js
+++ b/dashboard/src/main/webapp/src/api/api.js
@@ -15,68 +15,68 @@
* limitations under the License.
*/
-import http from "@/utils/http";
+import http from '@/utils/http'
// Create a Coordinator information interface
-export function getCoordinatorServerInfo(params,headers) {
- return http.get('/coordinator/info', params, headers, 0)
+export function getCoordinatorServerInfo(params, headers) {
+ return http.get('/coordinator/info', params, headers, 0)
}
// Create a coordinator configuration file interface
-export function getCoordinatorConf(params,headers) {
- return http.get('/coordinator/conf', params, headers, 0)
+export function getCoordinatorConf(params, headers) {
+ return http.get('/coordinator/conf', params, headers, 0)
}
// Create an interface for the total number of nodes
-export function getShufflegetStatusTotal(params,headers) {
- return http.get('/server/nodes/summary', params, headers, 0)
+export function getShufflegetStatusTotal(params, headers) {
+ return http.get('/server/nodes/summary', params, headers, 0)
}
// Create an interface for activeNodes
-export function getShuffleActiveNodes(params,headers) {
- return http.get('/server/nodes?status=active', params, headers, 0)
+export function getShuffleActiveNodes(params, headers) {
+ return http.get('/server/nodes?status=active', params, headers, 0)
}
// Create an interface for lostNodes
-export function getShuffleLostList(params,headers) {
- return http.get('/server/nodes?status=lost', params, headers, 0)
+export function getShuffleLostList(params, headers) {
+ return http.get('/server/nodes?status=lost', params, headers, 0)
}
// Create an interface for unhealthyNodes
-export function getShuffleUnhealthyList(params,headers) {
- return http.get('/server/nodes?status=unhealthy', params, headers, 0)
+export function getShuffleUnhealthyList(params, headers) {
+ return http.get('/server/nodes?status=unhealthy', params, headers, 0)
}
// Create an interface for decommissioningNodes
-export function getShuffleDecommissioningList(params,headers) {
- return http.get('/server/nodes?status=decommissioning', params, headers, 0)
+export function getShuffleDecommissioningList(params, headers) {
+ return http.get('/server/nodes?status=decommissioning', params, headers, 0)
}
// Create an interface for decommissionedNodes
-export function getShuffleDecommissionedList(params,headers) {
- return http.get('/server/nodes?status=decommissioned', params, headers, 0)
+export function getShuffleDecommissionedList(params, headers) {
+ return http.get('/server/nodes?status=decommissioned', params, headers, 0)
}
// Create an interface for excludeNodes
-export function getShuffleExcludeNodes(params,headers) {
- return http.get('/server/nodes?status=excluded', params, headers, 0)
+export function getShuffleExcludeNodes(params, headers) {
+ return http.get('/server/nodes?status=excluded', params, headers, 0)
}
// Total number of interfaces for new App
-export function getAppTotal(params,headers) {
- return http.get('/app/total', params, headers, 0)
+export function getAppTotal(params, headers) {
+ return http.get('/app/total', params, headers, 0)
}
// Create an interface for the app basic information list
-export function getApplicationInfoList(params,headers) {
- return http.get('/app/appInfos', params, headers, 0)
+export function getApplicationInfoList(params, headers) {
+ return http.get('/app/appInfos', params, headers, 0)
}
// Create an interface for the number of apps for a user
-export function getTotalForUser(params,headers) {
- return http.get('/app/userTotal', params, headers, 0)
+export function getTotalForUser(params, headers) {
+ return http.get('/app/userTotal', params, headers, 0)
}
// Obtain the configured coordinator server list
-export function getAllCoordinatorAddrees(params,headers) {
- return http.get('/coordinator/coordinatorServers', params, headers, 1)
+export function getAllCoordinatorAddrees(params, headers) {
+ return http.get('/coordinator/coordinatorServers', params, headers, 1)
}
diff --git a/dashboard/src/main/webapp/src/components/LayoutPage.vue
b/dashboard/src/main/webapp/src/components/LayoutPage.vue
index aa24a3847..a3ccbdcb7 100644
--- a/dashboard/src/main/webapp/src/components/LayoutPage.vue
+++ b/dashboard/src/main/webapp/src/components/LayoutPage.vue
@@ -22,17 +22,18 @@
<el-row>
<el-col :span="24">
<el-menu
- :default-active="activeIndex1"
- router
- class="el-menu-demo"
- mode="horizontal"
- background-color="#20B2AA"
- box-shadow="0 -2px 8px 0 rgba(0,0,0,0.12)"
- text-color="#fff"
- active-text-color="#ffd04b">
+ :default-active="activeIndex1"
+ router
+ class="el-menu-demo"
+ mode="horizontal"
+ background-color="#20B2AA"
+ box-shadow="0 -2px 8px 0 rgba(0,0,0,0.12)"
+ text-color="#fff"
+ active-text-color="#ffd04b"
+ >
<el-menu-item index="0">
<div class="unffilelogo">
- <img src="../assets/uniffle-logo.png" alt="unffile">
+ <img src="../assets/uniffle-logo.png" alt="unffile" />
</div>
</el-menu-item>
<el-menu-item index="/coordinatorserverpage">
@@ -50,10 +51,11 @@
<el-sub-menu index="">
<template #title>Switching server</template>
<el-menu-item
- v-for="item in hostNameAndPorts"
- :key="item.label"
- index="/nullpage"
- @click="changeServer(item.label)">
+ v-for="item in hostNameAndPorts"
+ :key="item.label"
+ index="/nullpage"
+ @click="changeServer(item.label)"
+ >
<span>{{ item.label }}</span>
</el-menu-item>
</el-sub-menu>
@@ -75,9 +77,9 @@
</template>
<script>
-import {ref, reactive, onMounted} from 'vue'
-import {getAllCoordinatorAddrees} from '@/api/api'
-import {useCurrentServerStore} from '@/store/useCurrentServerStore'
+import { ref, reactive, onMounted } from 'vue'
+import { getAllCoordinatorAddrees } from '@/api/api'
+import { useCurrentServerStore } from '@/store/useCurrentServerStore'
export default {
setup() {
@@ -96,11 +98,11 @@ export default {
async function getSelectCurrentServer() {
const res = await getAllCoordinatorAddrees()
- const selectCurrentServer = res.data.data
+ const selectCurrentServer = res.data.data
currentServerStore.currentServer = Object.keys(selectCurrentServer)[0]
hostNameAndPorts.length = 0
Object.entries(selectCurrentServer).forEach(([key, value]) => {
- hostNameAndPorts.push({"value": value, "label": key})
+ hostNameAndPorts.push({ value: value, label: key })
})
}
@@ -112,7 +114,7 @@ export default {
activeIndex1,
currentServerStore,
hostNameAndPorts,
- changeServer,
+ changeServer
}
}
}
@@ -125,7 +127,7 @@ a {
}
.unffilelogo {
- background-color: #20B2AA;
+ background-color: #20b2aa;
height: 100%;
position: relative;
}
@@ -135,7 +137,7 @@ a {
}
.currentserver {
- font-family: "Andale Mono";
+ font-family: 'Andale Mono';
font-size: smaller;
color: yellow;
}
diff --git a/dashboard/src/main/webapp/src/main.js
b/dashboard/src/main/webapp/src/main.js
index 1c5e2f3f1..4ab274134 100644
--- a/dashboard/src/main/webapp/src/main.js
+++ b/dashboard/src/main/webapp/src/main.js
@@ -15,16 +15,16 @@
* limitations under the License.
*/
-import {createApp} from 'vue';
-import {createPinia} from 'pinia'
+import { createApp } from 'vue'
+import { createPinia } from 'pinia'
import App from './App.vue'
import ElementPlus from 'element-plus'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import 'element-plus/dist/index.css'
-import router from "@/router";
+import router from '@/router'
const app = createApp(App)
const pinia = createPinia()
-Object.keys(ElementPlusIconsVue).forEach(key => {
- app.component(key, ElementPlusIconsVue[key])
+Object.keys(ElementPlusIconsVue).forEach((key) => {
+ app.component(key, ElementPlusIconsVue[key])
})
app.use(router).use(pinia).use(ElementPlus).mount('#app')
diff --git a/dashboard/src/main/webapp/src/pages/ApplicationPage.vue
b/dashboard/src/main/webapp/src/pages/ApplicationPage.vue
index 0a29fa897..0e0f31b31 100644
--- a/dashboard/src/main/webapp/src/pages/ApplicationPage.vue
+++ b/dashboard/src/main/webapp/src/pages/ApplicationPage.vue
@@ -29,84 +29,80 @@
</el-card>
</el-col>
</el-row>
- <el-divider/>
+ <el-divider />
<el-tag>User App ranking</el-tag>
<div>
<el-table :data="pageData.userAppCount" height="250" style="width: 100%">
- <el-table-column prop="userName" label="UserName" min-width="180"/>
- <el-table-column prop="appNum" label="Totality" min-width="180"/>
+ <el-table-column prop="userName" label="UserName" min-width="180" />
+ <el-table-column prop="appNum" label="Totality" min-width="180" />
</el-table>
</div>
- <el-divider/>
+ <el-divider />
<el-tag>Apps</el-tag>
<div>
<el-table :data="pageData.appInfoData" height="250" style="width: 100%">
- <el-table-column prop="appId" label="AppId" min-width="180"/>
- <el-table-column prop="userName" label="UserName" min-width="180"/>
- <el-table-column prop="updateTime" label="Update Time"
min-width="180"/>
+ <el-table-column prop="appId" label="AppId" min-width="180" />
+ <el-table-column prop="userName" label="UserName" min-width="180" />
+ <el-table-column prop="updateTime" label="Update Time" min-width="180"
/>
</el-table>
</div>
</div>
</template>
<script>
-import {
- getApplicationInfoList,
- getAppTotal,
- getTotalForUser
-} from "@/api/api";
-import {onMounted, reactive} from "vue";
-import {useCurrentServerStore} from '@/store/useCurrentServerStore'
+import { getApplicationInfoList, getAppTotal, getTotalForUser } from
'@/api/api'
+import { onMounted, reactive } from 'vue'
+import { useCurrentServerStore } from '@/store/useCurrentServerStore'
export default {
setup() {
const pageData = reactive({
apptotal: {},
userAppCount: [{}],
- appInfoData: [{appId: "", userName: "", updateTime: ""}]
+ appInfoData: [{ appId: '', userName: '', updateTime: '' }]
})
const currentServerStore = useCurrentServerStore()
async function getApplicationInfoListPage() {
- const res = await getApplicationInfoList();
+ const res = await getApplicationInfoList()
pageData.appInfoData = res.data.data
}
async function getTotalForUserPage() {
- const res = await getTotalForUser();
+ const res = await getTotalForUser()
pageData.userAppCount = res.data.data
}
async function getAppTotalPage() {
- const res = await getAppTotal();
+ const res = await getAppTotal()
pageData.apptotal = res.data.data
}
// The system obtains data from global variables and requests the
interface to obtain new data after data changes.
currentServerStore.$subscribe((mutable, state) => {
if (state.currentServer) {
- getApplicationInfoListPage();
- getTotalForUserPage();
- getAppTotalPage();
+ getApplicationInfoListPage()
+ getTotalForUserPage()
+ getAppTotalPage()
}
})
onMounted(() => {
// If the coordinator address to request is not found in the global
variable, the request is not initiated.
if (currentServerStore.currentServer) {
- getApplicationInfoListPage();
- getTotalForUserPage();
- getAppTotalPage();
+ getApplicationInfoListPage()
+ getTotalForUserPage()
+ getAppTotalPage()
}
})
- return {pageData}
+ return { pageData }
}
}
</script>
<style>
.appcnt {
- font-family: "Lantinghei SC";
+ font-family: 'Lantinghei SC';
font-style: normal;
font-weight: bolder;
font-size: 30px;
diff --git a/dashboard/src/main/webapp/src/pages/CoordinatorServerPage.vue
b/dashboard/src/main/webapp/src/pages/CoordinatorServerPage.vue
index a0a292790..a13be3bde 100644
--- a/dashboard/src/main/webapp/src/pages/CoordinatorServerPage.vue
+++ b/dashboard/src/main/webapp/src/pages/CoordinatorServerPage.vue
@@ -20,16 +20,12 @@
<el-collapse v-model="pageData.activeNames" accordion:false>
<el-collapse-item title="Coordinator Server" name="1">
<div>
- <el-descriptions
- class="margin-top"
- :column="3"
- :size="size"
- border>
+ <el-descriptions class="margin-top" :column="3" :size="size" border>
<el-descriptions-item>
<template #label>
<div class="cell-item">
<el-icon :style="iconStyle">
- <Platform/>
+ <Platform />
</el-icon>
Coordinatro ID
</div>
@@ -40,7 +36,7 @@
<template #label>
<div class="cell-item">
<el-icon :style="iconStyle">
- <Link/>
+ <Link />
</el-icon>
IP Address
</div>
@@ -51,7 +47,7 @@
<template #label>
<div class="cell-item">
<el-icon :style="iconStyle">
- <Wallet/>
+ <Wallet />
</el-icon>
Coordinator Server Port
</div>
@@ -62,7 +58,7 @@
<template #label>
<div class="cell-item">
<el-icon :style="iconStyle">
- <Wallet/>
+ <Wallet />
</el-icon>
Coordinator Web Port
</div>
@@ -74,8 +70,8 @@
</el-collapse-item>
<el-collapse-item title="Coordinator Properties" name="2">
<el-table :data="pageData.tableData" stripe style="width: 100%">
- <el-table-column prop="argumentKey" label="Name" min-width="380"/>
- <el-table-column prop="argumentValue" label="Value" min-width="380"/>
+ <el-table-column prop="argumentKey" label="Name" min-width="380" />
+ <el-table-column prop="argumentValue" label="Value" min-width="380"
/>
</el-table>
</el-collapse-item>
</el-collapse>
@@ -83,19 +79,18 @@
</template>
<script>
-import {ref, reactive, computed, onMounted} from 'vue'
-import {getCoordinatorConf, getCoordinatorServerInfo} from "@/api/api";
-import {useCurrentServerStore} from '@/store/useCurrentServerStore'
+import { ref, reactive, computed, onMounted } from 'vue'
+import { getCoordinatorConf, getCoordinatorServerInfo } from '@/api/api'
+import { useCurrentServerStore } from '@/store/useCurrentServerStore'
export default {
setup() {
const pageData = reactive({
- activeNames: ['1', '2'],
- tableData: [],
- serverInfo: {}
- }
- );
- const currentServerStore= useCurrentServerStore()
+ activeNames: ['1', '2'],
+ tableData: [],
+ serverInfo: {}
+ })
+ const currentServerStore = useCurrentServerStore()
async function getCoordinatorServerConfPage() {
const res = await getCoordinatorConf()
@@ -106,41 +101,43 @@ export default {
pageData.serverInfo = res.data.data
}
- //The system obtains data from global variables and requests the interface
to obtain new data after data changes.
- currentServerStore.$subscribe((mutable,state)=>{
+ /**
+ * The system obtains data from global variables and requests the
interface to obtain new data after data changes.
+ */
+ currentServerStore.$subscribe((mutable, state) => {
if (state.currentServer) {
- getCoordinatorServerConfPage();
- getCoorServerInfo();
+ getCoordinatorServerConfPage()
+ getCoorServerInfo()
}
})
onMounted(() => {
// If the coordinator address to request is not found in the global
variable, the request is not initiated.
if (currentServerStore.currentServer) {
- getCoordinatorServerConfPage();
- getCoorServerInfo();
+ getCoordinatorServerConfPage()
+ getCoorServerInfo()
}
})
-
+
const size = ref('')
const iconStyle = computed(() => {
const marginMap = {
large: '8px',
default: '6px',
- small: '4px',
+ small: '4px'
}
return {
- marginRight: marginMap[size.value] || marginMap.default,
+ marginRight: marginMap[size.value] || marginMap.default
}
})
const blockMargin = computed(() => {
const marginMap = {
large: '32px',
default: '28px',
- small: '24px',
+ small: '24px'
}
return {
- marginTop: marginMap[size.value] || marginMap.default,
+ marginTop: marginMap[size.value] || marginMap.default
}
})
diff --git a/dashboard/src/main/webapp/src/pages/ShuffleServerPage.vue
b/dashboard/src/main/webapp/src/pages/ShuffleServerPage.vue
index 0c6ce6955..6c70f42dd 100644
--- a/dashboard/src/main/webapp/src/pages/ShuffleServerPage.vue
+++ b/dashboard/src/main/webapp/src/pages/ShuffleServerPage.vue
@@ -38,7 +38,9 @@
<span class="cardtile">Decommissioning</span>
</div>
</template>
- <div class="decommissioningnode">{{
dataList.allshuffleServerSize.DECOMMISSIONING ?? 0 }}</div>
+ <div class="decommissioningnode">
+ {{ dataList.allshuffleServerSize.DECOMMISSIONING ?? 0 }}
+ </div>
</el-card>
</router-link>
</el-col>
@@ -50,7 +52,9 @@
<span class="cardtile">Decommissioned</span>
</div>
</template>
- <div class="decommissionednode">{{
dataList.allshuffleServerSize.DECOMMISSIONED ?? 0 }}</div>
+ <div class="decommissionednode">
+ {{ dataList.allshuffleServerSize.DECOMMISSIONED ?? 0 }}
+ </div>
</el-card>
</router-link>
</el-col>
@@ -91,7 +95,7 @@
</router-link>
</el-col>
</el-row>
- <el-divider/>
+ <el-divider />
<el-row :gutter="24">
<div style="width: 100%">
<router-view></router-view>
@@ -101,9 +105,9 @@
</template>
<script>
-import {onMounted, reactive} from 'vue'
-import {getShufflegetStatusTotal} from "@/api/api"
-import {useCurrentServerStore} from '@/store/useCurrentServerStore'
+import { onMounted, reactive } from 'vue'
+import { getShufflegetStatusTotal } from '@/api/api'
+import { useCurrentServerStore } from '@/store/useCurrentServerStore'
export default {
setup() {
@@ -117,27 +121,27 @@ export default {
UNHEALTHY: 0
}
})
- const currentServerStore= useCurrentServerStore()
+ const currentServerStore = useCurrentServerStore()
async function getShufflegetStatusTotalPage() {
- const res = await getShufflegetStatusTotal();
+ const res = await getShufflegetStatusTotal()
dataList.allshuffleServerSize = res.data.data
}
// The system obtains data from global variables and requests the
interface to obtain new data after data changes.
- currentServerStore.$subscribe((mutable,state)=>{
+ currentServerStore.$subscribe((mutable, state) => {
if (state.currentServer) {
- getShufflegetStatusTotalPage();
+ getShufflegetStatusTotalPage()
}
})
onMounted(() => {
// If the coordinator address to request is not found in the global
variable, the request is not initiated.
if (currentServerStore.currentServer) {
- getShufflegetStatusTotalPage();
+ getShufflegetStatusTotalPage()
}
})
- return {dataList}
+ return { dataList }
}
}
</script>
@@ -148,7 +152,7 @@ export default {
}
.activenode {
- font-family: "Lantinghei SC";
+ font-family: 'Lantinghei SC';
font-style: normal;
font-weight: bolder;
font-size: 30px;
@@ -157,7 +161,7 @@ export default {
}
.decommissioningnode {
- font-family: "Lantinghei SC";
+ font-family: 'Lantinghei SC';
font-style: normal;
font-weight: bolder;
font-size: 30px;
@@ -166,7 +170,7 @@ export default {
}
.decommissionednode {
- font-family: "Lantinghei SC";
+ font-family: 'Lantinghei SC';
font-style: normal;
font-weight: bolder;
font-size: 30px;
@@ -175,7 +179,7 @@ export default {
}
.lostnode {
- font-family: "Lantinghei SC";
+ font-family: 'Lantinghei SC';
font-style: normal;
font-weight: bolder;
font-size: 30px;
@@ -184,7 +188,7 @@ export default {
}
.unhealthynode {
- font-family: "Lantinghei SC";
+ font-family: 'Lantinghei SC';
font-style: normal;
font-weight: bolder;
font-size: 30px;
@@ -193,7 +197,7 @@ export default {
}
.excludesnode {
- font-family: "Lantinghei SC";
+ font-family: 'Lantinghei SC';
font-style: normal;
font-weight: bolder;
font-size: 30px;
diff --git
a/dashboard/src/main/webapp/src/pages/serverstatus/ActiveNodeListPage.vue
b/dashboard/src/main/webapp/src/pages/serverstatus/ActiveNodeListPage.vue
index e1dce0767..35166900b 100644
--- a/dashboard/src/main/webapp/src/pages/serverstatus/ActiveNodeListPage.vue
+++ b/dashboard/src/main/webapp/src/pages/serverstatus/ActiveNodeListPage.vue
@@ -18,54 +18,69 @@
<template>
<div>
<el-table :data="pageData.tableData" height="550" style="width: 100%">
- <el-table-column prop="id" label="Id" min-width="140"/>
- <el-table-column prop="ip" label="IP" min-width="80"/>
- <el-table-column prop="grpcPort" label="GrpcPort" min-width="80"/>
- <el-table-column prop="nettyPort" label="NettyPort" min-width="80"/>
- <el-table-column prop="usedMemory" label="UsedMem" min-width="80"
:formatter="memFormatter"/>
- <el-table-column prop="preAllocatedMemory" label="PreAllocatedMem"
min-width="80" :formatter="memFormatter"/>
- <el-table-column prop="availableMemory" label="AvailableMem"
min-width="80" :formatter="memFormatter"/>
- <el-table-column prop="eventNumInFlush" label="FlushNum" min-width="80"/>
- <el-table-column prop="status" label="Status" min-width="80"/>
- <el-table-column prop="timestamp" label="RegistrationTime"
min-width="80" :formatter="dateFormatter"/>
- <el-table-column prop="tags" label="Tags" min-width="80"/>
+ <el-table-column prop="id" label="Id" min-width="140" />
+ <el-table-column prop="ip" label="IP" min-width="80" />
+ <el-table-column prop="grpcPort" label="GrpcPort" min-width="80" />
+ <el-table-column prop="nettyPort" label="NettyPort" min-width="80" />
+ <el-table-column prop="usedMemory" label="UsedMem" min-width="80"
:formatter="memFormatter" />
+ <el-table-column
+ prop="preAllocatedMemory"
+ label="PreAllocatedMem"
+ min-width="80"
+ :formatter="memFormatter"
+ />
+ <el-table-column
+ prop="availableMemory"
+ label="AvailableMem"
+ min-width="80"
+ :formatter="memFormatter"
+ />
+ <el-table-column prop="eventNumInFlush" label="FlushNum" min-width="80"
/>
+ <el-table-column prop="status" label="Status" min-width="80" />
+ <el-table-column
+ prop="timestamp"
+ label="RegistrationTime"
+ min-width="80"
+ :formatter="dateFormatter"
+ />
+ <el-table-column prop="tags" label="Tags" min-width="80" />
</el-table>
</div>
</template>
<script>
-import {onMounted, reactive} from 'vue'
-import { getShuffleActiveNodes} from "@/api/api";
-import {memFormatter, dateFormatter} from "@/utils/common";
-import {useCurrentServerStore} from '@/store/useCurrentServerStore'
+import { onMounted, reactive } from 'vue'
+import { getShuffleActiveNodes } from '@/api/api'
+import { memFormatter, dateFormatter } from '@/utils/common'
+import { useCurrentServerStore } from '@/store/useCurrentServerStore'
export default {
setup() {
const pageData = reactive({
tableData: [
{
- id: "",
- ip: "",
+ id: '',
+ ip: '',
grpcPort: 0,
- nettyPort:0,
+ nettyPort: 0,
usedMemory: 0,
preAllocatedMemory: 0,
availableMemory: 0,
eventNumInFlush: 0,
- tags: "",
- status: "",
- timestamp: ""
+ tags: '',
+ status: '',
+ timestamp: ''
}
]
})
- const currentServerStore= useCurrentServerStore()
+ const currentServerStore = useCurrentServerStore()
async function getShuffleActiveNodesPage() {
- const res = await getShuffleActiveNodes();
+ const res = await getShuffleActiveNodes()
pageData.tableData = res.data.data
}
// The system obtains data from global variables and requests the
interface to obtain new data after data changes.
- currentServerStore.$subscribe((mutable,state)=>{
+ currentServerStore.$subscribe((mutable, state) => {
if (state.currentServer) {
getShuffleActiveNodesPage()
}
@@ -74,11 +89,11 @@ export default {
onMounted(() => {
// If the coordinator address to request is not found in the global
variable, the request is not initiated.
if (currentServerStore.currentServer) {
- getShuffleActiveNodesPage();
+ getShuffleActiveNodesPage()
}
})
- return {pageData, memFormatter, dateFormatter}
+ return { pageData, memFormatter, dateFormatter }
}
}
</script>
diff --git
a/dashboard/src/main/webapp/src/pages/serverstatus/DecommissionednodeListPage.vue
b/dashboard/src/main/webapp/src/pages/serverstatus/DecommissionednodeListPage.vue
index c95da69bd..cdcc3fb55 100644
---
a/dashboard/src/main/webapp/src/pages/serverstatus/DecommissionednodeListPage.vue
+++
b/dashboard/src/main/webapp/src/pages/serverstatus/DecommissionednodeListPage.vue
@@ -18,67 +18,82 @@
<template>
<div>
<el-table :data="pageData.tableData" height="550" style="width: 100%">
- <el-table-column prop="id" label="Id" min-width="140"/>
- <el-table-column prop="ip" label="IP" min-width="80"/>
- <el-table-column prop="grpcPort" label="Port" min-width="80"/>
- <el-table-column prop="nettyPort" label="NettyPort" min-width="80"/>
- <el-table-column prop="usedMemory" label="UsedMem" min-width="80"
:formatter="memFormatter"/>
- <el-table-column prop="preAllocatedMemory" label="PreAllocatedMem"
min-width="80" :formatter="memFormatter"/>
- <el-table-column prop="availableMemory" label="AvailableMem"
min-width="80" :formatter="memFormatter"/>
- <el-table-column prop="eventNumInFlush" label="FlushNum" min-width="80"/>
- <el-table-column prop="status" label="Status" min-width="80"/>
- <el-table-column prop="timestamp" label="RegistrationTime"
min-width="80" :formatter="dateFormatter"/>
- <el-table-column prop="tags" label="Tags" min-width="80"/>
+ <el-table-column prop="id" label="Id" min-width="140" />
+ <el-table-column prop="ip" label="IP" min-width="80" />
+ <el-table-column prop="grpcPort" label="Port" min-width="80" />
+ <el-table-column prop="nettyPort" label="NettyPort" min-width="80" />
+ <el-table-column prop="usedMemory" label="UsedMem" min-width="80"
:formatter="memFormatter" />
+ <el-table-column
+ prop="preAllocatedMemory"
+ label="PreAllocatedMem"
+ min-width="80"
+ :formatter="memFormatter"
+ />
+ <el-table-column
+ prop="availableMemory"
+ label="AvailableMem"
+ min-width="80"
+ :formatter="memFormatter"
+ />
+ <el-table-column prop="eventNumInFlush" label="FlushNum" min-width="80"
/>
+ <el-table-column prop="status" label="Status" min-width="80" />
+ <el-table-column
+ prop="timestamp"
+ label="RegistrationTime"
+ min-width="80"
+ :formatter="dateFormatter"
+ />
+ <el-table-column prop="tags" label="Tags" min-width="80" />
</el-table>
</div>
</template>
<script>
-import {onMounted, reactive} from 'vue'
-import { getShuffleDecommissionedList } from "@/api/api";
-import {memFormatter, dateFormatter} from "@/utils/common";
-import {useCurrentServerStore} from '@/store/useCurrentServerStore';
+import { onMounted, reactive } from 'vue'
+import { getShuffleDecommissionedList } from '@/api/api'
+import { memFormatter, dateFormatter } from '@/utils/common'
+import { useCurrentServerStore } from '@/store/useCurrentServerStore'
export default {
setup() {
const pageData = reactive({
tableData: [
{
- id: "",
- ip: "",
+ id: '',
+ ip: '',
grpcPort: 0,
- nettyPort:0,
+ nettyPort: 0,
usedMemory: 0,
preAllocatedMemory: 0,
availableMemory: 0,
eventNumInFlush: 0,
- tags: "",
- status: "",
- timestamp: ""
+ tags: '',
+ status: '',
+ timestamp: ''
}
]
})
- const currentServerStore= useCurrentServerStore()
+ const currentServerStore = useCurrentServerStore()
async function getShuffleDecommissionedListPage() {
- const res = await getShuffleDecommissionedList();
+ const res = await getShuffleDecommissionedList()
pageData.tableData = res.data.data
}
// The system obtains data from global variables and requests the
interface to obtain new data after data changes.
- currentServerStore.$subscribe((mutable,state)=>{
+ currentServerStore.$subscribe((mutable, state) => {
if (state.currentServer) {
- getShuffleDecommissionedListPage();
+ getShuffleDecommissionedListPage()
}
})
onMounted(() => {
// If the coordinator address to request is not found in the global
variable, the request is not initiated.
if (currentServerStore.currentServer) {
- getShuffleDecommissionedListPage();
+ getShuffleDecommissionedListPage()
}
})
- return {pageData, memFormatter, dateFormatter}
+ return { pageData, memFormatter, dateFormatter }
}
}
</script>
diff --git
a/dashboard/src/main/webapp/src/pages/serverstatus/DecommissioningNodeListPage.vue
b/dashboard/src/main/webapp/src/pages/serverstatus/DecommissioningNodeListPage.vue
index d6d7a75e6..a289fa6b6 100644
---
a/dashboard/src/main/webapp/src/pages/serverstatus/DecommissioningNodeListPage.vue
+++
b/dashboard/src/main/webapp/src/pages/serverstatus/DecommissioningNodeListPage.vue
@@ -18,69 +18,82 @@
<template>
<div>
<el-table :data="pageData.tableData" height="550" style="width: 100%">
- <el-table-column prop="id" label="Id" min-width="140"/>
- <el-table-column prop="ip" label="IP" min-width="80"/>
- <el-table-column prop="grpcPort" label="Port" min-width="80"/>
- <el-table-column prop="nettyPort" label="NettyPort" min-width="80"/>
- <el-table-column prop="usedMemory" label="UsedMem" min-width="80"
:formatter="memFormatter"/>
- <el-table-column prop="preAllocatedMemory" label="PreAllocatedMem"
min-width="80" :formatter="memFormatter"/>
- <el-table-column prop="availableMemory" label="AvailableMem"
min-width="80" :formatter="memFormatter"/>
- <el-table-column prop="eventNumInFlush" label="FlushNum" min-width="80"/>
- <el-table-column prop="status" label="Status" min-width="80"/>
- <el-table-column prop="timestamp" label="RegistrationTime"
min-width="80" :formatter="dateFormatter"/>
- <el-table-column prop="tags" label="Tags" min-width="80"/>
+ <el-table-column prop="id" label="Id" min-width="140" />
+ <el-table-column prop="ip" label="IP" min-width="80" />
+ <el-table-column prop="grpcPort" label="Port" min-width="80" />
+ <el-table-column prop="nettyPort" label="NettyPort" min-width="80" />
+ <el-table-column prop="usedMemory" label="UsedMem" min-width="80"
:formatter="memFormatter" />
+ <el-table-column
+ prop="preAllocatedMemory"
+ label="PreAllocatedMem"
+ min-width="80"
+ :formatter="memFormatter"
+ />
+ <el-table-column
+ prop="availableMemory"
+ label="AvailableMem"
+ min-width="80"
+ :formatter="memFormatter"
+ />
+ <el-table-column prop="eventNumInFlush" label="FlushNum" min-width="80"
/>
+ <el-table-column prop="status" label="Status" min-width="80" />
+ <el-table-column
+ prop="timestamp"
+ label="RegistrationTime"
+ min-width="80"
+ :formatter="dateFormatter"
+ />
+ <el-table-column prop="tags" label="Tags" min-width="80" />
</el-table>
</div>
</template>
<script>
-import {onMounted, reactive} from 'vue'
-import { getShuffleDecommissioningList } from "@/api/api";
-import {memFormatter, dateFormatter} from "@/utils/common";
-import {useCurrentServerStore} from '@/store/useCurrentServerStore'
+import { onMounted, reactive } from 'vue'
+import { getShuffleDecommissioningList } from '@/api/api'
+import { memFormatter, dateFormatter } from '@/utils/common'
+import { useCurrentServerStore } from '@/store/useCurrentServerStore'
export default {
setup() {
const pageData = reactive({
tableData: [
{
- id: "",
- ip: "",
+ id: '',
+ ip: '',
grpcPort: 0,
- nettyPort:0,
+ nettyPort: 0,
usedMemory: 0,
preAllocatedMemory: 0,
availableMemory: 0,
eventNumInFlush: 0,
- tags: "",
- status: "",
- timestamp: ""
+ tags: '',
+ status: '',
+ timestamp: ''
}
]
})
- const currentServerStore= useCurrentServerStore()
+ const currentServerStore = useCurrentServerStore()
async function getShuffleDecommissioningListPage() {
- const res = await getShuffleDecommissioningList();
+ const res = await getShuffleDecommissioningList()
pageData.tableData = res.data.data
}
// The system obtains data from global variables and requests the
interface to obtain new data after data changes.
- currentServerStore.$subscribe((mutable,state)=>{
+ currentServerStore.$subscribe((mutable, state) => {
if (state.currentServer) {
- getShuffleDecommissioningListPage();
+ getShuffleDecommissioningListPage()
}
})
-
onMounted(() => {
// If the coordinator address to request is not found in the global
variable, the request is not initiated.
if (currentServerStore.currentServer) {
- getShuffleDecommissioningListPage();
+ getShuffleDecommissioningListPage()
}
})
-
- return {pageData, memFormatter, dateFormatter}
+ return { pageData, memFormatter, dateFormatter }
}
}
</script>
diff --git
a/dashboard/src/main/webapp/src/pages/serverstatus/ExcludeNodeList.vue
b/dashboard/src/main/webapp/src/pages/serverstatus/ExcludeNodeList.vue
index 3566657f9..4e3b7f861 100644
--- a/dashboard/src/main/webapp/src/pages/serverstatus/ExcludeNodeList.vue
+++ b/dashboard/src/main/webapp/src/pages/serverstatus/ExcludeNodeList.vue
@@ -18,46 +18,46 @@
<template>
<div>
<el-table :data="pageData.tableData" height="550" style="width: 100%">
- <el-table-column prop="id" label="ExcludeNodeId" min-width="180"/>
+ <el-table-column prop="id" label="ExcludeNodeId" min-width="180" />
</el-table>
</div>
</template>
<script>
-import {onMounted, reactive} from 'vue'
-import { getShuffleExcludeNodes } from "@/api/api";
-import {useCurrentServerStore} from '@/store/useCurrentServerStore'
+import { onMounted, reactive } from 'vue'
+import { getShuffleExcludeNodes } from '@/api/api'
+import { useCurrentServerStore } from '@/store/useCurrentServerStore'
export default {
setup() {
const pageData = reactive({
tableData: [
{
- id:""
+ id: ''
}
]
})
- const currentServerStore= useCurrentServerStore()
+ const currentServerStore = useCurrentServerStore()
async function getShuffleExcludeNodesPage() {
- const res = await getShuffleExcludeNodes();
+ const res = await getShuffleExcludeNodes()
pageData.tableData = res.data.data
}
// The system obtains data from global variables and requests the
interface to obtain new data after data changes.
- currentServerStore.$subscribe((mutable,state)=>{
+ currentServerStore.$subscribe((mutable, state) => {
if (state.currentServer) {
- getShuffleExcludeNodesPage();
+ getShuffleExcludeNodesPage()
}
})
onMounted(() => {
// If the coordinator address to request is not found in the global
variable, the request is not initiated.
if (currentServerStore.currentServer) {
- getShuffleExcludeNodesPage();
+ getShuffleExcludeNodesPage()
}
})
- return {pageData}
+ return { pageData }
}
}
</script>
diff --git a/dashboard/src/main/webapp/src/pages/serverstatus/LostNodeList.vue
b/dashboard/src/main/webapp/src/pages/serverstatus/LostNodeList.vue
index adfef3f52..9beb8d881 100644
--- a/dashboard/src/main/webapp/src/pages/serverstatus/LostNodeList.vue
+++ b/dashboard/src/main/webapp/src/pages/serverstatus/LostNodeList.vue
@@ -18,70 +18,83 @@
<template>
<div>
<el-table :data="pageData.tableData" height="550" style="width: 100%">
- <el-table-column prop="id" label="Id" min-width="140"/>
- <el-table-column prop="ip" label="IP" min-width="80"/>
- <el-table-column prop="grpcPort" label="Port" min-width="80"/>
- <el-table-column prop="nettyPort" label="NettyPort" min-width="80"/>
- <el-table-column prop="usedMemory" label="UsedMem" min-width="80"
:formatter="memFormatter"/>
- <el-table-column prop="preAllocatedMemory" label="PreAllocatedMem"
min-width="80" :formatter="memFormatter"/>
- <el-table-column prop="availableMemory" label="AvailableMem"
min-width="80" :formatter="memFormatter"/>
- <el-table-column prop="eventNumInFlush" label="FlushNum" min-width="80"/>
- <el-table-column prop="status" label="Status" min-width="80"/>
- <el-table-column prop="timestamp" label="RegistrationTime"
min-width="80" :formatter="dateFormatter"/>
- <el-table-column prop="tags" label="Tags" min-width="80"/>
+ <el-table-column prop="id" label="Id" min-width="140" />
+ <el-table-column prop="ip" label="IP" min-width="80" />
+ <el-table-column prop="grpcPort" label="Port" min-width="80" />
+ <el-table-column prop="nettyPort" label="NettyPort" min-width="80" />
+ <el-table-column prop="usedMemory" label="UsedMem" min-width="80"
:formatter="memFormatter" />
+ <el-table-column
+ prop="preAllocatedMemory"
+ label="PreAllocatedMem"
+ min-width="80"
+ :formatter="memFormatter"
+ />
+ <el-table-column
+ prop="availableMemory"
+ label="AvailableMem"
+ min-width="80"
+ :formatter="memFormatter"
+ />
+ <el-table-column prop="eventNumInFlush" label="FlushNum" min-width="80"
/>
+ <el-table-column prop="status" label="Status" min-width="80" />
+ <el-table-column
+ prop="timestamp"
+ label="RegistrationTime"
+ min-width="80"
+ :formatter="dateFormatter"
+ />
+ <el-table-column prop="tags" label="Tags" min-width="80" />
</el-table>
</div>
</template>
<script>
-import {onMounted, reactive} from 'vue'
-import { getShuffleLostList } from "@/api/api";
-import {memFormatter, dateFormatter} from "@/utils/common";
-import {useCurrentServerStore} from '@/store/useCurrentServerStore'
+import { onMounted, reactive } from 'vue'
+import { getShuffleLostList } from '@/api/api'
+import { memFormatter, dateFormatter } from '@/utils/common'
+import { useCurrentServerStore } from '@/store/useCurrentServerStore'
export default {
setup() {
const pageData = reactive({
tableData: [
{
- id: "",
- ip: "",
+ id: '',
+ ip: '',
grpcPort: 0,
- nettyPort:0,
+ nettyPort: 0,
usedMemory: 0,
preAllocatedMemory: 0,
availableMemory: 0,
eventNumInFlush: 0,
- tags: "",
- status: "",
- timestamp: ""
+ tags: '',
+ status: '',
+ timestamp: ''
}
]
})
- const currentServerStore= useCurrentServerStore()
+ const currentServerStore = useCurrentServerStore()
async function getShuffleLostListPage() {
- const res = await getShuffleLostList();
+ const res = await getShuffleLostList()
pageData.tableData = res.data.data
}
// The system obtains data from global variables and requests the
interface to obtain new data after data changes.
- currentServerStore.$subscribe((mutable,state)=>{
+ currentServerStore.$subscribe((mutable, state) => {
if (state.currentServer) {
- getShuffleLostListPage();
+ getShuffleLostListPage()
}
})
onMounted(() => {
// If the coordinator address to request is not found in the global
variable, the request is not initiated.
if (currentServerStore.currentServer) {
- getShuffleLostListPage();
+ getShuffleLostListPage()
}
})
-
-
- return {pageData, memFormatter, dateFormatter}
+ return { pageData, memFormatter, dateFormatter }
}
}
</script>
diff --git
a/dashboard/src/main/webapp/src/pages/serverstatus/UnhealthyNodeListPage.vue
b/dashboard/src/main/webapp/src/pages/serverstatus/UnhealthyNodeListPage.vue
index 627ce47cf..c568bf539 100644
--- a/dashboard/src/main/webapp/src/pages/serverstatus/UnhealthyNodeListPage.vue
+++ b/dashboard/src/main/webapp/src/pages/serverstatus/UnhealthyNodeListPage.vue
@@ -18,68 +18,82 @@
<template>
<div>
<el-table :data="pageData.tableData" height="550" style="width: 100%">
- <el-table-column prop="id" label="Id" min-width="140"/>
- <el-table-column prop="ip" label="IP" min-width="80"/>
- <el-table-column prop="grpcPort" label="Port" min-width="80"/>
- <el-table-column prop="nettyPort" label="NettyPort" min-width="80"/>
- <el-table-column prop="usedMemory" label="UsedMem" min-width="80"
:formatter="memFormatter"/>
- <el-table-column prop="preAllocatedMemory" label="PreAllocatedMem"
min-width="80" :formatter="memFormatter"/>
- <el-table-column prop="availableMemory" label="AvailableMem"
min-width="80" :formatter="memFormatter"/>
- <el-table-column prop="eventNumInFlush" label="FlushNum" min-width="80"/>
- <el-table-column prop="status" label="Status" min-width="80"/>
- <el-table-column prop="timestamp" label="RegistrationTime"
min-width="80" :formatter="dateFormatter"/>
- <el-table-column prop="tags" label="Tags" min-width="80"/>
+ <el-table-column prop="id" label="Id" min-width="140" />
+ <el-table-column prop="ip" label="IP" min-width="80" />
+ <el-table-column prop="grpcPort" label="Port" min-width="80" />
+ <el-table-column prop="nettyPort" label="NettyPort" min-width="80" />
+ <el-table-column prop="usedMemory" label="UsedMem" min-width="80"
:formatter="memFormatter" />
+ <el-table-column
+ prop="preAllocatedMemory"
+ label="PreAllocatedMem"
+ min-width="80"
+ :formatter="memFormatter"
+ />
+ <el-table-column
+ prop="availableMemory"
+ label="AvailableMem"
+ min-width="80"
+ :formatter="memFormatter"
+ />
+ <el-table-column prop="eventNumInFlush" label="FlushNum" min-width="80"
/>
+ <el-table-column prop="status" label="Status" min-width="80" />
+ <el-table-column
+ prop="timestamp"
+ label="RegistrationTime"
+ min-width="80"
+ :formatter="dateFormatter"
+ />
+ <el-table-column prop="tags" label="Tags" min-width="80" />
</el-table>
</div>
</template>
<script>
-import {onMounted, reactive} from 'vue'
-import { getShuffleUnhealthyList } from "@/api/api";
-import {memFormatter, dateFormatter} from "@/utils/common";
-import {useCurrentServerStore} from '@/store/useCurrentServerStore'
+import { onMounted, reactive } from 'vue'
+import { getShuffleUnhealthyList } from '@/api/api'
+import { memFormatter, dateFormatter } from '@/utils/common'
+import { useCurrentServerStore } from '@/store/useCurrentServerStore'
export default {
setup() {
const pageData = reactive({
tableData: [
{
- id: "",
- ip: "",
+ id: '',
+ ip: '',
grpcPort: 0,
- nettyPort:0,
+ nettyPort: 0,
usedMemory: 0,
preAllocatedMemory: 0,
availableMemory: 0,
eventNumInFlush: 0,
- tags: "",
- status: "",
- timestamp: ""
+ tags: '',
+ status: '',
+ timestamp: ''
}
]
})
- const currentServerStore= useCurrentServerStore()
+ const currentServerStore = useCurrentServerStore()
async function getShuffleUnhealthyListPage() {
- const res = await getShuffleUnhealthyList();
+ const res = await getShuffleUnhealthyList()
pageData.tableData = res.data.data
}
// The system obtains data from global variables and requests the
interface to obtain new data after data changes.
- currentServerStore.$subscribe((mutable,state)=>{
+ currentServerStore.$subscribe((mutable, state) => {
if (state.currentServer) {
- getShuffleUnhealthyListPage();
+ getShuffleUnhealthyListPage()
}
})
onMounted(() => {
// If the coordinator address to request is not found in the global
variable, the request is not initiated.
if (currentServerStore.currentServer) {
- getShuffleUnhealthyListPage();
+ getShuffleUnhealthyListPage()
}
})
-
- return {pageData, memFormatter, dateFormatter}
+ return { pageData, memFormatter, dateFormatter }
}
}
</script>
diff --git a/dashboard/src/main/webapp/src/router/index.js
b/dashboard/src/main/webapp/src/router/index.js
index 5bccc8496..950c11181 100644
--- a/dashboard/src/main/webapp/src/router/index.js
+++ b/dashboard/src/main/webapp/src/router/index.js
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-import {createRouter, createWebHashHistory} from "vue-router"
+import { createRouter, createWebHashHistory } from 'vue-router'
import ApplicationPage from '@/pages/ApplicationPage.vue'
import CoordinatorServerPage from '@/pages/CoordinatorServerPage.vue'
import ShuffleServerPage from '@/pages/ShuffleServerPage.vue'
@@ -27,49 +27,67 @@ import UnhealthyNodeListPage from
'@/pages/serverstatus/UnhealthyNodeListPage'
import ExcludeNodeList from '@/pages/serverstatus/ExcludeNodeList'
const routes = [
- {
- path: '/coordinatorserverpage',
- name: 'coordinatorserverpage',
- component: CoordinatorServerPage
- },
- {
- path: '/shuffleserverpage',
- name: 'shuffleserverpage',
- component: ShuffleServerPage,
- redirect: '/shuffleserverpage/activeNodeList',
- children: [
- {path: '/shuffleserverpage/activeNodeList', name:
"activeNodeList", component: ActiveNodeListPage},
- {
- path: '/shuffleserverpage/decommissioningNodeList',
- name: "decommissioningNodeList",
- component: DecommissioningNodeListPage
- },
- {
- path: '/shuffleserverpage/decommissionedNodeList',
- name: "decommissionedNodeList",
- component: DecommissionednodeListPage
- },
- {path: '/shuffleserverpage/lostNodeList', name: "lostNodeList",
component: LostNodeList},
- {path: '/shuffleserverpage/unhealthyNodeList', name:
"unhealthyNodeList", component: UnhealthyNodeListPage},
- {path: '/shuffleserverpage/excludeNodeList', name:
"excludeNodeList", component: ExcludeNodeList},
- ]
- },
- {
- path: '/applicationpage',
- name: 'applicationpage',
- component: ApplicationPage,
- },
- {
- path: '/nullpage',
- name: 'nullpage',
- beforeEnter:(to,from,next)=>{next(false)},
- component: ApplicationPage
+ {
+ path: '/coordinatorserverpage',
+ name: 'coordinatorserverpage',
+ component: CoordinatorServerPage
+ },
+ {
+ path: '/shuffleserverpage',
+ name: 'shuffleserverpage',
+ component: ShuffleServerPage,
+ redirect: '/shuffleserverpage/activeNodeList',
+ children: [
+ {
+ path: '/shuffleserverpage/activeNodeList',
+ name: 'activeNodeList',
+ component: ActiveNodeListPage
+ },
+ {
+ path: '/shuffleserverpage/decommissioningNodeList',
+ name: 'decommissioningNodeList',
+ component: DecommissioningNodeListPage
+ },
+ {
+ path: '/shuffleserverpage/decommissionedNodeList',
+ name: 'decommissionedNodeList',
+ component: DecommissionednodeListPage
+ },
+ {
+ path: '/shuffleserverpage/lostNodeList',
+ name: 'lostNodeList',
+ component: LostNodeList
+ },
+ {
+ path: '/shuffleserverpage/unhealthyNodeList',
+ name: 'unhealthyNodeList',
+ component: UnhealthyNodeListPage
+ },
+ {
+ path: '/shuffleserverpage/excludeNodeList',
+ name: 'excludeNodeList',
+ component: ExcludeNodeList
+ }
+ ]
+ },
+ {
+ path: '/applicationpage',
+ name: 'applicationpage',
+ component: ApplicationPage
+ },
+ {
+ path: '/nullpage',
+ name: 'nullpage',
+ beforeEnter: (to, from, next) => {
+ next(false)
},
+ component: ApplicationPage
+ }
]
const router = createRouter({
- history: createWebHashHistory(),
- routes
+ history: createWebHashHistory(),
+ routes
})
export default router
diff --git a/dashboard/src/main/webapp/src/store/useCurrentServerStore.js
b/dashboard/src/main/webapp/src/store/useCurrentServerStore.js
index be6ab0807..f03375164 100644
--- a/dashboard/src/main/webapp/src/store/useCurrentServerStore.js
+++ b/dashboard/src/main/webapp/src/store/useCurrentServerStore.js
@@ -15,14 +15,14 @@
* limitations under the License.
*/
-import {defineStore} from 'pinia'
-import {ref} from 'vue'
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
/**
* Create a global shared repository that allows you to share state across
components/pages.
* @type {StoreDefinition<"overall",
_ExtractStateFromSetupStore<{currentServer: Ref<UnwrapRef<string>>}>,
_ExtractGettersFromSetupStore<{currentServer: Ref<UnwrapRef<string>>}>,
_ExtractActionsFromSetupStore<{currentServer: Ref<UnwrapRef<string>>}>>}
*/
export const useCurrentServerStore = defineStore('overall', () => {
- const currentServer = ref('')
- return { currentServer }
+ const currentServer = ref('')
+ return { currentServer }
})
diff --git a/dashboard/src/main/webapp/src/utils/common.js
b/dashboard/src/main/webapp/src/utils/common.js
index d8c9488f2..d0e86397d 100644
--- a/dashboard/src/main/webapp/src/utils/common.js
+++ b/dashboard/src/main/webapp/src/utils/common.js
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-import moment from "moment"
+import moment from 'moment'
/**
* Format the memory display value.
* @param row
@@ -24,16 +24,16 @@ import moment from "moment"
* @returns {string}
*/
const memFormatter = (row, column, cellValue) => {
- var arrUnit = ["B", "K", "M", "G", "T", "P"],
- baseStep = 1024,
- unitCount = arrUnit.length,
- unitIndex = 0;
- while(cellValue >= baseStep && unitIndex < unitCount - 1){
- unitIndex++;
- cellValue /= baseStep;
- }
- cellValue = cellValue.toFixed(2);
- return cellValue + " " + arrUnit[unitIndex];
+ const arrUnit = ['B', 'K', 'M', 'G', 'T', 'P']
+ const baseStep = 1024
+ const unitCount = arrUnit.length
+ let unitIndex = 0
+ while (cellValue >= baseStep && unitIndex < unitCount - 1) {
+ unitIndex++
+ cellValue /= baseStep
+ }
+ cellValue = cellValue.toFixed(2)
+ return cellValue + ' ' + arrUnit[unitIndex]
}
/**
* Format the time display value.
@@ -43,7 +43,7 @@ const memFormatter = (row, column, cellValue) => {
* @returns {string}
*/
const dateFormatter = (row, column, cellValue) => {
- return moment(cellValue).format("YYYY-MM-DD HH:mm:ss");
+ return moment(cellValue).format('YYYY-MM-DD HH:mm:ss')
}
-export {memFormatter, dateFormatter}
+export { memFormatter, dateFormatter }
diff --git a/dashboard/src/main/webapp/src/utils/http.js
b/dashboard/src/main/webapp/src/utils/http.js
index 87ca359bb..c22f78e50 100644
--- a/dashboard/src/main/webapp/src/utils/http.js
+++ b/dashboard/src/main/webapp/src/utils/http.js
@@ -15,40 +15,39 @@
* limitations under the License.
*/
-import request from "@/utils/request";
-import {useCurrentServerStore} from '@/store/useCurrentServerStore'
-
+import request from '@/utils/request'
+import { useCurrentServerStore } from '@/store/useCurrentServerStore'
const http = {
- get(url, params, headers, fontBackFlag) {
- if (fontBackFlag == 0) {
- // The system obtains the address of the Coordinator to be
accessed from global variables.
- const currentServerStore= useCurrentServerStore()
- if (typeof headers !== 'undefined') {
- headers['targetAddress'] = currentServerStore.currentServer;
- } else {
- headers = {}
- headers['targetAddress'] = currentServerStore.currentServer;
- }
- return request.getBackEndAxiosInstance().get(url,{params,headers});
- } else {
- return
request.getFrontEndAxiosInstance().get(url,{params,headers});
- }
- },
- post(url, data, headers, fontBackFlag) {
- if (fontBackFlag == 0) {
- // The system obtains the address of the Coordinator to be
accessed from global variables.
- const currentServerStore= useCurrentServerStore()
- if (typeof headers !== 'undefined') {
- headers['targetAddress'] = currentServerStore.currentServer;
- } else {
- headers = {}
- headers['targetAddress'] = currentServerStore.currentServer;
- }
- return request.getBackEndAxiosInstance().post(url,data,headers);
- } else {
- return request.getFrontEndAxiosInstance().post(url,data,headers);
- }
+ get(url, params, headers, fontBackFlag) {
+ if (fontBackFlag === 0) {
+ // The system obtains the address of the Coordinator to be accessed from
global variables.
+ const currentServerStore = useCurrentServerStore()
+ if (typeof headers !== 'undefined') {
+ headers.targetAddress = currentServerStore.currentServer
+ } else {
+ headers = {}
+ headers.targetAddress = currentServerStore.currentServer
+ }
+ return request.getBackEndAxiosInstance().get(url, { params, headers })
+ } else {
+ return request.getFrontEndAxiosInstance().get(url, { params, headers })
+ }
+ },
+ post(url, data, headers, fontBackFlag) {
+ if (fontBackFlag === 0) {
+ // The system obtains the address of the Coordinator to be accessed from
global variables.
+ const currentServerStore = useCurrentServerStore()
+ if (typeof headers !== 'undefined') {
+ headers.targetAddress = currentServerStore.currentServer
+ } else {
+ headers = {}
+ headers.targetAddress = currentServerStore.currentServer
+ }
+ return request.getBackEndAxiosInstance().post(url, data, headers)
+ } else {
+ return request.getFrontEndAxiosInstance().post(url, data, headers)
}
+ }
}
export default http
diff --git a/dashboard/src/main/webapp/src/utils/request.js
b/dashboard/src/main/webapp/src/utils/request.js
index 5d7c72068..783539b72 100644
--- a/dashboard/src/main/webapp/src/utils/request.js
+++ b/dashboard/src/main/webapp/src/utils/request.js
@@ -22,49 +22,55 @@ import axios from 'axios'
* @type {axios.AxiosInstance}
*/
const frontEndAxiosInstance = axios.create({
- baseURL: '/web',
- timeout: 10000
+ baseURL: '/web',
+ timeout: 10000
})
/**
* The root directory starts with API. The dashboard server reverse proxy
requests Coordinator apis
* @type {axios.AxiosInstance}
*/
-const backEndAxiosInstance=axios.create({
- baseURL: '/api',
- timeout: 10000
+const backEndAxiosInstance = axios.create({
+ baseURL: '/api',
+ timeout: 10000
})
const axiosInstance = {
- getFrontEndAxiosInstance(){
- return frontEndAxiosInstance
- },
- getBackEndAxiosInstance(){
- return backEndAxiosInstance
- }
+ getFrontEndAxiosInstance() {
+ return frontEndAxiosInstance
+ },
+ getBackEndAxiosInstance() {
+ return backEndAxiosInstance
+ }
}
-frontEndAxiosInstance.interceptors.request.use(config => {
- config.headers['Content-type'] = 'application/json';
- config.headers['Accept'] = 'application/json';
- return config;
+frontEndAxiosInstance.interceptors.request.use((config) => {
+ config.headers['Content-type'] = 'application/json'
+ config.headers.Accept = 'application/json'
+ return config
})
-backEndAxiosInstance.interceptors.request.use(config => {
- config.headers['Content-type'] = 'application/json';
- config.headers['Accept'] = 'application/json';
- return config;
+backEndAxiosInstance.interceptors.request.use((config) => {
+ config.headers['Content-type'] = 'application/json'
+ config.headers.Accept = 'application/json'
+ return config
})
-frontEndAxiosInstance.interceptors.response.use(response => {
- return response;
-}, error => {
- return error;
-})
+frontEndAxiosInstance.interceptors.response.use(
+ (response) => {
+ return response
+ },
+ (error) => {
+ return error
+ }
+)
-backEndAxiosInstance.interceptors.response.use(response => {
- return response;
-}, error => {
- return error;
-})
+backEndAxiosInstance.interceptors.response.use(
+ (response) => {
+ return response
+ },
+ (error) => {
+ return error
+ }
+)
-export default axiosInstance;
+export default axiosInstance
diff --git a/dashboard/src/main/webapp/vue.config.js
b/dashboard/src/main/webapp/vue.config.js
index 6bc469673..5d8136629 100644
--- a/dashboard/src/main/webapp/vue.config.js
+++ b/dashboard/src/main/webapp/vue.config.js
@@ -15,17 +15,17 @@
* limitations under the License.
*/
-module.exports ={
- // Proxies can be set up by configuring the vue.config.js file to proxy
requests to the backend server.
- devServer: {
- host:'localhost',
- port:8080,
- proxy: {
- '/': {
- ws:false,
- target: 'http://localhost:19997',
- changeOrigin: true,
- },
- }
+module.exports = {
+ // Proxies can be set up by configuring the vue.config.js file to proxy
requests to the backend server.
+ devServer: {
+ host: 'localhost',
+ port: 8080,
+ proxy: {
+ '/': {
+ ws: false,
+ target: 'http://localhost:19997',
+ changeOrigin: true
+ }
}
+ }
}
diff --git
a/integration-test/common/src/test/java/org/apache/uniffle/test/CoordinatorAdminServiceTest.java
b/integration-test/common/src/test/java/org/apache/uniffle/test/CoordinatorAdminServiceTest.java
index 96614e8ca..0b8e21a03 100644
---
a/integration-test/common/src/test/java/org/apache/uniffle/test/CoordinatorAdminServiceTest.java
+++
b/integration-test/common/src/test/java/org/apache/uniffle/test/CoordinatorAdminServiceTest.java
@@ -28,8 +28,8 @@ import org.junit.jupiter.api.Test;
import org.apache.uniffle.api.AdminRestApi;
import org.apache.uniffle.client.UniffleRestClient;
import org.apache.uniffle.common.config.RssBaseConf;
+import org.apache.uniffle.common.web.resource.Response;
import org.apache.uniffle.coordinator.CoordinatorConf;
-import org.apache.uniffle.coordinator.web.Response;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git
a/integration-test/common/src/test/java/org/apache/uniffle/test/ServletTest.java
b/integration-test/common/src/test/java/org/apache/uniffle/test/ServletTest.java
index 3f191ae53..56c02d63a 100644
---
a/integration-test/common/src/test/java/org/apache/uniffle/test/ServletTest.java
+++
b/integration-test/common/src/test/java/org/apache/uniffle/test/ServletTest.java
@@ -43,11 +43,11 @@ import org.apache.uniffle.common.ServerStatus;
import org.apache.uniffle.common.config.RssBaseConf;
import org.apache.uniffle.common.metrics.TestUtils;
import org.apache.uniffle.common.rpc.ServerType;
+import org.apache.uniffle.common.web.resource.Response;
import org.apache.uniffle.coordinator.CoordinatorConf;
import org.apache.uniffle.coordinator.CoordinatorServer;
import org.apache.uniffle.coordinator.ServerNode;
import org.apache.uniffle.coordinator.SimpleClusterManager;
-import org.apache.uniffle.coordinator.web.Response;
import org.apache.uniffle.coordinator.web.request.CancelDecommissionRequest;
import org.apache.uniffle.coordinator.web.request.DecommissionRequest;
import org.apache.uniffle.server.ShuffleServer;