SIP-1: Adding Custom Icons to the Database Connection Form (For MySQL Database)
Abstract
The goal is to enhance the user interface of the database connection form by adding custom icons for MySQL databases.
Motivation
The current database connection form lacks visual cues that can improve user experience. By duplicating icons from the given URL and the [+Database] in STEP 1, we can make the form more intuitive and user-friendly.
Proposed Change
Implement the following steps:
Backend
- Implement a new database engine and make the database available at the
/available/
endpoint. This involves creating a new class in the db_engine_specs
module that defines the behavior of the new engine.
Configuration
- Adjust the
superset_text.yml
file accordingly for each custom type of MySQL database. This file contains the display text for various parts of the Superset application.
Frontend
- Generate a custom dynamic form in STEP 2 based on a remote type database engine that was selected in STEP 1. Add an extra list of radio buttons. This involves modifying the form generation logic to include the new engine and its associated form fields.
SIP-2: Replicating the Superset Frontend Logic to Generate Dynamic Forms
Abstract
The aim is to replicate the Superset frontend logic to generate dynamic forms to connect to external API resources (On Cloud with username/password).
Motivation
This change will allow Superset to connect to a wider range of data sources, increasing its versatility and usefulness.
Proposed Change
Implement the following steps:
Frontend
-
Make modifications to setDatabaseModal
to include the new custom engines and set db state to this. This involves modifying the state management logic to include the new engines.
-
Use db to generate the custom dynamic form instead of SQLAlchemy. This involves changing the form generation logic to use the new db
object.
Backend
- Make an API request to a new custom endpoint on the backend with the username/password that will run a custom python script to pull the data into Superset. This involves creating a new API endpoint and a Python script that fetches data from the external API.
References
Superset-customization branch