feat: import Excel via chat Léa, suppression nœuds VWB, fix temperature 0.1
- Chat Léa : "importe patients.xlsx" → preview → confirmation → table SQLite Bouton 📎 pour upload fichier, "montre les tables", "info table X" - VWB : suppression nœuds via touche Suppr/Backspace + bouton croix rouge - Fix : toutes les températures VLM à 0.1 (qwen3-vl bloque à 0.0) - Fix : capture VWB avec DISPLAY=:1 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -133,7 +133,7 @@ function App() {
|
||||
id: step.id,
|
||||
type: 'step',
|
||||
position: step.position || { x: 100, y: 100 + index * 120 },
|
||||
data: { step },
|
||||
data: { step, onDelete: handleDeleteStep },
|
||||
}));
|
||||
|
||||
setNodes(newNodes);
|
||||
@@ -475,10 +475,13 @@ function App() {
|
||||
onEdgesChange={onEdgesChange}
|
||||
onConnect={onConnect}
|
||||
onEdgesDelete={onEdgesDelete}
|
||||
onNodesDelete={(deleted) => {
|
||||
deleted.forEach((node) => handleDeleteStep(node.id));
|
||||
}}
|
||||
onNodeClick={(_, node) => handleSelectStep(node.id)}
|
||||
onNodeDragStop={handleNodeDragStop}
|
||||
nodeTypes={nodeTypes}
|
||||
deleteKeyCode="Delete"
|
||||
deleteKeyCode={['Delete', 'Backspace']}
|
||||
fitView
|
||||
>
|
||||
<Controls />
|
||||
|
||||
@@ -5,7 +5,7 @@ import { ACTIONS } from '../types';
|
||||
import { getAnchorThumbnailUrl } from '../services/api';
|
||||
|
||||
interface StepNodeProps {
|
||||
data: { step: Step };
|
||||
data: { step: Step; onDelete?: (id: string) => void };
|
||||
selected?: boolean;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,20 @@ function StepNode({ data, selected }: StepNodeProps) {
|
||||
|
||||
return (
|
||||
<div className={`step-node ${selected ? 'selected' : ''} ${isConditional ? 'conditional' : ''} ${isDataLoop ? 'data-loop' : ''} ${isImport ? 'data-import' : ''}`}>
|
||||
{/* Bouton supprimer */}
|
||||
{selected && (
|
||||
<button
|
||||
className="step-node-delete"
|
||||
title="Supprimer (Suppr)"
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
data.onDelete?.(step.id);
|
||||
}}
|
||||
>
|
||||
×
|
||||
</button>
|
||||
)}
|
||||
|
||||
{/* Entrée: haut */}
|
||||
<Handle
|
||||
type="target"
|
||||
|
||||
@@ -415,6 +415,32 @@ body {
|
||||
padding: 0.5rem;
|
||||
font-size: 12px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.step-node-delete {
|
||||
position: absolute;
|
||||
top: -8px;
|
||||
right: -8px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 50%;
|
||||
background: #e53935;
|
||||
color: white;
|
||||
border: 2px solid white;
|
||||
font-size: 14px;
|
||||
line-height: 1;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 10;
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.step-node-delete:hover {
|
||||
background: #c62828;
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
.step-node.selected {
|
||||
|
||||
Reference in New Issue
Block a user