Add widget-control logic action and multi-column CSV / multi-field dialogs
Extend the panel logic editor with two capabilities: - action.widget: drive a panel widget by id from a flow — enable/disable, show/hide, and (for plot widgets) clear, pause, or resume the live plot. Wired via a per-widget command store consumed by a Canvas WidgetView wrapper (disable overlay / hide) and PlotWidget (pause/clear), reset on panel unmount. - action.export now emits multiple named arrays as CSV columns with per-column labels and an alignment mode (common/any/interpolate); dialogs support asking for and displaying multiple values per dialog. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+67
-1
@@ -399,6 +399,16 @@ body {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* Overlay shown over a widget disabled via action.widget logic: dims it and
|
||||
blocks interaction while still surfacing the right-click context menu. */
|
||||
.widget-disable-overlay {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
background: rgba(20, 25, 35, 0.45);
|
||||
cursor: not-allowed;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* ── Unknown widget ────────────────────────────────────────────────────────── */
|
||||
|
||||
.unknown-widget {
|
||||
@@ -1361,6 +1371,44 @@ body {
|
||||
}
|
||||
.flow-localvar-actions .panel-btn { flex: 1; }
|
||||
|
||||
/* Repeated rows in inspector editors (export columns, dialog fields). */
|
||||
.flow-row-edit {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.35rem;
|
||||
margin-bottom: 0.35rem;
|
||||
}
|
||||
.flow-row-edit .prop-input { flex: 1; min-width: 0; }
|
||||
.flow-row-add {
|
||||
width: 100%;
|
||||
margin-top: 0.15rem;
|
||||
}
|
||||
|
||||
.flow-field-edit {
|
||||
border: 1px solid #2a3548;
|
||||
border-radius: 4px;
|
||||
padding: 0.4rem;
|
||||
margin-bottom: 0.4rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.35rem;
|
||||
}
|
||||
.flow-field-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.35rem;
|
||||
}
|
||||
.flow-field-head .prop-input { flex: 1; min-width: 0; }
|
||||
.flow-field-kind {
|
||||
font-size: 0.75rem;
|
||||
color: #94a3b8;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
.flow-field-add {
|
||||
display: flex;
|
||||
gap: 0.35rem;
|
||||
}
|
||||
|
||||
/* ── History pane ───────────────────────────────────────────────────────── */
|
||||
|
||||
.history-pane {
|
||||
@@ -3570,7 +3618,25 @@ kbd {
|
||||
|
||||
.logic-dialog-input {
|
||||
width: 100%;
|
||||
margin-bottom: 0.75rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* A single field row (input or display) in a multi-value dialog. */
|
||||
.logic-dialog-field {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.2rem;
|
||||
margin-bottom: 0.6rem;
|
||||
}
|
||||
.logic-dialog-label {
|
||||
font-size: 0.8rem;
|
||||
color: #94a3b8;
|
||||
}
|
||||
.logic-dialog-value {
|
||||
font-size: 0.9rem;
|
||||
font-weight: 600;
|
||||
color: #e2e8f0;
|
||||
padding: 0.2rem 0;
|
||||
}
|
||||
|
||||
.logic-dialog-actions {
|
||||
|
||||
Reference in New Issue
Block a user