From aa2526075bf4b91c7fcf04f9e68ff1ea9fe812c2 Mon Sep 17 00:00:00 2001 From: xudaotutou <13435638964@163.com> Date: Tue, 25 Oct 2022 04:51:50 -0500 Subject: [PATCH] update web ui (#2318) * fix(web ui): profiler * chore(web ui):perf proxy config * perf(web ui):update style * chore(web ui):update deps * perf(web ui):fix monitor category * fix(web ui):fix style of table and monitor rt chart * refactor(web ui):refactor config * feat(web ui):support debug http api with console --- web-ui/arthasWebConsole/.env.tunnel | 2 + web-ui/arthasWebConsole/.env.ui | 2 + web-ui/arthasWebConsole/package.json | 8 +- web-ui/arthasWebConsole/src/App.vue | 22 +- web-ui/arthasWebConsole/src/env.d.ts | 9 +- web-ui/arthasWebConsole/ui/src/App.vue | 20 +- web-ui/arthasWebConsole/ui/src/arthas.d.ts | 61 +- .../ui/src/components/NavHeader.vue | 137 ++-- .../ui/src/components/dialog/ErrDialog.vue | 4 +- .../ui/src/components/dialog/InputDialog.vue | 10 +- .../src/components/dialog/SuccessDialog.vue | 4 +- .../ui/src/components/dialog/WarnDialog.vue | 4 +- .../ui/src/components/input/AutoComplete.vue | 2 +- .../ui/src/components/input/MethodInput.vue | 15 +- .../ui/src/components/routeTo/NavAside.vue | 57 -- .../ui/src/components/routeTo/SelectCmd.vue | 2 +- .../ui/src/components/show/Enhancer.vue | 2 + .../ui/src/machines/consoleMachine.ts | 11 + .../ui/src/machines/perRequestMachine.ts | 31 +- .../arthasWebConsole/ui/src/router/routes.ts | 46 +- .../arthasWebConsole/ui/src/stores/fetch.ts | 2 + .../arthasWebConsole/ui/src/stores/public.ts | 30 +- .../arthasWebConsole/ui/src/views/Config.vue | 185 +---- .../arthasWebConsole/ui/src/views/Console.vue | 6 +- .../ui/src/views/DashBoard.vue | 24 +- .../ui/src/views/Synchronize.vue | 6 +- .../ui/src/views/async/Monitor.vue | 48 +- .../ui/src/views/async/Profiler.vue | 18 +- .../ui/src/views/async/Stack.vue | 16 +- .../ui/src/views/async/Trace.vue | 2 +- .../ui/src/views/async/Tt.vue | 69 +- .../ui/src/views/async/Watch.vue | 39 +- .../ui/src/views/config/Jvm.vue | 67 ++ .../ui/src/views/config/Options.vue | 102 +++ .../ui/src/views/config/PerCounter.vue | 69 ++ .../ui/src/views/config/Sysenv.vue | 52 ++ .../ui/src/views/config/Sysprop.vue | 78 ++ .../ui/src/views/config/Vmoption.vue | 92 +++ .../ui/src/views/sync/ClassInfo.vue | 23 - .../ui/src/views/sync/ClassLoader.vue | 51 +- .../ui/src/views/sync/HeapDump.vue | 8 +- .../ui/src/views/sync/Ognl.vue | 7 +- .../ui/src/views/sync/Retransform.vue | 2 +- .../ui/src/views/sync/Thread.vue | 58 +- .../ui/src/views/sync/Vmtool.vue | 7 +- web-ui/arthasWebConsole/vite.config.ts | 27 +- web-ui/arthasWebConsole/yarn.lock | 760 +++++++++--------- 47 files changed, 1408 insertions(+), 889 deletions(-) create mode 100644 web-ui/arthasWebConsole/.env.tunnel create mode 100644 web-ui/arthasWebConsole/.env.ui delete mode 100644 web-ui/arthasWebConsole/ui/src/components/routeTo/NavAside.vue create mode 100644 web-ui/arthasWebConsole/ui/src/views/config/Jvm.vue create mode 100644 web-ui/arthasWebConsole/ui/src/views/config/Options.vue create mode 100644 web-ui/arthasWebConsole/ui/src/views/config/PerCounter.vue create mode 100644 web-ui/arthasWebConsole/ui/src/views/config/Sysenv.vue create mode 100644 web-ui/arthasWebConsole/ui/src/views/config/Sysprop.vue create mode 100644 web-ui/arthasWebConsole/ui/src/views/config/Vmoption.vue diff --git a/web-ui/arthasWebConsole/.env.tunnel b/web-ui/arthasWebConsole/.env.tunnel new file mode 100644 index 000000000..5aaf1f490 --- /dev/null +++ b/web-ui/arthasWebConsole/.env.tunnel @@ -0,0 +1,2 @@ +# NODE_ENV=production +VITE_AGENT=true \ No newline at end of file diff --git a/web-ui/arthasWebConsole/.env.ui b/web-ui/arthasWebConsole/.env.ui new file mode 100644 index 000000000..04da6f0fd --- /dev/null +++ b/web-ui/arthasWebConsole/.env.ui @@ -0,0 +1,2 @@ +# NODE_ENV=production +VITE_AGENT=false \ No newline at end of file diff --git a/web-ui/arthasWebConsole/package.json b/web-ui/arthasWebConsole/package.json index 1b8e5e03d..f8032dde4 100644 --- a/web-ui/arthasWebConsole/package.json +++ b/web-ui/arthasWebConsole/package.json @@ -3,8 +3,10 @@ "private": false, "version": "0.1.4", "scripts": { - "dev": "vite --port 8000", - "build": "vue-tsc --noEmit && vite build", + "dev": "vite --port 8000 --mode ui", + "dev:tunnel": "vite --port 8000 --mode tunnel", + "build": "vue-tsc --noEmit && vite build --mode ui", + "build:tunnel": "vue-tsc --noEmit && vite build --mode tunnel", "preview": "vite preview" }, "dependencies": { @@ -31,6 +33,6 @@ "tailwindcss": "^3.1.4", "typescript": "^4.7.4", "vite": "^2.9.9", - "vue-tsc": "^0.34.7" + "vue-tsc": "1.0.8" } } diff --git a/web-ui/arthasWebConsole/src/App.vue b/web-ui/arthasWebConsole/src/App.vue index a2d4481d5..0e6ed4adf 100644 --- a/web-ui/arthasWebConsole/src/App.vue +++ b/web-ui/arthasWebConsole/src/App.vue @@ -2,7 +2,7 @@ import { onMounted, ref } from "vue"; import { Terminal } from "xterm" import { FitAddon } from 'xterm-addon-fit'; -import {WebglAddon} from "xterm-addon-webgl" +import { WebglAddon } from "xterm-addon-webgl" let ws: WebSocket | undefined; @@ -14,9 +14,11 @@ const ip = ref("") const port = ref('') const iframe = ref(true) const fullSc = ref(true) +const agentID = ref('') +const isTunnel = import.meta.env.VITE_AGENT === 'true' const fitAddon = new FitAddon(); const webglAddon = new WebglAddon(); -let xterm = new Terminal({allowProposedApi: true}) +let xterm = new Terminal({ allowProposedApi: true }) onMounted(() => { ip.value = getUrlParam('ip') ?? window.location.hostname; @@ -27,7 +29,7 @@ onMounted(() => { startConnect(true); window.addEventListener('resize', function () { if (ws !== undefined && ws !== null) { - const {cols, rows} = fitAddon.proposeDimensions()! + const { cols, rows } = fitAddon.proposeDimensions()! ws.send(JSON.stringify({ action: 'resize', cols, rows: rows })); fitAddon.fit(); } @@ -56,7 +58,7 @@ function initWs(silent: boolean) { let scrollback = getUrlParam('scrollback') ?? '0'; - const {cols, rows} = initXterm(scrollback) + const { cols, rows } = initXterm(scrollback) xterm.onData(function (data) { ws?.send(JSON.stringify({ action: 'read', data: data })) }); @@ -85,7 +87,7 @@ function initXterm(scrollback: string) { scrollback: isValidNumber(scrollNumber) ? scrollNumber : DEFAULT_SCROLL_BACK }); xterm.loadAddon(fitAddon) - + xterm.open(document.getElementById('terminal')!); xterm.loadAddon(webglAddon) @@ -136,8 +138,8 @@ function disconnect() { function xtermFullScreen() { var ele = document.getElementById('terminal-card')!; requestFullScreen(ele); - ele.onfullscreenchange = (e:Event)=>{ - fitAddon.fit() + ele.onfullscreenchange = (e: Event) => { + fitAddon.fit() } } @@ -162,8 +164,8 @@ function requestFullScreen(element: HTMLElement) {