superset icon indicating copy to clipboard operation
superset copied to clipboard

feat: add bulk certify functionality to charts and dashboards

Open vedantprajapati opened this issue 8 months ago • 11 comments

SUMMARY

This PR introduces the ability to bulk certify charts and dashboards. This feature allows users to apply certification information (certified by, certification details) to multiple resources simultaneously. Our company uses certification as a way to validate charts and dashboards before publishing. Being able to certify in bulk is very useful when users create many similar components (especially when you have thousands of charts and dashboards).

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

image image image

TESTING INSTRUCTIONS

Select multiple charts/dashboards using bulk select and certify them. users can only certify if they have the canEdit permission.

ADDITIONAL INFORMATION

  • [ ] Has associated issue:
  • [ ] Required feature flags:
  • [X] Changes UI
  • [ ] Includes DB Migration (follow approval process in SIP-59)
    • [ ] Migration is atomic, supports rollback & is backwards-compatible
    • [ ] Confirm DB migration upgrade and downgrade tested
    • [ ] Runtime estimates and downtime expectations provided
  • [X] Introduces new feature or API
  • [ ] Removes existing feature or API

vedantprajapati avatar Apr 04 '25 19:04 vedantprajapati

awesome!

JZ6 avatar Apr 04 '25 19:04 JZ6

@kasiazjc to take a look at the ui change

sadpandajoe avatar Apr 07 '25 17:04 sadpandajoe

Thanks for the PR - useful feature! And it's great to see that expanding the bulk-update functionality is pretty straightforward.

Thinking about UX/design - if/once we add a few extra bulk-action feature, it might make sense to refactor the buttons into an Action dropdown, but I think for now it's ok as is with just 3 buttons. Tagging @kasiazjc (designer) for input/feedback.

mistercrunch avatar Apr 07 '25 19:04 mistercrunch

@mistercrunch good point. On that note, at GEOTAB, we also have a separate bulk update owners feature as well. This was sought after from our users as a way to transfer ownership or to share their data for collaborating. We have them separate though because the bulk update owners has a few more checks we do on our end.

vedantprajapati avatar Apr 07 '25 20:04 vedantprajapati

Right. Parameterized bulk actions probably brings us into slightly more complex design territories. Would involve dynamic controls based on the action that is selected. Could be good to have a mock of what that would look like.

Though from my perspective the current UX (as of this PR) is "ok for now".

mistercrunch avatar Apr 07 '25 20:04 mistercrunch

Could be good to have a mock of what that would look like.

Sure, let me see if i can make a separate PR for some other bulk functionalities we have

vedantprajapati avatar Apr 07 '25 22:04 vedantprajapati

will this pr be merged in?

JZ6 avatar Apr 10 '25 15:04 JZ6

are we good to merge this one for now then?

Though from my perspective the current UX (as of this PR) is "ok for now".

vedantprajapati avatar Apr 17 '25 16:04 vedantprajapati

are we good to merge this one for now then?

Though from my perspective the current UX (as of this PR) is "ok for now".

thanks @vedantprajapati and sorry for the long wait!

I think the perfect case scenario would be to combine all actions in a dropdown as we actually have 4 actions @mistercrunch:

  • delete
  • certify
  • export
  • tag (which is not really visible)

I would suggest using this component, the one with the caret down image

Primary action would be export and all of the other ones would be in the dropdown menu (certify, tag, delete) and it would be displayed next to "deselect all" instead of all of the buttons.

Thoughts?

kasiazjc avatar Jun 05 '25 15:06 kasiazjc

@kasiazjc okay, so for the scope of this ticket we'll just have those 4 moved to a dropdown with default being export. if @mistercrunch is okay with it, I can look into implementing this! it will definitely come in handy in the future with https://github.com/apache/superset/pull/33040

vedantprajapati avatar Jun 09 '25 11:06 vedantprajapati

SGTM!

mistercrunch avatar Jun 12 '25 23:06 mistercrunch

@mistercrunch I've made the change, tests broke because it's a UI change. Please verify and then the tests can be fixed. on another note, how can i fix https://github.com/apache/superset/actions/runs/15742296412/job/44370616138?pr=33002#step:4:4753

vedantprajapati avatar Jun 18 '25 20:06 vedantprajapati

Just noting that this seems to need a rebase... hope it's not too bad :)

rusackas avatar Jul 09 '25 08:07 rusackas

are we good to merge this one for now then?

Though from my perspective the current UX (as of this PR) is "ok for now".

thanks @vedantprajapati and sorry for the long wait!

I think the perfect case scenario would be to combine all actions in a dropdown as we actually have 4 actions @mistercrunch:

  • delete
  • certify
  • export
  • tag (which is not really visible)

I would suggest using this component, the one with the caret down image

