feat: Add keyboard shortcut for executing script on selected rows in data browser#3171
Conversation
|
🚀 Thanks for opening this pull request! |
📝 WalkthroughWalkthroughAdds a configurable "Run Script on Selected Rows" keyboard shortcut, meta-key support for shortcuts, settings UI for the new shortcut, and wiring to DataBrowser and BrowserToolbar to trigger script execution for selected rows. Changes
Sequence Diagram(s)sequenceDiagram
participant User as User
participant DB as DataBrowser
participant KS as KeyboardShortcutsPreferences
participant SE as ScriptExecution
participant TB as BrowserToolbar
User->>DB: press keys
DB->>KS: matchesShortcut(event, dataBrowserRunScriptOnSelectedRows)
KS-->>DB: match result
alt shortcut matches and selection non-empty
DB->>SE: onExecuteScriptRows(selection)
SE-->>DB: execution result
DB->>DB: preventDefault()
end
DB->>TB: pass runScriptShortcut prop
TB->>TB: display shortcut in Script Run MenuItem
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/dashboard/Settings/KeyboardShortcutsSettings.react.js (1)
112-117:⚠️ Potential issue | 🟡 MinorDuplicate shortcut detection misses the new key.
Currently only two shortcuts are compared, so the new shortcut can silently collide and create ambiguous behavior. Please include
dataBrowserRunScriptOnSelectedRowsin the uniqueness check.🔧 Suggested fix
- // Check for duplicates among shortcuts without meta modifier (only if set) - if (shortcuts.dataBrowserReloadData && shortcuts.dataBrowserToggleInfoPanels && - shortcuts.dataBrowserReloadData.key.toLowerCase() === shortcuts.dataBrowserToggleInfoPanels.key.toLowerCase()) { - this.showNote('Keyboard shortcuts must be unique. Please use different keys.', true); - return; - } + // Check for duplicates among shortcuts without meta modifier (only if set) + const keys = [ + shortcuts.dataBrowserReloadData, + shortcuts.dataBrowserToggleInfoPanels, + shortcuts.dataBrowserRunScriptOnSelectedRows, + ] + .filter(Boolean) + .map(s => s.key.toLowerCase()); + if (new Set(keys).size !== keys.length) { + this.showNote('Keyboard shortcuts must be unique. Please use different keys.', true); + return; + }
🤖 Fix all issues with AI agents
In `@src/dashboard/Data/Browser/DataBrowser.react.js`:
- Around line 811-822: The shortcut handler fires before the input-element guard
and doesn't respect editable mode; update the run-script-on-selected-rows block
(the matchesShortcut check for shortcuts.dataBrowserRunScriptOnSelectedRows that
calls this.props.onExecuteScriptRows) to first ensure the event is not coming
from an input/textarea (same guard used elsewhere in this file) and that the
component is editable by checking this.props.onEditSelectedRow exists;
alternatively move this entire block to run after the existing input-element
guard and add a guard requiring this.props.onEditSelectedRow before invoking
this.props.onExecuteScriptRows.
# [8.3.0-alpha.41](8.3.0-alpha.40...8.3.0-alpha.41) (2026-02-05) ### Features * Add keyboard shortcut for executing script on selected rows in data browser ([#3171](#3171)) ([75389ad](75389ad))
|
🎉 This change has been released in version 8.3.0-alpha.41 |
# [8.3.0](8.2.0...8.3.0) (2026-02-05) ### Bug Fixes * Canvas graph element does not apply data filter option ([#3128](#3128)) ([00ff1aa](00ff1aa)) * Canvas is not expandable or scrollable beyond current view size ([#3140](#3140)) ([cb73122](cb73122)) * Cloud Config parameter modal cannot scroll when content scales beyond visible area ([#3124](#3124)) ([bb6de31](bb6de31)) * Context menu of header cell in info panel does not group related records by class name ([#3122](#3122)) ([230c1e2](230c1e2)) * Context menu sub-menu in data browser vertically misaligned when scrolling in parent menu ([#3120](#3120)) ([2acaa27](2acaa27)) * Dashboard crashes when adding Parse Pointer JSON to array field in data browser ([#3125](#3125)) ([70bf081](70bf081)) * Data browser graph requires value field even when calculated value is defined ([#3127](#3127)) ([53e4f2b](53e4f2b)) * Graph in canvas ignores date filter constraints ([#3137](#3137)) ([6d8b8e6](6d8b8e6)) * Group-by not using custom aggregation type for single-series graph ([#3159](#3159)) ([b8e8891](b8e8891)) * Incorrect percentage and average calculation for calculated values in graphs ([#3152](#3152)) ([14b4d48](14b4d48)) * Info panel auto-scrolling not pausing during UI interaction like text selection or context menu display ([#3165](#3165)) ([bfe4e8a](bfe4e8a)) * Name of calculated value in data browser graph allows leading and trailing spaces ([#3132](#3132)) ([9493b18](9493b18)) * Optimize data browser cell context menu grouping and readability ([#3141](#3141)) ([5c711e1](5c711e1)) * Security upgrade react-router and react-router-dom ([#3107](#3107)) ([b76b9d1](b76b9d1)) * Setting a keyboard shortcut to its default value creates an unnecessary dashboard config storage entry ([#3173](#3173)) ([4949053](4949053)) ### Features * Add auto-scrolling for info panels ([#3149](#3149)) ([3cd8197](3cd8197)) * Add canvas tree to sidebar instead of loading dialog and favorite functionality ([#3146](#3146)) ([e58dc82](e58dc82)) * Add cloning of element in canvas ([#3144](#3144)) ([dec06ad](dec06ad)) * Add context menu in data browser to add cell content or selected text to Cloud Config parameter ([#3123](#3123)) ([9bc5197](9bc5197)) * Add context menu in data browser to get related records from String and Number fields ([#3118](#3118)) ([824bebd](824bebd)) * Add context menu item to get related records for selected text in data browser cell ([#3142](#3142)) ([33d3595](33d3595)) * Add custom dashboard canvas with graphs and data tables ([#3126](#3126)) ([d45c27b](d45c27b)) * Add customizable styles for line and bar series in data browser graph ([#3131](#3131)) ([501dd4b](501dd4b)) * Add customizable Y-axis titles for data browser graphs ([#3130](#3130)) ([2946e64](2946e64)) * Add dialog to execute Cloud Job with parameters ([#3158](#3158)) ([da419e0](da419e0)) * Add expanded view for canvas elements graph, table, view ([#3156](#3156)) ([0ffd767](0ffd767)) * Add field `objectId` to get related records context menu in data browser ([#3161](#3161)) ([2847ccf](2847ccf)) * Add formula-based calculated value to data browser graph ([#3129](#3129)) ([7c5d1b3](7c5d1b3)) * Add keyboard shortcut for executing script on selected rows in data browser ([#3171](#3171)) ([75389ad](75389ad)) * Add more customization options for graphs in canvas ([#3134](#3134)) ([ddbd666](ddbd666)) * Add non-alphanumeric character detection in Cloud Config parameters ([#3143](#3143)) ([1594ec8](1594ec8)) * Add quick-remove button to array parameter in Cloud Config ([#3121](#3121)) ([b632074](b632074)) * Add support for server side storage of Cloud Config parameter history ([#3169](#3169)) ([964e540](964e540)) * Allow adding View elements to canvas ([#3133](#3133)) ([2f2ae9a](2f2ae9a)) * Allow to favorite canvas for quick-access via sidebar menu ([#3135](#3135)) ([1e3a3c7](1e3a3c7)) * Allow to pause auto-scroll of info panel by holding the Option key ([#3160](#3160)) ([db38f14](db38f14)) * Allow to use ESC key to cancel, Cmd + Enter key to submit, Tab key to navigate a modal dialog ([#3172](#3172)) ([debdc09](debdc09)) * Detect and warn about unprintable characters in Cloud Config parameter values ([#3119](#3119)) ([26c909c](26c909c)) * Improve usability and layout of canvas and elements ([#3148](#3148)) ([cd654dc](cd654dc)) * Optimize appearance of graph tick labels on x-axis for date values ([#3147](#3147)) ([a9edcaf](a9edcaf)) * Optimize canvas menu organization ([#3145](#3145)) ([1558826](1558826)) * Replace graph fields with graph series for more customization ([#3157](#3157)) ([51feba4](51feba4)) * Various improvements for auto-scrolling info panel ([#3151](#3151)) ([423d83a](423d83a))
Pull Request
Summary by CodeRabbit