enhancement
major
minor
major
minor
major
#29729
TL Views: Ein Flussdiagramm (flow-diagram) lässt sich nicht für Mehrfachauswahl konfigurieren
Problem
Ein React-Flussdiagramm (<flow-diagram> in einer .view.xml, com.top_logic.react.flow.server.ui.FlowDiagramElement) erlaubt immer nur die Auswahl eines Elements. Das Modell kennt zwar Diagram#multiSelect, und die Klick-Handler in com.top_logic.react.flow.common (SelectableBoxOperations, GraphEdgeOperations) werten CTRL/Shift dafür aus, aber die Eigenschaft lässt sich nirgends setzen:
- Die TL-Script-Funktion reactFlowChart(...) (com.top_logic.react.flow.server.script.FlowFactory#chart) hat keinen Parameter dafür.
- <flow-diagram> hat keine Option dafür (anders als <table selection-mode="multi">).
Im klassischen FlowChartComponent (tl-graphic-blocks) wird multiSelect dagegen aus dem Selektionsmodell der Komponente übernommen (Template-Parameter multiSelection).
Lösung
Mehrfachauswahl für <flow-diagram>
<flow-diagram> hat die neue Option selection-mode mit den Werten single (Standard) und multi, wie die Tabelle. FlowDiagramElement setzt damit Diagram#multiSelect auf jedem Diagramm, das das Skript createChart baut; das Skript muss die Einstellung nicht selbst setzen.
{{{#!xml <flow-diagram selection="selectedNode" selection-mode="multi"> ... </flow-diagram> }}}
Damit greift auch die in #29728 eingeführte Unterscheidung für React-Diagramme vollständig: Ein Klick mit Strg behält die im Diagramm nicht dargestellte Auswahl, ein normaler Klick ersetzt die ganze Auswahl.
Die Flussdiagramm-Demo in com.top_logic.demo.react (demo/flow-diagram-demo.view.xml) zeigt die Mehrfachauswahl. Diagramm und Tabelle „Bauschritte“ teilen sich die Auswahl; das Formular „Details“ zeigt einen Bauschritt nur, solange genau einer ausgewählt ist.
Auswahl per Rechteck mit Strg+Ziehen
In einem Flussdiagramm mit Mehrfachauswahl zeichnet Ziehen mit gedrückter Strg-Taste ein Rechteck, statt den Ausschnitt zu verschieben. Beim Loslassen kommt jedes auswählbare Element, das vollständig im Rechteck liegt, zur Auswahl hinzu, wie bei einem Strg-Klick auf jedes davon:
- Die bisherige Auswahl bleibt erhalten, auch Objekte, die das Diagramm nicht darstellt.
- Ein Strg-Klick ohne Mausbewegung bleibt ein Klick.
- Esc während des Ziehens bricht ab, ohne die Auswahl zu ändern.
- Ziehen ohne Strg verschiebt wie bisher den Ausschnitt.
Das gilt für React-Diagramme (<flow-diagram selection-mode="multi">) und für das klassische FlowChartComponent mit multiSelection="true". Das Rechteck trägt die CSS-Klasse tlSelectionRectangle.
Nicht auswählbare Kanten
Eine Kante eines Graphen (reactFlowGraphEdge), die nicht als selectable markiert ist, wird nicht mehr als ausgewählt markiert, wenn der Auswahlkanal das Benutzerobjekt enthält, das sie trägt. Bisher wurde sie unsichtbar markiert, und ihr Objekt galt als im Diagramm dargestellt.