refactor: unify create session forms - show clone mode everywhere and display fixed fields as read-only
This commit is contained in:
@@ -12,7 +12,10 @@ interface CreateSessionFormProps {
|
|||||||
toolTypes: ToolType[];
|
toolTypes: ToolType[];
|
||||||
fixedProjectId?: string;
|
fixedProjectId?: string;
|
||||||
fixedRepoId?: string;
|
fixedRepoId?: string;
|
||||||
|
projectName?: string;
|
||||||
|
repoName?: string;
|
||||||
showCloneMode?: boolean;
|
showCloneMode?: boolean;
|
||||||
|
showFixedFields?: boolean;
|
||||||
onProjectChange?: (projectId: string) => void;
|
onProjectChange?: (projectId: string) => void;
|
||||||
onSuccess?: (instance: ToolInstance) => void;
|
onSuccess?: (instance: ToolInstance) => void;
|
||||||
onCancel?: () => void;
|
onCancel?: () => void;
|
||||||
@@ -26,7 +29,10 @@ export const CreateSessionForm = ({
|
|||||||
toolTypes,
|
toolTypes,
|
||||||
fixedProjectId,
|
fixedProjectId,
|
||||||
fixedRepoId,
|
fixedRepoId,
|
||||||
showCloneMode = false,
|
projectName,
|
||||||
|
repoName,
|
||||||
|
showCloneMode = true,
|
||||||
|
showFixedFields = true,
|
||||||
onProjectChange,
|
onProjectChange,
|
||||||
onSuccess,
|
onSuccess,
|
||||||
onCancel,
|
onCancel,
|
||||||
@@ -132,7 +138,17 @@ export const CreateSessionForm = ({
|
|||||||
|
|
||||||
<form onSubmit={handleSubmit} className="stack create-session-form">
|
<form onSubmit={handleSubmit} className="stack create-session-form">
|
||||||
<div className="form-row">
|
<div className="form-row">
|
||||||
{!fixedProjectId && (
|
{fixedProjectId && showFixedFields ? (
|
||||||
|
<label className="form-field">
|
||||||
|
Project
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
value={projectName || projects.find((p) => p.id === fixedProjectId)?.name || ""}
|
||||||
|
disabled
|
||||||
|
readOnly
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
) : (
|
||||||
<label className="form-field">
|
<label className="form-field">
|
||||||
Project
|
Project
|
||||||
<select
|
<select
|
||||||
@@ -155,7 +171,17 @@ export const CreateSessionForm = ({
|
|||||||
</label>
|
</label>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{!fixedRepoId && (
|
{fixedRepoId && showFixedFields ? (
|
||||||
|
<label className="form-field">
|
||||||
|
Repository
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
value={repoName || repositories.find((r) => r.id === fixedRepoId)?.name || ""}
|
||||||
|
disabled
|
||||||
|
readOnly
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
) : (
|
||||||
<label className="form-field">
|
<label className="form-field">
|
||||||
Repository
|
Repository
|
||||||
<select
|
<select
|
||||||
|
|||||||
@@ -19,10 +19,12 @@ const API_BASE_URL = import.meta.env.VITE_API_BASE_URL ?? "http://localhost:8000
|
|||||||
interface InstanceListProps {
|
interface InstanceListProps {
|
||||||
projectId: string;
|
projectId: string;
|
||||||
repoId: string;
|
repoId: string;
|
||||||
|
projectName?: string;
|
||||||
|
repoName?: string;
|
||||||
toolTypes: ToolType[];
|
toolTypes: ToolType[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export const InstanceList = ({ projectId, repoId, toolTypes }: InstanceListProps) => {
|
export const InstanceList = ({ projectId, repoId, projectName, repoName, toolTypes }: InstanceListProps) => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const [instances, setInstances] = useState<ToolInstance[]>([]);
|
const [instances, setInstances] = useState<ToolInstance[]>([]);
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
@@ -304,6 +306,8 @@ export const InstanceList = ({ projectId, repoId, toolTypes }: InstanceListProps
|
|||||||
toolTypes={toolTypes}
|
toolTypes={toolTypes}
|
||||||
fixedProjectId={projectId}
|
fixedProjectId={projectId}
|
||||||
fixedRepoId={repoId}
|
fixedRepoId={repoId}
|
||||||
|
projectName={projectName}
|
||||||
|
repoName={repoName}
|
||||||
onSuccess={handleCreateSuccess}
|
onSuccess={handleCreateSuccess}
|
||||||
onCancel={() => setShowCreate(false)}
|
onCancel={() => setShowCreate(false)}
|
||||||
submitLabel="Launch"
|
submitLabel="Launch"
|
||||||
|
|||||||
@@ -254,6 +254,8 @@ export const RepoWorkspace = () => {
|
|||||||
<InstanceList
|
<InstanceList
|
||||||
projectId={projectId!}
|
projectId={projectId!}
|
||||||
repoId={selectedRepoId}
|
repoId={selectedRepoId}
|
||||||
|
projectName={project?.name}
|
||||||
|
repoName={repositories.find((r) => r.id === selectedRepoId)?.name}
|
||||||
toolTypes={toolTypes}
|
toolTypes={toolTypes}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -565,7 +565,6 @@ export const SessionsPage = () => {
|
|||||||
projects={projects}
|
projects={projects}
|
||||||
repositories={repositories}
|
repositories={repositories}
|
||||||
toolTypes={toolTypes}
|
toolTypes={toolTypes}
|
||||||
showCloneMode={true}
|
|
||||||
onProjectChange={(projectId) => {
|
onProjectChange={(projectId) => {
|
||||||
setSelectedProject(projectId);
|
setSelectedProject(projectId);
|
||||||
}}
|
}}
|
||||||
|
|||||||
Reference in New Issue
Block a user