mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-05 19:20:12 +08:00
chore: Move open terminal in new tab to terminal component
This commit is contained in:
1 parent
ab4d06498a
commit
5b7bf0794c
12 files changed
+23
-18
No files matched your search
@@ -145,3 +145,4 @@ dist
|
|||||||
|
|
||||||
#screenshots
|
#screenshots
|
||||||
tests/cypress/screenshots
|
tests/cypress/screenshots
|
||||||
|
services/cmd-hook/cmd-hook
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { useToast } from 'vue-toastification'
|
import { useToast } from 'vue-toastification'
|
||||||
import useSession from '../../store/session'
|
import { useSession } from '../../store/session'
|
||||||
import { openBugReport, openQuestSurvey } from '../../utils/formbricks'
|
import { openBugReport, openQuestSurvey } from '../../utils/formbricks'
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, ref, watch } from 'vue'
|
import { computed, ref, watch } from 'vue'
|
||||||
import useSession from '../../store/session'
|
import { useSession } from '../../store/session'
|
||||||
import MarkdownText from '../MarkdownText.vue'
|
import MarkdownText from '../MarkdownText.vue'
|
||||||
|
|
||||||
const sessionStore = useSession()
|
const sessionStore = useSession()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import MarkdownText from '../MarkdownText.vue'
|
import MarkdownText from '../MarkdownText.vue'
|
||||||
import useSession from '../../store/session'
|
import { useSession } from '../../store/session'
|
||||||
|
|
||||||
const sessionStore = useSession()
|
const sessionStore = useSession()
|
||||||
const tasks = computed(() => {
|
const tasks = computed(() => {
|
||||||
@@ -22,11 +22,6 @@ const tasks = computed(() => {
|
|||||||
<div class="h-full w-full max-h-full">
|
<div class="h-full w-full max-h-full">
|
||||||
<p id="topic" class="text-text font-black" v-if="sessionStore.quest">
|
<p id="topic" class="text-text font-black" v-if="sessionStore.quest">
|
||||||
{{ sessionStore.quest.title }}
|
{{ sessionStore.quest.title }}
|
||||||
<a
|
|
||||||
:href="`http://localhost/terminal/${sessionStore.session?.containerName}?token=${sessionStore.session?.token}`"
|
|
||||||
>
|
|
||||||
Open Terminal
|
|
||||||
</a>
|
|
||||||
</p>
|
</p>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useToast } from 'vue-toastification'
|
import { useToast } from 'vue-toastification'
|
||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import useSession from '../../store/session'
|
import { useSession } from '../../store/session'
|
||||||
|
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
const sessionStore = useSession()
|
const sessionStore = useSession()
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onMounted, onUnmounted, ref } from 'vue'
|
import { onMounted, onUnmounted, ref } from 'vue'
|
||||||
import { useTerminal } from '../../store/session'
|
import { useSession, useTerminal } from '../../store/session'
|
||||||
|
|
||||||
|
const sessionStore = useSession()
|
||||||
|
|
||||||
const terminal = ref<HTMLElement | null>(null)
|
const terminal = ref<HTMLElement | null>(null)
|
||||||
const term = useTerminal()
|
const term = useTerminal()
|
||||||
@@ -23,6 +25,14 @@ onMounted(() => {
|
|||||||
<div class="flex items-center gap-2 p-1">
|
<div class="flex items-center gap-2 p-1">
|
||||||
<font-awesome-icon :icon="['fas', 'terminal']" class="text-text" />
|
<font-awesome-icon :icon="['fas', 'terminal']" class="text-text" />
|
||||||
<button id="Terminal" class="text-text">終端機</button>
|
<button id="Terminal" class="text-text">終端機</button>
|
||||||
|
|
||||||
|
<a
|
||||||
|
class="text-sm font-normal text-gray-200 ml-10"
|
||||||
|
:href="`/terminal/${sessionStore.session?.containerName}?token=${sessionStore.session?.token}`"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Open Terminal in New Tab
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
id="terminal"
|
id="terminal"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import FileNode from '../FileNode.vue'
|
import FileNode from '../FileNode.vue'
|
||||||
import useSession from '../../store/session'
|
import { useSession } from '../../store/session'
|
||||||
|
|
||||||
const sessionStore = useSession()
|
const sessionStore = useSession()
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { useToast } from 'vue-toastification'
|
|||||||
import { logout } from '../../utils/auth'
|
import { logout } from '../../utils/auth'
|
||||||
import { trpc } from '../../utils/trpc'
|
import { trpc } from '../../utils/trpc'
|
||||||
import { openBugReport } from '../../utils/formbricks'
|
import { openBugReport } from '../../utils/formbricks'
|
||||||
import useSession from '../../store/session'
|
import { useSession } from '../../store/session'
|
||||||
import useUserProfile from '../../store/userProfile'
|
import useUserProfile from '../../store/userProfile'
|
||||||
|
|
||||||
const userStore = useUserProfile()
|
const userStore = useUserProfile()
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ interface Store {
|
|||||||
quest: QuestDetailResponse | null
|
quest: QuestDetailResponse | null
|
||||||
}
|
}
|
||||||
|
|
||||||
const useSession = defineStore('session', {
|
export const useSession = defineStore('session', {
|
||||||
state: (): Store => ({
|
state: (): Store => ({
|
||||||
session: null,
|
session: null,
|
||||||
questId: '',
|
questId: '',
|
||||||
@@ -126,5 +126,3 @@ const useSession = defineStore('session', {
|
|||||||
export function useTerminal() {
|
export function useTerminal() {
|
||||||
return term
|
return term
|
||||||
}
|
}
|
||||||
|
|
||||||
export default useSession
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import formbricks from '@formbricks/js/website'
|
import formbricks from '@formbricks/js/website'
|
||||||
import useSession from '../store/session'
|
import { useSession } from '../store/session'
|
||||||
import useUserProfile from '../store/userProfile'
|
import useUserProfile from '../store/userProfile'
|
||||||
|
|
||||||
if (typeof window !== 'undefined') {
|
if (typeof window !== 'undefined') {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, onMounted, watch } from 'vue'
|
import { computed, onMounted, watch } from 'vue'
|
||||||
import useSession from '../store/session'
|
import { useSession } from '../store/session'
|
||||||
import useUserProfile from '../store/userProfile'
|
import useUserProfile from '../store/userProfile'
|
||||||
import HeaderPart from '../components/header/HeaderPart.vue'
|
import HeaderPart from '../components/header/HeaderPart.vue'
|
||||||
import GameHeaderComponents from '../components/header/GameHeaderComponents.vue'
|
import GameHeaderComponents from '../components/header/GameHeaderComponents.vue'
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import {
|
|||||||
} from '../containers/docker.js'
|
} from '../containers/docker.js'
|
||||||
import logger from '../utils/logger.js'
|
import logger from '../utils/logger.js'
|
||||||
import { questManager } from './quest.js'
|
import { questManager } from './quest.js'
|
||||||
|
import config from '../config'
|
||||||
|
|
||||||
async function deactivateSessions(userId: string, quest: string) {
|
async function deactivateSessions(userId: string, quest: string) {
|
||||||
const sessions = await Session.find({
|
const sessions = await Session.find({
|
||||||
@@ -65,7 +66,7 @@ export async function createNewSession(
|
|||||||
})
|
})
|
||||||
|
|
||||||
console.log('container', container.id)
|
console.log('container', container.id)
|
||||||
console.log('containerName', `http://localhost/terminal/${containerName}`)
|
console.log('containerName', `${config.baseUrl}/terminal/${containerName}`)
|
||||||
|
|
||||||
const progress = userProfile.progress.get(quest.id)
|
const progress = userProfile.progress.get(quest.id)
|
||||||
if (!progress) {
|
if (!progress) {
|
||||||
|
|||||||
Reference in new issue
Block a user