feat: Docker管理器添加进入容器和查看日志功能按钮

#49
This commit is contained in:
Baobhan Sith
2025-06-04 09:55:31 +08:00
parent 4d22bcb3c9
commit a81fb6fdaf
4 changed files with 34 additions and 5 deletions
@@ -3,12 +3,14 @@ import { computed } from 'vue';
import { useI18n } from 'vue-i18n';
import { useSessionStore } from '../stores/session.store';
import { storeToRefs } from 'pinia';
import { useWorkspaceEventEmitter } from '../composables/workspaceEvents';
const { t } = useI18n();
const sessionStore = useSessionStore();
const { activeSession } = storeToRefs(sessionStore); // Get reactive active session
const emitWorkspaceEvent = useWorkspaceEventEmitter();
// --- Get Docker Manager Instance from Active Session ---
const dockerManager = computed(() => activeSession.value?.dockerManager);
@@ -33,6 +35,20 @@ const toggleExpand = (containerId: string) => {
dockerManager.value?.toggleExpand(containerId);
};
const enterContainer = (containerId: string) => {
if (activeSession.value?.sessionId) {
const command = `docker exec -it ${containerId} sh\n`; // \n for auto-execution
emitWorkspaceEvent('terminal:sendCommand', { command, sessionId: activeSession.value.sessionId });
}
};
const viewContainerLogs = (containerId: string) => {
if (activeSession.value?.sessionId) {
const command = `docker logs --tail 1000 -f ${containerId}\n`; // \n for auto-execution
emitWorkspaceEvent('terminal:sendCommand', { command, sessionId: activeSession.value.sessionId });
}
};
// --- Removed internal state, methods (setupWsListeners, clearWsListeners, requestDockerStatus), watcher, and lifecycle hooks (onMounted, onUnmounted) ---
</script>
@@ -142,9 +158,15 @@ const toggleExpand = (containerId: string) => {
<button @click="sendDockerCommand(container.id, 'restart')" :title="t('dockerManager.action.restart')" class="text-text-secondary hover:text-blue-500 disabled:text-text-disabled disabled:cursor-not-allowed transition-colors duration-150 p-0.5 text-base" :disabled="container.State !== 'running'">
<i class="fas fa-sync-alt"></i>
</button>
<button @click="sendDockerCommand(container.id, 'remove')" :title="t('dockerManager.action.remove')" class="text-text-secondary hover:text-red-500 disabled:text-text-disabled disabled:cursor-not-allowed transition-colors duration-150 p-0.5 text-base" :disabled="container.State === 'running'">
<button @click="sendDockerCommand(container.id, 'remove')" :title="t('dockerManager.action.remove')" class="text-text-secondary hover:text-red-500 disabled:text-text-disabled disabled:cursor-not-allowed transition-colors duration-150 p-0.5 text-base" >
<i class="fas fa-trash-alt"></i>
</button>
<button @click="enterContainer(container.id)" :title="t('dockerManager.action.enter')" class="text-text-secondary hover:text-blue-400 transition-colors duration-150 p-0.5 text-base">
<i class="fas fa-terminal"></i>
</button>
<button @click="viewContainerLogs(container.id)" :title="t('dockerManager.action.logs')" class="text-text-secondary hover:text-gray-400 transition-colors duration-150 p-0.5 text-base">
<i class="fas fa-file-alt"></i>
</button>
</div>
</td>
+3 -1
View File
@@ -1387,7 +1387,9 @@
"restart": "Restart",
"stop": "Stop",
"start": "Start",
"remove": "Remove"
"remove": "Remove",
"enter": "Enter",
"logs": "Logs"
},
"waitingForSsh": "Waiting for SSH connection...",
"stats": {
+4 -1
View File
@@ -316,7 +316,10 @@
"remove": "削除",
"restart": "再起動",
"start": "起動",
"stop": "停止"
"stop": "停止",
"enter": "入力",
"logs": "ログ"
},
"error": {
"commandFailed": "リモートコマンド'{command}'の実行に失敗しました",
+3 -1
View File
@@ -1391,7 +1391,9 @@
"restart": "重启",
"stop": "停止",
"start": "启动",
"remove": "移除"
"remove": "移除",
"enter": "进入",
"logs": "日志"
},
"waitingForSsh": "等待 SSH 连接...",
"stats": {