Skip to content

DNS: Experimental query builder demo#5176

Draft
stevegolton wants to merge 1 commit intomainfrom
dev/sg/qbp
Draft

DNS: Experimental query builder demo#5176
stevegolton wants to merge 1 commit intomainfrom
dev/sg/qbp

Conversation

@stevegolton
Copy link
Member

Note: This is an experiment representing some ideas for how a query builder could be architected and how it could look and feel.

  • On-node configuration (no sidebar). This puts the node config right where the graph is and avoids mousing around, while also making it easier to read the graph as all the information is right there.
  • Immutable (immer managed) node configuration allowing for simple and efficient undo/redo, and change detection.
  • JS-side column name and type inference.
  • JS-side materialization - no TP based serialization backend. Much simpler and just as effective, if not more, as we can get stats about cache hits etc.
  • SQL folding, resulting in much more readable SQL code generation.
  • Stable configs - when a node is detached from its parent, instead of forgetting its internal config its retains it and matches back columns via name when reconnected. If no such col name exists, highlight the column field in yellow for easy debugging.
  • Node style:
    • Color coded titlebars with always visible names. This makes the graph much easier to interpret as there is a clear separation between the node title and its content.
    • Nodes are only draggable via their title bars, which allows for draggable elements within the body of the node.
    • Inputs and outputs are constrained to the left and right edges, resulting in more pleasing connection beziers.

Note: This is an experiment representing my vision for how a
querybuilder should be architected and how it should look and feel.

- On-node configuration (no sidebar). This puts the node config right
  where the graph is and avoids mousing around, while also making it
  easier to read the graph as all the information is right there.
- Immutable (immer managed) node configuration allowing for simple
  and efficient undo/redo, and change detection.
- JS-side column name and type interence.
- JS-side materialization - no TP based serialization backend. Much
  simpler and just as effective, if not more, as we can get stats about
  cache hits etc.
- SQL folding, resulting in much more readable SQL code generation.
- Stable configs - when a node is detached from its parent, instead
  of forgetting its internal config its retains it and matches back
  columns via name when reconnected. If no such col name exists,
  highlight the column field in yellow for easy debugging.
- Node style:
  - Color coded titlebars with always visible names. This makes the
    graph much easier to interpret as there is a clear separation
    between the node title and its content.
  - Nodes are only draggable via their title bars, which allows for
    draggable elements within the body of the node.
  - Inputs and outputs are constrained to the left and right edges,
    resulting in more pleasing connection beziers.
@github-actions
Copy link

🎨 Perfetto UI Builds

@stevegolton stevegolton changed the title DNS: Experimental query builder/nodegraph demo DNS: Experimental query builder demo Mar 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant