|
|
|
@ -1,7 +1,11 @@
|
|
|
|
|
import { ServiceError, TacticService } from "../service/MutableTacticService.ts"
|
|
|
|
|
import { useNavigate, useParams } from "react-router-dom"
|
|
|
|
|
import { useCallback, useEffect, useMemo, useReducer, useState } from "react"
|
|
|
|
|
import { VisualizerState, VisualizerStateActionKind, visualizerStateReducer } from "../visualizer/VisualizerState.ts"
|
|
|
|
|
import { useCallback, useEffect, useMemo, useState } from "react"
|
|
|
|
|
import {
|
|
|
|
|
useVisualizer,
|
|
|
|
|
VisualizerState,
|
|
|
|
|
VisualizerStateActionKind,
|
|
|
|
|
} from "../visualizer/VisualizerState.ts"
|
|
|
|
|
import { getParent } from "../domains/StepsDomain.ts"
|
|
|
|
|
import { mapToParentContent } from "../domains/TacticContentDomains.ts"
|
|
|
|
|
import StepsTree from "../components/editor/StepsTree.tsx"
|
|
|
|
@ -23,14 +27,18 @@ export function VisualizerPage({ guestMode }: VisualizerPageProps) {
|
|
|
|
|
|
|
|
|
|
if (guestMode || !idStr) {
|
|
|
|
|
return (
|
|
|
|
|
<ServedVisualizerPage service={LocalStorageTacticService.init()}
|
|
|
|
|
openEditor={() => navigate("/tactic/edit-guest")} />
|
|
|
|
|
<ServedVisualizerPage
|
|
|
|
|
service={LocalStorageTacticService.init()}
|
|
|
|
|
openEditor={() => navigate("/tactic/edit-guest")}
|
|
|
|
|
/>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<ServedVisualizerPage service={new APITacticService(parseInt(idStr))}
|
|
|
|
|
openEditor={() => navigate(`/tactic/${idStr}/edit`)} />
|
|
|
|
|
<ServedVisualizerPage
|
|
|
|
|
service={new APITacticService(parseInt(idStr))}
|
|
|
|
|
openEditor={() => navigate(`/tactic/${idStr}/edit`)}
|
|
|
|
|
/>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -45,9 +53,12 @@ interface ServedVisualizerPageProps {
|
|
|
|
|
openEditor: () => void
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ServedVisualizerPage({ service, openEditor }: ServedVisualizerPageProps) {
|
|
|
|
|
function ServedVisualizerPage({
|
|
|
|
|
service,
|
|
|
|
|
openEditor,
|
|
|
|
|
}: ServedVisualizerPageProps) {
|
|
|
|
|
const [panicMessage, setPanicMessage] = useState<string>()
|
|
|
|
|
const [state, dispatch] = useReducer(visualizerStateReducer, null)
|
|
|
|
|
const [state, dispatch] = useVisualizer(null)
|
|
|
|
|
const [canEdit, setCanEdit] = useState(false)
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
@ -116,7 +127,6 @@ function ServedVisualizerPage({ service, openEditor }: ServedVisualizerPageProps
|
|
|
|
|
[openEditor, service, state],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (panicMessage) {
|
|
|
|
|
return <p>{panicMessage}</p>
|
|
|
|
|
}
|
|
|
|
@ -125,7 +135,13 @@ function ServedVisualizerPage({ service, openEditor }: ServedVisualizerPageProps
|
|
|
|
|
return <p>Retrieving tactic context. Please wait...</p>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return <VisualizerPageContent state={state} service={visualizerService} showEditButton={canEdit} />
|
|
|
|
|
return (
|
|
|
|
|
<VisualizerPageContent
|
|
|
|
|
state={state}
|
|
|
|
|
service={visualizerService}
|
|
|
|
|
showEditButton={canEdit}
|
|
|
|
|
/>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interface VisualizerPageContentProps {
|
|
|
|
@ -177,12 +193,12 @@ function VisualizerPageContent({
|
|
|
|
|
onClick={() => setStepsTreeVisible((b) => !b)}>
|
|
|
|
|
ETAPES
|
|
|
|
|
</button>
|
|
|
|
|
{showEditButton && <button
|
|
|
|
|
onClick={() => service.openEditor()}>
|
|
|
|
|
{showEditButton && (
|
|
|
|
|
<button onClick={() => service.openEditor()}>
|
|
|
|
|
EDITER
|
|
|
|
|
</button>}
|
|
|
|
|
</button>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div id="editor-div">
|
|
|
|
|