You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Export was limited to a single object, while the metadata editor and the navigation tree both allow selecting several. The server exports one container per task, so a multi-object export is a list of export contexts sharing one processor configuration: one task and one download per object.
add ACTION_EXPORT to the object viewer footer menu, before Delete
export every selected node from the navigation tree context menu
resolve the connection per node, so a selection may span connections
Export was limited to a single object, while the metadata editor and the
navigation tree both allow selecting several. The server exports one
container per task, so a multi-object export is a list of export contexts
sharing one processor configuration: one task and one download per object.
- add ACTION_EXPORT to the object viewer footer menu, before Delete
- export every selected node from the navigation tree context menu
- resolve the connection per node, so a selection may span connections
- skip nodes that are not data containers
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer TIP This summary will be updated as you push new changes.
Moderate (2 votes): Applicability checks only the clicked node, preventing exports when it is a non-container. Moderate (2 votes): Tree menu context lacks the selected-node provider, so multi-selection falls back to one node. Moderate (1 vote): Uncached connections are not loaded before resolving export contexts.
Review follow-up: the tree context menu never saw more than the clicked node,
so a multi-selection still exported a single object.
- publish the tree selection as DATA_CONTEXT_NAV_NODES in TreeNodeMenu: the
menu context inherits from the view context, not from the node context where
the selection was being set, so getNodesFromContext always fell back to the
clicked node
- offer Export when any node of the selection is exportable, instead of
requiring the clicked node to be one
- rename TreeNodeMenuProps to ITreeNodeMenuProps, required by the naming
convention rule now that this file is part of the change
Review follow-up: getConnectionForNode only reads the resource cache, so a
selected object whose connection was not cached yet was skipped silently, and
the footer could look like it did nothing when every connection of the
selection was uncached.
The objectId of a navigator node carries the datasource id at every level, so
derive the key with getConnectionIdForNodeId and load it. Each connection of
the selection is resolved once.
…n fails
Review follow-up: a rejected connection load aborted the whole dialog, so a
single unavailable connection cancelled the export of every other selected
object, contradicting the contract of skipping nodes without a resolvable
connection.
The failure now skips only the objects of that connection and is reported
once per connection, instead of once per object.
…e state
Review follow-up covering the rest of the batch-export path:
- disambiguate file names when two selected objects share a connection and
name (e.g. two "users" tables in different schemas), instead of letting
withTimestamp's one-second resolution produce identical file names
- keep the dialog open while a batch is running, matching the footer buttons
that were already disabled during export, so closing it can't be used to
"cancel" while the loop keeps starting further tasks
- snapshot the processor/output settings once before the batch starts: the
configuration forms stay editable while it runs, so reading them live could
export different objects with different settings from a single click
- only toast per-object failures when at least one object did start; when the
whole batch fails, report it once inline instead of once per object plus
inline
- notify once when a selected node's connection can't even be identified, the
one remaining silent-drop path in getExportContexts
- resolve every distinct connection in parallel instead of one sequential
round trip per node, and simplify the per-node bookkeeping with a plain
connection id instead of linear equality scans
- short-circuit the tree menu's isApplicable on the common case (the clicked
node itself is exportable) before scanning the whole selection
- stabilize TreeNodeMenu's selection getter with useCallback: the data
context link reruns every render, and a new function reference was
invalidating every menu computed that reads the selection on each render
This getter cannot preserve a navigation-tree multi-selection: opening the row menu calls treeNodeContext.select() from NavigationNodeControl/ConnectionNavNodeControl, which invokes tree.select(..., false) and clears the other selected nodes before this callback is read. As a result, exporting from a selected group exports only the clicked node. Preserve the existing selection when opening the menu (or capture the selected nodes before calling select).
Review follow-up: right-clicking a node collapses the tree selection to just
that node before the menu even opens (NavigationNodeControl/
ConnectionNavNodeControl call treeNodeContext.select() unconditionally on
context-menu open, which is a single, non-multiple select). So exporting
from a multi-selected group via the context menu only ever exported the
clicked node, no matter what the menu itself reads.
Only replace the selection when the clicked node isn't already part of it,
matching the usual desktop convention: right-clicking inside an existing
multi-selection keeps it, right-clicking outside it starts a new one.
The reason will be displayed to describe this comment to others. Learn more.
Copilot review overview
🔵 Needs a closer look
Three moderate findings and one nit remain unresolved.
Review effort: Lite Findings: None
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Export was limited to a single object, while the metadata editor and the navigation tree both allow selecting several. The server exports one container per task, so a multi-object export is a list of export contexts sharing one processor configuration: one task and one download per object.