Primary action would be export and all of the other ones would be in the dropdown menu (certify, tag, delete) and it would be displayed next to "deselect all" instead of all of the buttons.

Thoughts?

Hey @kasiazjc @mistercrunch , I've added the component in superset now! let me know if this works for you and I can proceed with making the test fixes.

image

vedantprajapati avatar Jul 09 '25 17:07 vedantprajapati

@mistercrunch Processing your ephemeral environment request here. Action: up. More information on how to use or configure ephemeral environments

github-actions[bot] avatar Jul 09 '25 19:07 github-actions[bot]

Fired up an ephemeral environment and tagging @yousoph and @kasiazjc for user review/acceptance. Still need a code review here, let me see if I can find the time to review today.

mistercrunch avatar Jul 09 '25 19:07 mistercrunch

@mistercrunch Ephemeral environment spinning up at http://35.90.255.222:8080. Credentials are 'admin'/'admin'. Please allow several minutes for bootstrapping and startup.

github-actions[bot] avatar Jul 09 '25 19:07 github-actions[bot]

I think the button dropdown looks off, maybe it's not aligned? Screenshot 2025-07-09 at 1 15 52 PM

sadpandajoe avatar Jul 09 '25 20:07 sadpandajoe

I think the button dropdown looks off, maybe it's not aligned? Screenshot 2025-07-09 at 1 15 52 PM

image

Fixed

vedantprajapati avatar Jul 10 '25 13:07 vedantprajapati

Thanks for the contribution!

I took a look at the ephemeral env from a couple days back and I noticed that the certification doesn't always update right away after it's been applied

Here I had selected all but 2 dashboards bulk selected + certified but only one of them updates right away (before I refresh the page). I tried it with 2 charts and the page looks like it's updating but the certification icon doesn't appear. If I refresh the page, everything works as expected but the initial state is a bit confusing image

yousoph avatar Jul 11 '25 07:07 yousoph

I took a look at the ephemeral env from a couple days back and I noticed that the certification doesn't always update right away after it's been applied

Hey @yousoph I'm unable to replicate this. the certification icon appears automatically when i do it.

image image

vedantprajapati avatar Jul 11 '25 11:07 vedantprajapati

@mistercrunch Ephemeral environment spinning up at http://35.90.255.222:8080. Credentials are 'admin'/'admin'. Please allow several minutes for bootstrapping and startup.

is it possible to respin up the environment with the latest changes?

vedantprajapati avatar Jul 11 '25 11:07 vedantprajapati

@mistercrunch Processing your ephemeral environment request here. Action: up. More information on how to use or configure ephemeral environments

github-actions[bot] avatar Jul 11 '25 20:07 github-actions[bot]

@mistercrunch Ephemeral environment spinning up at http://44.248.244.106:8080. Credentials are 'admin'/'admin'. Please allow several minutes for bootstrapping and startup.

github-actions[bot] avatar Jul 11 '25 20:07 github-actions[bot]

Thanks for the contribution!

I took a look at the ephemeral env from a couple days back and I noticed that the certification doesn't always update right away after it's been applied

After looking into it a little more. it seems like I didn't notice that the refreshData() and onHide() are called before the API requests actually complete which is why it only completely updates on browser refresh. let me push a fix @yousoph

vedantprajapati avatar Sep 04 '25 00:09 vedantprajapati

Code Review Agent Run #4f508d

Actionable Suggestions - 0
Review Details
  • Files reviewed - 1 · Commit Range: ece3cc8..8eb6664
    • superset-frontend/src/components/ListView/ListView.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Default Agent You can customize the agent settings here or contact your Bito workspace admin at [email protected].

Documentation & Help

AI Code Review powered by Bito Logo

bito-code-review[bot] avatar Sep 04 '25 14:09 bito-code-review[bot]

Code Review Agent Run #92311e

Actionable Suggestions - 0
Review Details
  • Files reviewed - 2 · Commit Range: 8eb6664..5cb475a
    • superset-frontend/src/components/ListView/ListView.tsx
    • superset-frontend/src/features/bulkUpdate/BulkCertifyModal.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Default Agent You can customize the agent settings here or contact your Bito workspace admin at [email protected].

Documentation & Help

AI Code Review powered by Bito Logo

bito-code-review[bot] avatar Sep 04 '25 16:09 bito-code-review[bot]

🎪 Showtime is building environment on GHA for 0b6178d

github-actions[bot] avatar Sep 08 '25 18:09 github-actions[bot]

🎪 Showtime deployed environment on GHA for 0b6178d

Environment: http://52.37.209.36:8080 (admin/admin) • Lifetime: 24h auto-cleanup • Updates: New commits create fresh environments automatically

github-actions[bot] avatar Sep 08 '25 18:09 github-actions[bot]

Looks like the certification state is updating correctly now :)

yousoph avatar Sep 08 '25 19:09 yousoph