🔨 切换标签自适应页面.
This commit is contained in:
@@ -1,16 +1,18 @@
|
|||||||
import type { IDisposable, ITerminalOptions } from 'xterm';
|
import type { IDisposable, ITerminalOptions, ITerminalInitOnlyOptions } from 'xterm';
|
||||||
import { Terminal } from 'xterm';
|
import { Terminal } from 'xterm';
|
||||||
import { FitAddon } from 'xterm-addon-fit';
|
import { FitAddon } from 'xterm-addon-fit';
|
||||||
import { SearchAddon } from 'xterm-addon-search';
|
import { SearchAddon } from 'xterm-addon-search';
|
||||||
import { CanvasAddon } from 'xterm-addon-canvas';
|
import { CanvasAddon } from 'xterm-addon-canvas';
|
||||||
|
|
||||||
// appender 配置
|
// appender 配置
|
||||||
export const AppenderOption: ITerminalOptions = {
|
export const AppenderOptions: ITerminalOptions & ITerminalInitOnlyOptions = {
|
||||||
theme: {
|
theme: {
|
||||||
foreground: '#FFFFFF',
|
foreground: '#FFFFFF',
|
||||||
background: '#202020',
|
background: '#202020',
|
||||||
selectionBackground: '#B5D5FF',
|
selectionBackground: '#B5D5FF',
|
||||||
},
|
},
|
||||||
|
cols: 30,
|
||||||
|
rows: 8,
|
||||||
rightClickSelectsWord: true,
|
rightClickSelectsWord: true,
|
||||||
disableStdin: true,
|
disableStdin: true,
|
||||||
cursorStyle: 'bar',
|
cursorStyle: 'bar',
|
||||||
@@ -47,6 +49,9 @@ export interface ILogAppender {
|
|||||||
// 初始化
|
// 初始化
|
||||||
init(refs: Array<LogDomRef>): Promise<void>;
|
init(refs: Array<LogDomRef>): Promise<void>;
|
||||||
|
|
||||||
|
// 自适应
|
||||||
|
fit(): void;
|
||||||
|
|
||||||
// 关闭 client
|
// 关闭 client
|
||||||
closeClient(): void;
|
closeClient(): void;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { ExecTailRequest } from '@/api/exec/exec';
|
import type { ExecTailRequest } from '@/api/exec/exec';
|
||||||
import { getExecLogTailToken } from '@/api/exec/exec';
|
import { getExecLogTailToken } from '@/api/exec/exec';
|
||||||
import type { ILogAppender, LogAddons, LogAppenderConf, LogDomRef } from './appender.const';
|
import type { ILogAppender, LogAddons, LogAppenderConf, LogDomRef } from './appender.const';
|
||||||
import { AppenderOption } from './appender.const';
|
import { AppenderOptions } from './appender.const';
|
||||||
import { webSocketBaseUrl } from '@/utils/env';
|
import { webSocketBaseUrl } from '@/utils/env';
|
||||||
import { Message } from '@arco-design/web-vue';
|
import { Message } from '@arco-design/web-vue';
|
||||||
import { createWebSocket } from '@/utils';
|
import { createWebSocket } from '@/utils';
|
||||||
@@ -48,7 +48,7 @@ export default class LogAppender implements ILogAppender {
|
|||||||
// 打开 log-view
|
// 打开 log-view
|
||||||
for (let logDomRef of logDomRefs) {
|
for (let logDomRef of logDomRefs) {
|
||||||
// 初始化 terminal
|
// 初始化 terminal
|
||||||
const terminal = new Terminal(AppenderOption);
|
const terminal = new Terminal(AppenderOptions);
|
||||||
// 初始化插件
|
// 初始化插件
|
||||||
const addons = this.initAddons(terminal);
|
const addons = this.initAddons(terminal);
|
||||||
// 打开终端
|
// 打开终端
|
||||||
@@ -105,6 +105,7 @@ export default class LogAppender implements ILogAppender {
|
|||||||
// 自适应
|
// 自适应
|
||||||
fit(): void {
|
fit(): void {
|
||||||
Object.values(this.appenderRel).forEach(s => {
|
Object.values(this.appenderRel).forEach(s => {
|
||||||
|
console.log(s);
|
||||||
s.addons?.fit?.fit();
|
s.addons?.fit?.fit();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
import type { VNodeRef } from 'vue';
|
import type { VNodeRef } from 'vue';
|
||||||
import type { ExecCommandResponse } from '@/api/exec/exec';
|
import type { ExecCommandResponse } from '@/api/exec/exec';
|
||||||
import type { LogDomRef, ILogAppender } from '@/components/xtrem/log-appender/appender.const';
|
import type { LogDomRef, ILogAppender } from '@/components/xtrem/log-appender/appender.const';
|
||||||
import { nextTick, ref } from 'vue';
|
import { nextTick, ref, watch } from 'vue';
|
||||||
import { formatDuration } from '@/utils';
|
import { formatDuration } from '@/utils';
|
||||||
import { execHostStatus, execHostStatusKey } from '@/views/exec/exec-log/types/const';
|
import { execHostStatus, execHostStatusKey } from '@/views/exec/exec-log/types/const';
|
||||||
import { useDictStore } from '@/store';
|
import { useDictStore } from '@/store';
|
||||||
@@ -72,6 +72,13 @@
|
|||||||
const logRefs = ref<Array<LogDomRef>>([]);
|
const logRefs = ref<Array<LogDomRef>>([]);
|
||||||
const appender = ref<ILogAppender>();
|
const appender = ref<ILogAppender>();
|
||||||
|
|
||||||
|
// 切换标签自适应
|
||||||
|
watch(() => props.current, () => {
|
||||||
|
nextTick(() => {
|
||||||
|
appender.value?.fit();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// 打开
|
// 打开
|
||||||
const open = () => {
|
const open = () => {
|
||||||
nextTick(async () => {
|
nextTick(async () => {
|
||||||
@@ -138,7 +145,7 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100% - @header-height);
|
height: calc(100% - @header-height);
|
||||||
position: relative;
|
position: relative;
|
||||||
background: #212529;
|
background: #202020;
|
||||||
padding: 4px 0 0 4px;
|
padding: 4px 0 0 4px;
|
||||||
|
|
||||||
.log-appender {
|
.log-appender {
|
||||||
|
|||||||
Reference in New Issue
Block a user