Skip to content

Commit

Permalink
画面追加系の操作の不便さを解消 (#66)
Browse files Browse the repository at this point in the history
* 🐛 画面追加時に追加した主催者のみが新しい画面に遷移するようにした

* 🐛 存在しない画面のURLにアクセスされた場合にセッションのデフォルト画面に遷移させるようにした

* 🐛 タイプを指定してセッションの構築をする際に想定の画面が初期表示にならず、必ず最後の画面が初期表示になってしまっていた不具合の修正
  • Loading branch information
HillTopTRPG committed Feb 10, 2024
1 parent 4f497d2 commit 79d3269
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 24 deletions.
21 changes: 13 additions & 8 deletions client/src/PaneLayoutTemplate/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,24 +24,29 @@ module Scope {
}

export async function addDashboards(graphQlStore: GraphQlStore, sessionType: string): Promise<string> {
const waitDashboardNum = (num: number): Promise<void> => {
return new Promise((resolve: () => void) => {
const waitDashboard = (dashboardName: string): Promise<string> => {
return new Promise((resolve: (dashboardId: string) => void) => {
const timerId = setInterval(() => {
const dashboardNum = graphQlStore.state.dashboards.length
if (dashboardNum === num) {
const dashboard = graphQlStore.state.dashboards.find(d => d.name === dashboardName)
if (dashboard) {
clearInterval(timerId)
resolve()
resolve(dashboard.id)
}
}, 200)
}, 100)
})
}
let defaultDashboardId: string | null = null
if (sessionType === 'Shinobigami') {
await graphQlStore.addDashboard('シナリオデータ管理', ScenarioDataManagePaneLayout, Scope.OWNER)
await graphQlStore.addDashboard('キャラクターシート管理', CharacterSheetManagePaneLayout, Scope.ALL)
await graphQlStore.addDashboard('データ閲覧', DataViewPaneLayout, Scope.ALL)
await graphQlStore.addDashboard('特技比較', SpecialityTableDiffPaneLayout, Scope.ALL)
await waitDashboardNum(4)
return graphQlStore.state.dashboards.find(d => d.name === 'データ閲覧')?.id || ''
defaultDashboardId = await waitDashboard('データ閲覧')
}
if (defaultDashboardId) {
const sessionName = graphQlStore?.state.session?.name || ''
await graphQlStore.updateSession(sessionName, sessionType, defaultDashboardId)
await graphQlStore.directDashboardAccess(defaultDashboardId)
}
return ''
}
13 changes: 1 addition & 12 deletions client/src/components/graphql/graphql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -825,7 +825,7 @@ export default function useGraphQl(userToken: string, playerToken: string, sessi
}
state.dashboardCache.set(state.dashboard.id, clone<Dashboard>(state.dashboard)!)
} else {
await directDashboardAccess(dashboardId)
await directDashboardAccess(dashboardId || data.defaultDashboard.id)
}
} else {
state.dashboard = null
Expand Down Expand Up @@ -1183,17 +1183,6 @@ export default function useGraphQl(userToken: string, playerToken: string, sessi
option: JSON.parse(data.option) as DashboardOption
}
state.dashboards.push(dashboard)
if (state.dashboard) {
state.dashboard.layout = null
}
setTimeout(() => {
state.dashboard = {
...dashboard,
layout: JSON.parse(data.layout) as Layout,
option: JSON.parse(data.option) as DashboardOption
}
state.dashboardCache.set(state.dashboard.id, clone<Dashboard>(state.dashboard)!)
})
}
},
error(errorValue: any) {
Expand Down
19 changes: 15 additions & 4 deletions client/src/components/view/SessionView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -341,17 +341,28 @@ onMounted(() => {
async function onSubmitSessionType(sessionType: string): Promise<void> {
if (!graphQlStore) return
const sessionName = graphQlStore?.state.session?.name || ''
const defaultDashboardId = graphQlStore?.state.session?.defaultDashboardId
const newDefaultDashboardId = await addDashboards(graphQlStore, sessionType)
await graphQlStore.updateSession(sessionName, sessionType, defaultDashboardId || newDefaultDashboardId)
await addDashboards(graphQlStore, sessionType)
}
async function addDashboard() {
if (!graphQlStore) return
const beforeDashboards = graphQlStore?.state.dashboards.map(d => d.id)
await graphQlStore.addDashboard(addDashboardName.value, defaultLayout, { scope: 'all' })
const getNewDashboard = (): Promise<string> => {
return new Promise((resolve: (newDashboardId: string) => void) => {
const timerId = setInterval(() => {
const newDashboard = graphQlStore.state.dashboards.find(ad => !beforeDashboards?.includes(ad.id))
if (newDashboard) {
clearInterval(timerId)
resolve(newDashboard.id)
}
}, 100)
})
}
const newDashboardId = await getNewDashboard()
addDashboardName.value = DEFAULT_DASHBOARD_NAME
addDashboardMenu.value = false
await graphQlStore.directDashboardAccess(newDashboardId)
}
const addDashboardNameElm = ref()
Expand Down

0 comments on commit 79d3269

Please sign in to comment.