SIP-145 Proposal for Embeddable Charts using the same mechanism as #17187

Motivation

The existing method of embedding charts is using iframe method. What this means is that the user have to be logged-in in parallel to the superset system for the chart to display without a login screen in the embedded mode.

Similar to embedding dashboards as outlined in SIP-75, superset dashboard developers would like to embed charts in a similar fashion so that the login page does not appear and a parallel login is not needed by the end user, avoiding the user to have an account created in superset to view the charts.

Proposed Change

This SIP is aimed to implement the Embedded Charts capability using the same GuestToken method that the Embeddable Dashboards are using.

New or Changed Public Interfaces

Added REST endpoints

GET    {host}/api/v1/chart/{pk}/embedded
POST   {host}/api/v1/chart/{pk}/embedded
DELETE {host}/api/v1/chart/{pk}/embedded

Added Views

In addition to existing view {host}/embedded/{uuid}, added the following

{host}/embedded/dashboard/{uuid} 
{host}/embedded/chart/{uuid}

NOTE: {host}/embedded/dashboard/{uuid} works the same way as {host}/embedded/{uuid}, which should be deprecated and removed in one of the subsequent versions.

New dependencies

None

Migration Plan and Compatibility

Needs a migration. Please see the attached merge request to see the migration details. A new table called embedded_charts will be added and a foreign key reference will be made to the slices table.

Rejected Alternatives

Did not discuss alternate approaches

Comment From: Michila0

Is this done

Comment From: rusackas

Is this done

Not even close... the proposal has been numbered, but has not yet been put up for a discussion on the ASF list, which then would lead to a vote, which then would open the door for the work to be completed/merged.

@Michila0 do you have thoughts on the proposal you'd like to add to carry the discussion forward?

Comment From: Michila0

ASF list? I like contribute with you

Comment From: rusackas

Discussion opened! Feedback welcome, and anyone volunteering to help contribute to this should chime in on the linked PR and/or reach out to @jayakrishnankk on slack or other means.

Comment From: rusackas

I'll open the vote on this, if everyone agrees it's ready.

Comment From: villebro

I'd like to add here that I think this is a natural progression of SIP-75, and could arguably have been considered being covered by that SIP already. So big thanks @jayakrishnankk for taking this on, this will be very valuable for cases where one wants to only embed a single chart, as opposed to a full dashboard.

Comment From: mistercrunch

Hey I just wanted to point out that an easy workaround is to create a single-chart dashboard and embed that, which may not fully cover all the use cases. It's not unlikely that in the future of Superset - once we allow for in-dashboard-chart-creation, that charts wouldn't exist outside the context of a dashboard.

Comment From: rusackas

Closing and moving this on the SIP board, since the VOTE thread has PASSED! Thanks @jayakrishnankk and thanks in advance for the implementation!

Comment From: rusackas

@jayakrishnankk is this still on your roadmap? I still like the idea :D

Comment From: rusackas

@amaannawab923 thanks for the PR, but it seems to be quite out of date and needs a rebase. Still intending to get that through?