From 13c352691a4688fb0d354a2cc97436e1ef13fa6d Mon Sep 17 00:00:00 2001 From: lijiahang Date: Thu, 11 Jan 2024 19:24:33 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=8B=86=E5=88=86=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E9=85=8D=E7=BD=AE.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orion-ops-ui/src/utils/bell.ts | 33 ++++++++ .../components/layout/terminal-content.vue | 5 +- .../layout/terminal-left-sidebar.vue | 5 -- .../view-setting/terminal-general-setting.vue | 28 +++++++ .../view-setting/terminal-interact-block.vue | 82 +++++++++++++++++++ .../view-setting/terminal-session-block.vue | 33 ++++++++ .../components/xterm/terminal-view.vue | 21 +---- .../host/terminal/handler/terminal-session.ts | 2 +- .../src/views/host/terminal/index.vue | 2 +- .../host/terminal/types/terminal.const.ts | 5 -- 10 files changed, 183 insertions(+), 33 deletions(-) create mode 100644 orion-ops-ui/src/utils/bell.ts create mode 100644 orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-general-setting.vue create mode 100644 orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-interact-block.vue create mode 100644 orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-session-block.vue diff --git a/orion-ops-ui/src/utils/bell.ts b/orion-ops-ui/src/utils/bell.ts new file mode 100644 index 00000000..b89e73e1 --- /dev/null +++ b/orion-ops-ui/src/utils/bell.ts @@ -0,0 +1,33 @@ +/** + * 钟鸣 + * @param frequency 蜂鸣器频率Hz + * @param duration 持续时间 + */ +export const playBell = (frequency: number = 400, duration: number = .2) => { + try { + // 创建 AudioContext 对象 + const audioCtx = new (window.AudioContext)(); + const buffer = audioCtx.createBuffer(1, audioCtx.sampleRate, audioCtx.sampleRate); + const channelData = buffer.getChannelData(0); + // 获取正弦波形数据 + const sampleRate = audioCtx.sampleRate; + const numSamples = Math.floor(duration * sampleRate); + const sineWaveData = []; + for (let i = 0; i < numSamples; ++i) { + const time = i / sampleRate; + // 计算当前样本点的值 + const value = Math.sin(2 * Math.PI * frequency * time); + // 将值转换为-1到+1之间的范围内 + sineWaveData[i] = value > 0 ? value : -value; + } + // 复制正弦波形数据到buffer中 + for (let i = 0; i < sineWaveData.length; ++i) { + channelData[i] = sineWaveData[i]; + } + const source = audioCtx.createBufferSource(); + source.buffer = buffer; + source.connect(audioCtx.destination); + source.start(); + } catch (e) { + } +}; diff --git a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue index 1e9d2c2d..3b8c5c26 100644 --- a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue +++ b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue @@ -13,6 +13,8 @@ + +