diff --git a/_docs/master/configuring-metabase/images/AccountSetup.png b/_docs/master/configuring-metabase/images/AccountSetup.png index e19016a0b9..d3bf7c1ba2 100644 Binary files a/_docs/master/configuring-metabase/images/AccountSetup.png and b/_docs/master/configuring-metabase/images/AccountSetup.png differ diff --git a/_docs/master/configuring-metabase/images/table-view.png b/_docs/master/configuring-metabase/images/table-view.png index b561a8dc44..7b253a5ff6 100644 Binary files a/_docs/master/configuring-metabase/images/table-view.png and b/_docs/master/configuring-metabase/images/table-view.png differ diff --git a/_docs/master/dashboards/images/add-filter.png b/_docs/master/dashboards/images/add-filter.png index 7206824958..23fae3c80c 100644 Binary files a/_docs/master/dashboards/images/add-filter.png and b/_docs/master/dashboards/images/add-filter.png differ diff --git a/_docs/master/dashboards/images/add_series.png b/_docs/master/dashboards/images/add_series.png index 23fae3c80c..fe91f2db8b 100644 Binary files a/_docs/master/dashboards/images/add_series.png and b/_docs/master/dashboards/images/add_series.png differ diff --git a/_docs/master/dashboards/images/autorefresh.png b/_docs/master/dashboards/images/autorefresh.png index a1c1f9a61a..94609cbf0d 100644 Binary files a/_docs/master/dashboards/images/autorefresh.png and b/_docs/master/dashboards/images/autorefresh.png differ diff --git a/_docs/master/dashboards/images/button-form.png b/_docs/master/dashboards/images/button-form.png index ee763c576e..3d205c8796 100644 Binary files a/_docs/master/dashboards/images/button-form.png and b/_docs/master/dashboards/images/button-form.png differ diff --git a/_docs/master/dashboards/images/click-behavior-icon.png b/_docs/master/dashboards/images/click-behavior-icon.png index 2a41076032..8f34234f01 100644 Binary files a/_docs/master/dashboards/images/click-behavior-icon.png and b/_docs/master/dashboards/images/click-behavior-icon.png differ diff --git a/_docs/master/dashboards/images/dashboard-filter-action.png b/_docs/master/dashboards/images/dashboard-filter-action.png index 3c1075bed2..3147da6c90 100644 Binary files a/_docs/master/dashboards/images/dashboard-filter-action.png and b/_docs/master/dashboards/images/dashboard-filter-action.png differ diff --git a/_docs/master/dashboards/images/dashboard.png b/_docs/master/dashboards/images/dashboard.png index 155d34f84e..1805c738fe 100644 Binary files a/_docs/master/dashboards/images/dashboard.png and b/_docs/master/dashboards/images/dashboard.png differ diff --git a/_docs/master/dashboards/images/drill-through-menu.png b/_docs/master/dashboards/images/drill-through-menu.png index cc2c707278..9d2e0c76a7 100644 Binary files a/_docs/master/dashboards/images/drill-through-menu.png and b/_docs/master/dashboards/images/drill-through-menu.png differ diff --git a/_docs/master/dashboards/images/filters.png b/_docs/master/dashboards/images/filters.png index c95f02b4aa..2a41076032 100644 Binary files a/_docs/master/dashboards/images/filters.png and b/_docs/master/dashboards/images/filters.png differ diff --git a/_docs/master/dashboards/images/foreign-key-linked-filters.png b/_docs/master/dashboards/images/foreign-key-linked-filters.png index b060334122..4a4a249b2b 100644 Binary files a/_docs/master/dashboards/images/foreign-key-linked-filters.png and b/_docs/master/dashboards/images/foreign-key-linked-filters.png differ diff --git a/_docs/master/dashboards/images/linked-filter.png b/_docs/master/dashboards/images/linked-filter.png index 4fcbddf7a4..c359f99030 100644 Binary files a/_docs/master/dashboards/images/linked-filter.png and b/_docs/master/dashboards/images/linked-filter.png differ diff --git a/_docs/master/dashboards/images/markdown.png b/_docs/master/dashboards/images/markdown.png index c9c10c5129..ba5b16adda 100644 Binary files a/_docs/master/dashboards/images/markdown.png and b/_docs/master/dashboards/images/markdown.png differ diff --git a/_docs/master/dashboards/images/wiring-up-filter.png b/_docs/master/dashboards/images/wiring-up-filter.png index a5066926cc..e9e9e50b5d 100644 Binary files a/_docs/master/dashboards/images/wiring-up-filter.png and b/_docs/master/dashboards/images/wiring-up-filter.png differ diff --git a/_docs/master/data-modeling/images/formula.png b/_docs/master/data-modeling/images/formula.png index 8e020111ca..0f02f4868c 100644 Binary files a/_docs/master/data-modeling/images/formula.png and b/_docs/master/data-modeling/images/formula.png differ diff --git a/_docs/master/data-modeling/images/table-metadata.png b/_docs/master/data-modeling/images/table-metadata.png index d16aabea01..73d3c7c159 100644 Binary files a/_docs/master/data-modeling/images/table-metadata.png and b/_docs/master/data-modeling/images/table-metadata.png differ diff --git a/_docs/master/databases/connections/bigquery.md b/_docs/master/databases/connections/bigquery.md index 6752184795..c99a544a50 100644 --- a/_docs/master/databases/connections/bigquery.md +++ b/_docs/master/databases/connections/bigquery.md @@ -168,6 +168,12 @@ If you're having trouble with your BigQuery connection, you can check out this [ There aren't (yet) any model features available for BigQuery. +## Database routing + +Database routing for BigQuery works between BigQuery **projects** with identical schemas. + +See [Database routing](../../permissions/database-routing). + ## Danger zone See [Danger zone](../danger-zone). diff --git a/_docs/master/databases/connections/mongodb.md b/_docs/master/databases/connections/mongodb.md index 17ca9a8664..1948f77c8e 100644 --- a/_docs/master/databases/connections/mongodb.md +++ b/_docs/master/databases/connections/mongodb.md @@ -121,7 +121,7 @@ Learn more about [configuring SSL with MongoDB](http://mongodb.github.io/mongo-j ## How Metabase syncs data in MongoDB -Because MongoDB contains unstructured data, Metabase takes a different approach to syncing your database's metadata. To get a sense of the schema, Metabase will query the first and last 500 documents (most of the calculation is done in MongoDB). This sampling helps Metabase do things like differentiate datetime fields from string fields, and provide people with pre-populated filters. The reason Metabase only scans a sample of the documents is because scanning every document in every collection on every sync would put too much strain on your database. And while the sampling does a pretty good job keeping Metabase up to date, it can also mean that new fields can sometimes fall through the cracks, leading to visualization issues, or even fields failing to appear in your results. For more info, check out our [troubleshooting guide](../../troubleshooting-guide/db-connection). +Because MongoDB contains unstructured data, Metabase takes a different approach to syncing your database's metadata. To get a sense of the schema, Metabase will query the first and last 500 documents (most of the calculation is done in MongoDB). This sampling helps Metabase do things like differentiate datetime fields from string fields, and provide people with pre-populated filters. Metabase also syncs 1,000 leaf fields (fields at the deepest nesting level) per MongoDB collection. The reason Metabase only scans a sample of the documents is because scanning every document in every collection on every sync would put too much strain on your database. And while the sampling does a pretty good job keeping Metabase up to date, it can also mean that new fields can sometimes fall through the cracks, leading to visualization issues, or even fields failing to appear in your results. For more info, check out our [troubleshooting guide](../../troubleshooting-guide/db-connection). ## General connectivity concerns diff --git a/_docs/master/databases/images/atlas-connect.png b/_docs/master/databases/images/atlas-connect.png index cda55015c1..4377047e1f 100644 Binary files a/_docs/master/databases/images/atlas-connect.png and b/_docs/master/databases/images/atlas-connect.png differ diff --git a/_docs/master/databases/images/connection-string.png b/_docs/master/databases/images/connection-string.png index edba66aced..ab5411a6fb 100644 Binary files a/_docs/master/databases/images/connection-string.png and b/_docs/master/databases/images/connection-string.png differ diff --git a/_docs/master/databases/images/snowflake-copy-account-url.png b/_docs/master/databases/images/snowflake-copy-account-url.png index cf9a18f67a..82457d4e06 100644 Binary files a/_docs/master/databases/images/snowflake-copy-account-url.png and b/_docs/master/databases/images/snowflake-copy-account-url.png differ diff --git a/_docs/master/developers-guide/community-drivers.md b/_docs/master/developers-guide/community-drivers.md index 813138954b..2b13b29798 100644 --- a/_docs/master/developers-guide/community-drivers.md +++ b/_docs/master/developers-guide/community-drivers.md @@ -37,7 +37,7 @@ Anyone can build a community driver. These are the currently known third-party d | ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | [CSV](https://github.com/Markenson/csv-metabase-driver) | ![GitHub stars](https://img.shields.io/github/stars/Markenson/csv-metabase-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/Markenson/csv-metabase-driver) | | [Databend](https://github.com/databendcloud/metabase-databend-driver) | ![GitHub stars](https://img.shields.io/github/stars/databendcloud/metabase-databend-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/databendcloud/metabase-databend-driver) | -| [DB2](https://github.com/damienchambe/metabase-db2-driver) | ![GitHub stars](https://img.shields.io/github/stars/damienchambe/metabase-db2-driver) | ![Github (Pre-)Release Date](https://img.shields.io/github/release-date-pre/damienchambe/metabase-db2-driver) | +| [DB2](https://github.com/damienchambe/metabase-db2-driver) | ![GitHub stars](https://img.shields.io/github/stars/damienchambe/metabase-db2-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/damienchambe/metabase-db2-driver) | | [Dremio](https://github.com/Baoqi/metabase-dremio-driver) | ![GitHub stars](https://img.shields.io/github/stars/Baoqi/metabase-dremio-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/Baoqi/metabase-dremio-driver) | | [DuckDB](https://github.com/MotherDuck-Open-Source/metabase_duckdb_driver) | ![GitHub stars](https://img.shields.io/github/stars/MotherDuck-Open-Source/metabase_duckdb_driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/MotherDuck-Open-Source/metabase_duckdb_driver) | | [Firebolt](https://github.com/firebolt-db/metabase-firebolt-driver) | ![GitHub stars](https://img.shields.io/github/stars/firebolt-db/metabase-firebolt-driver) | ![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/firebolt-db/metabase-firebolt-driver) | diff --git a/_docs/master/developers-guide/devenv.md b/_docs/master/developers-guide/devenv.md index b5798dc53c..14d6002437 100644 --- a/_docs/master/developers-guide/devenv.md +++ b/_docs/master/developers-guide/devenv.md @@ -28,6 +28,8 @@ yarn dev This runs both the [frontend](#frontend) and [backend](#backend). Alternatively, you can run them separately in two terminal sessions below. +To use any other database beside the default ones please take a look at [Building Drivers](#building-drivers) further down in this document. + ### Frontend Metabase depends on third-party libraries to run, so you'll need to keep those up to date. The Clojure CLI will automatically fetch the dependencies when needed. With JavaScript dependencies, however, you'll need to kick off the installation process manually. diff --git a/_docs/master/developers-guide/driver-changelog.md b/_docs/master/developers-guide/driver-changelog.md index c33e2b3045..6d2e7f459a 100644 --- a/_docs/master/developers-guide/driver-changelog.md +++ b/_docs/master/developers-guide/driver-changelog.md @@ -27,6 +27,9 @@ layout: new-docs replace existing keys like `:alias`, `:join-alias`, or `:name`; make sure you use `driver-api/qp.add.alias`, `driver-api/qp.add.source-table`, and `driver-api/qp.add.source-alias` respectively. +- Added the driver multi-method `driver/extra-info` for drivers to provide info such as db routing configuration details + from their `metabase-plugin.yaml` file. + - Extend `datetime()` to accept UTF-8 encoded binary and numbers (unix timestamps) in addition to strings. - Added a feature `:expressions/today` for drivers that support generating a date for the current day. @@ -58,7 +61,6 @@ layout: new-docs `metabase.driver/upload-type->database-type` or `metabase.driver/allowed-promotions` -- make sure you use `:metabase.upload/varchar-255` rather than something like `::upload/varchar-255`. -- Added the multi-method `metabase.driver.sql.parameters.substitution/time-grouping->replacement-snippet-info`. This is effectively `->replacement-snippet-info` for the new native query time grouping feature, but is its own separate multimethod because it needs an extra parameter. - The `metabase.models.secret` namespace has been replaced with `metabase.secrets.core`; if you were using it please update your usages. diff --git a/_docs/master/developers-guide/frontend.md b/_docs/master/developers-guide/frontend.md index 1031ea7210..1e0630eef2 100644 --- a/_docs/master/developers-guide/frontend.md +++ b/_docs/master/developers-guide/frontend.md @@ -266,7 +266,7 @@ function getFoo(a, b, c) { } ``` -- Be conservative with what comments you add to the codebase. Comments shouldn't be used as reminders or as todos--record those by creating a new issue in Github. Ideally, code should be written in such a way that it explains itself clearly. When it does not, you should first try rewriting the code. If for whatever reason you are unable to write something clearly, add a comment to explain the "why". +- Be conservative with what comments you add to the codebase. Comments shouldn't be used as reminders or as todos--record those by creating a new issue in GitHub. Ideally, code should be written in such a way that it explains itself clearly. When it does not, you should first try rewriting the code. If for whatever reason you are unable to write something clearly, add a comment to explain the "why". ```javascript diff --git a/_docs/master/developers-guide/security-token-scanner.md b/_docs/master/developers-guide/security-token-scanner.md new file mode 100644 index 0000000000..806440e5f1 --- /dev/null +++ b/_docs/master/developers-guide/security-token-scanner.md @@ -0,0 +1,55 @@ +--- +version: master +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: 'Developers Guide' +title: 'Security Token Scanner' +source_url: 'https://github.com/metabase/metabase/blob/master/docs/developers-guide/security-token-scanner.md' +layout: new-docs +--- + +# Security Token Scanner + +Security token scanner detects potentially leaked API keys and secrets in the Metabase codebase. Runs automatically as a git precommit hook on staged files. + +## Usage + +```bash +# Scan specific files +./bin/mage -token-scan deps.edn bb.edn + +# Scan all files +./bin/mage -token-scan -a + +# Verbose output +./bin/mage -token-scan -v deps.edn +``` + +## Token Types Detected + +- Airgap tokens (`airgap_`) +- Dev tokens (`mb_dev_`, 64-char hex) +- OpenAI API keys (`sk-`) +- JWT/JWE tokens +- GitHub tokens (`gh[pousr]_`) +- Slack bot tokens (`xoxb-`) +- AWS access keys (`AKIA`) + +The scanner uses `.gitignore` to filter files and will block commits containing detected tokens. + + +## False positives + +If the scanner flags a non-token string, you should **exclude the literal token string** by adding it to: `mage/resources/token_scanner/token_whitelist.txt`. + +``` +echo 'my-token-string' >> mage/resources/token_scanner/token_whitelist.txt && git add mage/resources/token_scanner/token_whitelist.txt +``` + + +## Bypassing (not recommended) + +```bash +git commit --no-verify -m "commit message" +``` diff --git a/_docs/master/developers-guide/versioning.md b/_docs/master/developers-guide/versioning.md index 655d42cd76..82e02cc6d8 100644 --- a/_docs/master/developers-guide/versioning.md +++ b/_docs/master/developers-guide/versioning.md @@ -68,5 +68,5 @@ E.g., ## Further reading -- [Metabase releases on Github](https://github.com/metabase/metabase/releases) +- [Metabase releases on GitHub](https://github.com/metabase/metabase/releases) - [Metabase release blog posts](/releases) diff --git a/_docs/master/embedding/images/create-a-public-link.png b/_docs/master/embedding/images/create-a-public-link.png index da4c9844b4..a37656aa28 100644 Binary files a/_docs/master/embedding/images/create-a-public-link.png and b/_docs/master/embedding/images/create-a-public-link.png differ diff --git a/_docs/master/embedding/images/dashboard-sharing.png b/_docs/master/embedding/images/dashboard-sharing.png index d4033342d1..58e904072b 100644 Binary files a/_docs/master/embedding/images/dashboard-sharing.png and b/_docs/master/embedding/images/dashboard-sharing.png differ diff --git a/_docs/master/embedding/images/full-data-picker.png b/_docs/master/embedding/images/full-data-picker.png index 31aa99c04c..012e37c3e9 100644 Binary files a/_docs/master/embedding/images/full-data-picker.png and b/_docs/master/embedding/images/full-data-picker.png differ diff --git a/_docs/master/embedding/images/interactive-question-sample-app.png b/_docs/master/embedding/images/interactive-question-sample-app.png index 82b59fed3a..306f2d33ca 100644 Binary files a/_docs/master/embedding/images/interactive-question-sample-app.png and b/_docs/master/embedding/images/interactive-question-sample-app.png differ diff --git a/_docs/master/embedding/images/interactive-question.png b/_docs/master/embedding/images/interactive-question.png index 2789fb4304..da4c9844b4 100644 Binary files a/_docs/master/embedding/images/interactive-question.png and b/_docs/master/embedding/images/interactive-question.png differ diff --git a/_docs/master/embedding/images/jwt-setup.png b/_docs/master/embedding/images/jwt-setup.png index 0c639d1032..005a76fc45 100644 Binary files a/_docs/master/embedding/images/jwt-setup.png and b/_docs/master/embedding/images/jwt-setup.png differ diff --git a/_docs/master/embedding/images/powered-by-metabase.png b/_docs/master/embedding/images/powered-by-metabase.png index 32282cca33..2daa70728b 100644 Binary files a/_docs/master/embedding/images/powered-by-metabase.png and b/_docs/master/embedding/images/powered-by-metabase.png differ diff --git a/_docs/master/embedding/images/public-embed.png b/_docs/master/embedding/images/public-embed.png index 31aa99c04c..1bad0d4e3c 100644 Binary files a/_docs/master/embedding/images/public-embed.png and b/_docs/master/embedding/images/public-embed.png differ diff --git a/_docs/master/embedding/images/public-link-custom-destination.png b/_docs/master/embedding/images/public-link-custom-destination.png index 7e4d253fc1..73f3cb9799 100644 Binary files a/_docs/master/embedding/images/public-link-custom-destination.png and b/_docs/master/embedding/images/public-link-custom-destination.png differ diff --git a/_docs/master/embedding/images/see-shared-content.png b/_docs/master/embedding/images/see-shared-content.png index 4039f66dd8..1b7630c428 100644 Binary files a/_docs/master/embedding/images/see-shared-content.png and b/_docs/master/embedding/images/see-shared-content.png differ diff --git a/_docs/master/embedding/sdk/api/BaseInteractiveQuestionProps.html b/_docs/master/embedding/sdk/api/BaseInteractiveQuestionProps.html index 7effd3582a..70e4b609e9 100644 --- a/_docs/master/embedding/sdk/api/BaseInteractiveQuestionProps.html +++ b/_docs/master/embedding/sdk/api/BaseInteractiveQuestionProps.html @@ -9,7 +9,7 @@ layout: docs-api --- -BaseInteractiveQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}
Embedded analytics SDK API
    Preparing search index...

    Interface BaseInteractiveQuestionProps

    interface BaseInteractiveQuestionProps {
        children?: ReactNode;
        entityTypes?: EmbeddingEntityType[];
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onRun?: (question: undefined | MetabaseQuestion) => void;
        onSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => void;
        plugins?: MetabasePluginsConfig;
        questionId: null | SdkQuestionId;
        targetCollection?: SdkCollectionId;
        withDownloads?: boolean;
    }
    Index

    Properties

    children? +BaseInteractiveQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface BaseInteractiveQuestionProps

    interface BaseInteractiveQuestionProps {
        children?: ReactNode;
        entityTypes?: EmbeddingEntityType[];
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onRun?: (question: undefined | MetabaseQuestion) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        plugins?: MetabasePluginsConfig;
        questionId: null | SdkQuestionId;
        targetCollection?: SdkCollectionId;
        withDownloads?: boolean;
    }
    Index

    Properties

    isSaveEnabled?: boolean

    Whether to show the save button.

    onBeforeSave?: (
        question: undefined | MetabaseQuestion,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    onRun?: (question: undefined | MetabaseQuestion) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    -
    onSave?: (
        question: undefined | MetabaseQuestion,
        context: { isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
    onSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    questionId: null | SdkQuestionId

    The ID of the question.
    This is either: diff --git a/_docs/master/embedding/sdk/api/CreateQuestion.html b/_docs/master/embedding/sdk/api/CreateQuestion.html index 74327bd7e7..dd1d9a4f9b 100644 --- a/_docs/master/embedding/sdk/api/CreateQuestion.html +++ b/_docs/master/embedding/sdk/api/CreateQuestion.html @@ -14,7 +14,7 @@

  • OptionalisSaveEnabled?: boolean

    Whether to show the save button.

  • OptionalonBeforeSave?: (
        question: undefined | MetabaseQuestion,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

  • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    -
  • OptionalonSave?: (
        question: undefined | MetabaseQuestion,
        context: { isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
  • OptionalonSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

  • Optionalplugins?: MetabasePluginsConfig
  • OptionaltargetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

  • OptionalwithDownloads?: boolean

    Enables the ability to download results in the interactive question.

  • Returns Element

    Use <InteractiveQuestion questionId="new" /> instead.

    diff --git a/_docs/master/embedding/sdk/api/CreateQuestionProps.html b/_docs/master/embedding/sdk/api/CreateQuestionProps.html index 634c78328d..162264812e 100644 --- a/_docs/master/embedding/sdk/api/CreateQuestionProps.html +++ b/_docs/master/embedding/sdk/api/CreateQuestionProps.html @@ -9,7 +9,7 @@ layout: docs-api --- -CreateQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface CreateQuestionProps

    interface CreateQuestionProps {
        entityTypes?: EmbeddingEntityType[];
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onRun?: (question: undefined | MetabaseQuestion) => void;
        onSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => void;
        plugins?: MetabasePluginsConfig;
        targetCollection?: SdkCollectionId;
        withDownloads?: boolean;
    }
    Index

    Properties

    entityTypes? +CreateQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface CreateQuestionProps

    interface CreateQuestionProps {
        entityTypes?: EmbeddingEntityType[];
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onRun?: (question: undefined | MetabaseQuestion) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        plugins?: MetabasePluginsConfig;
        targetCollection?: SdkCollectionId;
        withDownloads?: boolean;
    }
    Index

    Properties

    isSaveEnabled?: boolean

    Whether to show the save button.

    onBeforeSave?: (
        question: undefined | MetabaseQuestion,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    onRun?: (question: undefined | MetabaseQuestion) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    -
    onSave?: (
        question: undefined | MetabaseQuestion,
        context: { isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
    onSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    targetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

    withDownloads?: boolean

    Enables the ability to download results in the interactive question.

    diff --git a/_docs/master/embedding/sdk/api/DrillThroughQuestionProps.html b/_docs/master/embedding/sdk/api/DrillThroughQuestionProps.html index 1fe84cf504..4ef29e1abf 100644 --- a/_docs/master/embedding/sdk/api/DrillThroughQuestionProps.html +++ b/_docs/master/embedding/sdk/api/DrillThroughQuestionProps.html @@ -10,7 +10,7 @@ --- DrillThroughQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Interface DrillThroughQuestionProps

    Props for the drill-through question

    -
    interface DrillThroughQuestionProps {
        children?: ReactNode;
        className?: string;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onRun?: (question: undefined | MetabaseQuestion) => void;
        onSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => void;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        width?: Width<string | number>;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
        withResetButton?: boolean;
    }
    Index

    Properties

    interface DrillThroughQuestionProps {
        children?: ReactNode;
        className?: string;
        entityTypes?: EmbeddingEntityType[];
        height?: Height<string | number>;
        initialSqlParameters?: SqlParameterValues;
        isSaveEnabled?: boolean;
        onBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>;
        onRun?: (question: undefined | MetabaseQuestion) => void;
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void;
        plugins?: MetabasePluginsConfig;
        style?: CSSProperties;
        targetCollection?: SdkCollectionId;
        title?: SdkQuestionTitleProps;
        width?: Width<string | number>;
        withChartTypeSelector?: boolean;
        withDownloads?: boolean;
        withResetButton?: boolean;
    }
    Index

    Properties

    isSaveEnabled?: boolean

    Whether to show the save button.

    onBeforeSave?: (
        question: undefined | MetabaseQuestion,
        context: { isNewQuestion: boolean },
    ) => Promise<void>

    A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    onRun?: (question: undefined | MetabaseQuestion) => void

    A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

    -
    onSave?: (
        question: undefined | MetabaseQuestion,
        context: { isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    +
    onSave?: (
        question: MetabaseQuestion,
        context: { dashboardTabId?: number; isNewQuestion: boolean },
    ) => void

    A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    A custom style object to be added to the root element.

    targetCollection?: SdkCollectionId

    The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

    Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

    diff --git a/_docs/master/embedding/sdk/api/EditableDashboard.html b/_docs/master/embedding/sdk/api/EditableDashboard.html index 340dbcd435..43f5381000 100644 --- a/_docs/master/embedding/sdk/api/EditableDashboard.html +++ b/_docs/master/embedding/sdk/api/EditableDashboard.html @@ -9,13 +9,9 @@ layout: docs-api --- -EditableDashboard | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

    Function EditableDashboard

    • A dashboard component with the features available in the InteractiveDashboard component, as well as the ability to add and update questions, layout, and content within your dashboard.

      -

      Parameters

      • props: {
            drillThroughQuestionHeight?: Height<string | number>;
            drillThroughQuestionProps?: DrillThroughQuestionProps;
            plugins?: MetabasePluginsConfig;
            renderDrillThroughQuestion?: () => ReactNode;
        } & {
            dashboardId: SdkDashboardId;
            hiddenParameters?: string[];
            initialParameters?: ParameterValues;
            withCardTitle?: boolean;
            withDownloads?: boolean;
            withTitle?: boolean;
        } & { className?: string; style?: CSSProperties } & {
            onLoad?: (dashboard: null | MetabaseDashboard) => void;
            onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void;
        } & {}
        • OptionaldrillThroughQuestionHeight?: Height<string | number>

          Height of a question component when drilled from the dashboard to a question level.

          -
        • OptionaldrillThroughQuestionProps?: DrillThroughQuestionProps

          Props of a question component when drilled from the dashboard to a question level.

          -
        • Optionalplugins?: MetabasePluginsConfig

          Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

          -
        • OptionalrenderDrillThroughQuestion?: () => ReactNode

          A custom React component to render the question layout. -Use namespaced InteractiveQuestion components to build the layout.

          -
        • dashboardId: SdkDashboardId

          The ID of the dashboard. +EditableDashboard | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

          Function EditableDashboard

          • A dashboard component with the features available in the InteractiveDashboard component, as well as the ability to add and update questions, layout, and content within your dashboard.

            +

            Parameters

            • props: EditableDashboardProps
              • OptionalclassName?: string

                A custom class name to be added to the root element.

                +
              • dashboardId: SdkDashboardId

                The ID of the dashboard.
                This is either:

                @@ -24,25 +20,30 @@
              • the string ID found in the entity_id key of the dashboard object when using the API directly or using the SDK Collection Browser to return data
              -
          • OptionalhiddenParameters?: string[]

            A list of parameters to hide. +

          • OptionaldataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

            Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

            +
          • OptionaldrillThroughQuestionHeight?: Height<string | number>

            Height of a question component when drilled from the dashboard to a question level.

            +
          • OptionaldrillThroughQuestionProps?: DrillThroughQuestionProps

            Props of a question component when drilled from the dashboard to a question level.

            +
          • OptionalhiddenParameters?: string[]

            A list of parameters to hide.

            -
          • OptionalinitialParameters?: ParameterValues

            Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

          • OptionalinitialParameters?: ParameterValues

            Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options.

            -
          • OptionalwithCardTitle?: boolean

            Whether the dashboard cards should display a title.

            -
          • OptionalwithDownloads?: boolean

            Whether to hide the download button.

            -
          • OptionalwithTitle?: boolean

            Whether the dashboard should display a title.

            -
          • OptionalclassName?: string

            A custom class name to be added to the root element.

            -
          • Optionalstyle?: CSSProperties

            A custom style object to be added to the root element.

            -
          • OptionalonLoad?: (dashboard: null | MetabaseDashboard) => void

            Callback that is called when the dashboard is loaded.

            -
          • OptionalonLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void

            Callback that is called when the dashboard is loaded without cards.

            -

        Returns Element

      +
    • OptionalonLoad?: (dashboard: null | MetabaseDashboard) => void

      Callback that is called when the dashboard is loaded.

      +
    • OptionalonLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void

      Callback that is called when the dashboard is loaded without cards.

      +
    • Optionalplugins?: MetabasePluginsConfig

      Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

      +
    • OptionalrenderDrillThroughQuestion?: () => ReactNode

      A custom React component to render the question layout. +Use namespaced InteractiveQuestion components to build the layout.

      +
    • Optionalstyle?: CSSProperties

      A custom style object to be added to the root element.

      +
    • OptionalwithCardTitle?: boolean

      Whether the dashboard cards should display a title.

      +
    • OptionalwithDownloads?: boolean

      Whether to hide the download button.

      +
    • OptionalwithTitle?: boolean

      Whether the dashboard should display a title.

      +
    • Returns Element

      diff --git a/_docs/master/embedding/sdk/api/EditableDashboardProps.html b/_docs/master/embedding/sdk/api/EditableDashboardProps.html index 80386abbe9..624a16cef9 100644 --- a/_docs/master/embedding/sdk/api/EditableDashboardProps.html +++ b/_docs/master/embedding/sdk/api/EditableDashboardProps.html @@ -9,8 +9,9 @@ layout: docs-api --- -EditableDashboardProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

      Interface EditableDashboardProps

      interface EditableDashboardProps {
          className?: string;
          dashboardId: SdkDashboardId;
          drillThroughQuestionHeight?: Height<string | number>;
          drillThroughQuestionProps?: DrillThroughQuestionProps;
          hiddenParameters?: string[];
          initialParameters?: ParameterValues;
          onLoad?: (dashboard: null | MetabaseDashboard) => void;
          onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void;
          plugins?: MetabasePluginsConfig;
          renderDrillThroughQuestion?: () => ReactNode;
          style?: CSSProperties;
          withCardTitle?: boolean;
          withDownloads?: boolean;
          withTitle?: boolean;
      }
      Index

      Properties

      className? +EditableDashboardProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

      Interface EditableDashboardProps

      interface EditableDashboardProps {
          className?: string;
          dashboardId: SdkDashboardId;
          dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">;
          drillThroughQuestionHeight?: Height<string | number>;
          drillThroughQuestionProps?: DrillThroughQuestionProps;
          hiddenParameters?: string[];
          initialParameters?: ParameterValues;
          onLoad?: (dashboard: null | MetabaseDashboard) => void;
          onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void;
          plugins?: MetabasePluginsConfig;
          renderDrillThroughQuestion?: () => ReactNode;
          style?: CSSProperties;
          withCardTitle?: boolean;
          withDownloads?: boolean;
          withTitle?: boolean;
      }
      Index

      Properties

      className? dashboardId +dataPickerProps? drillThroughQuestionHeight? drillThroughQuestionProps? hiddenParameters? @@ -33,6 +34,7 @@
    • the string ID found in the entity_id key of the dashboard object when using the API directly or using the SDK Collection Browser to return data
    • +
      dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

      Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

      drillThroughQuestionHeight?: Height<string | number>

      Height of a question component when drilled from the dashboard to a question level.

      drillThroughQuestionProps?: DrillThroughQuestionProps

      Props of a question component when drilled from the dashboard to a question level.

      Type declaration

      Props for the drill-through question

      @@ -44,7 +46,7 @@
    • OptionalisSaveEnabled?: boolean

      Whether to show the save button.

    • OptionalonBeforeSave?: (
          question: undefined | MetabaseQuestion,
          context: { isNewQuestion: boolean },
      ) => Promise<void>

      A callback function that triggers before saving. Only relevant when isSaveEnabled = true

    • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

      A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

      -
    • OptionalonSave?: (
          question: undefined | MetabaseQuestion,
          context: { isNewQuestion: boolean },
      ) => void

      A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

      +
    • OptionalonSave?: (
          question: MetabaseQuestion,
          context: { dashboardTabId?: number; isNewQuestion: boolean },
      ) => void

      A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

    • Optionalplugins?: MetabasePluginsConfig
    • Optionalstyle?: CSSProperties

      A custom style object to be added to the root element.

    • OptionaltargetCollection?: SdkCollectionId

      The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

    • Optionaltitle?: SdkQuestionTitleProps

      Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

      @@ -75,4 +77,4 @@
    • withCardTitle?: boolean

      Whether the dashboard cards should display a title.

      withDownloads?: boolean

      Whether to hide the download button.

      withTitle?: boolean

      Whether the dashboard should display a title.

      -

      +
      diff --git a/_docs/master/embedding/sdk/api/InteractiveDashboard.html b/_docs/master/embedding/sdk/api/InteractiveDashboard.html index 92561bc263..41e5061096 100644 --- a/_docs/master/embedding/sdk/api/InteractiveDashboard.html +++ b/_docs/master/embedding/sdk/api/InteractiveDashboard.html @@ -9,8 +9,8 @@ layout: docs-api --- -InteractiveDashboard | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}
      Embedded analytics SDK API
        Preparing search index...

        Function InteractiveDashboard

        dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

        Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

        drillThroughQuestionHeight?: Height<string | number>

        Height of a question component when drilled from the dashboard to a question level.

        drillThroughQuestionProps?: DrillThroughQuestionProps

        Props of a question component when drilled from the dashboard to a question level.

        Type declaration

        Props for the drill-through question

        @@ -44,7 +46,7 @@
      • OptionalisSaveEnabled?: boolean

        Whether to show the save button.

      • OptionalonBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>

        A callback function that triggers before saving. Only relevant when isSaveEnabled = true

      • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

        A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

        -
      • OptionalonSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => void

        A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

        +
      • OptionalonSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void

        A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

      • Optionalplugins?: MetabasePluginsConfig
      • Optionalstyle?: CSSProperties

        A custom style object to be added to the root element.

      • OptionaltargetCollection?: SdkCollectionId

        The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

      • Optionaltitle?: SdkQuestionTitleProps

        Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

        @@ -75,4 +77,4 @@
      • withCardTitle?: boolean

        Whether the dashboard cards should display a title.

        withDownloads?: boolean

        Whether to hide the download button.

        withTitle?: boolean

        Whether the dashboard should display a title.

        -
        +
        diff --git a/_docs/master/embedding/sdk/api/InteractiveQuestion.html b/_docs/master/embedding/sdk/api/InteractiveQuestion.html index fc4385cf45..dc7989bff8 100644 --- a/_docs/master/embedding/sdk/api/InteractiveQuestion.html +++ b/_docs/master/embedding/sdk/api/InteractiveQuestion.html @@ -18,7 +18,7 @@
      • OptionalisSaveEnabled?: boolean

        Whether to show the save button.

      • OptionalonBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>

        A callback function that triggers before saving. Only relevant when isSaveEnabled = true

      • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

        A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

        -
      • OptionalonSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => void

        A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

        +
      • OptionalonSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void

        A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

      • Optionalplugins?: MetabasePluginsConfig
      • questionId: null | SdkQuestionId

        The ID of the question.
        This is either: diff --git a/_docs/master/embedding/sdk/api/InteractiveQuestionProps.html b/_docs/master/embedding/sdk/api/InteractiveQuestionProps.html index f95a95d61b..ab3d118292 100644 --- a/_docs/master/embedding/sdk/api/InteractiveQuestionProps.html +++ b/_docs/master/embedding/sdk/api/InteractiveQuestionProps.html @@ -9,7 +9,7 @@ layout: docs-api --- -InteractiveQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

        Interface InteractiveQuestionProps

        interface InteractiveQuestionProps {
            children?: ReactNode;
            className?: string;
            entityTypes?: EmbeddingEntityType[];
            height?: Height<string | number>;
            initialSqlParameters?: SqlParameterValues;
            isSaveEnabled?: boolean;
            onBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>;
            onRun?: (question: undefined | MetabaseQuestion) => void;
            onSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => void;
            plugins?: MetabasePluginsConfig;
            questionId: null | SdkQuestionId;
            style?: CSSProperties;
            targetCollection?: SdkCollectionId;
            title?: SdkQuestionTitleProps;
            width?: Width<string | number>;
            withChartTypeSelector?: boolean;
            withDownloads?: boolean;
            withResetButton?: boolean;
        }
        Index

        Properties

        children? +InteractiveQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

        Interface InteractiveQuestionProps

        interface InteractiveQuestionProps {
            children?: ReactNode;
            className?: string;
            entityTypes?: EmbeddingEntityType[];
            height?: Height<string | number>;
            initialSqlParameters?: SqlParameterValues;
            isSaveEnabled?: boolean;
            onBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>;
            onRun?: (question: undefined | MetabaseQuestion) => void;
            onSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void;
            plugins?: MetabasePluginsConfig;
            questionId: null | SdkQuestionId;
            style?: CSSProperties;
            targetCollection?: SdkCollectionId;
            title?: SdkQuestionTitleProps;
            width?: Width<string | number>;
            withChartTypeSelector?: boolean;
            withDownloads?: boolean;
            withResetButton?: boolean;
        }
        Index

        Properties

        isSaveEnabled?: boolean

        Whether to show the save button.

        onBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>

        A callback function that triggers before saving. Only relevant when isSaveEnabled = true

        onRun?: (question: undefined | MetabaseQuestion) => void

        A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

        -
        onSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => void

        A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

        +
        onSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void

        A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

        questionId: null | SdkQuestionId

        The ID of the question.
        This is either: diff --git a/_docs/master/embedding/sdk/api/StaticDashboard.html b/_docs/master/embedding/sdk/api/StaticDashboard.html index b2934e2415..137b9f13ef 100644 --- a/_docs/master/embedding/sdk/api/StaticDashboard.html +++ b/_docs/master/embedding/sdk/api/StaticDashboard.html @@ -9,8 +9,8 @@ layout: docs-api --- -StaticDashboard | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

        Function StaticDashboard

        dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

        Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

        drillThroughQuestionHeight?: Height<string | number>

        Height of a question component when drilled from the dashboard to a question level.

        drillThroughQuestionProps?: DrillThroughQuestionProps

        Props of a question component when drilled from the dashboard to a question level.

        Type declaration

        Props for the drill-through question

        @@ -44,7 +46,7 @@
      • OptionalisSaveEnabled?: boolean

        Whether to show the save button.

      • OptionalonBeforeSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => Promise<void>

        A callback function that triggers before saving. Only relevant when isSaveEnabled = true

      • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

        A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

        -
      • OptionalonSave?: (
            question: undefined | MetabaseQuestion,
            context: { isNewQuestion: boolean },
        ) => void

        A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

        +
      • OptionalonSave?: (
            question: MetabaseQuestion,
            context: { dashboardTabId?: number; isNewQuestion: boolean },
        ) => void

        A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

      • Optionalplugins?: MetabasePluginsConfig
      • Optionalstyle?: CSSProperties

        A custom style object to be added to the root element.

      • OptionaltargetCollection?: SdkCollectionId

        The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

      • Optionaltitle?: SdkQuestionTitleProps

        Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

        @@ -75,4 +77,4 @@
        withCardTitle?: boolean

        Whether the dashboard cards should display a title.

        withDownloads?: boolean

        Whether to hide the download button.

        withTitle?: boolean

        Whether the dashboard should display a title.

        -
        +
        diff --git a/_docs/master/embedding/sdk/api/StaticQuestion.html b/_docs/master/embedding/sdk/api/StaticQuestion.html index e535dad836..51f2d9ff73 100644 --- a/_docs/master/embedding/sdk/api/StaticQuestion.html +++ b/_docs/master/embedding/sdk/api/StaticQuestion.html @@ -26,4 +26,5 @@
      • Optionalstyle?: CSSProperties

        A custom style object to be added to the root element.

      • Optionalwidth?: Width<string | number>

        A number or string specifying a CSS size value that specifies the width of the component

        -
      • OptionalwithChartTypeSelector?: boolean
      • Returns ReactNode

        +
      • OptionalwithChartTypeSelector?: boolean
      • OptionalwithDownloads?: boolean

        Enables the ability to download results in the interactive question.

        +
      • Returns ReactNode

        diff --git a/_docs/master/embedding/sdk/api/StaticQuestionProps.html b/_docs/master/embedding/sdk/api/StaticQuestionProps.html index 0cf406ab49..0ddc7ab72b 100644 --- a/_docs/master/embedding/sdk/api/StaticQuestionProps.html +++ b/_docs/master/embedding/sdk/api/StaticQuestionProps.html @@ -9,13 +9,14 @@ layout: docs-api --- -StaticQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}
        Embedded analytics SDK API
          Preparing search index...

          Interface StaticQuestionProps

          interface StaticQuestionProps {
              className?: string;
              height?: Height<string | number>;
              initialSqlParameters?: SqlParameterValues;
              questionId: null | SdkQuestionId;
              style?: CSSProperties;
              width?: Width<string | number>;
              withChartTypeSelector?: boolean;
          }
          Index

          Properties

          className? +StaticQuestionProps | Embedded analytics SDK API{% include docs/embedded-analytics-sdk-metadata.html %}

          Interface StaticQuestionProps

          interface StaticQuestionProps {
              className?: string;
              height?: Height<string | number>;
              initialSqlParameters?: SqlParameterValues;
              questionId: null | SdkQuestionId;
              style?: CSSProperties;
              width?: Width<string | number>;
              withChartTypeSelector?: boolean;
              withDownloads?: boolean;
          }
          Index

          Properties

          className?: string

          A custom class name to be added to the root element.

          height?: Height<string | number>

          A number or string specifying a CSS size value that specifies the height of the component

          initialSqlParameters?: SqlParameterValues

          Initial values for the SQL parameters.

          @@ -32,4 +33,5 @@

          A custom style object to be added to the root element.

          width?: Width<string | number>

          A number or string specifying a CSS size value that specifies the width of the component

          -
          withChartTypeSelector?: boolean

          +
          withChartTypeSelector?: boolean
          withDownloads?: boolean

          Enables the ability to download results in the interactive question.

          +
          diff --git a/_docs/master/embedding/sdk/api/assets/search.js b/_docs/master/embedding/sdk/api/assets/search.js index 5649aeca11..a91212dd5e 100644 --- a/_docs/master/embedding/sdk/api/assets/search.js +++ b/_docs/master/embedding/sdk/api/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "eJy9fV2T4zaS7X+pfi33FRKkPvw202PHeNa7452eO/vQ4XCwJFYV3RKpEanq6XH4v28AFCUgcUAmJN371B0lIDMJHiQSeRLgbw+H5kv78O2n3x4+V/Xm4VvK548PdbErH759+GPRlj/UXXko1l31Vv73sWy7qql/OjT79uHx4XjYTjR6/9rttg+PD+tt0bZl+/Dtw8Pvj4MmNaPsrGr9Wm03h7KWi33ndHHkPz7si0NZd1PmR+wo667qvv79675MeMJ3fa/u1Ot+1lR11VXF9uM/tz8Vh2JXduUhxaxT9/af273b/Y72tR+Lt/K7unjalpsUw9q2eCvLc7/7WdTUfyyfm0Np7EowqKmfbLe273ZPe/52TAF1Ux+O90V0UyePxd1HYb89vlR1CnQvPe5nxT9PjX5IgerQqbovTrvi8FJ2H5rttlybxgkW9V3Xbtf72fWl6l7/1Hypt02xSXlfpt/G6XeTRTRbLVROl3Xo2HXBsnP52+gqw2V9eC0OZtybw1nU5U+jkuaXUbq8tz+a5bN0ZPFf0ozjvX+sWmPZcedMnrFG49qcpT0Q4o8u/jlhOTct/sv8XyDxnW1d960xcCLmxrSfWztTfdSA828j0zzNhu92++7rh6buyrr70Oz2TW2kSIwpTc9133Pt9LyHVU39YVutP4vsaOr1qe09NO+Ll/Jj9W8ZIEzjtm98D91t93UrUzy0vIfWt6qtnrbl5PR11J+6rM9d7mjHdyCyFdgiCW0n7XFd56EsuvJPRfv61BSHzX82m2J7sQf8KHdpoDPzarEWcsd2Cqk/QA8zKn6IxmW+Jvos0Uj8r3tn9zRlStvsRzZOydqNW2naUqreeJa++f302y4JBgztr7dgBHv/KLbHMoq7/teExVQANkemcDWDFkcs2JTt+lDtvUB1xAC/+R30114kEVc8HkNMaAyc1BCeMs3DnxMdE86egN/kwEDJiphAUY4CWXpNaiJqRFJGIsUamIiImyHKPyToh2mHqHpRtiFJu5tkGFE7lltI0id9zns9IU8gRFVO5Q0SdEa36FHl4p15ghV4Qx41QbYPH9cf7EqPbdfszo7zg1kQy/r4Q1fuLgbF2yTtgD0JvdBA10ibhEXV9jN9WrHgd32n6tQJj+3YEyS940lrZO/6Snu+21Tdj1X9Oc2cclN1277XLdaMosK0x1aZX65Hm+ndW/Tdtty5u/XxZska4QTiP9xAnUBR03RJYFo0t9O0pWn0V5ZMiOg1zXdlfZzKJ4j1e8m7iNJTm9s0barWDyiwMqfZbfqqdVN7STOszzQbjXSl+rbFU7mdUDa0uVFT+dx9ZMtoRF/53LUTy6dUK892YY33wuWhenkVPqRtesNTzt2t2XNVl/9ZdsVT0ZZ/OHavH5r6uXo5WxBrIN6+/OlQbbd/fz00x5dXvImJtrjFiY3KFHizqNXilPWUCZNZ62Qb0IZuwgrJti7ZjtfSAFRqwrn1nbSPbi0nbEnaYKZbBreZUyaJNpvJtsAt54Qpoo3nFZa4289JE8Y2oVfoTnv++z4535ZOqJ/anCbr94mNCe3j3Eay7uj2eMIM8SY53aKqk4/G0PhOur9Um+5VqntofDfd3avlsM3C8bE04+oGyFO2dK9r09kuIZfOd7QNbG2nbRJsbK+x5W9lW3Z97UCKNQfT7Wnodr09TuBmNthmSThvLs/2BL+IQ7Wgpx+n4Z9vYfVHJArio4i5sd3Y0OqHkaFy9J/bj7AgqRZ0xU/V+jOvlhi3oiv2ts/+1OculgCs/dkP2kaNMt27vvtQ4DQRxd1uX8KYAfPuOXqv1WZT1iC4HDOq7ySIKtNsOQWsicacet3dmqb+sSlk06ux7vmuev+n6l6bY2c2vbJh6G340ndbn7rdwx4e2I0ZMRXVpWk+lPWmPKC1RGRM3x1NoDvZ54ecY6aMx5tpWm2IUxw2f/dCvDHtNq4pDpvxOC/dijCYmbJiOpJJtyJtHG4cA57D/m73VG42Vf1yKSm6mBL+lpQfv3T7vtp25eE/yq/OSIMfk6T/wBOswx+khZ9O8WoYt6EfxaEb6uyvmNEWtwRw40IFMVzc7oQwbsIKSSR3hR04mJu0RRbPpdszHdJNmZYe1d3FyrTxS47tkm2MhncTpokjvGSL4kHehEnyOC/ZJhbqTRgyEe1dqR0GfCJLRDFfslU87JswZSryS9YvCP4mTLoi/ku20g8BJwwajwKTdeNAcMIGWSx4lS1hOCiwZToivMqW5DG5fTxwaDQGWlH1pPdofyzWn1nGLibv3VOx/jyRpkN2xjQfyuJzc4QLMNN7aXk3rX86NHuDFLn2zaXHzVacE8pyM85p5P8ndgSJ7Wk7JtPZCXYME/1/qs1LKUDEMMe/DO3vbIH8tfiW3PPdmJ2j5IWUQ7s7aZR6g17v/fxBv+uc1vs8tLuTRvm77jXf8x3/V9OVT03zeVp3fWl5N63SNz3ovt+7Hn7/WHZdVb/A9d23YQi02kuPu1shRwK35p6YGH7/R9Uei23170K02J9NemPdbrYHkXpRKyRUXoJuU34gVW2KD+6reWjzfXPYyfQPL+G573G7Fcfdrji4Bzvj6p2m99MrnxJn/fecC9Gg29ctDrWn9HlzTgo8b8bdhMAgoxq2vsTr0cRQpGlaLheIY5HztH7U4VYrgsh50gzc4252DJGz3A6vx6124Lh10piRbve1KNESgQU4rT+Ic2PYSd1B44Sjyv6RYLHwqdPBokcSVmTLjZqq0k60SvSOhG8n8b28Fu3gxAWRA1fx7rVoB3d+RTDhPlj0Hf1hv99+TTKqqYtTnxstEcxef080+Y5Ac/m7sulGexuDqcA3bOE1qvoEpBVjzo5V67R3hh74ihETjtT/hxG688gkzu3JcUglVfnRhfGbkiZPLqRe2TRK6l51biHVAnRsYdwGyamFVCteo2Rp+pmFVN2jRxbGLUk6sZBsFzywMGGQ6LxCqiXwuMK4IaLTCul2uIcVpgwYO6uQrjnp2e/61CPE5hXnFFK1g4v3xg0QXLqXakOUtEw+KZGqOXpQYtwI8TmJZHumMhauEalpiwmS0j0kMa55/IxEuuaxIxJTlqSckLjGslES+erzEddYIsykMluuTKkmxm2xXPhkPDfaMWHfNhlfTCu6Iu4Yf+ykfQAXlTxyN+c+IHMgNiPsdafSR6Gi60LnkWe+GWkxQ6+HmdzKyRV1ysjkZTbdxskVZ8rG5GVIZOPELHG88OTc4G3lM6Koq517Z55U+LtLR/GoBE8ULd18ed0a6P61/nPzNs61Y+POEpr69STh7lZ2bsW72LJTr3tYI/D1F15yEkKs6S3+nXOSIt1BBzmGm/pDUa+dS0ySVJik8tBd/FrwI6a9G85dTg8T7HHLm7K85aTeS6s7r7RM8HUrq/MM165R3I7kNQnawDHwY/NS1R+7ojteRtv5WxKfNXLVS+olL5OSTX32H/bVf5RfR3RcGt1B21++dBOq/vIl7cYtLOVjsdtOKDJNrtJkKa4/+Ht98Nutsn/qszQRDMQaXqc1TF6EP8k9BLpONiJPdJcsMHM0U/1LtZnU67a8VatA3V301K7TjWkadbJyXe32CEDHdJ0aXaFrGone7Xn453sj0rny7SpUjt0eJkHmRf816By9eU6m9m76tkXbfWPKc7+p6udGpDvocg87ds2mDNcBpH5oeQ+tE/P0ojRxro7p9PYsYzpHtymTOt2o02ncOHSY/2f5HDVnO14OzbGGWB1EvfOaTT6FMWxS3zfBRZDjir+ZvBEy2YJXbzc8oX5845usuy3XTb0pDmEQGNHvdrjJhuawmXrqoclNeg7FFKhOLW7WInmRXrs7afxm66UUJ/SeW9+i3XImo9P+3bnJLXqe/VMZSM/EgQyZnrp8KczOb1ST0+gWXfumrSZ1OY1u0dW+Fpvmy6imc5Ob9ASV4lDVZJG4TFtX/qv7Zn+odlN+izW8WafMWwZNb9bblYeuEql1WiZqjUflp89U/f21hKGN+3NCJqk4dGVbFSgmDyS+c1tPPZdnbkx79CNvo1acez2de93DmvMdGCIr3Nb30F4fd0/CATg3vYfeffXWdH83sZRIt23enZrfRX+zj6zXQPm57T00O8f2p1VPnvFP092JB/yeY901zbar9jK957ZXao55svBWn+CXBP8VT5v50t4JynxCC2Na7cc9Nr8UYbjHtbotb9Q6lkFhalOSJ5N643kTplWeMpnUOa3sHlomciRMY2J6ZFI7zFEwnaL0xKSm434jxKvXMl3r5Jwfz6jjZgk5xuhHTAQaLiu6uchk1/cWDoH/WJLx6Iqfmqru/vr0a7lGb8X7PckfHnfIPYTy3p3bTj2kb2t07LtCpvfU8i5ay7eylg3fu6HpXfS+mU/byfQOTa/VG8PQ+R7Aj2XbGpq0+VyGbx62kuOp/FcYLcRFvuubjz8ptlu+DoyoF6wJU9pjo/192a1f/9af7bZ9vg/HGrS5igv8vqm774tdtQ13mpefrpI87n5v9boCgQnbpphP9dmFYn8+WnuhY8OUGLBkV+yHoN6eeyzOXa+zy7mo6dz00LxVKL86/CAuL+Ed/bIS+GtCmdp223z50NRtsy1/bAAuArHvbJd132XbTDOQvt0xO+L1FsiEoznXdmp9B+3BIbMR3ZMnzNI0B+U8Y6ony3iSdJeHQ3MIv54+YoDtMf3V9DQrzNr856LebEtAYyEjTIfXS4c72GBK/cu0oei73Hksts26ALkBqP7U8g5a9+MrQ6j81OGeM7CDqU2ge2h4nU7kV/87lgsafrhPoYMnLWmXfjZwdJP+Q7gG+yr7ZoI4aUofCMx8TffQYY9WbmTv5nSociNO1E1ph9tzX6XIDQM9CIE4r5+azsd1AH7yvBF4zIm0/cnhTWhyWt2g7TkeDTvaTKvnodWN2j4iBo3paiX82aimbVWX7PZpoMu0mjhqEtMW2wT8X0S0mD+m4Gy3a+pf4BQ5S3rntxo33hoVTy2Uv/zaVDUoD7lo81tdr63cFVVYsHTRM/x+vYbn6tB2v2xNdfKIHr/VrdomXpXX6HpdYFW46BCsCGOyTfp1ctC8Rjfqmhgyt80NmnC056iRBXlMB5/75zsT/mGyURe/zf6elFT4uPnsFKld3jz7e6rMc1LVF+n8+WqJ5kL077yMIfw1Vf53PPZy/pYsC+/Hgl9uk+unD/DP8tVgV7Zt8VJK5L27tMV4jpg6/mzu7pHtYPDPKcefPHxI5L4zFSenPqNX+kdMl1kCL/ZPsEp0vf+kheBtDPGuPx8uf01F7shxKvhrqnzjOX1b+7+kyXGupWEuNvxpVLKTRjRHl6p1yJezv4uTiKwfG0vw4y0n0qLyBBksaOhU9vmH6AA5uiXfuUnTjj9xM2aB7Os2SVZMf9hmxKD0b9rcapt4rJK/ZJNiWfQjNnGDxN+vSbEj/umauCHyr9akWMI+WBNXP/GtmnSdeDWb0C9bwhJs4Xc4xQ2Yur8pRavgkzRxQ674Gk2Kbf7p3rgZ44d6UzTiz8/ENcu+PJNqQXhf0LgF03cFpVqQ8vw3PXsQcETQJ8qEh+HGmM+/9jrISLBx1U2MyMrYgoGW1PSbDxM0jl56GNWfdN9hgjXgkrmoDYL75RI0IzeUfKtcgj7/UpuovvGra5L0jV2eNqI/5d60RHtiLvDq29LG9Ttu6NiWH2zd7Nln/WFfna2AvyZt1sz+ztyLX9abv3zp/la2e/MRj7MC/LPcPf3qXLAwIutd3w6PVcTE339+fKjqTfmvh29/e3grD6aC6eHbB3qv368eHh+eq3K7aR++/TSQVyYD36eRNs36aP/786nZPyxYTOO+9f+ZPTx+mj3m+Xutlz///Php6Gx/sH8YZFz+Yjuqh8dP6jGj9ypXXkcVdFReR3p4/ESPWfZeLX2NFHQkr6N+ePykkUYddNRex+zh8VOGNGZBx8zrmD88fspRxzzomHsd5w+Pn+ao4zzoOPc6Lh4ePy1Qx0XQceF1XD48flo+6tX72Ux7HZdBx6XXcfXw+Gn1mM3fLxgAVkHHlQ8Agwc1Q8aqEDyKocfCRz3q+fv5LPM7AwD5CFIGF4oQalUIIuWjSBlsKA07h0BSPpKUwYfKHvPZe5X746xCMCkfTcpgROVQcwgo5SNKGZyoOewcgkr5qFIGK2rxqPP3OX9VIbCUjyxl8KKW8JlDcCkfXcpgRq2g2SHAlI8wMpihGQInhQgjH2FkMEMKaaYQYcR8lHVShOBJwE35CCODGYIIoxBh5COMDGYog51DhJGPMDKYIYgwChFGPsLIYIYgwihEGPkII4MZWsDOIcLIRxgZzBBEGIUIIx9hZDBDEGEUIox8hGmDGQ3XPx0iTPsI0wYzGiJMhwjTPsI0RWeVDhGm2Upol0KCayFYDH2EaYMZjRfSEGHaR5g2mNEQnjpEmPYRpg1mNISnDhGmfYTpRSxu0CHAtA8wvYyGDiG+tI8vvYpFDzqEl/bhlc1iAUQWoivz0ZWpWAyRheDKfHBlFAsjshBbmY+tTMciiSyEVsYCrSwaEmQg1vKhleXRkCALoZX50MostKDzykJoZT60MoMWDZ1XFmIr87GVWWwtYecQXJkPrmwVf+YQXZmPrtw6L+j58hBeuQ+v3CAmmyH/k4f4yn185QYyGfR8eQiw3AdYbjCTwegtDxGW+wjLs9i2Iw8BlrNo3kAmg+tyDgJ6H2C5gUwGHV8eAiz3AZYbyGQ5HOwQYLkPsNxAJpvDziHAch9gufVeENp5CLDcB9jcQCaD0J6HAJv7AJuraPA2DwE29wE2twCD0J6HAJv7AJsbyORwUZ+HAJv7AJsbzOQK7t1ChM19hM3zGDrnIcDmbMs4j8boc7Br9AE2jy6O8xBfcx9fc4OYHAYT8xBfcx9f81VsZZ2H8Jr78FrMYivrIkTXwkfXQsVW1kUIroUPrgXFVtZFiK2Fj62Fjm7QQ2gtfGgtstjKugiRtfCRtcijG5JFCK2FD63FPLosL0JoLVhGwqAl12geL0BSwsfWwmILv+MQWwsfWwsDlzyHmkNwLXxwLWfRlXUZomvpo2tp0QVd7jKE19KH19IgJocudxnia+nja2l9F3S5yxBgSx9gyyzqQpYhwpY+wpY22QUzQcsQYUsfYUub8ILOfhkibOkjbGkwM1ewc4iwJct7LaP+eglSXz7ClgYzc4KaQ4QtfYStDGbmcGKsQoStfIStbHSfwc4hwlY+wlbWgcGJsQoRtvIRtorG96sQYCsfYCsDmfkcKg4BtvIBtoq7sFUIsJUPsJUF2AJqDgG28gG2WkR9wSoE2MoH2MpAZr6EmkOArVhy1QIMxjErkF/lCVaDmQUMZPrf/O7O3079VTRy7H/j/VmadWa3kTDM73/j/VmmdWYXS5ynnYFc64wlW2dxf9b/xvuzfOss7tL633h/lnKdxb1a/xvvz7Kus7hj63/j/VnidRb3bf1vvD/Lvc7i7q3/jfdn+FNxD6dQij/I8cednIJZfoY/FfdzCiX6eaZfRV2dQql+nutXcW+nULafp/tV3OEplPDnGX8V93kK5fx50l/F3Z5CaX+e91dxz6dQ5p+n/m02f4GZFpT8Z9l/ZRP6C7jlViD/rxgBoGxOf4H5FkABKMYBKJvWX2DKBbAAitEAymb2FzAQVIAIUIwJUDa5v4CxoAJcgGJkgLL5/QXmXgAdoBgfoGyKf4mXH8AIKEYJKJvlX+LlA5ACirECyib6lxGaD+CPEQPK5vqXGi5/gBpQjBtQNt2/xPgD7IBi9ICyGf8lxh8gCBRjCJRN+i8x/gBHoBhJoGzef4nxB2gCxXgCZVP/S4w/wBQoRhUom/1fYvwBskAxtkBZAmCF8Qf4AsUIA2VJgBXGH+AMFCMNlCUCVhh/gDdQjDhQlgxYYfwB7kAx8kBZQmCF8Qf4A8UIBGVJAbxzV4BDUIxEUJYYWGH8Ah5BMSJBWXJghfELuATFyARl+YEVxi+gExTjE5SlCFYYv4BRUIxSUJYlWGH8AlJBMVZBWaJAzTCAAbGgGLOgLFmgZhjBgFxQjF1QPb0wwxAGBINiDIOypAFmZhXgGBQjGVQeTwIrQDMoxjMoSx2oGY4hANWgGNegLH2gZngSAbpBMb5B9YTDLFK1AVDISAdleQQ1w9MA8A6KEQ8q77N3C/wSAA4Z+aDyHod4IgD+QTECQuXLMQsADhkJofIeh3gqAR5CMSJCWW4BV5sBJkIxKkJZdiGykQRkhGJshJpHa9YUoCMU4yNUT0jADLsCjIRilISyLANMsivASShGSihLNMAcrAK0hGK8hLJUA0y1K0BMKMZMKMs2wGy7AtyEYuSEsnwDTLgrwE4oRk8oSzngLSAgKBRjKJRlHXACAXAUipEUyhIPkR0g4CkUIyrUguIldoCrUIysUJaAiEQAgK9QjLBQloTA6XsFOAvFSAtleQicwVeAtlCMt1A9cYF3sIC5UIy6UD13gRNggLxQjL1QlpBQCq/ggMBQjMFQPYWBZz7gMBQjMdSJxcARAOAxFCMy1LKvs8QRAOAyFCMzlOUnIq4T0BmK8RlqOeL7AKOhGKWhLEsRmUKA1FCM1VA9rYEhDHgNxYgNtewhiCMQwG0oRm6oZZ+FwREI4DcUIzjUsgchjkAAx6EYyaGWfZEJngaA51CM6FCrHoU4Egdch2Jkh1r1KMQRCOA7FCM8lOUwVKyOFMCQkR7KEhmK8EwGxIdizIeyZIbC9aQKkB+KsR/KEhqRiQT4D8UIEGU5jchEABSIYhyI6kkQwp4A0CCK8SDKUhsK17UqQIUoxoUoS28oXNuqAB2iGB9Clt9QkfpWQIgQI0TIEhwqUuMKGBFijAjN+spzXOcKKBFilAjNehzCmUCAEyHGiVDPiUTqXQEpQowUIUty4NpRAqQIMVKELMmhdKQqGxQKM1aELMuhtHrMZu+zfM4EgGJhRouQpTlwASsBWoQYLUKW5lAazgQCvAgxXoT6kw8aV3gDYoQYMUKW6Ii8A0CMECNGqD8AEXkHgBkhxozQ6RAEfgeAGyHGjVB/EEJnj7R4v8yzR6Xzy3/np/8ysQCcjDKh/ogELsUkwJkQ40zIciARbADOhBhnQifOBK6VBEgTYqQJ9aclcD0oAdaEGGtC/YkJvYInpABtQvzQhKVBstwsNEu1eDSitHqf87eMTlDwIxSWEbkIeFTZ7FHr93rBzEIHKoITFcRlqZOJTBY6X8Hga5kShWtICZ2x4IcsqD/HA3dGhM5Z8IMWliu5DMejkQVHBmCWn7uwvImRRfn7Vd7LOv83e9Sz9wvNz6AAKPMTGZZOURleLdGhDH4qo+dfYP6a0LkMfjDD8ikqw6stOpvBCBiyhIrC1asEGBhiDAxZRkXhClYCFAwxCoYspYJT+AQoGGIUDOkeqKszTPKZyUXkasVkoXNBDLO6x6w6T+yzWCYLwJdRM6RzbpfCdgH4MpqGLO1iDtrCQQZAZTwNWd5F5ZEDUwCojKghS7zgU3kEiBpiRA1Z4kXlEQEAqIypIcu8qBxPNUDVEKNqyFIvKsdTBXA1xLgastyLwlWHBMgaYmQNWfJF4cpDAmwNMbaG+rMfOQ5MAV1DjK6h/vzHHG7RCPA1xPgayvojkvjIHyBsiBE21BM2c4xkQNgQI2yoJ2zmGMmAsCFG2JDlXyKBIeBriPE1lM9GAkNA2BAjbChXI4EhYGyIMTbUMzZJgSHgcYjxOGRpmUhcB2gcYjQO9TTOHJ+rBDQOMRqHehpnHjlbiQ5XMnT2B0jggRsCLA4xFod6FmeOXQRgcYixONSzOHPsIgCLQ4zFoZ7FmWMXAVgcYiwO9SwOLockwOMQ43HoxONgFwGIHGJEDs37bCZ2EYDKIUblkKVmFK5pJMDlEONyaJ6NTDDA5hBjc6g/Y4LLqgjwOcT4HDodNMFTATA6xBgdmvenyfFUAJwOMU6HLEkTW28Bq0OM1SFL0yhcmkWA1yHG65AlahSuzSLA7BBjdmjRIxHPBUDtEKN2qKd2cHUWAW6HGLdDlqtRuDyLALlDjNyhRfQoHQFuhxi3Q4t4PpMAt0OM26Ge28HlYQTIHWLkDlmyRuH6MALsDjF2h3p2Z4lnEmB3iLE7ZNkatcQ4BvQOMXqHenoHl4gRoHeI0TvU0zu4RowAvUOM3qGe3sFFYgT4HWL8Di3jR9EJ8DvE+B3qz6zgKjMCBA8xgoeW+YhDBQwPMYaHeoYH16kRYHiIMTxkCZtIbAIIHmIED/UEDy50I0DwECN4qCd4cKUbAYKHGMFDPcGDS90IEDzECB7qCZ4VnkqA4CFG8FBP8OBiNwIEDzGCh3qCB1erESB4iBE81BM8uFyNAMFDjOChnuDB9WoEGB5iDA9ZxkbhgjUCFA8xiod6igdXrBGgeIhRPGQZG8IVawQoHmIUD1nGhnDFGgGKhxjFo3uKB89mDSgezSgePesrziCUNaB4NKN4tGVsCJecaUDxaEbx6J7iwauCBhSPZhSPtowN4Zo1DSgezSgebSkbwjVrGnA8mnE82lI2hGvWNOB4NON4tKVsaAbnggYcj2Ycj571SIRzQQOSRzOSR896JMK5oAHJoxnJoy1nQ7j2QwOSRzOSR6v+AqLI/TDoghiGREvaEK7d0IDl0Yzl0Za0IVy7oAHLoxnLoy09Q7h2QQM+RzM+R/dHYHDtggZ8jmZ8jrb8DOF7rzQgdDQjdLTlZwjXLmhA6GhG6GjLzxCuXdCA0NGM0NGWnyFcu6ABoaMZoaP7a7Bw7YIGNI5mNI6mePmjBtSNZtSNtvQLPkenAV2jGV2jLfuCz9FpwNZoxtZoS77gc3QakDWakTXaEi74HJ0GBI1mBI22zAo+R6cBE6MZE6MtsYLP0WlAxGhGxGhLrOBzdBoQMZoRMdryKvgcnQY8jOaXZPUHYVARpUa3ZPFrsiypgs/RaXRRFr8pS8cvY9PorqzgsiwdPUen4XVZDH498QKrEDW6MYtfmWUJE3yOTqNLs/itWbqv/MELCbo4i9+c1V+dhUt/NLo9i1+f1RMs2IGgG7T4FVo6Xgap0S1ajF/Rli6J3FgGAMjYFW3JEuy+ALeiGbeisxH8AWpFM2pFW6YElyBqwKxoxqxoS5TgKloNiBXNiBU9crGWBryKZryKznr84TAC8Cqa8So66/GHwwjAq2jGq2hLkxAu/NKAVxn+Zu/NfSsPXbn5ob8/99Onh+Ajxr89/HK6Xdfk46xKc9Guybh9+9vvv1/u0/32t9+dK3XNb0ZrUVe7ois9OSq7yDEFnSI5zpeNHVHLmWuSFol6Ktafn45dZ25zv4hauEbRTCzp5dAc641nlHbHSa36ztTLNP9Rw39kQ2g+ZVbVXXkwX+N+K9lHPy56naEQmt8c7Ie4HdMzckwn4XgeCjYAmXalZMPj5sN/5kK5ZfG5OXbeW8rdt6SS5GwOzd7cyO3Jm7vyhO/DYicYfkWuKJGkdXHoyrYqPJMM138ZPS2bHvbGc/sdUx+Jjkmyl2kF+c+V5e7bTLDH3MAOB33hjlSCXf6V7o7ApSswEwocPlfuPKojpu+Wn8A7P2HXHJ7qQbwQqrl8bMH1pI6ixUnDvP93edJo7us4qTzZYk4P9P9ZDTNpcfqPHnyKCS5kZjVtuSvrY1Ovt9X6s2udO3vzXCbu/G1D7zHnrjfJhMg5i3o6NF9a7p+cgRv8ivSRueBt1Zopc9zVPt5dF5P6+CfRoXNw/YzM/V2EVr53dcG+HN6/VKQ/cTJnPHOxWfZjyY5BK2femOy5UMxxx9DizApDr8vEOJ/TdU1yZa2kb/HycWZXlAvilWxlXduPMWx+KTr/CV3PngmfsBc1fNdh12yKrSuUXO8sfFAgMkAsOYgVLthM7tvpm38XmdoBipYt3r3My/ebHGEOdnXKg0cDKO0MpRY+8rHtmt35kc1Hl4xXrbpy50l2BjNLkWwE+TY6s1+IoLN1vpfL3ChjCFLniSLNA/eWwsd2ZqHQ/QdD6bkrJ8TNhyha6LcCwb3Z5ba0zVwtDkpzmWP1PqF4kZQ7G4HlEEHMzmu2XHYMV264nssCKfOtRd8pLV0HIvPewQcbL/Lmzjtazodnng/PLDby8t1y1xe7tq6EL758rupyd/omNN5H5o7Rc6GJZbs+VPvAKzlvROsTRIdXbo6q9P/Jhgm3FGqr2uJp64+GG5fnpyiShDvX4ctEX6rNS+nvsBzMKuGC4ktDIb+7T1fC5WTsI5wO3pzZulwMeFsMeJNF6SMf1XRA4mian4LP5XLQeI7EZENWbio/NnAXHzrHtkL/Y6RZfCBXnzteeHmlvHAwnJkoxLAR6oefS3fDJdxZ9lLC/M3S237LlrFyV1Rb38G4qZuV0KLdU7nZVPVLab9vbjapHkAdkSuZey13++7ruqm7su7Wl++eu3Y6DyuUaY37he0ltJs/G7w0KRrgJ/MmvWy+TXF99VI2Dy8j+Fxtu/LwufzqoW7hupFZinE2deDFt451p6k77MQHLzIXThbzbXb8mlyAmxI9kbg3LsVFEM2FT22kvJ4+Ue7b5D75Qgjxf+39/IUrQ7hg9m/Um7JueorOeVLZ3O3FwbXGTRJo2XA9V4e2+2XbvFSeKFPt4/gDqWVGFt+SmrofR5Rs0j43dfdc7KrtV3/2u/vIlWwjZUS11b/ZNtndBKxkcH8t2reqPRbb6t9l6IbNbVJO+kQGjXBVzx2AzYc1dn6Kp8xFIKeM2OkvWsvGM/xWteOnHZXLQcFsNSzrssn7Wr28bs3DNPVr88aSV15maSkDUyjF3QQ5XEJicr1aNzWHaObsUvNzYCODF19XXLAP0RipISA+b96GOIqG7ZEWevWqfm58jfMb4qfT12FjKTdys0kyjwk+Ru5AzZm/q1NC2dwPfIJakgb2RVtnJ+JsRE6ST+90PqB7GH3DCctUnlkoGGku3HhuJh36UGYQbbrrjbkIO1EwSh8t3MVHGEMBkRcyMTB65eZ8s6uN5vRVqMdlEzJZoAX0BJRNqMjNPGeyfc6YooHKCRW54a0wXwYU4W1pmJt3F3klzFNNqgNq3NkhzN0BNe4GCChxZ0p2Nax7JUC8O2vEzjUQ7wdvQI07dYQcVFQNEO8COb/6hQPBLnCFuTQgePi3Lbuuql/a+EApF7qLqzHFFQJFLniXycsFVzREkAUeR49LXwojkFDboWzLLjZTPHJ8ebWTaYu3MqrC9cxC6iii4gzp5rADilxACzcESNFxtysO1b/jS4C5JMzRdPWi1lXdtgTSXZSthEtZ2+x9Gp+8zMMp1hGmMqrWjPYGRQzmFJQjV4gYK6+sw+ytQ42corBTWLYYIsK5zPHZb6Y7T+8yglq4zmyLp9LLhGUOdIWObFu0LKWZ3RCSG2loQ+7m14V7Eysq3I+7AbIwWN2Wz10bFjpkDuCE+Zkt3/Eql4uX7uK2VV2Gm2dz0MvZ1ssmqYlcylgay803CFeZbbMutn62wU3M0LCH18Jw3kKh7YruyFyGu1QIM7a7Yn8ORk31S2HfqC934fHfshmwK9u2ePFhpjzOWwbYcbLK3DLoPLLsdYQiv1Tda7GvPpd+bonc/I0wTYWFM7+kvEoF4TYfS26LnZ+294oVhF5hEO0gwJfpbvqF/gHI3G+PBrjoNbrLlHAWnBXggityV6iZbP0MRXKW2Vzm5zjytDcH6oXcGgZSafg9O6jutWQ1P27OkIT1G4NYXCPhcosk3IcGEuMAmHulO7LF/iK+K/ZNVXfN06/lmvEF7mwQbm8GuWcyqy3b1gRqzWdWI+kmeUhIkQzSn8tu/Xroo0Ar+ZnJdoEmDH/OsnGu3K3rpnnaO4y/OrcOmeZpQ7w/NG8VL7xeeCnGtCk2CAzjabcw1lyykSIVh8CumUIyeRAYztiVm8oWJsQHaUdeGuqm20i4d9g1Gz/sVW7JEgnLP3lo6bpLPYS9Q4EAqYFlzYdsuPAIRF2+FGYP5UeN7lOTbLmum658ahqv6HfpchPC2rxBDiDj3fyNsDi1Pu6e2CvN3VkmzFE3dbHfMx8w80p6ZdBo6qfyuTmUZvvmMVPOvqjvmp32a4uhTlvoZZp6XdRrhj+f2ZeNHKjhJo/X7/ud68hz2es1YpvWj2a98gipFFt16U0QxzohQdvU5wXV7FT8ENudb8JzDkyeiSqbY2fq7PwqAbfiXCspdLiJc0fKangNQzGYFjLeTT1mqRtMrIaDAkMhhxa/rMPRm8jOPD65rexk9WLQIVz9+jSWx8BcZJ8IwuwkczEQvcJy1H3xUnJu200lCQ8KnXm0t6BymVxaWwsj63311nS2jsr3aq7LzoSm9ZGI52Mduvo0fKdhW5zWnNUwjOo8nsOmWzjr4gGQu16QMB+8b/YBm+0Wp1Em83f7pq3ChdAVJH28Q7UrDv5a4ZaCkpY5ExgquRVyJKT/BkE+/ewWkJ1e5JAj1EL88AS/ByQ3S534xJyh8OS6SWktmzKQH/CEuuujsOz/UNYbwzaFNZ6eq3Om5Wo4ezVkLbUwJHIYB+8Nullz4db0YNJ6KNnojIBw+3XhKDyj3GS78JwhpyI8eW4mTngoq918jhZduFGbnsledbv5HKnFJ5dT1DPZO3DF2QQpr80zt/g4UoWDuPmMKibJpSX1TDyA8fpDcvlIPZPFAIHE8GiQyzpqYT7IiHVrEsM1hVzWTwuP0Labz9hpklttpYU7OUcaZqjIPcinhSf52s1ns1vl9rnIUULklGsTuLIlyz2wcjpUbo5Fyjxu+1psmi++PHflEjq+dnv0AwT3IARJoefUMoEYzGU5tTBvaBiDag3Te+TutbSwBIjJCwHi7ry08DRGLxQtSuSGsVq4cvjigIneGRUh8rqvfhhL3k0Bp8DztCMezicrNfznvDc+H29eDUeC9LBHEUZ/Z5LaW3u8k+5DKbEw8xDQ3p5k78ix7H2CmN/dOAtrtLri8FJ2kUy/VwjfC8hOQ7sYTl0Jr+joykNXBWGw61OEcVZX/otRmu5Tn09DnVNiUrFB3tBNL5GwPMT6cy+R40BmMZT8D7tbJbxLpGuabVf5xfHuCTgSlsnxQyPKOzA+lCOTcJk47jfw+LGbChemwY5tyY71FvvK9wNetlPmocxyaCony3rz65fuULZ7s5XwxbobbmFRnl0z/AS4+y7mMqS8VW31tC3B1QDk3cyRIix2CMV9I7IX4u2MQFDvpjqFHvVLtelevanhmLUYCmiGrII6l2oLN7UmY2XSVcEMdA/8D8uBUud1IUH62OUgbhL5fHDgfHGG0BdbLRYQhhw1xfO+N3a30PnwKMI7DIzsoXaUlXU5Uk+OKRuSzqcnWZ6c/2rwYMN9ImpxHshzlbfMFxl7TP3ntqq9nLJ7rZGwmsqIimyJ3SzY8ux1ZfPciA3R5ESHqwG05wsyJGvNz48P+2pfmqKah28//fz77/8LAWmV6g=="; \ No newline at end of file diff --git a/_docs/master/embedding/sdk/api/snippets/BaseInteractiveQuestionProps.md b/_docs/master/embedding/sdk/api/snippets/BaseInteractiveQuestionProps.md index d03dbf391e..c3205ce9c4 100644 --- a/_docs/master/embedding/sdk/api/snippets/BaseInteractiveQuestionProps.md +++ b/_docs/master/embedding/sdk/api/snippets/BaseInteractiveQuestionProps.md @@ -23,7 +23,7 @@ layout: new-docs | `isSaveEnabled?` | `boolean` | Whether to show the save button. | | `onBeforeSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | | `onRun?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion)) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | -| `onSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | +| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | | `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | | `questionId` | `null` \| [`SdkQuestionId`](./api/SdkQuestionId) | The ID of the question.
          This is either:
          - The numerical ID when accessing a question link, e.g., `http://localhost:3000/question/1-my-question` where the ID is `1`
          - The `entity_id` key of the question object. You can find a question's Entity ID in the info panel when viewing a question
          - `new` to show the notebook editor for creating new questions. `isSaveEnabled` must be `true` to allow saving the question | | `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | diff --git a/_docs/master/embedding/sdk/api/snippets/CreateQuestionProps.md b/_docs/master/embedding/sdk/api/snippets/CreateQuestionProps.md index 8f7635b747..a5ea63f17b 100644 --- a/_docs/master/embedding/sdk/api/snippets/CreateQuestionProps.md +++ b/_docs/master/embedding/sdk/api/snippets/CreateQuestionProps.md @@ -22,7 +22,7 @@ layout: new-docs | `isSaveEnabled?` | `boolean` | Whether to show the save button. | | `onBeforeSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | | `onRun?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion)) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | -| `onSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | +| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | | `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | | `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | | `withDownloads?` | `boolean` | Enables the ability to download results in the interactive question. | diff --git a/_docs/master/embedding/sdk/api/snippets/DrillThroughQuestionProps.md b/_docs/master/embedding/sdk/api/snippets/DrillThroughQuestionProps.md index 477f88f90c..722e953a73 100644 --- a/_docs/master/embedding/sdk/api/snippets/DrillThroughQuestionProps.md +++ b/_docs/master/embedding/sdk/api/snippets/DrillThroughQuestionProps.md @@ -27,7 +27,7 @@ Props for the drill-through question | `isSaveEnabled?` | `boolean` | Whether to show the save button. | | `onBeforeSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | | `onRun?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion)) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | -| `onSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | +| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | | `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | | `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | | `targetCollection?` | [`SdkCollectionId`](./api/SdkCollectionId) | The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions. | diff --git a/_docs/master/embedding/sdk/api/snippets/EditableDashboard.md b/_docs/master/embedding/sdk/api/snippets/EditableDashboard.md index fc427dcb2a..ac04f5dd59 100644 --- a/_docs/master/embedding/sdk/api/snippets/EditableDashboard.md +++ b/_docs/master/embedding/sdk/api/snippets/EditableDashboard.md @@ -10,27 +10,7 @@ layout: new-docs --- ```ts -function EditableDashboard( - props: { - drillThroughQuestionHeight?: Height; - drillThroughQuestionProps?: DrillThroughQuestionProps; - plugins?: MetabasePluginsConfig; - renderDrillThroughQuestion?: () => ReactNode; - } & { - dashboardId: SdkDashboardId; - hiddenParameters?: string[]; - initialParameters?: ParameterValues; - withCardTitle?: boolean; - withDownloads?: boolean; - withTitle?: boolean; - } & { - className?: string; - style?: CSSProperties; - } & { - onLoad?: (dashboard: null | MetabaseDashboard) => void; - onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void; - } & {}, -): Element; +function EditableDashboard(props: EditableDashboardProps): Element; ``` A dashboard component with the features available in the `InteractiveDashboard` component, as well as the ability to add and update questions, layout, and content within your dashboard. @@ -39,9 +19,9 @@ A dashboard component with the features available in the `InteractiveDashboard` -| Parameter | Type | Description | -| :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | -| `props` | \{ `drillThroughQuestionHeight?`: `Height`\<`string` \| `number`\>; `drillThroughQuestionProps?`: [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps); `plugins?`: [`MetabasePluginsConfig`](./api/MetabasePluginsConfig); `renderDrillThroughQuestion?`: () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478); \} & \{ `dashboardId`: [`SdkDashboardId`](./api/SdkDashboardId); `hiddenParameters?`: `string`[]; `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `withCardTitle?`: `boolean`; `withDownloads?`: `boolean`; `withTitle?`: `boolean`; \} & \{ `className?`: `string`; `style?`: [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579); \} & \{ `onLoad?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; `onLoadWithoutCards?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; \} & \{ \} | | +| Parameter | Type | Description | +| :-------- | :---------------------------------------------------------- | :---------- | +| `props` | [`EditableDashboardProps`](./api/EditableDashboardProps) | | diff --git a/_docs/master/embedding/sdk/api/snippets/EditableDashboardProps.md b/_docs/master/embedding/sdk/api/snippets/EditableDashboardProps.md index 70fad729f1..69186d18d2 100644 --- a/_docs/master/embedding/sdk/api/snippets/EditableDashboardProps.md +++ b/_docs/master/embedding/sdk/api/snippets/EditableDashboardProps.md @@ -15,21 +15,22 @@ layout: new-docs -| Property | Type | Description | -| :-------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
          This is either:
          - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
          - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | -| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | -| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | -| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | -| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | -| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | -| `withDownloads?` | `boolean` | Whether to hide the download button. | -| `withTitle?` | `boolean` | Whether the dashboard should display a title. | +| Property | Type | Description | +| :-------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
          This is either:
          - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
          - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | +| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`InteractiveQuestionProps`](./api/InteractiveQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | +| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | +| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | +| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | +| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | +| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | +| `withDownloads?` | `boolean` | Whether to hide the download button. | +| `withTitle?` | `boolean` | Whether the dashboard should display a title. | diff --git a/_docs/master/embedding/sdk/api/snippets/InteractiveDashboard.md b/_docs/master/embedding/sdk/api/snippets/InteractiveDashboard.md index 80ee8b4c82..3f026cc008 100644 --- a/_docs/master/embedding/sdk/api/snippets/InteractiveDashboard.md +++ b/_docs/master/embedding/sdk/api/snippets/InteractiveDashboard.md @@ -29,6 +29,8 @@ function InteractiveDashboard( } & { onLoad?: (dashboard: null | MetabaseDashboard) => void; onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void; + } & { + dataPickerProps?: Pick; } & {}, ): Element; ``` @@ -39,9 +41,9 @@ A dashboard component with drill downs, click behaviors, and the ability to view -| Parameter | Type | Description | -| :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | -| `props` | \{ `drillThroughQuestionHeight?`: `Height`\<`string` \| `number`\>; `drillThroughQuestionProps?`: [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps); `plugins?`: [`MetabasePluginsConfig`](./api/MetabasePluginsConfig); `renderDrillThroughQuestion?`: () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478); \} & \{ `dashboardId`: [`SdkDashboardId`](./api/SdkDashboardId); `hiddenParameters?`: `string`[]; `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `withCardTitle?`: `boolean`; `withDownloads?`: `boolean`; `withTitle?`: `boolean`; \} & \{ `className?`: `string`; `style?`: [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579); \} & \{ `onLoad?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; `onLoadWithoutCards?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; \} & \{ \} | | +| Parameter | Type | Description | +| :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | +| `props` | \{ `drillThroughQuestionHeight?`: `Height`\<`string` \| `number`\>; `drillThroughQuestionProps?`: [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps); `plugins?`: [`MetabasePluginsConfig`](./api/MetabasePluginsConfig); `renderDrillThroughQuestion?`: () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478); \} & \{ `dashboardId`: [`SdkDashboardId`](./api/SdkDashboardId); `hiddenParameters?`: `string`[]; `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `withCardTitle?`: `boolean`; `withDownloads?`: `boolean`; `withTitle?`: `boolean`; \} & \{ `className?`: `string`; `style?`: [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579); \} & \{ `onLoad?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; `onLoadWithoutCards?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; \} & \{ `dataPickerProps?`: [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`InteractiveQuestionProps`](./api/InteractiveQuestionProps), `"entityTypes"`\>; \} & \{ \} | | diff --git a/_docs/master/embedding/sdk/api/snippets/InteractiveDashboardProps.md b/_docs/master/embedding/sdk/api/snippets/InteractiveDashboardProps.md index 5b34cbca34..f479613fcb 100644 --- a/_docs/master/embedding/sdk/api/snippets/InteractiveDashboardProps.md +++ b/_docs/master/embedding/sdk/api/snippets/InteractiveDashboardProps.md @@ -15,21 +15,22 @@ layout: new-docs -| Property | Type | Description | -| :-------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
          This is either:
          - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
          - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | -| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | -| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | -| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | -| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | -| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | -| `withDownloads?` | `boolean` | Whether to hide the download button. | -| `withTitle?` | `boolean` | Whether the dashboard should display a title. | +| Property | Type | Description | +| :-------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
          This is either:
          - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
          - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | +| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`InteractiveQuestionProps`](./api/InteractiveQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | +| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | +| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | +| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | +| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | +| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | +| `withDownloads?` | `boolean` | Whether to hide the download button. | +| `withTitle?` | `boolean` | Whether the dashboard should display a title. | diff --git a/_docs/master/embedding/sdk/api/snippets/InteractiveQuestionProps.md b/_docs/master/embedding/sdk/api/snippets/InteractiveQuestionProps.md index 3c2c95efc9..58e17b122f 100644 --- a/_docs/master/embedding/sdk/api/snippets/InteractiveQuestionProps.md +++ b/_docs/master/embedding/sdk/api/snippets/InteractiveQuestionProps.md @@ -25,7 +25,7 @@ layout: new-docs | `isSaveEnabled?` | `boolean` | Whether to show the save button. | | `onBeforeSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | A callback function that triggers before saving. Only relevant when `isSaveEnabled = true` | | `onRun?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion)) => `void` | A callback function that triggers when a question is updated, including when a user clicks the `Visualize` button in the question editor | -| `onSave?` | (`question`: `undefined` \| [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | +| `onSave?` | (`question`: [`MetabaseQuestion`](./api/MetabaseQuestion), `context`: \{ `dashboardTabId?`: `number`; `isNewQuestion`: `boolean`; \}) => `void` | A callback function that triggers when a user saves the question. Only relevant when `isSaveEnabled = true` | | `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | - | | `questionId` | `null` \| [`SdkQuestionId`](./api/SdkQuestionId) | The ID of the question.
          This is either:
          - The numerical ID when accessing a question link, e.g., `http://localhost:3000/question/1-my-question` where the ID is `1`
          - The `entity_id` key of the question object. You can find a question's Entity ID in the info panel when viewing a question
          - `new` to show the notebook editor for creating new questions. `isSaveEnabled` must be `true` to allow saving the question | | `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | diff --git a/_docs/master/embedding/sdk/api/snippets/StaticDashboard.md b/_docs/master/embedding/sdk/api/snippets/StaticDashboard.md index 69822c2f65..3136fb39f0 100644 --- a/_docs/master/embedding/sdk/api/snippets/StaticDashboard.md +++ b/_docs/master/embedding/sdk/api/snippets/StaticDashboard.md @@ -29,6 +29,8 @@ function StaticDashboard( } & { onLoad?: (dashboard: null | MetabaseDashboard) => void; onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void; + } & { + dataPickerProps?: Pick; } & {}, ): Element; ``` @@ -39,9 +41,9 @@ A lightweight dashboard component. -| Parameter | Type | Description | -| :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | -| `props` | \{ `drillThroughQuestionHeight?`: `Height`\<`string` \| `number`\>; `drillThroughQuestionProps?`: [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps); `plugins?`: [`MetabasePluginsConfig`](./api/MetabasePluginsConfig); `renderDrillThroughQuestion?`: () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478); \} & \{ `dashboardId`: [`SdkDashboardId`](./api/SdkDashboardId); `hiddenParameters?`: `string`[]; `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `withCardTitle?`: `boolean`; `withDownloads?`: `boolean`; `withTitle?`: `boolean`; \} & \{ `className?`: `string`; `style?`: [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579); \} & \{ `onLoad?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; `onLoadWithoutCards?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; \} & \{ \} | | +| Parameter | Type | Description | +| :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | +| `props` | \{ `drillThroughQuestionHeight?`: `Height`\<`string` \| `number`\>; `drillThroughQuestionProps?`: [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps); `plugins?`: [`MetabasePluginsConfig`](./api/MetabasePluginsConfig); `renderDrillThroughQuestion?`: () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478); \} & \{ `dashboardId`: [`SdkDashboardId`](./api/SdkDashboardId); `hiddenParameters?`: `string`[]; `initialParameters?`: [`ParameterValues`](./api/ParameterValues); `withCardTitle?`: `boolean`; `withDownloads?`: `boolean`; `withTitle?`: `boolean`; \} & \{ `className?`: `string`; `style?`: [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579); \} & \{ `onLoad?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; `onLoadWithoutCards?`: (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void`; \} & \{ `dataPickerProps?`: [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`InteractiveQuestionProps`](./api/InteractiveQuestionProps), `"entityTypes"`\>; \} & \{ \} | | diff --git a/_docs/master/embedding/sdk/api/snippets/StaticDashboardProps.md b/_docs/master/embedding/sdk/api/snippets/StaticDashboardProps.md index 973d587f57..048fcb36ab 100644 --- a/_docs/master/embedding/sdk/api/snippets/StaticDashboardProps.md +++ b/_docs/master/embedding/sdk/api/snippets/StaticDashboardProps.md @@ -15,21 +15,22 @@ layout: new-docs -| Property | Type | Description | -| :-------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `className?` | `string` | A custom class name to be added to the root element. | -| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
          This is either:
          - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
          - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | -| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | -| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | -| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | -| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | -| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | -| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | -| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | -| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | -| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | -| `withDownloads?` | `boolean` | Whether to hide the download button. | -| `withTitle?` | `boolean` | Whether the dashboard should display a title. | +| Property | Type | Description | +| :-------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `className?` | `string` | A custom class name to be added to the root element. | +| `dashboardId` | [`SdkDashboardId`](./api/SdkDashboardId) | The ID of the dashboard.
          This is either:
          - the numerical ID when accessing a dashboard link, i.e. `http://localhost:3000/dashboard/1-my-dashboard` where the ID is `1`
          - the string ID found in the `entity_id` key of the dashboard object when using the API directly or using the SDK Collection Browser to return data | +| `dataPickerProps?` | [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`InteractiveQuestionProps`](./api/InteractiveQuestionProps), `"entityTypes"`\> | Additional props to pass to the query builder rendered by `InteractiveQuestion` when creating a new dashboard question. | +| `drillThroughQuestionHeight?` | `Height`\<`string` \| `number`\> | Height of a question component when drilled from the dashboard to a question level. | +| `drillThroughQuestionProps?` | [`DrillThroughQuestionProps`](./api/DrillThroughQuestionProps) | Props of a question component when drilled from the dashboard to a question level. | +| `hiddenParameters?` | `string`[] | A list of [parameters to hide](/docs/master/embedding/public-links#appearance-parameters).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `initialParameters?` | [`ParameterValues`](./api/ParameterValues) | Query parameters for the dashboard. For a single option, use a `string` value, and use a list of strings for multiple options.
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to filter data on the frontend is a [security risk](/docs/master/embedding/sdk/authentication#security-warning-each-end-user-must-have-their-own-metabase-account).
          - Combining [initialParameters](./api/StaticDashboardProps#initialparameters) and [hiddenParameters](./api/StaticDashboardProps#hiddenparameters) to declutter the user interface is fine. | +| `onLoad?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded. | +| `onLoadWithoutCards?` | (`dashboard`: `null` \| [`MetabaseDashboard`](./api/MetabaseDashboard)) => `void` | Callback that is called when the dashboard is loaded without cards. | +| `plugins?` | [`MetabasePluginsConfig`](./api/MetabasePluginsConfig) | Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details. | +| `renderDrillThroughQuestion?` | () => [`ReactNode`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L478) | A custom React component to render the question layout. Use namespaced InteractiveQuestion components to build the layout. | +| `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | +| `withCardTitle?` | `boolean` | Whether the dashboard cards should display a title. | +| `withDownloads?` | `boolean` | Whether to hide the download button. | +| `withTitle?` | `boolean` | Whether the dashboard should display a title. | diff --git a/_docs/master/embedding/sdk/api/snippets/StaticQuestionProps.md b/_docs/master/embedding/sdk/api/snippets/StaticQuestionProps.md index 6ddcd0fcd0..b652cbc226 100644 --- a/_docs/master/embedding/sdk/api/snippets/StaticQuestionProps.md +++ b/_docs/master/embedding/sdk/api/snippets/StaticQuestionProps.md @@ -24,5 +24,6 @@ layout: new-docs | `style?` | [`CSSProperties`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0b728411cd1dfb4bd26992bb35a73cf8edaa22e7/types/react/index.d.ts#L2579) | A custom style object to be added to the root element. | | `width?` | `Width`\<`string` \| `number`\> | A number or string specifying a CSS size value that specifies the width of the component | | `withChartTypeSelector?` | `boolean` | - | +| `withDownloads?` | `boolean` | Enables the ability to download results in the interactive question. | diff --git a/_docs/master/embedding/sdk/introduction.md b/_docs/master/embedding/sdk/introduction.md index ebc1382933..ea4912cfde 100644 --- a/_docs/master/embedding/sdk/introduction.md +++ b/_docs/master/embedding/sdk/introduction.md @@ -114,7 +114,7 @@ View the SDK's changelog: ## Embedded analytics SDK on NPM -Check out the Metabase Embedded analytics SDK on NPM: [metaba.se/sdk](https://metaba.se/sdk). +Check out the Metabase Embedded analytics SDK on NPM: [metaba.se/sdk-npm](https://metaba.se/sdk-npm). ## SDK limitations @@ -125,7 +125,11 @@ The SDK doesn't support: - Subscriptions - Alerts - Server-side rendering (SSR) + +Other limitations: + - Multiple _interactive_ dashboards on the same application page. If you need to embed multiple dashboards on the same application page, you can embed static dashboards. +- If you have Leaflet 1.x as a dependency in your app, you may run into compatibility issues. You can try using Leaflet 2.x instead. ## Issues, feature requests and support diff --git a/_docs/master/exploration-and-organization/images/DataReference.png b/_docs/master/exploration-and-organization/images/DataReference.png index 1b91e84ebc..5b8967a7b2 100644 Binary files a/_docs/master/exploration-and-organization/images/DataReference.png and b/_docs/master/exploration-and-organization/images/DataReference.png differ diff --git a/_docs/master/exploration-and-organization/images/browse-data.png b/_docs/master/exploration-and-organization/images/browse-data.png index 9429442b26..f857430ff8 100644 Binary files a/_docs/master/exploration-and-organization/images/browse-data.png and b/_docs/master/exploration-and-organization/images/browse-data.png differ diff --git a/_docs/master/exploration-and-organization/images/event-on-a-time-series.png b/_docs/master/exploration-and-organization/images/event-on-a-time-series.png index 66168ce82a..acc04a435b 100644 Binary files a/_docs/master/exploration-and-organization/images/event-on-a-time-series.png and b/_docs/master/exploration-and-organization/images/event-on-a-time-series.png differ diff --git a/_docs/master/exploration-and-organization/images/pinned-show-viz.png b/_docs/master/exploration-and-organization/images/pinned-show-viz.png index 6c58b5e734..41ac861ee0 100644 Binary files a/_docs/master/exploration-and-organization/images/pinned-show-viz.png and b/_docs/master/exploration-and-organization/images/pinned-show-viz.png differ diff --git a/_docs/master/exploration-and-organization/images/question-checkbox.png b/_docs/master/exploration-and-organization/images/question-checkbox.png index 4887db0e22..d9ba8c5014 100644 Binary files a/_docs/master/exploration-and-organization/images/question-checkbox.png and b/_docs/master/exploration-and-organization/images/question-checkbox.png differ diff --git a/_docs/master/exploration-and-organization/images/search-results.png b/_docs/master/exploration-and-organization/images/search-results.png index 177b5b507a..1b91e84ebc 100644 Binary files a/_docs/master/exploration-and-organization/images/search-results.png and b/_docs/master/exploration-and-organization/images/search-results.png differ diff --git a/_docs/master/installation-and-operation/images/AZPrivateLink.png b/_docs/master/installation-and-operation/images/AZPrivateLink.png index c520b55bdd..1834491eb7 100644 Binary files a/_docs/master/installation-and-operation/images/AZPrivateLink.png and b/_docs/master/installation-and-operation/images/AZPrivateLink.png differ diff --git a/_docs/master/installation-and-operation/images/AZVNETintegration.png b/_docs/master/installation-and-operation/images/AZVNETintegration.png index f69b404401..7bb1d7a4f0 100644 Binary files a/_docs/master/installation-and-operation/images/AZVNETintegration.png and b/_docs/master/installation-and-operation/images/AZVNETintegration.png differ diff --git a/_docs/master/installation-and-operation/images/AddRemoteHost.png b/_docs/master/installation-and-operation/images/AddRemoteHost.png index a3bdb2b9c8..ab8def0988 100644 Binary files a/_docs/master/installation-and-operation/images/AddRemoteHost.png and b/_docs/master/installation-and-operation/images/AddRemoteHost.png differ diff --git a/_docs/master/installation-and-operation/images/LocalProcessVisualVM.png b/_docs/master/installation-and-operation/images/LocalProcessVisualVM.png index d71e3e03d6..f07a2758c5 100644 Binary files a/_docs/master/installation-and-operation/images/LocalProcessVisualVM.png and b/_docs/master/installation-and-operation/images/LocalProcessVisualVM.png differ diff --git a/_docs/master/installation-and-operation/images/Metabase-AWS-SI.png b/_docs/master/installation-and-operation/images/Metabase-AWS-SI.png index 6a49e9a6dc..d60c5504d6 100644 Binary files a/_docs/master/installation-and-operation/images/Metabase-AWS-SI.png and b/_docs/master/installation-and-operation/images/Metabase-AWS-SI.png differ diff --git a/_docs/master/installation-and-operation/images/OpenRemoteInstance.png b/_docs/master/installation-and-operation/images/OpenRemoteInstance.png index fa97c0e30a..454be8a831 100644 Binary files a/_docs/master/installation-and-operation/images/OpenRemoteInstance.png and b/_docs/master/installation-and-operation/images/OpenRemoteInstance.png differ diff --git a/_docs/master/installation-and-operation/running-metabase-on-azure.md b/_docs/master/installation-and-operation/running-metabase-on-azure.md index 12d8db0a81..f400b9791d 100644 --- a/_docs/master/installation-and-operation/running-metabase-on-azure.md +++ b/_docs/master/installation-and-operation/running-metabase-on-azure.md @@ -111,7 +111,7 @@ Now go to the next step where you will select: - **Options**: Single container. - **Image source**: DockerHub. - **Access Type**: Public. -- **Image and tag**: metabase/metabase:latest (or choose any other docker image tag of your preference, like our Enterprise Edition). To find the latest version, check our [Community Edition Dockerhub repository](https://hub.docker.com/r/metabase/metabase/tags?page=1&ordering=last_updated) and also our [Enterprise Edition Dockerhub Repository](https://hub.docker.com/r/metabase/metabase-enterprise/tags?page=1&ordering=last_updated). +- **Image and tag**: metabase/metabase:latest (or choose any other docker image tag of your preference, like our Enterprise Edition). To find the latest version, check our [Community Edition Docker Hub repository](https://hub.docker.com/r/metabase/metabase/tags?page=1&ordering=last_updated) and also our [Enterprise Edition Docker Hub Repository](https://hub.docker.com/r/metabase/metabase-enterprise/tags?page=1&ordering=last_updated). - **Startup command**: Leave this field empty. Click **Next** until you get to the last section, then click **Create**, and wait while your application initializes. diff --git a/_docs/master/installation-and-operation/running-metabase-on-docker.md b/_docs/master/installation-and-operation/running-metabase-on-docker.md index 282a5d9daa..b96b5f1a90 100644 --- a/_docs/master/installation-and-operation/running-metabase-on-docker.md +++ b/_docs/master/installation-and-operation/running-metabase-on-docker.md @@ -15,7 +15,7 @@ redirect_from: > To get fast, reliable, and secure deployment with none of the work or hidden costs that come with self-hosting, check out [Metabase Cloud](/cloud/). -Metabase provides an official Docker image via Dockerhub that can be used for deployments on any system that is running Docker. +Metabase provides an official Docker image via Docker Hub that can be used for deployments on any system that is running Docker. If you're trying to upgrade your Metabase version on Docker, check out these [upgrading instructions](upgrading-metabase). diff --git a/_docs/master/people-and-groups/images/JWT-auth-form.png b/_docs/master/people-and-groups/images/JWT-auth-form.png index ce5b0e7415..ed91fea29b 100644 Binary files a/_docs/master/people-and-groups/images/JWT-auth-form.png and b/_docs/master/people-and-groups/images/JWT-auth-form.png differ diff --git a/_docs/master/people-and-groups/images/auth0callbackurl.png b/_docs/master/people-and-groups/images/auth0callbackurl.png index dda21e391d..8371279d7d 100644 Binary files a/_docs/master/people-and-groups/images/auth0callbackurl.png and b/_docs/master/people-and-groups/images/auth0callbackurl.png differ diff --git a/_docs/master/people-and-groups/images/auth0createapp.png b/_docs/master/people-and-groups/images/auth0createapp.png index 6fbdab7fcf..2fb7bd3907 100644 Binary files a/_docs/master/people-and-groups/images/auth0createapp.png and b/_docs/master/people-and-groups/images/auth0createapp.png differ diff --git a/_docs/master/people-and-groups/images/auth0regularapp.png b/_docs/master/people-and-groups/images/auth0regularapp.png index 6fbdab7fcf..7d23c598f1 100644 Binary files a/_docs/master/people-and-groups/images/auth0regularapp.png and b/_docs/master/people-and-groups/images/auth0regularapp.png differ diff --git a/_docs/master/people-and-groups/images/auth0saml2addon.png b/_docs/master/people-and-groups/images/auth0saml2addon.png index 8926f599ba..6fbdab7fcf 100644 Binary files a/_docs/master/people-and-groups/images/auth0saml2addon.png and b/_docs/master/people-and-groups/images/auth0saml2addon.png differ diff --git a/_docs/master/people-and-groups/images/auth0samlmappings.png b/_docs/master/people-and-groups/images/auth0samlmappings.png index 6fbdab7fcf..a673bc98ba 100644 Binary files a/_docs/master/people-and-groups/images/auth0samlmappings.png and b/_docs/master/people-and-groups/images/auth0samlmappings.png differ diff --git a/_docs/master/people-and-groups/images/auth0samlusage.png b/_docs/master/people-and-groups/images/auth0samlusage.png index 6fbdab7fcf..7dbf8c7523 100644 Binary files a/_docs/master/people-and-groups/images/auth0samlusage.png and b/_docs/master/people-and-groups/images/auth0samlusage.png differ diff --git a/_docs/master/people-and-groups/images/groups.png b/_docs/master/people-and-groups/images/groups.png index 8926f599ba..759a222b61 100644 Binary files a/_docs/master/people-and-groups/images/groups.png and b/_docs/master/people-and-groups/images/groups.png differ diff --git a/_docs/master/people-and-groups/images/okta-group-attribute.png b/_docs/master/people-and-groups/images/okta-group-attribute.png index a48ae1a137..baf8cdc518 100644 Binary files a/_docs/master/people-and-groups/images/okta-group-attribute.png and b/_docs/master/people-and-groups/images/okta-group-attribute.png differ diff --git a/_docs/master/people-and-groups/images/saml-azure-step-1.png b/_docs/master/people-and-groups/images/saml-azure-step-1.png index e8ae330628..4becab567e 100644 Binary files a/_docs/master/people-and-groups/images/saml-azure-step-1.png and b/_docs/master/people-and-groups/images/saml-azure-step-1.png differ diff --git a/_docs/master/people-and-groups/images/saml-okta-groups.png b/_docs/master/people-and-groups/images/saml-okta-groups.png index 98a4a6fc63..9df2d9fb1d 100644 Binary files a/_docs/master/people-and-groups/images/saml-okta-groups.png and b/_docs/master/people-and-groups/images/saml-okta-groups.png differ diff --git a/_docs/master/people-and-groups/saml-google.md b/_docs/master/people-and-groups/saml-google.md index 4fdf6641da..872da68569 100644 --- a/_docs/master/people-and-groups/saml-google.md +++ b/_docs/master/people-and-groups/saml-google.md @@ -68,7 +68,9 @@ For example, to add the attribute "First name": ## Setting up synchronize group membership -1. In Google Admin, setup a multi-value [custom user attribute](https://support.google.com/a/answer/6208725?hl=en#zippy=%2Cadd-a-new-custom-attribute) for your users (recommended if you manage multiple SAML app permissions in Google or do not have existing Google Groups that align with your desired Metabase groups) OR [map to existing Google Groups](https://support.google.com/a/answer/11143403?hl=en). +1. In Google Admin, you can EITHER: + - Set up a multi-value [custom user attribute](https://support.google.com/a/answer/6208725?hl=en#zippy=%2Cadd-a-new-custom-attribute) for your users. Recommended if you manage multiple SAML app permissions in Google or if you lack existing Google Groups that align with your desired Metabase groups. + - [Map to existing Google Groups](https://support.google.com/a/answer/11143403?hl=en). 2. Follow the instructions for [Configuring the group schema](./authenticating-with-saml#configuring-the-group-schema-in-metabase) using the `App attribute` that you used in Google as the Group attribute name in Metabase. ## Troubleshooting SAML issues diff --git a/_docs/master/permissions/database-routing.md b/_docs/master/permissions/database-routing.md index 38fc239ea4..35f902f2b7 100644 --- a/_docs/master/permissions/database-routing.md +++ b/_docs/master/permissions/database-routing.md @@ -25,6 +25,7 @@ Database routing is useful for: ## Databases that support database routing +- [BigQuery](../databases/connections/bigquery) - [Druid](../databases/connections/druid) - [MongoDB](../databases/connections/mongodb) - [MariaDB](../databases/connections/mariadb) diff --git a/_docs/master/permissions/images/admin-panel-collections.png b/_docs/master/permissions/images/admin-panel-collections.png index cc2c707278..155d34f84e 100644 Binary files a/_docs/master/permissions/images/admin-panel-collections.png and b/_docs/master/permissions/images/admin-panel-collections.png differ diff --git a/_docs/master/permissions/images/advanced-example-1-sandbox-modal.png b/_docs/master/permissions/images/advanced-example-1-sandbox-modal.png index f0997404d5..e84c8f1aef 100644 Binary files a/_docs/master/permissions/images/advanced-example-1-sandbox-modal.png and b/_docs/master/permissions/images/advanced-example-1-sandbox-modal.png differ diff --git a/_docs/master/permissions/images/dashboard-no-permissions.png b/_docs/master/permissions/images/dashboard-no-permissions.png index c9c10c5129..3c02e69fc9 100644 Binary files a/_docs/master/permissions/images/dashboard-no-permissions.png and b/_docs/master/permissions/images/dashboard-no-permissions.png differ diff --git a/_docs/master/permissions/images/pinned-items.png b/_docs/master/permissions/images/pinned-items.png index 76c2b7c0aa..960bcb87f1 100644 Binary files a/_docs/master/permissions/images/pinned-items.png and b/_docs/master/permissions/images/pinned-items.png differ diff --git a/_docs/master/permissions/images/select-impersonated.png b/_docs/master/permissions/images/select-impersonated.png new file mode 100644 index 0000000000..db48b29a27 Binary files /dev/null and b/_docs/master/permissions/images/select-impersonated.png differ diff --git a/_docs/master/permissions/images/select-user-attribute.png b/_docs/master/permissions/images/select-user-attribute.png index 5fb459752f..6fe341045c 100644 Binary files a/_docs/master/permissions/images/select-user-attribute.png and b/_docs/master/permissions/images/select-user-attribute.png differ diff --git a/_docs/master/permissions/images/user-attribute-impersonation.png b/_docs/master/permissions/images/user-attribute-impersonation.png new file mode 100644 index 0000000000..24031d7e6c Binary files /dev/null and b/_docs/master/permissions/images/user-attribute-impersonation.png differ diff --git a/_docs/master/permissions/impersonation.md b/_docs/master/permissions/impersonation.md index 911ad9532c..0303d10667 100644 --- a/_docs/master/permissions/impersonation.md +++ b/_docs/master/permissions/impersonation.md @@ -13,7 +13,7 @@ layout: new-docs {% include plans-blockquote.html feature="Impersonation access" %} -> For now, impersonation access is only available for MySQL, PostgreSQL, Redshift, Snowflake, and SQL Server. If you want to switch database _connections_ based on who is logged in, check out [Database routing](./database-routing). +> For now, impersonation access is only available for ClickHouse, MySQL, PostgreSQL, Redshift, Snowflake, and SQL Server. If you want to switch database _connections_ based on who is logged in, check out [Database routing](./database-routing). > If you're using views in PostgresSQL, the row-level security policies on views will only work on Postgres versions 15 and higher. @@ -21,34 +21,126 @@ This page covers the [View data](./data#view-data-permissions) permission level **Impersonation access** allows admins to "outsource" View data permissions to roles in your database. Admins can associate user attributes with database-defined roles and their privileges. If someone is in a group with their View data permission set to Impersonation, the person will be able to view and query data based on the privileges granted to the role specified by their user attribute. -## Setting up connection impersonation +## Impersonation vs sandboxing -> \*\*For impersonation to work for Redshift databases, the user account Metabase uses to [connect to your Redshift database](../databases/connections/redshift) must be a superuser, as Metabase will need to be able to run the [SET SESSION AUTHORIZATION](https://docs.aws.amazon.com/redshift/latest/dg/r_SET_SESSION_AUTHORIZATION) command, which can only be run by a database superuser. +### Impersonation sets permissions for questions written in both the SQL editor and the query builder + +Impersonation operates at the database level. In a database engine, setting the role before the query runs can alter the results of the query, as the role defines the permissions that your database should use when it executes the statements. + +### Sandboxing only sets permissions for query builder questions + +Sandboxing operates at the Metabase level. Since Metabase can't parse SQL queries to find out what data people are allowed to view, sandboxing only applies to questions composed in the query builder (where Metabase can interpret the queries). + +## Example use case for impersonation + +Let's say we have a People table that includes rows of accounts from all 50 states of the United States. Let's say you want your Vermont sales team to: + +- Be able to ask questions using both the query builder and the native SQL editor. +- Only be able to view customer accounts in the People table who live in Vermont. + +First, you'll set up permissions in your database by creating a role with a policy. Then in Metabase, you'll set data access to that database to Impersonation, so when people run queries on that database, Metabase will use that role to limit what data they can see. + +## Set up connection impersonation For impersonation access to work, you'll first need to set up roles in your database for Metabase to impersonate, then configure Metabase to impersonate those roles when people view or query data. +### Set up Metabase database connection for impersonation + +Impersonation uses database roles to run queries on your database, but there still needs to be a default role that that will be used to run operations like [sync, scans, and fingerprinting](../databases/sync-scan). So the user account that Metabase uses to [connect to your database](../databases/connecting) should have access to everything in that database that any Metabase group may need access to, as that database user account is what Metabase uses to sync table information. + +You can then create roles in the database that have more restrictive access to the database (like row-level or table-level security). When the role is passed to the database using impersonation, the engine will return a subset of the data, or restrict the query altogether. + +> For **Redshift** databases, the user account Metabase uses to [connect to your Redshift database](../databases/connections/redshift) must be a superuser, as Metabase will need to be able to run the [SET SESSION AUTHORIZATION](https://docs.aws.amazon.com/redshift/latest/dg/r_SET_SESSION_AUTHORIZATION) command, which can only be run by a database superuser. + ### In your database, set up roles -1. Create a new role (in Redshift, this would be a new user). -2. Grant that role privileges. +In your database (not in Metabase): + +1. Create a new database role (in Redshift, this would be a new user). +2. Grant that role privileges that you'd like impersonated users to have.. For exactly how to create a new role in your database and grant that role privileges, you'll need to consult your database's documentation. We also have some docs on [users, roles, and privileges](../databases/users-roles-privileges) that can help you get started. -### In your Metabase, set up impersonation and specify a user attribute +For example, if you're using PostgreSQL, the SQL below will create a role called `vermont_sales_team` and only allow that role to select rows in the `people` table where the value in the `state` column is `VT` (the abbreviation for Vermont): + +```sql +CREATE ROLE vermont_sales_team; + +GRANT +SELECT ON ALL TABLES IN SCHEMA PUBLIC TO vermont_sales_team; + + +CREATE POLICY vermont ON people +FOR +SELECT TO vermont_sales_team USING (state = 'VT'); + + +ALTER TABLE people ENABLE ROW LEVEL SECURITY; +``` + +### Set up a Metabase group + +Permissions in Metabase, including impersonation, are managed by groups, so you'll need to: + +1. [Create a new group](../people-and-groups/managing#groups) (or select an existing one). +2. [Add people to the group](../people-and-groups/managing#adding-people-to-groups). + +You might want to create a test user and add them to the group to verify later that impersonation is working correctly. -1. **Create a [new group](../people-and-groups/managing#groups)**, or select an existing group. +### Assign a user attribute to people in the group -2. **Assign a [user attribute](../people-and-groups/managing#adding-a-user-attribute) to people in that group.** You'll use this user attribute to associate people in that group with a role that you created in your database. For example, if you created a role named `sales` in your database with access to a subset of tables relevant to the sales team, you would add a user attribute called `db_role` (or whatever you want to call the attribute) and assign the value `sales` to the person's `db_role`. The value of the attribute (`sales` in this case) should match the name of the role in your database. Only some databases enforce case sensitivity, so you might want to make sure the attribute's value and the database's role match exactly. +To associate people in the group with a role that you created in your database, you'll use a user attribute. -3. **Apply the impersonation access to that group.**. Hit Cmd/Ctrl + K to bring up the command palette. Search for **Permissions**. Or go to **Admin settings** > **Permissions** > **Data**. +Assign a [user attribute](../people-and-groups/managing#adding-a-user-attribute) to people in your group: -4. Select the database you want to set permissions on. +- The **key** of the attribute can be anything. +- The **value** of the attribute must match the desired database role for every person. -5. Find the group that you want to associate with the database role you created. Under **View data** setting for that group, select **Impersonation**. +![Setting a user attribute for impersonation](./images/user-attribute-impersonation.png) -6. From the dropdown, select the user attribute that you added that maps to the role you want the group to use when querying the database. +For example, if you created a role named `vermont_sales_team` in your database with access to a subset of data relevant to the Vermont sales team (like [in the example above](#in-your-database-set-up-roles)), you could add a user attribute called `db_role` (or whatever you want to call the attribute) and assign the value `vermont_sales_team` to the person's `db_role` attribute. -7. Save your changes. +Some databases enforce case sensitivity, so you might want to make sure the attribute's value and the database's role match exactly. + +People in one group can have different attribute values, but must have the same attribute key. See [People in a group with impersonation access to data do not necessarily share the same privileges](#people-in-a-group-with-impersonation-access-to-data-do-not-necessarily-share-the-same-privileges). + +### Set up impersonation + +1. In Metabase, hit Cmd/Ctrl + K to bring up the command palette and search for **Permissions**, or go directly to **Admin settings** > **Permissions** > **Data**. + +2. Select the group that you want to to associate with the database role you created. + +3. Select the database to configure access to. + +4. Under **View data** setting for that database, select **Impersonation**. This option will only be visible if you already [created a user attribute](#assign-a-user-attribute-to-people-in-the-group). + + ![Select impersonated permissions](./images/select-impersonated.png) + + If your All Users group has more permissive access to this database (for example, "Can view"), you will see a warning, because [Metabase gives people the most permissive access to data across all of their groups](#metabase-gives-people-the-most-permissive-access-to-data-across-all-of-their-groups). You'll need to [block database access for the All Users group](./data#revoke-access-even-though-all-users-has-greater-access) before setting up impersonation. + +5. From the user attribute dropdown, select the user attribute that you added that maps to the role you want the group to use when querying the database. + +6. Save your changes. + +Remember to also set up ["Create queries"](./data#create-queries-permissions) permissions for your group and database. For example, if you'd like people to be able to write SQL while using impersonated database roles, you'll need to set "Create queries" permissions to "Query builder and native". + +### Verify that impersonated permissions are working + +Admins will not be able to verify that impersonation is are working from their own account, so you should create a test user, add them to the group and set up their user attributes. + +To verify that the impersonated permissions are working: + +- If the test user has "Create queries" permissions set to "Create queries and native", create a SQL question and verify that the test user can only see the right data. + +For example, for the `vermont_sales_team` role from the [example above](#in-your-database-set-up-roles), you can run: + +``` +SELECT * FROM people; +``` + +to verify that the test user only sees data from Vermont. + +- If the test user has "Create queries" permissions set to "Query builder only", go to **Browse data** in the left sidebar and verify that the user can only see the tables they have access to, and only the data in those tables that ## People in a group with impersonation access to data do not necessarily share the same privileges @@ -56,13 +148,11 @@ Metabase will use whatever role you specify in the user attribute for each perso ## Use impersonation to set up row-level SQL access -You can use impersonation to give people access to the native/SQL editor, while restricting their access to data based on a specific database role. And not just table-level access, but row-level access---or however you define access for that role in your database. Effectively, you can use impersonation to set up data sandbox-like access to your data, while letting people use the SQL editor to query that data. The difference is that, _instead of setting up a data sandbox in Metabase, you need to set up that row-level security via the privileges granted to a role in your database._ +You can use impersonation to give people access to the SQL editor, while restricting their access to data based on a specific database role. And not just table-level access, but row-level access---or however you define access for that role in your database. Effectively, you can use impersonation to set up data sandbox-like access to your data, while letting people use the SQL editor to query that data. The difference is that, _instead of setting up a data sandbox in Metabase, you need to set up that row-level security via the privileges granted to a role in your database._ If instead you want to give a group SQL access to some, but not all, of the schemas or tables in that database, you can create an additional role in your database that only includes a subset of those tables---or even specific row-level access---and then use Metabase's impersonation feature to associate a user attribute with that role. Essentially what Metabase will do is take the user attribute and pass that attribute as a string into a `SET ROLE` or `USE ROLE` command for the database _before_ Metabase executes the query. -Connection impersonation doesn't apply to people in the Metabase admins group, as their more permissive privileges take precedence. - -For more about how to set this up, check out [Use Impersonation to get row-level permissions with both GUI and SQL queries](/learn/metabase-basics/administration/permissions/impersonation). +Connection impersonation doesn't apply to people in the Metabase Admins group, as their more permissive privileges take precedence. ## Metabase gives people the most permissive access to data across all of their groups @@ -73,6 +163,10 @@ So if a person is in two groups with different permissions for the same database Blue group's more permissive access would override the impersonated access. -## Further reading +## Admins won't see the effects of impersonation + +Admins won't ever see the effects of impersonation effects, because their privileges will override those of any other group they're a member of. + +Metabase's default Administrators group has "Can view" access to all databases, and Metabase uses the most permissive access for any person in multple groups, so any admin will have "Can view" - not "Impersonated" - access to the database. -- [Use Impersonation to get row-level permissions with both GUI and SQL queries](/learn/metabase-basics/administration/permissions/impersonation) +To test impersonation, create a test user, assign them a user attribute with the database role, and add them to the impersonated group. Then, log in as the test user and verify the data access. diff --git a/_docs/master/questions/images/SQL-filter-widget.png b/_docs/master/questions/images/SQL-filter-widget.png index 22f38f2e92..318c459779 100644 Binary files a/_docs/master/questions/images/SQL-filter-widget.png and b/_docs/master/questions/images/SQL-filter-widget.png differ diff --git a/_docs/master/questions/images/add-comparison.png b/_docs/master/questions/images/add-comparison.png index 416c5e974f..d193fa0481 100644 Binary files a/_docs/master/questions/images/add-comparison.png and b/_docs/master/questions/images/add-comparison.png differ diff --git a/_docs/master/questions/images/area.png b/_docs/master/questions/images/area.png index 676d7840a3..8008354d87 100644 Binary files a/_docs/master/questions/images/area.png and b/_docs/master/questions/images/area.png differ diff --git a/_docs/master/questions/images/bin-by-latlong.png b/_docs/master/questions/images/bin-by-latlong.png index 60cbdafba4..ac8e7481e4 100644 Binary files a/_docs/master/questions/images/bin-by-latlong.png and b/_docs/master/questions/images/bin-by-latlong.png differ diff --git a/_docs/master/questions/images/chart-formatting-options.png b/_docs/master/questions/images/chart-formatting-options.png index 14d64cca39..5e1fe30691 100644 Binary files a/_docs/master/questions/images/chart-formatting-options.png and b/_docs/master/questions/images/chart-formatting-options.png differ diff --git a/_docs/master/questions/images/diff-and-percentage.png b/_docs/master/questions/images/diff-and-percentage.png index 181ab4e47c..eaeaf64500 100644 Binary files a/_docs/master/questions/images/diff-and-percentage.png and b/_docs/master/questions/images/diff-and-percentage.png differ diff --git a/_docs/master/questions/images/function-browser.png b/_docs/master/questions/images/function-browser.png index eaeaf64500..71c4f4a9fa 100644 Binary files a/_docs/master/questions/images/function-browser.png and b/_docs/master/questions/images/function-browser.png differ diff --git a/_docs/master/questions/images/histogram.png b/_docs/master/questions/images/histogram.png index efbaebb582..77a47cdb2d 100644 Binary files a/_docs/master/questions/images/histogram.png and b/_docs/master/questions/images/histogram.png differ diff --git a/_docs/master/questions/images/legend.png b/_docs/master/questions/images/legend.png index 1cfd092a11..159ee2b139 100644 Binary files a/_docs/master/questions/images/legend.png and b/_docs/master/questions/images/legend.png differ diff --git a/_docs/master/questions/images/number.png b/_docs/master/questions/images/number.png index 6a503dc977..b650a3cb61 100644 Binary files a/_docs/master/questions/images/number.png and b/_docs/master/questions/images/number.png differ diff --git a/_docs/master/questions/images/pie-other-slice.png b/_docs/master/questions/images/pie-other-slice.png index dcbd6a8bdf..6e08d9e9a0 100644 Binary files a/_docs/master/questions/images/pie-other-slice.png and b/_docs/master/questions/images/pie-other-slice.png differ diff --git a/_docs/master/questions/images/pin-data-shape.png b/_docs/master/questions/images/pin-data-shape.png index fab199632b..b9079a1c01 100644 Binary files a/_docs/master/questions/images/pin-data-shape.png and b/_docs/master/questions/images/pin-data-shape.png differ diff --git a/_docs/master/questions/images/pivot-table-options.png b/_docs/master/questions/images/pivot-table-options.png index a912dce7f6..e3d9ba981c 100644 Binary files a/_docs/master/questions/images/pivot-table-options.png and b/_docs/master/questions/images/pivot-table-options.png differ diff --git a/_docs/master/questions/images/raw-table.png b/_docs/master/questions/images/raw-table.png index 2bd6a50036..5c753beebe 100644 Binary files a/_docs/master/questions/images/raw-table.png and b/_docs/master/questions/images/raw-table.png differ diff --git a/_docs/master/questions/images/region-maps.png b/_docs/master/questions/images/region-maps.png index 91ae89db11..8dec0e9d90 100644 Binary files a/_docs/master/questions/images/region-maps.png and b/_docs/master/questions/images/region-maps.png differ diff --git a/_docs/master/questions/images/rolling-average.png b/_docs/master/questions/images/rolling-average.png index 17463efde4..233e8508dd 100644 Binary files a/_docs/master/questions/images/rolling-average.png and b/_docs/master/questions/images/rolling-average.png differ diff --git a/_docs/master/questions/images/sum-of-totals-for-previous-period.png b/_docs/master/questions/images/sum-of-totals-for-previous-period.png index c2c2978f4f..3e95ecd43d 100644 Binary files a/_docs/master/questions/images/sum-of-totals-for-previous-period.png and b/_docs/master/questions/images/sum-of-totals-for-previous-period.png differ diff --git a/_docs/master/questions/images/switch-to-editor.png b/_docs/master/questions/images/switch-to-editor.png index 3c8a32cc82..0945f38fa4 100644 Binary files a/_docs/master/questions/images/switch-to-editor.png and b/_docs/master/questions/images/switch-to-editor.png differ diff --git a/_docs/master/questions/images/table.png b/_docs/master/questions/images/table.png index 4ce9fda455..63af470596 100644 Binary files a/_docs/master/questions/images/table.png and b/_docs/master/questions/images/table.png differ diff --git a/_docs/master/questions/images/unpivoted-results.png b/_docs/master/questions/images/unpivoted-results.png index e3d9ba981c..14d64cca39 100644 Binary files a/_docs/master/questions/images/unpivoted-results.png and b/_docs/master/questions/images/unpivoted-results.png differ diff --git a/_docs/master/questions/images/viz-options.png b/_docs/master/questions/images/viz-options.png index 49a0bf0703..08e8dc6af0 100644 Binary files a/_docs/master/questions/images/viz-options.png and b/_docs/master/questions/images/viz-options.png differ diff --git a/_docs/master/questions/images/week-iso.png b/_docs/master/questions/images/week-iso.png index 5ebb209705..d75254a7bf 100644 Binary files a/_docs/master/questions/images/week-iso.png and b/_docs/master/questions/images/week-iso.png differ diff --git a/_docs/master/questions/native-editor/sql-parameters.md b/_docs/master/questions/native-editor/sql-parameters.md index a6d6a59cc0..e3413f60f7 100644 --- a/_docs/master/questions/native-editor/sql-parameters.md +++ b/_docs/master/questions/native-editor/sql-parameters.md @@ -155,7 +155,7 @@ Make sure your SQL dialect matches the database you've selected. Common issues i | Database | Dialect quirk | Example | | -------- | --------------------------------------------------- | -------------------------- | | BigQuery | Schemas and tables must be quoted with backticks. | `` FROM `dataset.table` `` | -| Oracle | Schemas and tables must be quoted in double quotes. | `FROM schema.table` | +| Oracle | Schemas and tables must be quoted in double quotes. | `FROM "schema.table"` | For more help, see [Troubleshooting SQL error messages](../../troubleshooting-guide/error-message#sql-editor). diff --git a/_docs/master/questions/visualizations/country-codes.md b/_docs/master/questions/visualizations/country-codes.md new file mode 100644 index 0000000000..ae4a15f291 --- /dev/null +++ b/_docs/master/questions/visualizations/country-codes.md @@ -0,0 +1,269 @@ +--- +version: master +has_magic_breadcrumbs: true +show_category_breadcrumb: true +show_title_breadcrumb: true +category: Questions +title: 'Country codes' +source_url: 'https://github.com/metabase/metabase/blob/master/docs/questions/visualizations/country-codes.md' +layout: new-docs +--- + +# Country codes + +This reference lists all country codes and their corresponding country names used in Metabase's default world map visualizations. The data comes from the GeoJSON world map file and includes 250 countries, territories, and administrative regions. + +Use these ISO 3166-1 alpha-2 country codes and country names when working with geographic data in Metabase. + +| Country code | Country name | +| ------------ | ------------------------------------ | +| AD | Andorra | +| AE | United Arab Emirates | +| AF | Afghanistan | +| AG | Antigua and Barbuda | +| AI | Anguilla | +| AL | Albania | +| AM | Armenia | +| AO | Angola | +| AQ | Antarctica | +| AR | Argentina | +| AS | American Samoa | +| AT | Austria | +| AU | Australia | +| AW | Aruba | +| AX | Åland | +| AZ | Azerbaijan | +| BA | Bosnia and Herzegovina | +| BB | Barbados | +| BD | Bangladesh | +| BE | Belgium | +| BF | Burkina Faso | +| BG | Bulgaria | +| BH | Bahrain | +| BI | Burundi | +| BJ | Benin | +| BL | St-Barthélemy | +| BM | Bermuda | +| BN | Brunei | +| BO | Bolivia | +| BQ | Caribbean Netherlands | +| BR | Brazil | +| BS | Bahamas | +| BT | Bhutan | +| BV | Bouvet I. | +| BW | Botswana | +| BY | Belarus | +| BZ | Belize | +| CA | Canada | +| CC | Cocos Is. | +| CD | Dem. Rep. Congo | +| CF | Central African Rep. | +| CG | Congo | +| CH | Switzerland | +| CI | Côte d'Ivoire | +| CK | Cook Is. | +| CL | Chile | +| CM | Cameroon | +| CN | China | +| CO | Colombia | +| CR | Costa Rica | +| CU | Cuba | +| CV | Cabo Verde | +| CW | Curaçao | +| CX | Christmas I. | +| CY | Cyprus | +| CZ | Czechia | +| DE | Germany | +| DJ | Djibouti | +| DK | Denmark | +| DM | Dominica | +| DO | Dominican Rep. | +| DZ | Algeria | +| EC | Ecuador | +| EE | Estonia | +| EG | Egypt | +| EH | W. Sahara | +| ER | Eritrea | +| ES | Spain | +| ET | Ethiopia | +| FI | Finland | +| FJ | Fiji | +| FK | Falkland Is. | +| FM | Micronesia | +| FO | Faeroe Is. | +| FR | France | +| GA | Gabon | +| GB | United Kingdom | +| GD | Grenada | +| GE | Georgia | +| GF | French Guiana | +| GG | Guernsey | +| GH | Ghana | +| GI | Gibraltar | +| GL | Greenland | +| GM | Gambia | +| GN | Guinea | +| GP | Guadeloupe | +| GQ | Eq. Guinea | +| GR | Greece | +| GS | S. Geo. and the Is. | +| GT | Guatemala | +| GU | Guam | +| GW | Guinea-Bissau | +| GY | Guyana | +| HK | Hong Kong | +| HM | Heard I. and McDonald Is. | +| HN | Honduras | +| HR | Croatia | +| HT | Haiti | +| HU | Hungary | +| ID | Indonesia | +| IE | Ireland | +| IL | Israel | +| IM | Isle of Man | +| IN | India | +| IO | Br. Indian Ocean Ter. | +| IQ | Iraq | +| IR | Iran | +| IS | Iceland | +| IT | Italy | +| JE | Jersey | +| JM | Jamaica | +| JO | Jordan | +| JP | Japan | +| KE | Kenya | +| KG | Kyrgyzstan | +| KH | Cambodia | +| KI | Kiribati | +| KM | Comoros | +| KN | St. Kitts and Nevis | +| KP | North Korea | +| KR | South Korea | +| KW | Kuwait | +| KY | Cayman Is. | +| KZ | Kazakhstan | +| LA | Laos | +| LB | Lebanon | +| LC | Saint Lucia | +| LI | Liechtenstein | +| LK | Sri Lanka | +| LR | Liberia | +| LS | Lesotho | +| LT | Lithuania | +| LU | Luxembourg | +| LV | Latvia | +| LY | Libya | +| MA | Morocco | +| MC | Monaco | +| MD | Moldova | +| ME | Montenegro | +| MF | St-Martin | +| MG | Madagascar | +| MH | Marshall Is. | +| MK | Macedonia | +| ML | Mali | +| MM | Myanmar | +| MN | Mongolia | +| MO | Macao | +| MP | N. Mariana Is. | +| MQ | Martinique | +| MR | Mauritania | +| MS | Montserrat | +| MT | Malta | +| MU | Mauritius | +| MV | Maldives | +| MW | Malawi | +| MX | Mexico | +| MY | Malaysia | +| MZ | Mozambique | +| NA | Namibia | +| NC | New Caledonia | +| NE | Niger | +| NF | Norfolk Island | +| NG | Nigeria | +| NI | Nicaragua | +| NL | Netherlands | +| NO | Norway | +| NP | Nepal | +| NR | Nauru | +| NU | Niue | +| NZ | New Zealand | +| OM | Oman | +| PA | Panama | +| PE | Peru | +| PF | Fr. Polynesia | +| PG | Papua New Guinea | +| PH | Philippines | +| PK | Pakistan | +| PL | Poland | +| PM | St. Pierre and Miquelon | +| PN | Pitcairn Is. | +| PR | Puerto Rico | +| PS | Palestine | +| PT | Portugal | +| PW | Palau | +| PY | Paraguay | +| QA | Qatar | +| RE | Réunion | +| RO | Romania | +| RS | Serbia | +| RU | Russia | +| RW | Rwanda | +| SA | Saudi Arabia | +| SB | Solomon Is. | +| SC | Seychelles | +| SD | Sudan | +| SE | Sweden | +| SG | Singapore | +| SH | Saint Helena | +| SI | Slovenia | +| SJ | Svalbard and Jan Mayen | +| SK | Slovakia | +| SL | Sierra Leone | +| SM | San Marino | +| SN | Senegal | +| SO | Somalia | +| SR | Suriname | +| SS | S. Sudan | +| ST | São Tomé and Principe | +| SV | El Salvador | +| SX | Sint Maarten | +| SY | Syria | +| SZ | eSwatini | +| TC | Turks and Caicos Is. | +| TD | Chad | +| TF | Fr. S. Antarctic Lands | +| TG | Togo | +| TH | Thailand | +| TJ | Tajikistan | +| TK | Tokelau | +| TL | Timor-Leste | +| TM | Turkmenistan | +| TN | Tunisia | +| TO | Tonga | +| TR | Turkey | +| TT | Trinidad and Tobago | +| TV | Tuvalu | +| TW | Taiwan | +| TZ | Tanzania | +| UA | Ukraine | +| UG | Uganda | +| UM | United States Minor Outlying Islands | +| US | United States of America | +| UY | Uruguay | +| UZ | Uzbekistan | +| VA | Vatican | +| VC | St. Vin. and Gren. | +| VE | Venezuela | +| VG | British Virgin Is. | +| VI | U.S. Virgin Is. | +| VN | Vietnam | +| VU | Vanuatu | +| WF | Wallis and Futuna Is. | +| WS | Samoa | +| XK | Kosovo | +| YE | Yemen | +| YT | Mayotte | +| ZA | South Africa | +| ZM | Zambia | +| ZW | Zimbabwe | diff --git a/_docs/master/questions/visualizations/map.md b/_docs/master/questions/visualizations/map.md index 85a4a6d535..1f80030c8f 100644 --- a/_docs/master/questions/visualizations/map.md +++ b/_docs/master/questions/visualizations/map.md @@ -118,7 +118,7 @@ You can change the base color used for the region map, but you can't currently u ### World Map -To visualize your results in the format of a map of the world broken out by country, your result must contain a column with [two-letter ISO country codes](/glossary/country-code), like "US" or "BR", for example: +To visualize your results in the format of a map of the world broken out by country, your result must contain a column with [two-letter ISO country codes](./country-codes), like "US" or "BR", or country names like "United States of America" or "Brazil". For example: | Country code | Metric | | ------------ | ------ | diff --git a/_docs/master/troubleshooting-guide/bugs.md b/_docs/master/troubleshooting-guide/bugs.md index 6dc76f07ae..7ec6b908d5 100644 --- a/_docs/master/troubleshooting-guide/bugs.md +++ b/_docs/master/troubleshooting-guide/bugs.md @@ -11,7 +11,7 @@ layout: new-docs # Reporting a bug -If you come across something that looks like a bug, please start by searching our [Github issues][metabase-issues] to see if it has already been reported. If it has, please let us know you're experiencing the same issue by reacting with a thumbs up emoji or adding a comment to provide additional information. +If you come across something that looks like a bug, please start by searching our [GitHub issues][metabase-issues] to see if it has already been reported. If it has, please let us know you're experiencing the same issue by reacting with a thumbs up emoji or adding a comment to provide additional information. If the bug has not yet been reported, go ahead and [open a bug report][metabase-file-bug]. The following information will help us reproduce your issue: diff --git a/_docs/master/troubleshooting-guide/known-issues.md b/_docs/master/troubleshooting-guide/known-issues.md index 5ae4b67ed7..29a783865a 100644 --- a/_docs/master/troubleshooting-guide/known-issues.md +++ b/_docs/master/troubleshooting-guide/known-issues.md @@ -17,7 +17,7 @@ If you can't find or solve your problem using the [troubleshooting guides](./ind If your work in Metabase is crashing, missing, or not being saved, you might have found a bug. -1. Go to the [Metabase Github issues page](https://github.com/metabase/metabase/issues). +1. Go to the [Metabase GitHub issues page](https://github.com/metabase/metabase/issues). 2. Click on the **Label** dropdown and select `Type: Bug`. @@ -37,7 +37,7 @@ If your work in Metabase is crashing, missing, or not being saved, you might hav If the functionality you're looking for simply doesn't exist (i.e., it hasn't suddenly gone missing), you might be running into a product limitation. -1. Go to the [Metabase Github issues page](https://github.com/metabase/metabase/issues). +1. Go to the [Metabase GitHub issues page](https://github.com/metabase/metabase/issues). 2. Click on the **Label** dropdown and select `Type: New Feature`. diff --git a/_docs/master/usage-and-performance-tools/images/audit-dashboards.png b/_docs/master/usage-and-performance-tools/images/audit-dashboards.png index aa3faabac3..fb1801bc32 100644 Binary files a/_docs/master/usage-and-performance-tools/images/audit-dashboards.png and b/_docs/master/usage-and-performance-tools/images/audit-dashboards.png differ diff --git a/_docs/master/usage-and-performance-tools/images/audit-teammember.png b/_docs/master/usage-and-performance-tools/images/audit-teammember.png index 8c9b5bcbb9..73fa55a29d 100644 Binary files a/_docs/master/usage-and-performance-tools/images/audit-teammember.png and b/_docs/master/usage-and-performance-tools/images/audit-teammember.png differ diff --git a/_site/docs/master/CONTRIBUTING.html b/_site/docs/master/CONTRIBUTING.html index 561c219984..22ddaace09 100644 --- a/_site/docs/master/CONTRIBUTING.html +++ b/_site/docs/master/CONTRIBUTING.html @@ -5046,7 +5046,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5055,7 +5055,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/actions/basic.html b/_site/docs/master/actions/basic.html index 46d019a08a..ca0e98e91e 100644 --- a/_site/docs/master/actions/basic.html +++ b/_site/docs/master/actions/basic.html @@ -5021,7 +5021,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5030,7 +5030,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/actions/custom.html b/_site/docs/master/actions/custom.html index 840085833c..f6626dd4eb 100644 --- a/_site/docs/master/actions/custom.html +++ b/_site/docs/master/actions/custom.html @@ -5117,7 +5117,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5126,7 +5126,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/actions/introduction.html b/_site/docs/master/actions/introduction.html index 57c2652da0..2efb8496c7 100644 --- a/_site/docs/master/actions/introduction.html +++ b/_site/docs/master/actions/introduction.html @@ -5027,7 +5027,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5036,7 +5036,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/actions/start.html b/_site/docs/master/actions/start.html index 691f4db029..945e680abc 100644 --- a/_site/docs/master/actions/start.html +++ b/_site/docs/master/actions/start.html @@ -4965,7 +4965,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4974,7 +4974,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/appearance.html b/_site/docs/master/configuring-metabase/appearance.html index 14a95c5dbc..e7c10b1a90 100644 --- a/_site/docs/master/configuring-metabase/appearance.html +++ b/_site/docs/master/configuring-metabase/appearance.html @@ -5145,7 +5145,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5154,7 +5154,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/caching.html b/_site/docs/master/configuring-metabase/caching.html index fe43d16da2..b89d763036 100644 --- a/_site/docs/master/configuring-metabase/caching.html +++ b/_site/docs/master/configuring-metabase/caching.html @@ -5222,7 +5222,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5231,7 +5231,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/config-file.html b/_site/docs/master/configuring-metabase/config-file.html index ea30ac5aab..e82e2892fe 100644 --- a/_site/docs/master/configuring-metabase/config-file.html +++ b/_site/docs/master/configuring-metabase/config-file.html @@ -5243,7 +5243,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5252,7 +5252,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/config-template.html b/_site/docs/master/configuring-metabase/config-template.html index 28783b5453..a69023d2bb 100644 --- a/_site/docs/master/configuring-metabase/config-template.html +++ b/_site/docs/master/configuring-metabase/config-template.html @@ -5203,7 +5203,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5212,7 +5212,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/custom-maps.html b/_site/docs/master/configuring-metabase/custom-maps.html index 283caa76ec..f5f77b44f1 100644 --- a/_site/docs/master/configuring-metabase/custom-maps.html +++ b/_site/docs/master/configuring-metabase/custom-maps.html @@ -5004,7 +5004,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5013,7 +5013,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/customizing-jetty-webserver.html b/_site/docs/master/configuring-metabase/customizing-jetty-webserver.html index 638834f379..75a4008845 100644 --- a/_site/docs/master/configuring-metabase/customizing-jetty-webserver.html +++ b/_site/docs/master/configuring-metabase/customizing-jetty-webserver.html @@ -4980,7 +4980,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4989,7 +4989,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/email.html b/_site/docs/master/configuring-metabase/email.html index 8cb3dc6302..1a1d7caad5 100644 --- a/_site/docs/master/configuring-metabase/email.html +++ b/_site/docs/master/configuring-metabase/email.html @@ -5129,7 +5129,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5138,7 +5138,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/environment-variables.html b/_site/docs/master/configuring-metabase/environment-variables.html index d10b33d0b9..51fb5fcea1 100644 --- a/_site/docs/master/configuring-metabase/environment-variables.html +++ b/_site/docs/master/configuring-metabase/environment-variables.html @@ -7697,7 +7697,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -7706,7 +7706,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/fonts.html b/_site/docs/master/configuring-metabase/fonts.html index b49702fbd2..e4069949c4 100644 --- a/_site/docs/master/configuring-metabase/fonts.html +++ b/_site/docs/master/configuring-metabase/fonts.html @@ -5089,7 +5089,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5098,7 +5098,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/images/AccountSetup.png b/_site/docs/master/configuring-metabase/images/AccountSetup.png index e19016a0b9..d3bf7c1ba2 100644 Binary files a/_site/docs/master/configuring-metabase/images/AccountSetup.png and b/_site/docs/master/configuring-metabase/images/AccountSetup.png differ diff --git a/_site/docs/master/configuring-metabase/images/table-view.png b/_site/docs/master/configuring-metabase/images/table-view.png index b561a8dc44..7b253a5ff6 100644 Binary files a/_site/docs/master/configuring-metabase/images/table-view.png and b/_site/docs/master/configuring-metabase/images/table-view.png differ diff --git a/_site/docs/master/configuring-metabase/localization.html b/_site/docs/master/configuring-metabase/localization.html index 5ba1d5106d..a1f3fb0d36 100644 --- a/_site/docs/master/configuring-metabase/localization.html +++ b/_site/docs/master/configuring-metabase/localization.html @@ -5203,7 +5203,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5212,7 +5212,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/log-configuration.html b/_site/docs/master/configuring-metabase/log-configuration.html index 0142073934..a3e13bdd74 100644 --- a/_site/docs/master/configuring-metabase/log-configuration.html +++ b/_site/docs/master/configuring-metabase/log-configuration.html @@ -5052,7 +5052,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5061,7 +5061,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/setting-up-metabase.html b/_site/docs/master/configuring-metabase/setting-up-metabase.html index 6335fdb468..c29a929fe0 100644 --- a/_site/docs/master/configuring-metabase/setting-up-metabase.html +++ b/_site/docs/master/configuring-metabase/setting-up-metabase.html @@ -5035,7 +5035,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5044,7 +5044,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/settings.html b/_site/docs/master/configuring-metabase/settings.html index 9da55711f7..14383a2cd1 100644 --- a/_site/docs/master/configuring-metabase/settings.html +++ b/_site/docs/master/configuring-metabase/settings.html @@ -5016,7 +5016,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5025,7 +5025,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/slack.html b/_site/docs/master/configuring-metabase/slack.html index c6913830ba..c0305c94b6 100644 --- a/_site/docs/master/configuring-metabase/slack.html +++ b/_site/docs/master/configuring-metabase/slack.html @@ -5040,7 +5040,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5049,7 +5049,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/start.html b/_site/docs/master/configuring-metabase/start.html index 804643b057..7ef47462b2 100644 --- a/_site/docs/master/configuring-metabase/start.html +++ b/_site/docs/master/configuring-metabase/start.html @@ -5005,7 +5005,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5014,7 +5014,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/timezones.html b/_site/docs/master/configuring-metabase/timezones.html index b9f2723be8..0f0c436491 100644 --- a/_site/docs/master/configuring-metabase/timezones.html +++ b/_site/docs/master/configuring-metabase/timezones.html @@ -5017,7 +5017,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5026,7 +5026,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/configuring-metabase/webhooks.html b/_site/docs/master/configuring-metabase/webhooks.html index 1b20da8eb4..b1475014d9 100644 --- a/_site/docs/master/configuring-metabase/webhooks.html +++ b/_site/docs/master/configuring-metabase/webhooks.html @@ -5065,7 +5065,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5074,7 +5074,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/dashboards/actions.html b/_site/docs/master/dashboards/actions.html index 868fa3dfe9..4e65b54c65 100644 --- a/_site/docs/master/dashboards/actions.html +++ b/_site/docs/master/dashboards/actions.html @@ -5007,7 +5007,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5016,7 +5016,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/dashboards/filters.html b/_site/docs/master/dashboards/filters.html index 7223177cae..feac5f5e10 100644 --- a/_site/docs/master/dashboards/filters.html +++ b/_site/docs/master/dashboards/filters.html @@ -5271,7 +5271,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5280,7 +5280,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/dashboards/images/add-filter.png b/_site/docs/master/dashboards/images/add-filter.png index 7206824958..23fae3c80c 100644 Binary files a/_site/docs/master/dashboards/images/add-filter.png and b/_site/docs/master/dashboards/images/add-filter.png differ diff --git a/_site/docs/master/dashboards/images/add_series.png b/_site/docs/master/dashboards/images/add_series.png index 23fae3c80c..fe91f2db8b 100644 Binary files a/_site/docs/master/dashboards/images/add_series.png and b/_site/docs/master/dashboards/images/add_series.png differ diff --git a/_site/docs/master/dashboards/images/autorefresh.png b/_site/docs/master/dashboards/images/autorefresh.png index a1c1f9a61a..94609cbf0d 100644 Binary files a/_site/docs/master/dashboards/images/autorefresh.png and b/_site/docs/master/dashboards/images/autorefresh.png differ diff --git a/_site/docs/master/dashboards/images/button-form.png b/_site/docs/master/dashboards/images/button-form.png index ee763c576e..3d205c8796 100644 Binary files a/_site/docs/master/dashboards/images/button-form.png and b/_site/docs/master/dashboards/images/button-form.png differ diff --git a/_site/docs/master/dashboards/images/click-behavior-icon.png b/_site/docs/master/dashboards/images/click-behavior-icon.png index 2a41076032..8f34234f01 100644 Binary files a/_site/docs/master/dashboards/images/click-behavior-icon.png and b/_site/docs/master/dashboards/images/click-behavior-icon.png differ diff --git a/_site/docs/master/dashboards/images/dashboard-filter-action.png b/_site/docs/master/dashboards/images/dashboard-filter-action.png index 3c1075bed2..3147da6c90 100644 Binary files a/_site/docs/master/dashboards/images/dashboard-filter-action.png and b/_site/docs/master/dashboards/images/dashboard-filter-action.png differ diff --git a/_site/docs/master/dashboards/images/dashboard.png b/_site/docs/master/dashboards/images/dashboard.png index 155d34f84e..1805c738fe 100644 Binary files a/_site/docs/master/dashboards/images/dashboard.png and b/_site/docs/master/dashboards/images/dashboard.png differ diff --git a/_site/docs/master/dashboards/images/drill-through-menu.png b/_site/docs/master/dashboards/images/drill-through-menu.png index cc2c707278..9d2e0c76a7 100644 Binary files a/_site/docs/master/dashboards/images/drill-through-menu.png and b/_site/docs/master/dashboards/images/drill-through-menu.png differ diff --git a/_site/docs/master/dashboards/images/filters.png b/_site/docs/master/dashboards/images/filters.png index c95f02b4aa..2a41076032 100644 Binary files a/_site/docs/master/dashboards/images/filters.png and b/_site/docs/master/dashboards/images/filters.png differ diff --git a/_site/docs/master/dashboards/images/foreign-key-linked-filters.png b/_site/docs/master/dashboards/images/foreign-key-linked-filters.png index b060334122..4a4a249b2b 100644 Binary files a/_site/docs/master/dashboards/images/foreign-key-linked-filters.png and b/_site/docs/master/dashboards/images/foreign-key-linked-filters.png differ diff --git a/_site/docs/master/dashboards/images/linked-filter.png b/_site/docs/master/dashboards/images/linked-filter.png index 4fcbddf7a4..c359f99030 100644 Binary files a/_site/docs/master/dashboards/images/linked-filter.png and b/_site/docs/master/dashboards/images/linked-filter.png differ diff --git a/_site/docs/master/dashboards/images/markdown.png b/_site/docs/master/dashboards/images/markdown.png index c9c10c5129..ba5b16adda 100644 Binary files a/_site/docs/master/dashboards/images/markdown.png and b/_site/docs/master/dashboards/images/markdown.png differ diff --git a/_site/docs/master/dashboards/images/wiring-up-filter.png b/_site/docs/master/dashboards/images/wiring-up-filter.png index a5066926cc..e9e9e50b5d 100644 Binary files a/_site/docs/master/dashboards/images/wiring-up-filter.png and b/_site/docs/master/dashboards/images/wiring-up-filter.png differ diff --git a/_site/docs/master/dashboards/interactive.html b/_site/docs/master/dashboards/interactive.html index 1d83ca0898..f13842c1f2 100644 --- a/_site/docs/master/dashboards/interactive.html +++ b/_site/docs/master/dashboards/interactive.html @@ -5078,7 +5078,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5087,7 +5087,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/dashboards/introduction.html b/_site/docs/master/dashboards/introduction.html index 111cf5c389..643e4c115d 100644 --- a/_site/docs/master/dashboards/introduction.html +++ b/_site/docs/master/dashboards/introduction.html @@ -5343,7 +5343,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5352,7 +5352,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/dashboards/linked-filters.html b/_site/docs/master/dashboards/linked-filters.html index ff1e22cdf4..8dde05af31 100644 --- a/_site/docs/master/dashboards/linked-filters.html +++ b/_site/docs/master/dashboards/linked-filters.html @@ -5017,7 +5017,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5026,7 +5026,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/dashboards/multiple-series.html b/_site/docs/master/dashboards/multiple-series.html index 30bd4e62fc..e474ab96ac 100644 --- a/_site/docs/master/dashboards/multiple-series.html +++ b/_site/docs/master/dashboards/multiple-series.html @@ -5067,7 +5067,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5076,7 +5076,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/dashboards/start.html b/_site/docs/master/dashboards/start.html index 18db4125ea..0982ff035f 100644 --- a/_site/docs/master/dashboards/start.html +++ b/_site/docs/master/dashboards/start.html @@ -4971,7 +4971,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4980,7 +4980,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/dashboards/subscriptions.html b/_site/docs/master/dashboards/subscriptions.html index fc597ae99c..12def9205d 100644 --- a/_site/docs/master/dashboards/subscriptions.html +++ b/_site/docs/master/dashboards/subscriptions.html @@ -5139,7 +5139,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5148,7 +5148,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/data-modeling/field-types.html b/_site/docs/master/data-modeling/field-types.html index 3c774abe0f..6ac9819b4a 100644 --- a/_site/docs/master/data-modeling/field-types.html +++ b/_site/docs/master/data-modeling/field-types.html @@ -5277,7 +5277,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5286,7 +5286,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/data-modeling/formatting.html b/_site/docs/master/data-modeling/formatting.html index 1564033785..c776fd97e9 100644 --- a/_site/docs/master/data-modeling/formatting.html +++ b/_site/docs/master/data-modeling/formatting.html @@ -5005,7 +5005,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5014,7 +5014,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/data-modeling/images/formula.png b/_site/docs/master/data-modeling/images/formula.png index 8e020111ca..0f02f4868c 100644 Binary files a/_site/docs/master/data-modeling/images/formula.png and b/_site/docs/master/data-modeling/images/formula.png differ diff --git a/_site/docs/master/data-modeling/images/table-metadata.png b/_site/docs/master/data-modeling/images/table-metadata.png index d16aabea01..73d3c7c159 100644 Binary files a/_site/docs/master/data-modeling/images/table-metadata.png and b/_site/docs/master/data-modeling/images/table-metadata.png differ diff --git a/_site/docs/master/data-modeling/json-unfolding.html b/_site/docs/master/data-modeling/json-unfolding.html index 16ba0ea5ce..1058b796ff 100644 --- a/_site/docs/master/data-modeling/json-unfolding.html +++ b/_site/docs/master/data-modeling/json-unfolding.html @@ -5018,7 +5018,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5027,7 +5027,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/data-modeling/legacy-metrics.html b/_site/docs/master/data-modeling/legacy-metrics.html index 64ae7ba3f4..6b15e85e23 100644 --- a/_site/docs/master/data-modeling/legacy-metrics.html +++ b/_site/docs/master/data-modeling/legacy-metrics.html @@ -4958,7 +4958,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4967,7 +4967,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/data-modeling/metadata-editing.html b/_site/docs/master/data-modeling/metadata-editing.html index c66be055f8..f24b81d4fb 100644 --- a/_site/docs/master/data-modeling/metadata-editing.html +++ b/_site/docs/master/data-modeling/metadata-editing.html @@ -5251,7 +5251,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5260,7 +5260,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/data-modeling/metrics.html b/_site/docs/master/data-modeling/metrics.html index b77b1396ee..6e9226e941 100644 --- a/_site/docs/master/data-modeling/metrics.html +++ b/_site/docs/master/data-modeling/metrics.html @@ -5039,7 +5039,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5048,7 +5048,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/data-modeling/model-persistence.html b/_site/docs/master/data-modeling/model-persistence.html index 5158a46695..1952685575 100644 --- a/_site/docs/master/data-modeling/model-persistence.html +++ b/_site/docs/master/data-modeling/model-persistence.html @@ -5046,7 +5046,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5055,7 +5055,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/data-modeling/models.html b/_site/docs/master/data-modeling/models.html index b75f94b3d6..e603163ad3 100644 --- a/_site/docs/master/data-modeling/models.html +++ b/_site/docs/master/data-modeling/models.html @@ -5126,7 +5126,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5135,7 +5135,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/data-modeling/segments.html b/_site/docs/master/data-modeling/segments.html index ce6a291a7b..012330cbc1 100644 --- a/_site/docs/master/data-modeling/segments.html +++ b/_site/docs/master/data-modeling/segments.html @@ -4981,7 +4981,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4990,7 +4990,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/data-modeling/start.html b/_site/docs/master/data-modeling/start.html index 11c3aaf601..2d10599b69 100644 --- a/_site/docs/master/data-modeling/start.html +++ b/_site/docs/master/data-modeling/start.html @@ -4979,7 +4979,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4988,7 +4988,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connecting.html b/_site/docs/master/databases/connecting.html index 2763e37d63..c49c20b3a8 100644 --- a/_site/docs/master/databases/connecting.html +++ b/_site/docs/master/databases/connecting.html @@ -5027,7 +5027,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5036,7 +5036,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/athena.html b/_site/docs/master/databases/connections/athena.html index 524c352a27..1851fc8228 100644 --- a/_site/docs/master/databases/connections/athena.html +++ b/_site/docs/master/databases/connections/athena.html @@ -5167,7 +5167,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5176,7 +5176,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/aws-rds.html b/_site/docs/master/databases/connections/aws-rds.html index a32451fb03..a5cb3c0575 100644 --- a/_site/docs/master/databases/connections/aws-rds.html +++ b/_site/docs/master/databases/connections/aws-rds.html @@ -4972,7 +4972,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4981,7 +4981,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/bigquery.html b/_site/docs/master/databases/connections/bigquery.html index aae541552d..b02fa76ab4 100644 --- a/_site/docs/master/databases/connections/bigquery.html +++ b/_site/docs/master/databases/connections/bigquery.html @@ -4875,6 +4875,12 @@

          Model features

          There aren’t (yet) any model features available for BigQuery.

          +

          Database routing

          + +

          Database routing for BigQuery works between BigQuery projects with identical schemas.

          + +

          See Database routing.

          +

          Danger zone

          See Danger zone.

          @@ -5135,7 +5141,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5144,7 +5150,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/clickhouse.html b/_site/docs/master/databases/connections/clickhouse.html index 3449a1b970..c02575e333 100644 --- a/_site/docs/master/databases/connections/clickhouse.html +++ b/_site/docs/master/databases/connections/clickhouse.html @@ -5045,7 +5045,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5054,7 +5054,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/databricks.html b/_site/docs/master/databases/connections/databricks.html index 7490d8f599..86288cd905 100644 --- a/_site/docs/master/databases/connections/databricks.html +++ b/_site/docs/master/databases/connections/databricks.html @@ -5060,7 +5060,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5069,7 +5069,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/druid.html b/_site/docs/master/databases/connections/druid.html index 4c28cd31de..a834473bf6 100644 --- a/_site/docs/master/databases/connections/druid.html +++ b/_site/docs/master/databases/connections/druid.html @@ -5030,7 +5030,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5039,7 +5039,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/mariadb.html b/_site/docs/master/databases/connections/mariadb.html index 623779e369..c85c8566a4 100644 --- a/_site/docs/master/databases/connections/mariadb.html +++ b/_site/docs/master/databases/connections/mariadb.html @@ -5060,7 +5060,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5069,7 +5069,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/mongodb.html b/_site/docs/master/databases/connections/mongodb.html index 4da4febd3c..0136cbbaa3 100644 --- a/_site/docs/master/databases/connections/mongodb.html +++ b/_site/docs/master/databases/connections/mongodb.html @@ -4825,7 +4825,7 @@

          Configuring SSL via the command li

          How Metabase syncs data in MongoDB

          -

          Because MongoDB contains unstructured data, Metabase takes a different approach to syncing your database’s metadata. To get a sense of the schema, Metabase will query the first and last 500 documents (most of the calculation is done in MongoDB). This sampling helps Metabase do things like differentiate datetime fields from string fields, and provide people with pre-populated filters. The reason Metabase only scans a sample of the documents is because scanning every document in every collection on every sync would put too much strain on your database. And while the sampling does a pretty good job keeping Metabase up to date, it can also mean that new fields can sometimes fall through the cracks, leading to visualization issues, or even fields failing to appear in your results. For more info, check out our troubleshooting guide.

          +

          Because MongoDB contains unstructured data, Metabase takes a different approach to syncing your database’s metadata. To get a sense of the schema, Metabase will query the first and last 500 documents (most of the calculation is done in MongoDB). This sampling helps Metabase do things like differentiate datetime fields from string fields, and provide people with pre-populated filters. Metabase also syncs 1,000 leaf fields (fields at the deepest nesting level) per MongoDB collection. The reason Metabase only scans a sample of the documents is because scanning every document in every collection on every sync would put too much strain on your database. And while the sampling does a pretty good job keeping Metabase up to date, it can also mean that new fields can sometimes fall through the cracks, leading to visualization issues, or even fields failing to appear in your results. For more info, check out our troubleshooting guide.

          General connectivity concerns

          @@ -5102,7 +5102,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5111,7 +5111,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/mysql.html b/_site/docs/master/databases/connections/mysql.html index 5407a2be67..faa9907558 100644 --- a/_site/docs/master/databases/connections/mysql.html +++ b/_site/docs/master/databases/connections/mysql.html @@ -5147,7 +5147,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5156,7 +5156,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/oracle.html b/_site/docs/master/databases/connections/oracle.html index 88f7c2160d..f87cbe4240 100644 --- a/_site/docs/master/databases/connections/oracle.html +++ b/_site/docs/master/databases/connections/oracle.html @@ -5080,7 +5080,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5089,7 +5089,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/postgresql.html b/_site/docs/master/databases/connections/postgresql.html index ed1d80caa9..5ef00e3da0 100644 --- a/_site/docs/master/databases/connections/postgresql.html +++ b/_site/docs/master/databases/connections/postgresql.html @@ -5171,7 +5171,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5180,7 +5180,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/presto.html b/_site/docs/master/databases/connections/presto.html index 69979bc38d..c7cbbd6ecd 100644 --- a/_site/docs/master/databases/connections/presto.html +++ b/_site/docs/master/databases/connections/presto.html @@ -5048,7 +5048,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5057,7 +5057,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/redshift.html b/_site/docs/master/databases/connections/redshift.html index e0add50adf..f4bc978730 100644 --- a/_site/docs/master/databases/connections/redshift.html +++ b/_site/docs/master/databases/connections/redshift.html @@ -5062,7 +5062,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5071,7 +5071,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/snowflake.html b/_site/docs/master/databases/connections/snowflake.html index a474b68f30..d3ea9c229f 100644 --- a/_site/docs/master/databases/connections/snowflake.html +++ b/_site/docs/master/databases/connections/snowflake.html @@ -5096,7 +5096,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5105,7 +5105,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/sparksql.html b/_site/docs/master/databases/connections/sparksql.html index b94e63d50e..49c70b5ea4 100644 --- a/_site/docs/master/databases/connections/sparksql.html +++ b/_site/docs/master/databases/connections/sparksql.html @@ -5033,7 +5033,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5042,7 +5042,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/sql-server.html b/_site/docs/master/databases/connections/sql-server.html index e1a3bc5985..f5cfd9d0ad 100644 --- a/_site/docs/master/databases/connections/sql-server.html +++ b/_site/docs/master/databases/connections/sql-server.html @@ -5058,7 +5058,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5067,7 +5067,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/sqlite.html b/_site/docs/master/databases/connections/sqlite.html index af08d178e2..42971b86de 100644 --- a/_site/docs/master/databases/connections/sqlite.html +++ b/_site/docs/master/databases/connections/sqlite.html @@ -5023,7 +5023,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5032,7 +5032,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/starburst.html b/_site/docs/master/databases/connections/starburst.html index 2e279dfbd1..a95d33ec48 100644 --- a/_site/docs/master/databases/connections/starburst.html +++ b/_site/docs/master/databases/connections/starburst.html @@ -5038,7 +5038,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5047,7 +5047,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/connections/vertica.html b/_site/docs/master/databases/connections/vertica.html index e4c9cc626e..b7e7d1085e 100644 --- a/_site/docs/master/databases/connections/vertica.html +++ b/_site/docs/master/databases/connections/vertica.html @@ -4987,7 +4987,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4996,7 +4996,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/danger-zone.html b/_site/docs/master/databases/danger-zone.html index 41a41d3cc4..79e1cc717b 100644 --- a/_site/docs/master/databases/danger-zone.html +++ b/_site/docs/master/databases/danger-zone.html @@ -4973,7 +4973,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4982,7 +4982,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/encrypting-details-at-rest.html b/_site/docs/master/databases/encrypting-details-at-rest.html index 036b1d6677..56d5dda464 100644 --- a/_site/docs/master/databases/encrypting-details-at-rest.html +++ b/_site/docs/master/databases/encrypting-details-at-rest.html @@ -5008,7 +5008,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5017,7 +5017,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/images/atlas-connect.png b/_site/docs/master/databases/images/atlas-connect.png index cda55015c1..4377047e1f 100644 Binary files a/_site/docs/master/databases/images/atlas-connect.png and b/_site/docs/master/databases/images/atlas-connect.png differ diff --git a/_site/docs/master/databases/images/connection-string.png b/_site/docs/master/databases/images/connection-string.png index edba66aced..ab5411a6fb 100644 Binary files a/_site/docs/master/databases/images/connection-string.png and b/_site/docs/master/databases/images/connection-string.png differ diff --git a/_site/docs/master/databases/images/snowflake-copy-account-url.png b/_site/docs/master/databases/images/snowflake-copy-account-url.png index cf9a18f67a..82457d4e06 100644 Binary files a/_site/docs/master/databases/images/snowflake-copy-account-url.png and b/_site/docs/master/databases/images/snowflake-copy-account-url.png differ diff --git a/_site/docs/master/databases/ssh-tunnel.html b/_site/docs/master/databases/ssh-tunnel.html index d8c75b4f6b..ec3e0aeb84 100644 --- a/_site/docs/master/databases/ssh-tunnel.html +++ b/_site/docs/master/databases/ssh-tunnel.html @@ -5049,7 +5049,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5058,7 +5058,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/ssl-certificates.html b/_site/docs/master/databases/ssl-certificates.html index 05d60bcedf..c68ea51a79 100644 --- a/_site/docs/master/databases/ssl-certificates.html +++ b/_site/docs/master/databases/ssl-certificates.html @@ -5038,7 +5038,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5047,7 +5047,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/start.html b/_site/docs/master/databases/start.html index 610d8bfa21..635a30f090 100644 --- a/_site/docs/master/databases/start.html +++ b/_site/docs/master/databases/start.html @@ -4973,7 +4973,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4982,7 +4982,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/sync-scan.html b/_site/docs/master/databases/sync-scan.html index f145b86b03..6e05ba97f6 100644 --- a/_site/docs/master/databases/sync-scan.html +++ b/_site/docs/master/databases/sync-scan.html @@ -5261,7 +5261,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5270,7 +5270,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/uploads.html b/_site/docs/master/databases/uploads.html index a4cc05ff0b..24d0973dcb 100644 --- a/_site/docs/master/databases/uploads.html +++ b/_site/docs/master/databases/uploads.html @@ -5026,7 +5026,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5035,7 +5035,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/databases/users-roles-privileges.html b/_site/docs/master/databases/users-roles-privileges.html index c13707a91b..ad0b1796be 100644 --- a/_site/docs/master/databases/users-roles-privileges.html +++ b/_site/docs/master/databases/users-roles-privileges.html @@ -5173,7 +5173,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5182,7 +5182,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/api-changelog.html b/_site/docs/master/developers-guide/api-changelog.html index 766f985934..dcd7cc557b 100644 --- a/_site/docs/master/developers-guide/api-changelog.html +++ b/_site/docs/master/developers-guide/api-changelog.html @@ -5134,7 +5134,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5143,7 +5143,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/build.html b/_site/docs/master/developers-guide/build.html index 0204af132c..c960061790 100644 --- a/_site/docs/master/developers-guide/build.html +++ b/_site/docs/master/developers-guide/build.html @@ -5125,7 +5125,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5134,7 +5134,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/clojure.html b/_site/docs/master/developers-guide/clojure.html index 7072dd906e..4f1cd9e801 100644 --- a/_site/docs/master/developers-guide/clojure.html +++ b/_site/docs/master/developers-guide/clojure.html @@ -4959,7 +4959,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4968,7 +4968,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/code-reviews.html b/_site/docs/master/developers-guide/code-reviews.html index 6075ae0533..3439ec07e2 100644 --- a/_site/docs/master/developers-guide/code-reviews.html +++ b/_site/docs/master/developers-guide/code-reviews.html @@ -5023,7 +5023,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5032,7 +5032,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/community-drivers.html b/_site/docs/master/developers-guide/community-drivers.html index d25e57d856..d117cc0582 100644 --- a/_site/docs/master/developers-guide/community-drivers.html +++ b/_site/docs/master/developers-guide/community-drivers.html @@ -4745,7 +4745,7 @@

          Community drivers

          DB2 GitHub stars - Github (Pre-)Release Date + GitHub (Pre-)Release Date Dremio @@ -5065,7 +5065,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5074,7 +5074,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/dev-branch-docker.html b/_site/docs/master/developers-guide/dev-branch-docker.html index 1c60190f67..b0ea138543 100644 --- a/_site/docs/master/developers-guide/dev-branch-docker.html +++ b/_site/docs/master/developers-guide/dev-branch-docker.html @@ -5004,7 +5004,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5013,7 +5013,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/devenv.html b/_site/docs/master/developers-guide/devenv.html index af5a1501a1..9ea056fc4a 100644 --- a/_site/docs/master/developers-guide/devenv.html +++ b/_site/docs/master/developers-guide/devenv.html @@ -4716,6 +4716,8 @@

          Quick start

          This runs both the frontend and backend. Alternatively, you can run them separately in two terminal sessions below.

          +

          To use any other database beside the default ones please take a look at Building Drivers further down in this document.

          +

          Frontend

          Metabase depends on third-party libraries to run, so you’ll need to keep those up to date. The Clojure CLI will automatically fetch the dependencies when needed. With JavaScript dependencies, however, you’ll need to kick off the installation process manually.

          @@ -5315,7 +5317,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5324,7 +5326,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/docs.html b/_site/docs/master/developers-guide/docs.html index a2e488f62c..62ac7f6b5f 100644 --- a/_site/docs/master/developers-guide/docs.html +++ b/_site/docs/master/developers-guide/docs.html @@ -4979,7 +4979,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4988,7 +4988,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/driver-changelog.html b/_site/docs/master/developers-guide/driver-changelog.html index 19c46d4635..f475a51268 100644 --- a/_site/docs/master/developers-guide/driver-changelog.html +++ b/_site/docs/master/developers-guide/driver-changelog.html @@ -4716,6 +4716,10 @@

          Metabase 0.56.0

          Also note that driver-api/add-alias-info only adds additional keys to field refs and join maps, and does not replace existing keys like :alias, :join-alias, or :name; make sure you use driver-api/qp.add.alias, driver-api/qp.add.source-table, and driver-api/qp.add.source-alias respectively.

          + +
        • +

          Added the driver multi-method driver/extra-info for drivers to provide info such as db routing configuration details +from their metabase-plugin.yaml file.

        • Extend datetime() to accept UTF-8 encoded binary and numbers (unix timestamps) in addition to strings.

          @@ -4764,7 +4768,6 @@

          Metabase 0.55.0

          metabase.driver/upload-type->database-type or metabase.driver/allowed-promotions – make sure you use :metabase.upload/varchar-255 rather than something like ::upload/varchar-255.

        • -
        • Added the multi-method metabase.driver.sql.parameters.substitution/time-grouping->replacement-snippet-info. This is effectively ->replacement-snippet-info for the new native query time grouping feature, but is its own separate multimethod because it needs an extra parameter.
        • The metabase.models.secret namespace has been replaced with metabase.secrets.core; if you were using it please update your usages.

          @@ -4801,9 +4804,11 @@

          Metabase 0.55.0

        • The namespace metabase.query-processor.context, deprecated in 0.50.0, has been removed.

        • -
        • All settings formerly in a metabase.driver.* namespace have been moved to metabase.driver.settings, and all +
        • +

          All settings formerly in a metabase.driver.* namespace have been moved to metabase.driver.settings, and all settings formerly in a metabase.query-processor.* namespace have been moved to -metabase.query-processor.settings.

        • +metabase.query-processor.settings.

          +

          Metabase 0.54.12

          @@ -6116,7 +6121,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -6125,7 +6130,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/drivers/basics.html b/_site/docs/master/developers-guide/drivers/basics.html index 7761eb2159..a2beadf098 100644 --- a/_site/docs/master/developers-guide/drivers/basics.html +++ b/_site/docs/master/developers-guide/drivers/basics.html @@ -5017,7 +5017,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5026,7 +5026,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/drivers/driver-tests.html b/_site/docs/master/developers-guide/drivers/driver-tests.html index 59a2b98131..42ff3db2c8 100644 --- a/_site/docs/master/developers-guide/drivers/driver-tests.html +++ b/_site/docs/master/developers-guide/drivers/driver-tests.html @@ -5174,7 +5174,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5183,7 +5183,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/drivers/multimethods.html b/_site/docs/master/developers-guide/drivers/multimethods.html index 6570e8c8f0..c2e92b31ec 100644 --- a/_site/docs/master/developers-guide/drivers/multimethods.html +++ b/_site/docs/master/developers-guide/drivers/multimethods.html @@ -5079,7 +5079,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5088,7 +5088,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/drivers/plugins.html b/_site/docs/master/developers-guide/drivers/plugins.html index ddd9ea1ecb..a8864b9562 100644 --- a/_site/docs/master/developers-guide/drivers/plugins.html +++ b/_site/docs/master/developers-guide/drivers/plugins.html @@ -5161,7 +5161,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5170,7 +5170,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/drivers/start.html b/_site/docs/master/developers-guide/drivers/start.html index 37a2445efb..0dfc2e7729 100644 --- a/_site/docs/master/developers-guide/drivers/start.html +++ b/_site/docs/master/developers-guide/drivers/start.html @@ -4985,7 +4985,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4994,7 +4994,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/e2e-tests.html b/_site/docs/master/developers-guide/e2e-tests.html index 9c7fe93589..e26d1be175 100644 --- a/_site/docs/master/developers-guide/e2e-tests.html +++ b/_site/docs/master/developers-guide/e2e-tests.html @@ -5236,7 +5236,7 @@
          Resources
            -
          • Be conservative with what comments you add to the codebase. Comments shouldn’t be used as reminders or as todos–record those by creating a new issue in Github. Ideally, code should be written in such a way that it explains itself clearly. When it does not, you should first try rewriting the code. If for whatever reason you are unable to write something clearly, add a comment to explain the “why”.
          • +
          • Be conservative with what comments you add to the codebase. Comments shouldn’t be used as reminders or as todos–record those by creating a new issue in GitHub. Ideally, code should be written in such a way that it explains itself clearly. When it does not, you should first try rewriting the code. If for whatever reason you are unable to write something clearly, add a comment to explain the “why”.
          
          @@ -5454,7 +5454,7 @@ 
          Resources
          Example Dashboards - + SQL Best Practices @@ -5463,7 +5463,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/internationalization.html b/_site/docs/master/developers-guide/internationalization.html index 25dc845132..e543e9a77b 100644 --- a/_site/docs/master/developers-guide/internationalization.html +++ b/_site/docs/master/developers-guide/internationalization.html @@ -5018,7 +5018,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5027,7 +5027,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/mage.html b/_site/docs/master/developers-guide/mage.html index ada60ff199..a2826dd643 100644 --- a/_site/docs/master/developers-guide/mage.html +++ b/_site/docs/master/developers-guide/mage.html @@ -4973,7 +4973,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4982,7 +4982,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/mbql-library-changelog.html b/_site/docs/master/developers-guide/mbql-library-changelog.html index faff76d31b..950ba8d323 100644 --- a/_site/docs/master/developers-guide/mbql-library-changelog.html +++ b/_site/docs/master/developers-guide/mbql-library-changelog.html @@ -4977,7 +4977,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4986,7 +4986,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/security-token-scanner.html b/_site/docs/master/developers-guide/security-token-scanner.html new file mode 100644 index 0000000000..57a8c64253 --- /dev/null +++ b/_site/docs/master/developers-guide/security-token-scanner.html @@ -0,0 +1,5140 @@ + + + + + + + + + + + + + + + + + + +Security Token Scanner | Metabase Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + + + + +
          + + + + +
          +
          + + + +
          +
          +
          + +
          + + + + + + + + + +
          + + + +
          + + +
          + +
          + +
          + + + +
          + + + master + + + + + + + + +
          + + + + + What’s new + + + + + +
          + + + + +
          +
          + + +
          + + +
          + + +
          + These are the docs for the Metabase master branch. Some features documented here may not yet be available in the latest release. + Check out the docs for the latest version, Metabase v0.55. +
          + + +
          + + +

          Security Token Scanner

          + +

          Security token scanner detects potentially leaked API keys and secrets in the Metabase codebase. Runs automatically as a git precommit hook on staged files.

          + +

          Usage

          + +
          # Scan specific files
          +./bin/mage -token-scan deps.edn bb.edn
          +
          +# Scan all files
          +./bin/mage -token-scan -a
          +
          +# Verbose output
          +./bin/mage -token-scan -v deps.edn
          +
          + +

          Token Types Detected

          + +
            +
          • Airgap tokens (airgap_)
          • +
          • Dev tokens (mb_dev_, 64-char hex)
          • +
          • OpenAI API keys (sk-)
          • +
          • JWT/JWE tokens
          • +
          • GitHub tokens (gh[pousr]_)
          • +
          • Slack bot tokens (xoxb-)
          • +
          • AWS access keys (AKIA)
          • +
          + +

          The scanner uses .gitignore to filter files and will block commits containing detected tokens.

          + +

          False positives

          + +

          If the scanner flags a non-token string, you should exclude the literal token string by adding it to: mage/resources/token_scanner/token_whitelist.txt.

          + +
          echo 'my-token-string' >> mage/resources/token_scanner/token_whitelist.txt && git add mage/resources/token_scanner/token_whitelist.txt
          +
          + + + +
          git commit --no-verify -m "commit message"
          +
          + + +
          +
          + +

          + Read docs for other versions of Metabase. +

          + +
          +
          + +
          + +
          +
          +
          Was this helpful?
          + + +
          + +
          +

          + +
          + + + +
          +
          + +
          +
          Thanks for your feedback!
          +
          + + + + Want to improve these docs? Propose a change. + + +
          + + + +
          +
          +
          +
          + + + + + + + + + + + + + + + +
          + +
          + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_site/docs/master/developers-guide/start.html b/_site/docs/master/developers-guide/start.html index 635ca7fe29..7cfadd01fa 100644 --- a/_site/docs/master/developers-guide/start.html +++ b/_site/docs/master/developers-guide/start.html @@ -5006,7 +5006,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5015,7 +5015,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/versioning.html b/_site/docs/master/developers-guide/versioning.html index 3a83426249..a5a9ce3a4b 100644 --- a/_site/docs/master/developers-guide/versioning.html +++ b/_site/docs/master/developers-guide/versioning.html @@ -4760,7 +4760,7 @@

          Release Candidates

          Further reading

          @@ -5011,7 +5011,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5020,7 +5020,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/visual-studio-code.html b/_site/docs/master/developers-guide/visual-studio-code.html index 90c8eb010e..188d9221c0 100644 --- a/_site/docs/master/developers-guide/visual-studio-code.html +++ b/_site/docs/master/developers-guide/visual-studio-code.html @@ -5016,7 +5016,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5025,7 +5025,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/developers-guide/visual-tests.html b/_site/docs/master/developers-guide/visual-tests.html index c5e9424681..4a5bb14aeb 100644 --- a/_site/docs/master/developers-guide/visual-tests.html +++ b/_site/docs/master/developers-guide/visual-tests.html @@ -4972,7 +4972,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -4981,7 +4981,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/images/create-a-public-link.png b/_site/docs/master/embedding/images/create-a-public-link.png index da4c9844b4..a37656aa28 100644 Binary files a/_site/docs/master/embedding/images/create-a-public-link.png and b/_site/docs/master/embedding/images/create-a-public-link.png differ diff --git a/_site/docs/master/embedding/images/dashboard-sharing.png b/_site/docs/master/embedding/images/dashboard-sharing.png index d4033342d1..58e904072b 100644 Binary files a/_site/docs/master/embedding/images/dashboard-sharing.png and b/_site/docs/master/embedding/images/dashboard-sharing.png differ diff --git a/_site/docs/master/embedding/images/full-data-picker.png b/_site/docs/master/embedding/images/full-data-picker.png index 31aa99c04c..012e37c3e9 100644 Binary files a/_site/docs/master/embedding/images/full-data-picker.png and b/_site/docs/master/embedding/images/full-data-picker.png differ diff --git a/_site/docs/master/embedding/images/interactive-question-sample-app.png b/_site/docs/master/embedding/images/interactive-question-sample-app.png index 82b59fed3a..306f2d33ca 100644 Binary files a/_site/docs/master/embedding/images/interactive-question-sample-app.png and b/_site/docs/master/embedding/images/interactive-question-sample-app.png differ diff --git a/_site/docs/master/embedding/images/interactive-question.png b/_site/docs/master/embedding/images/interactive-question.png index 2789fb4304..da4c9844b4 100644 Binary files a/_site/docs/master/embedding/images/interactive-question.png and b/_site/docs/master/embedding/images/interactive-question.png differ diff --git a/_site/docs/master/embedding/images/jwt-setup.png b/_site/docs/master/embedding/images/jwt-setup.png index 0c639d1032..005a76fc45 100644 Binary files a/_site/docs/master/embedding/images/jwt-setup.png and b/_site/docs/master/embedding/images/jwt-setup.png differ diff --git a/_site/docs/master/embedding/images/powered-by-metabase.png b/_site/docs/master/embedding/images/powered-by-metabase.png index 32282cca33..2daa70728b 100644 Binary files a/_site/docs/master/embedding/images/powered-by-metabase.png and b/_site/docs/master/embedding/images/powered-by-metabase.png differ diff --git a/_site/docs/master/embedding/images/public-embed.png b/_site/docs/master/embedding/images/public-embed.png index 31aa99c04c..1bad0d4e3c 100644 Binary files a/_site/docs/master/embedding/images/public-embed.png and b/_site/docs/master/embedding/images/public-embed.png differ diff --git a/_site/docs/master/embedding/images/public-link-custom-destination.png b/_site/docs/master/embedding/images/public-link-custom-destination.png index 7e4d253fc1..73f3cb9799 100644 Binary files a/_site/docs/master/embedding/images/public-link-custom-destination.png and b/_site/docs/master/embedding/images/public-link-custom-destination.png differ diff --git a/_site/docs/master/embedding/images/see-shared-content.png b/_site/docs/master/embedding/images/see-shared-content.png index 4039f66dd8..1b7630c428 100644 Binary files a/_site/docs/master/embedding/images/see-shared-content.png and b/_site/docs/master/embedding/images/see-shared-content.png differ diff --git a/_site/docs/master/embedding/interactive-embedding-quick-start-guide.html b/_site/docs/master/embedding/interactive-embedding-quick-start-guide.html index 8e4d00adf0..62c3edcd5c 100644 --- a/_site/docs/master/embedding/interactive-embedding-quick-start-guide.html +++ b/_site/docs/master/embedding/interactive-embedding-quick-start-guide.html @@ -5270,7 +5270,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5279,7 +5279,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/interactive-embedding.html b/_site/docs/master/embedding/interactive-embedding.html index 586485add6..b4015cd560 100644 --- a/_site/docs/master/embedding/interactive-embedding.html +++ b/_site/docs/master/embedding/interactive-embedding.html @@ -5231,7 +5231,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5240,7 +5240,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/interactive-ui-components.html b/_site/docs/master/embedding/interactive-ui-components.html index e49daac26a..d569b3c38e 100644 --- a/_site/docs/master/embedding/interactive-ui-components.html +++ b/_site/docs/master/embedding/interactive-ui-components.html @@ -5153,7 +5153,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5162,7 +5162,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/introduction.html b/_site/docs/master/embedding/introduction.html index 2cce4733e1..e6e4796adc 100644 --- a/_site/docs/master/embedding/introduction.html +++ b/_site/docs/master/embedding/introduction.html @@ -5102,7 +5102,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5111,7 +5111,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/public-links.html b/_site/docs/master/embedding/public-links.html index 3a5b623870..58e8433f74 100644 --- a/_site/docs/master/embedding/public-links.html +++ b/_site/docs/master/embedding/public-links.html @@ -5136,7 +5136,7 @@
          Resources
          Example Dashboards - + SQL Best Practices @@ -5145,7 +5145,7 @@
          Resources
          How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/api/BaseInteractiveQuestionProps.html b/_site/docs/master/embedding/sdk/api/BaseInteractiveQuestionProps.html index 230ac7fd42..015313c7bb 100644 --- a/_site/docs/master/embedding/sdk/api/BaseInteractiveQuestionProps.html +++ b/_site/docs/master/embedding/sdk/api/BaseInteractiveQuestionProps.html @@ -23,7 +23,7 @@ -

          Interface BaseInteractiveQuestionProps

          interface BaseInteractiveQuestionProps {
              children?: ReactNode;
              entityTypes?: EmbeddingEntityType[];
              initialSqlParameters?: SqlParameterValues;
              isSaveEnabled?: boolean;
              onBeforeSave?: (
                  question: undefined | MetabaseQuestion,
                  context: { isNewQuestion: boolean },
              ) => Promise<void>;
              onRun?: (question: undefined | MetabaseQuestion) => void;
              onSave?: (
                  question: undefined | MetabaseQuestion,
                  context: { isNewQuestion: boolean },
              ) => void;
              plugins?: MetabasePluginsConfig;
              questionId: null | SdkQuestionId;
              targetCollection?: SdkCollectionId;
              withDownloads?: boolean;
          }
          Index

          Properties

          children? +

          Interface BaseInteractiveQuestionProps

          interface BaseInteractiveQuestionProps {
              children?: ReactNode;
              entityTypes?: EmbeddingEntityType[];
              initialSqlParameters?: SqlParameterValues;
              isSaveEnabled?: boolean;
              onBeforeSave?: (
                  question: undefined | MetabaseQuestion,
                  context: { isNewQuestion: boolean },
              ) => Promise<void>;
              onRun?: (question: undefined | MetabaseQuestion) => void;
              onSave?: (
                  question: MetabaseQuestion,
                  context: { dashboardTabId?: number; isNewQuestion: boolean },
              ) => void;
              plugins?: MetabasePluginsConfig;
              questionId: null | SdkQuestionId;
              targetCollection?: SdkCollectionId;
              withDownloads?: boolean;
          }
          Index

          Properties

          isSaveEnabled?: boolean

          Whether to show the save button.

          onBeforeSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => Promise<void>

          A callback function that triggers before saving. Only relevant when isSaveEnabled = true

          onRun?: (question: undefined | MetabaseQuestion) => void

          A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

          -
          onSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => void

          A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          +
          onSave?: (
              question: MetabaseQuestion,
              context: { dashboardTabId?: number; isNewQuestion: boolean },
          ) => void

          A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          questionId: null | SdkQuestionId

          The ID of the question.
          This is either: diff --git a/_site/docs/master/embedding/sdk/api/CreateQuestion.html b/_site/docs/master/embedding/sdk/api/CreateQuestion.html index a35f55a8d1..6fb7f49748 100644 --- a/_site/docs/master/embedding/sdk/api/CreateQuestion.html +++ b/_site/docs/master/embedding/sdk/api/CreateQuestion.html @@ -28,7 +28,7 @@

        • OptionalisSaveEnabled?: boolean

          Whether to show the save button.

        • OptionalonBeforeSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => Promise<void>

          A callback function that triggers before saving. Only relevant when isSaveEnabled = true

        • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

          A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

          -
        • OptionalonSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => void

          A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          +
        • OptionalonSave?: (
              question: MetabaseQuestion,
              context: { dashboardTabId?: number; isNewQuestion: boolean },
          ) => void

          A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

        • Optionalplugins?: MetabasePluginsConfig
        • OptionaltargetCollection?: SdkCollectionId

          The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

        • OptionalwithDownloads?: boolean

          Enables the ability to download results in the interactive question.

        • Returns Element

          Use <InteractiveQuestion questionId="new" /> instead.

          diff --git a/_site/docs/master/embedding/sdk/api/CreateQuestionProps.html b/_site/docs/master/embedding/sdk/api/CreateQuestionProps.html index 5a0b4e825a..2f680f9343 100644 --- a/_site/docs/master/embedding/sdk/api/CreateQuestionProps.html +++ b/_site/docs/master/embedding/sdk/api/CreateQuestionProps.html @@ -23,7 +23,7 @@ -

          Interface CreateQuestionProps

          interface CreateQuestionProps {
              entityTypes?: EmbeddingEntityType[];
              initialSqlParameters?: SqlParameterValues;
              isSaveEnabled?: boolean;
              onBeforeSave?: (
                  question: undefined | MetabaseQuestion,
                  context: { isNewQuestion: boolean },
              ) => Promise<void>;
              onRun?: (question: undefined | MetabaseQuestion) => void;
              onSave?: (
                  question: undefined | MetabaseQuestion,
                  context: { isNewQuestion: boolean },
              ) => void;
              plugins?: MetabasePluginsConfig;
              targetCollection?: SdkCollectionId;
              withDownloads?: boolean;
          }
          Index

          Properties

          entityTypes? +

          Interface CreateQuestionProps

          interface CreateQuestionProps {
              entityTypes?: EmbeddingEntityType[];
              initialSqlParameters?: SqlParameterValues;
              isSaveEnabled?: boolean;
              onBeforeSave?: (
                  question: undefined | MetabaseQuestion,
                  context: { isNewQuestion: boolean },
              ) => Promise<void>;
              onRun?: (question: undefined | MetabaseQuestion) => void;
              onSave?: (
                  question: MetabaseQuestion,
                  context: { dashboardTabId?: number; isNewQuestion: boolean },
              ) => void;
              plugins?: MetabasePluginsConfig;
              targetCollection?: SdkCollectionId;
              withDownloads?: boolean;
          }
          Index

          Properties

          isSaveEnabled?: boolean

          Whether to show the save button.

          onBeforeSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => Promise<void>

          A callback function that triggers before saving. Only relevant when isSaveEnabled = true

          onRun?: (question: undefined | MetabaseQuestion) => void

          A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

          -
          onSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => void

          A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          +
          onSave?: (
              question: MetabaseQuestion,
              context: { dashboardTabId?: number; isNewQuestion: boolean },
          ) => void

          A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          targetCollection?: SdkCollectionId

          The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

          withDownloads?: boolean

          Enables the ability to download results in the interactive question.

          diff --git a/_site/docs/master/embedding/sdk/api/DrillThroughQuestionProps.html b/_site/docs/master/embedding/sdk/api/DrillThroughQuestionProps.html index f1d754ca45..4edc29450e 100644 --- a/_site/docs/master/embedding/sdk/api/DrillThroughQuestionProps.html +++ b/_site/docs/master/embedding/sdk/api/DrillThroughQuestionProps.html @@ -24,7 +24,7 @@

          Interface DrillThroughQuestionProps

          Props for the drill-through question

          -
          interface DrillThroughQuestionProps {
              children?: ReactNode;
              className?: string;
              entityTypes?: EmbeddingEntityType[];
              height?: Height<string | number>;
              initialSqlParameters?: SqlParameterValues;
              isSaveEnabled?: boolean;
              onBeforeSave?: (
                  question: undefined | MetabaseQuestion,
                  context: { isNewQuestion: boolean },
              ) => Promise<void>;
              onRun?: (question: undefined | MetabaseQuestion) => void;
              onSave?: (
                  question: undefined | MetabaseQuestion,
                  context: { isNewQuestion: boolean },
              ) => void;
              plugins?: MetabasePluginsConfig;
              style?: CSSProperties;
              targetCollection?: SdkCollectionId;
              title?: SdkQuestionTitleProps;
              width?: Width<string | number>;
              withChartTypeSelector?: boolean;
              withDownloads?: boolean;
              withResetButton?: boolean;
          }
          Index

          Properties

          interface DrillThroughQuestionProps {
              children?: ReactNode;
              className?: string;
              entityTypes?: EmbeddingEntityType[];
              height?: Height<string | number>;
              initialSqlParameters?: SqlParameterValues;
              isSaveEnabled?: boolean;
              onBeforeSave?: (
                  question: undefined | MetabaseQuestion,
                  context: { isNewQuestion: boolean },
              ) => Promise<void>;
              onRun?: (question: undefined | MetabaseQuestion) => void;
              onSave?: (
                  question: MetabaseQuestion,
                  context: { dashboardTabId?: number; isNewQuestion: boolean },
              ) => void;
              plugins?: MetabasePluginsConfig;
              style?: CSSProperties;
              targetCollection?: SdkCollectionId;
              title?: SdkQuestionTitleProps;
              width?: Width<string | number>;
              withChartTypeSelector?: boolean;
              withDownloads?: boolean;
              withResetButton?: boolean;
          }
          Index

          Properties

          isSaveEnabled?: boolean

          Whether to show the save button.

          onBeforeSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => Promise<void>

          A callback function that triggers before saving. Only relevant when isSaveEnabled = true

          onRun?: (question: undefined | MetabaseQuestion) => void

          A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

          -
          onSave?: (
              question: undefined | MetabaseQuestion,
              context: { isNewQuestion: boolean },
          ) => void

          A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          +
          onSave?: (
              question: MetabaseQuestion,
              context: { dashboardTabId?: number; isNewQuestion: boolean },
          ) => void

          A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          A custom style object to be added to the root element.

          targetCollection?: SdkCollectionId

          The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

          Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

          diff --git a/_site/docs/master/embedding/sdk/api/EditableDashboard.html b/_site/docs/master/embedding/sdk/api/EditableDashboard.html index b30608757e..cf22fd37d6 100644 --- a/_site/docs/master/embedding/sdk/api/EditableDashboard.html +++ b/_site/docs/master/embedding/sdk/api/EditableDashboard.html @@ -23,13 +23,9 @@ -

          Function EditableDashboard

          • A dashboard component with the features available in the InteractiveDashboard component, as well as the ability to add and update questions, layout, and content within your dashboard.

            -

            Parameters

            • props: {
                  drillThroughQuestionHeight?: Height<string | number>;
                  drillThroughQuestionProps?: DrillThroughQuestionProps;
                  plugins?: MetabasePluginsConfig;
                  renderDrillThroughQuestion?: () => ReactNode;
              } & {
                  dashboardId: SdkDashboardId;
                  hiddenParameters?: string[];
                  initialParameters?: ParameterValues;
                  withCardTitle?: boolean;
                  withDownloads?: boolean;
                  withTitle?: boolean;
              } & { className?: string; style?: CSSProperties } & {
                  onLoad?: (dashboard: null | MetabaseDashboard) => void;
                  onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void;
              } & {}
              • OptionaldrillThroughQuestionHeight?: Height<string | number>

                Height of a question component when drilled from the dashboard to a question level.

                -
              • OptionaldrillThroughQuestionProps?: DrillThroughQuestionProps

                Props of a question component when drilled from the dashboard to a question level.

                -
              • Optionalplugins?: MetabasePluginsConfig

                Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

                -
              • OptionalrenderDrillThroughQuestion?: () => ReactNode

                A custom React component to render the question layout. -Use namespaced InteractiveQuestion components to build the layout.

                -
              • dashboardId: SdkDashboardId

                The ID of the dashboard. +

                Function EditableDashboard

                • A dashboard component with the features available in the InteractiveDashboard component, as well as the ability to add and update questions, layout, and content within your dashboard.

                  +

                  Parameters

                  • props: EditableDashboardProps
                    • OptionalclassName?: string

                      A custom class name to be added to the root element.

                      +
                    • dashboardId: SdkDashboardId

                      The ID of the dashboard.
                      This is either:

                      @@ -38,27 +34,32 @@
                    • the string ID found in the entity_id key of the dashboard object when using the API directly or using the SDK Collection Browser to return data
                    -
                • OptionalhiddenParameters?: string[]

                  A list of parameters to hide. +

                • OptionaldataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

                  Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

                  +
                • OptionaldrillThroughQuestionHeight?: Height<string | number>

                  Height of a question component when drilled from the dashboard to a question level.

                  +
                • OptionaldrillThroughQuestionProps?: DrillThroughQuestionProps

                  Props of a question component when drilled from the dashboard to a question level.

                  +
                • OptionalhiddenParameters?: string[]

                  A list of parameters to hide.

                  -
                • OptionalinitialParameters?: ParameterValues

                  Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options. +

                • OptionalinitialParameters?: ParameterValues

                  Query parameters for the dashboard. For a single option, use a string value, and use a list of strings for multiple options.

                  -
                • OptionalwithCardTitle?: boolean

                  Whether the dashboard cards should display a title.

                  -
                • OptionalwithDownloads?: boolean

                  Whether to hide the download button.

                  -
                • OptionalwithTitle?: boolean

                  Whether the dashboard should display a title.

                  -
                • OptionalclassName?: string

                  A custom class name to be added to the root element.

                  -
                • Optionalstyle?: CSSProperties

                  A custom style object to be added to the root element.

                  -
                • OptionalonLoad?: (dashboard: null | MetabaseDashboard) => void

                  Callback that is called when the dashboard is loaded.

                  -
                • OptionalonLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void

                  Callback that is called when the dashboard is loaded without cards.

                  -

              Returns Element

            +
          • OptionalonLoad?: (dashboard: null | MetabaseDashboard) => void

            Callback that is called when the dashboard is loaded.

            +
          • OptionalonLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void

            Callback that is called when the dashboard is loaded without cards.

            +
          • Optionalplugins?: MetabasePluginsConfig

            Additional mapper function to override or add drill-down menu. See the implementing custom actions section for more details.

            +
          • OptionalrenderDrillThroughQuestion?: () => ReactNode

            A custom React component to render the question layout. +Use namespaced InteractiveQuestion components to build the layout.

            +
          • Optionalstyle?: CSSProperties

            A custom style object to be added to the root element.

            +
          • OptionalwithCardTitle?: boolean

            Whether the dashboard cards should display a title.

            +
          • OptionalwithDownloads?: boolean

            Whether to hide the download button.

            +
          • OptionalwithTitle?: boolean

            Whether the dashboard should display a title.

            +
          • Returns Element

            \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/EditableDashboardProps.html b/_site/docs/master/embedding/sdk/api/EditableDashboardProps.html index 84f46b6ace..277bc8a0f7 100644 --- a/_site/docs/master/embedding/sdk/api/EditableDashboardProps.html +++ b/_site/docs/master/embedding/sdk/api/EditableDashboardProps.html @@ -23,8 +23,9 @@ -

            Interface EditableDashboardProps

            interface EditableDashboardProps {
                className?: string;
                dashboardId: SdkDashboardId;
                drillThroughQuestionHeight?: Height<string | number>;
                drillThroughQuestionProps?: DrillThroughQuestionProps;
                hiddenParameters?: string[];
                initialParameters?: ParameterValues;
                onLoad?: (dashboard: null | MetabaseDashboard) => void;
                onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void;
                plugins?: MetabasePluginsConfig;
                renderDrillThroughQuestion?: () => ReactNode;
                style?: CSSProperties;
                withCardTitle?: boolean;
                withDownloads?: boolean;
                withTitle?: boolean;
            }
            Index

            Properties

            className? +

            Interface EditableDashboardProps

            interface EditableDashboardProps {
                className?: string;
                dashboardId: SdkDashboardId;
                dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">;
                drillThroughQuestionHeight?: Height<string | number>;
                drillThroughQuestionProps?: DrillThroughQuestionProps;
                hiddenParameters?: string[];
                initialParameters?: ParameterValues;
                onLoad?: (dashboard: null | MetabaseDashboard) => void;
                onLoadWithoutCards?: (dashboard: null | MetabaseDashboard) => void;
                plugins?: MetabasePluginsConfig;
                renderDrillThroughQuestion?: () => ReactNode;
                style?: CSSProperties;
                withCardTitle?: boolean;
                withDownloads?: boolean;
                withTitle?: boolean;
            }
            Index

            Properties

            className? dashboardId +dataPickerProps? drillThroughQuestionHeight? drillThroughQuestionProps? hiddenParameters? @@ -47,6 +48,7 @@
          • the string ID found in the entity_id key of the dashboard object when using the API directly or using the SDK Collection Browser to return data
          • +
            dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

            Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

            drillThroughQuestionHeight?: Height<string | number>

            Height of a question component when drilled from the dashboard to a question level.

            drillThroughQuestionProps?: DrillThroughQuestionProps

            Props of a question component when drilled from the dashboard to a question level.

            Type declaration

            Props for the drill-through question

            @@ -58,7 +60,7 @@
          • OptionalisSaveEnabled?: boolean

            Whether to show the save button.

          • OptionalonBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>

            A callback function that triggers before saving. Only relevant when isSaveEnabled = true

          • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

            A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

            -
          • OptionalonSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => void

            A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

            +
          • OptionalonSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void

            A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          • Optionalplugins?: MetabasePluginsConfig
          • Optionalstyle?: CSSProperties

            A custom style object to be added to the root element.

          • OptionaltargetCollection?: SdkCollectionId

            The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

          • Optionaltitle?: SdkQuestionTitleProps

            Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

            @@ -89,6 +91,6 @@
          • withCardTitle?: boolean

            Whether the dashboard cards should display a title.

            withDownloads?: boolean

            Whether to hide the download button.

            withTitle?: boolean

            Whether the dashboard should display a title.

            -

            +

            \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/InteractiveDashboard.html b/_site/docs/master/embedding/sdk/api/InteractiveDashboard.html index e8fb2103ed..f902519d01 100644 --- a/_site/docs/master/embedding/sdk/api/InteractiveDashboard.html +++ b/_site/docs/master/embedding/sdk/api/InteractiveDashboard.html @@ -23,8 +23,8 @@ -

            Function InteractiveDashboard

            dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

            Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

            drillThroughQuestionHeight?: Height<string | number>

            Height of a question component when drilled from the dashboard to a question level.

            drillThroughQuestionProps?: DrillThroughQuestionProps

            Props of a question component when drilled from the dashboard to a question level.

            Type declaration

            Props for the drill-through question

            @@ -58,7 +60,7 @@
          • OptionalisSaveEnabled?: boolean

            Whether to show the save button.

          • OptionalonBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>

            A callback function that triggers before saving. Only relevant when isSaveEnabled = true

          • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

            A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

            -
          • OptionalonSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => void

            A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

            +
          • OptionalonSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void

            A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          • Optionalplugins?: MetabasePluginsConfig
          • Optionalstyle?: CSSProperties

            A custom style object to be added to the root element.

          • OptionaltargetCollection?: SdkCollectionId

            The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

          • Optionaltitle?: SdkQuestionTitleProps

            Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

            @@ -89,6 +91,6 @@
          • withCardTitle?: boolean

            Whether the dashboard cards should display a title.

            withDownloads?: boolean

            Whether to hide the download button.

            withTitle?: boolean

            Whether the dashboard should display a title.

            -

            +

            \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/InteractiveQuestion.html b/_site/docs/master/embedding/sdk/api/InteractiveQuestion.html index 8f1e02d18d..4ba3fbfa50 100644 --- a/_site/docs/master/embedding/sdk/api/InteractiveQuestion.html +++ b/_site/docs/master/embedding/sdk/api/InteractiveQuestion.html @@ -32,7 +32,7 @@
          • OptionalisSaveEnabled?: boolean

            Whether to show the save button.

          • OptionalonBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>

            A callback function that triggers before saving. Only relevant when isSaveEnabled = true

          • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

            A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

            -
          • OptionalonSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => void

            A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

            +
          • OptionalonSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void

            A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          • Optionalplugins?: MetabasePluginsConfig
          • questionId: null | SdkQuestionId

            The ID of the question.
            This is either: diff --git a/_site/docs/master/embedding/sdk/api/InteractiveQuestionProps.html b/_site/docs/master/embedding/sdk/api/InteractiveQuestionProps.html index d5bf1a82c7..57cf9c4172 100644 --- a/_site/docs/master/embedding/sdk/api/InteractiveQuestionProps.html +++ b/_site/docs/master/embedding/sdk/api/InteractiveQuestionProps.html @@ -23,7 +23,7 @@ -

            Interface InteractiveQuestionProps

            interface InteractiveQuestionProps {
                children?: ReactNode;
                className?: string;
                entityTypes?: EmbeddingEntityType[];
                height?: Height<string | number>;
                initialSqlParameters?: SqlParameterValues;
                isSaveEnabled?: boolean;
                onBeforeSave?: (
                    question: undefined | MetabaseQuestion,
                    context: { isNewQuestion: boolean },
                ) => Promise<void>;
                onRun?: (question: undefined | MetabaseQuestion) => void;
                onSave?: (
                    question: undefined | MetabaseQuestion,
                    context: { isNewQuestion: boolean },
                ) => void;
                plugins?: MetabasePluginsConfig;
                questionId: null | SdkQuestionId;
                style?: CSSProperties;
                targetCollection?: SdkCollectionId;
                title?: SdkQuestionTitleProps;
                width?: Width<string | number>;
                withChartTypeSelector?: boolean;
                withDownloads?: boolean;
                withResetButton?: boolean;
            }
            Index

            Properties

            children? +

            Interface InteractiveQuestionProps

            interface InteractiveQuestionProps {
                children?: ReactNode;
                className?: string;
                entityTypes?: EmbeddingEntityType[];
                height?: Height<string | number>;
                initialSqlParameters?: SqlParameterValues;
                isSaveEnabled?: boolean;
                onBeforeSave?: (
                    question: undefined | MetabaseQuestion,
                    context: { isNewQuestion: boolean },
                ) => Promise<void>;
                onRun?: (question: undefined | MetabaseQuestion) => void;
                onSave?: (
                    question: MetabaseQuestion,
                    context: { dashboardTabId?: number; isNewQuestion: boolean },
                ) => void;
                plugins?: MetabasePluginsConfig;
                questionId: null | SdkQuestionId;
                style?: CSSProperties;
                targetCollection?: SdkCollectionId;
                title?: SdkQuestionTitleProps;
                width?: Width<string | number>;
                withChartTypeSelector?: boolean;
                withDownloads?: boolean;
                withResetButton?: boolean;
            }
            Index

            Properties

            isSaveEnabled?: boolean

            Whether to show the save button.

            onBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>

            A callback function that triggers before saving. Only relevant when isSaveEnabled = true

            onRun?: (question: undefined | MetabaseQuestion) => void

            A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

            -
            onSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => void

            A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

            +
            onSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void

            A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

            questionId: null | SdkQuestionId

            The ID of the question.
            This is either: diff --git a/_site/docs/master/embedding/sdk/api/StaticDashboard.html b/_site/docs/master/embedding/sdk/api/StaticDashboard.html index eb0989de67..76929144aa 100644 --- a/_site/docs/master/embedding/sdk/api/StaticDashboard.html +++ b/_site/docs/master/embedding/sdk/api/StaticDashboard.html @@ -23,8 +23,8 @@ -

            Function StaticDashboard

            dataPickerProps?: Pick<InteractiveQuestionProps, "entityTypes">

            Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question.

            drillThroughQuestionHeight?: Height<string | number>

            Height of a question component when drilled from the dashboard to a question level.

            drillThroughQuestionProps?: DrillThroughQuestionProps

            Props of a question component when drilled from the dashboard to a question level.

            Type declaration

            Props for the drill-through question

            @@ -58,7 +60,7 @@
          • OptionalisSaveEnabled?: boolean

            Whether to show the save button.

          • OptionalonBeforeSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => Promise<void>

            A callback function that triggers before saving. Only relevant when isSaveEnabled = true

          • OptionalonRun?: (question: undefined | MetabaseQuestion) => void

            A callback function that triggers when a question is updated, including when a user clicks the Visualize button in the question editor

            -
          • OptionalonSave?: (
                question: undefined | MetabaseQuestion,
                context: { isNewQuestion: boolean },
            ) => void

            A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

            +
          • OptionalonSave?: (
                question: MetabaseQuestion,
                context: { dashboardTabId?: number; isNewQuestion: boolean },
            ) => void

            A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true

          • Optionalplugins?: MetabasePluginsConfig
          • Optionalstyle?: CSSProperties

            A custom style object to be added to the root element.

          • OptionaltargetCollection?: SdkCollectionId

            The collection to save the question to. This will hide the collection picker from the save modal. Only applicable to interactive questions.

          • Optionaltitle?: SdkQuestionTitleProps

            Determines whether the question title is displayed, and allows a custom title to be displayed instead of the default question title. Shown by default. Only applicable to interactive questions when using the default layout.

            @@ -89,6 +91,6 @@
            withCardTitle?: boolean

            Whether the dashboard cards should display a title.

            withDownloads?: boolean

            Whether to hide the download button.

            withTitle?: boolean

            Whether the dashboard should display a title.

            -
          • +

            \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/StaticQuestion.html b/_site/docs/master/embedding/sdk/api/StaticQuestion.html index 3deb840da1..9fe7eebc5e 100644 --- a/_site/docs/master/embedding/sdk/api/StaticQuestion.html +++ b/_site/docs/master/embedding/sdk/api/StaticQuestion.html @@ -40,6 +40,7 @@
          • Optionalstyle?: CSSProperties

            A custom style object to be added to the root element.

          • Optionalwidth?: Width<string | number>

            A number or string specifying a CSS size value that specifies the width of the component

            -
          • OptionalwithChartTypeSelector?: boolean
          • Returns ReactNode

            +
          • OptionalwithChartTypeSelector?: boolean
          • OptionalwithDownloads?: boolean

            Enables the ability to download results in the interactive question.

            +
          • Returns ReactNode

            \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/StaticQuestionProps.html b/_site/docs/master/embedding/sdk/api/StaticQuestionProps.html index 949ad0899b..5355f8d73b 100644 --- a/_site/docs/master/embedding/sdk/api/StaticQuestionProps.html +++ b/_site/docs/master/embedding/sdk/api/StaticQuestionProps.html @@ -23,13 +23,14 @@ -

            Interface StaticQuestionProps

            interface StaticQuestionProps {
                className?: string;
                height?: Height<string | number>;
                initialSqlParameters?: SqlParameterValues;
                questionId: null | SdkQuestionId;
                style?: CSSProperties;
                width?: Width<string | number>;
                withChartTypeSelector?: boolean;
            }
            Index

            Properties

            className? +

            Interface StaticQuestionProps

            interface StaticQuestionProps {
                className?: string;
                height?: Height<string | number>;
                initialSqlParameters?: SqlParameterValues;
                questionId: null | SdkQuestionId;
                style?: CSSProperties;
                width?: Width<string | number>;
                withChartTypeSelector?: boolean;
                withDownloads?: boolean;
            }
            Index

            Properties

            className?: string

            A custom class name to be added to the root element.

            height?: Height<string | number>

            A number or string specifying a CSS size value that specifies the height of the component

            initialSqlParameters?: SqlParameterValues

            Initial values for the SQL parameters.

            @@ -46,6 +47,7 @@

            A custom style object to be added to the root element.

            width?: Width<string | number>

            A number or string specifying a CSS size value that specifies the width of the component

            -
            withChartTypeSelector?: boolean

            +
            withChartTypeSelector?: boolean
            withDownloads?: boolean

            Enables the ability to download results in the interactive question.

            +

            \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/api/assets/search.js b/_site/docs/master/embedding/sdk/api/assets/search.js index 5649aeca11..a91212dd5e 100644 --- a/_site/docs/master/embedding/sdk/api/assets/search.js +++ b/_site/docs/master/embedding/sdk/api/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/_site/docs/master/embedding/sdk/appearance.html b/_site/docs/master/embedding/sdk/appearance.html index e619b67156..6370ebbce4 100644 --- a/_site/docs/master/embedding/sdk/appearance.html +++ b/_site/docs/master/embedding/sdk/appearance.html @@ -5188,7 +5188,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5197,7 +5197,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/authentication.html b/_site/docs/master/embedding/sdk/authentication.html index 46df74216c..0e487fa1af 100644 --- a/_site/docs/master/embedding/sdk/authentication.html +++ b/_site/docs/master/embedding/sdk/authentication.html @@ -5473,7 +5473,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5482,7 +5482,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/collections.html b/_site/docs/master/embedding/sdk/collections.html index 63b9f6239c..e675f53d21 100644 --- a/_site/docs/master/embedding/sdk/collections.html +++ b/_site/docs/master/embedding/sdk/collections.html @@ -5063,7 +5063,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5072,7 +5072,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/config.html b/_site/docs/master/embedding/sdk/config.html index 314f0d0629..adcc38c32c 100644 --- a/_site/docs/master/embedding/sdk/config.html +++ b/_site/docs/master/embedding/sdk/config.html @@ -5171,7 +5171,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5180,7 +5180,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/dashboards.html b/_site/docs/master/embedding/sdk/dashboards.html index 45edb423cb..1bedbeb820 100644 --- a/_site/docs/master/embedding/sdk/dashboards.html +++ b/_site/docs/master/embedding/sdk/dashboards.html @@ -4755,6 +4755,11 @@

            Props

            SdkDashboardId The ID of the dashboard.
            This is either:
            - the numerical ID when accessing a dashboard link, i.e. http://localhost:3000/dashboard/1-my-dashboard where the ID is 1
            - the string ID found in the entity_id key of the dashboard object when using the API directly or using the SDK Collection Browser to return data + + dataPickerProps? + Pick<InteractiveQuestionProps, "entityTypes"> + Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question. + drillThroughQuestionHeight? Height<string | number> @@ -4849,6 +4854,11 @@

            Props

            SdkDashboardId The ID of the dashboard.
            This is either:
            - the numerical ID when accessing a dashboard link, i.e. http://localhost:3000/dashboard/1-my-dashboard where the ID is 1
            - the string ID found in the entity_id key of the dashboard object when using the API directly or using the SDK Collection Browser to return data + + dataPickerProps? + Pick<InteractiveQuestionProps, "entityTypes"> + Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question. + drillThroughQuestionHeight? Height<string | number> @@ -4943,6 +4953,11 @@

            Props

            SdkDashboardId The ID of the dashboard.
            This is either:
            - the numerical ID when accessing a dashboard link, i.e. http://localhost:3000/dashboard/1-my-dashboard where the ID is 1
            - the string ID found in the entity_id key of the dashboard object when using the API directly or using the SDK Collection Browser to return data + + dataPickerProps? + Pick<InteractiveQuestionProps, "entityTypes"> + Additional props to pass to the query builder rendered by InteractiveQuestion when creating a new dashboard question. + drillThroughQuestionHeight? Height<string | number> @@ -5523,7 +5538,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5532,7 +5547,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/introduction.html b/_site/docs/master/embedding/sdk/introduction.html index 16f48627c1..7e25569c2a 100644 --- a/_site/docs/master/embedding/sdk/introduction.html +++ b/_site/docs/master/embedding/sdk/introduction.html @@ -4819,7 +4819,7 @@

            Changelog

            Embedded analytics SDK on NPM

            -

            Check out the Metabase Embedded analytics SDK on NPM: metaba.se/sdk.

            +

            Check out the Metabase Embedded analytics SDK on NPM: metaba.se/sdk-npm.

            SDK limitations

            @@ -4831,7 +4831,13 @@

            SDK limitations

          • Subscriptions
          • Alerts
          • Server-side rendering (SSR)
          • + + +

            Other limitations:

            + +
            • Multiple interactive dashboards on the same application page. If you need to embed multiple dashboards on the same application page, you can embed static dashboards.
            • +
            • If you have Leaflet 1.x as a dependency in your app, you may run into compatibility issues. You can try using Leaflet 2.x instead.

            Issues, feature requests and support

            @@ -5095,7 +5101,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5104,7 +5110,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/next-js.html b/_site/docs/master/embedding/sdk/next-js.html index 90dbb2cf55..c3f79c1f12 100644 --- a/_site/docs/master/embedding/sdk/next-js.html +++ b/_site/docs/master/embedding/sdk/next-js.html @@ -5167,7 +5167,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5176,7 +5176,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/plugins.html b/_site/docs/master/embedding/sdk/plugins.html index 83f8513107..e57872266f 100644 --- a/_site/docs/master/embedding/sdk/plugins.html +++ b/_site/docs/master/embedding/sdk/plugins.html @@ -4999,7 +4999,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5008,7 +5008,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/questions.html b/_site/docs/master/embedding/sdk/questions.html index 705d97edc1..1a690f30a2 100644 --- a/_site/docs/master/embedding/sdk/questions.html +++ b/_site/docs/master/embedding/sdk/questions.html @@ -4812,6 +4812,11 @@

            Props

            boolean - + +
            withDownloads? + boolean + Enables the ability to download results in the interactive question. + @@ -4904,7 +4909,7 @@

            Props

            onSave? - (question: undefined | MetabaseQuestion, context: { isNewQuestion: boolean; }) => void + (question: MetabaseQuestion, context: { dashboardTabId?: number; isNewQuestion: boolean; }) => void A callback function that triggers when a user saves the question. Only relevant when isSaveEnabled = true @@ -5420,7 +5425,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5429,7 +5434,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/quickstart-cli.html b/_site/docs/master/embedding/sdk/quickstart-cli.html index 1b529a6cab..d027ff352c 100644 --- a/_site/docs/master/embedding/sdk/quickstart-cli.html +++ b/_site/docs/master/embedding/sdk/quickstart-cli.html @@ -5085,7 +5085,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5094,7 +5094,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/quickstart-with-sample-app.html b/_site/docs/master/embedding/sdk/quickstart-with-sample-app.html index 91dc0560ac..0b0f2d6fba 100644 --- a/_site/docs/master/embedding/sdk/quickstart-with-sample-app.html +++ b/_site/docs/master/embedding/sdk/quickstart-with-sample-app.html @@ -5216,7 +5216,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5225,7 +5225,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/quickstart.html b/_site/docs/master/embedding/sdk/quickstart.html index 359b993f09..605a04fa91 100644 --- a/_site/docs/master/embedding/sdk/quickstart.html +++ b/_site/docs/master/embedding/sdk/quickstart.html @@ -5052,7 +5052,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5061,7 +5061,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/upgrade.html b/_site/docs/master/embedding/sdk/upgrade.html index a379474af6..af4dbdaf2b 100644 --- a/_site/docs/master/embedding/sdk/upgrade.html +++ b/_site/docs/master/embedding/sdk/upgrade.html @@ -5014,7 +5014,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5023,7 +5023,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/sdk/version.html b/_site/docs/master/embedding/sdk/version.html index 9bc9766c3a..61c7f558a4 100644 --- a/_site/docs/master/embedding/sdk/version.html +++ b/_site/docs/master/embedding/sdk/version.html @@ -4996,7 +4996,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5005,7 +5005,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/securing-embeds.html b/_site/docs/master/embedding/securing-embeds.html index 71fb1563ea..4149a776f0 100644 --- a/_site/docs/master/embedding/securing-embeds.html +++ b/_site/docs/master/embedding/securing-embeds.html @@ -5443,7 +5443,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5452,7 +5452,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/start.html b/_site/docs/master/embedding/start.html index 87519ab8d6..7418aab835 100644 --- a/_site/docs/master/embedding/start.html +++ b/_site/docs/master/embedding/start.html @@ -4985,7 +4985,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -4994,7 +4994,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/static-embedding-parameters.html b/_site/docs/master/embedding/static-embedding-parameters.html index 83f67fad40..8d2c7c64da 100644 --- a/_site/docs/master/embedding/static-embedding-parameters.html +++ b/_site/docs/master/embedding/static-embedding-parameters.html @@ -5283,7 +5283,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5292,7 +5292,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/embedding/static-embedding.html b/_site/docs/master/embedding/static-embedding.html index 4a9d9ca308..44f81fc85a 100644 --- a/_site/docs/master/embedding/static-embedding.html +++ b/_site/docs/master/embedding/static-embedding.html @@ -5171,7 +5171,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5180,7 +5180,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/exploration-and-organization/collections.html b/_site/docs/master/exploration-and-organization/collections.html index 51436d1173..f83ffa7e76 100644 --- a/_site/docs/master/exploration-and-organization/collections.html +++ b/_site/docs/master/exploration-and-organization/collections.html @@ -5137,7 +5137,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5146,7 +5146,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/exploration-and-organization/content-verification.html b/_site/docs/master/exploration-and-organization/content-verification.html index 87b071f6ce..3bac0a1ad7 100644 --- a/_site/docs/master/exploration-and-organization/content-verification.html +++ b/_site/docs/master/exploration-and-organization/content-verification.html @@ -5018,7 +5018,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5027,7 +5027,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/exploration-and-organization/data-model-reference.html b/_site/docs/master/exploration-and-organization/data-model-reference.html index bfbc0a5afd..0d4f5e876a 100644 --- a/_site/docs/master/exploration-and-organization/data-model-reference.html +++ b/_site/docs/master/exploration-and-organization/data-model-reference.html @@ -4977,7 +4977,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -4986,7 +4986,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/exploration-and-organization/delete-and-restore.html b/_site/docs/master/exploration-and-organization/delete-and-restore.html index 05166672e0..c85c953cc6 100644 --- a/_site/docs/master/exploration-and-organization/delete-and-restore.html +++ b/_site/docs/master/exploration-and-organization/delete-and-restore.html @@ -5195,7 +5195,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5204,7 +5204,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/exploration-and-organization/events-and-timelines.html b/_site/docs/master/exploration-and-organization/events-and-timelines.html index 643711b059..3d4491805e 100644 --- a/_site/docs/master/exploration-and-organization/events-and-timelines.html +++ b/_site/docs/master/exploration-and-organization/events-and-timelines.html @@ -5088,7 +5088,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5097,7 +5097,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/exploration-and-organization/exploration.html b/_site/docs/master/exploration-and-organization/exploration.html index 39363b2a06..ba6b6f4f7b 100644 --- a/_site/docs/master/exploration-and-organization/exploration.html +++ b/_site/docs/master/exploration-and-organization/exploration.html @@ -5080,7 +5080,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5089,7 +5089,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/exploration-and-organization/history.html b/_site/docs/master/exploration-and-organization/history.html index 60db19d7cf..4eae64641f 100644 --- a/_site/docs/master/exploration-and-organization/history.html +++ b/_site/docs/master/exploration-and-organization/history.html @@ -4967,7 +4967,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -4976,7 +4976,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/exploration-and-organization/images/DataReference.png b/_site/docs/master/exploration-and-organization/images/DataReference.png index 1b91e84ebc..5b8967a7b2 100644 Binary files a/_site/docs/master/exploration-and-organization/images/DataReference.png and b/_site/docs/master/exploration-and-organization/images/DataReference.png differ diff --git a/_site/docs/master/exploration-and-organization/images/browse-data.png b/_site/docs/master/exploration-and-organization/images/browse-data.png index 9429442b26..f857430ff8 100644 Binary files a/_site/docs/master/exploration-and-organization/images/browse-data.png and b/_site/docs/master/exploration-and-organization/images/browse-data.png differ diff --git a/_site/docs/master/exploration-and-organization/images/event-on-a-time-series.png b/_site/docs/master/exploration-and-organization/images/event-on-a-time-series.png index 66168ce82a..acc04a435b 100644 Binary files a/_site/docs/master/exploration-and-organization/images/event-on-a-time-series.png and b/_site/docs/master/exploration-and-organization/images/event-on-a-time-series.png differ diff --git a/_site/docs/master/exploration-and-organization/images/pinned-show-viz.png b/_site/docs/master/exploration-and-organization/images/pinned-show-viz.png index 6c58b5e734..41ac861ee0 100644 Binary files a/_site/docs/master/exploration-and-organization/images/pinned-show-viz.png and b/_site/docs/master/exploration-and-organization/images/pinned-show-viz.png differ diff --git a/_site/docs/master/exploration-and-organization/images/question-checkbox.png b/_site/docs/master/exploration-and-organization/images/question-checkbox.png index 4887db0e22..d9ba8c5014 100644 Binary files a/_site/docs/master/exploration-and-organization/images/question-checkbox.png and b/_site/docs/master/exploration-and-organization/images/question-checkbox.png differ diff --git a/_site/docs/master/exploration-and-organization/images/search-results.png b/_site/docs/master/exploration-and-organization/images/search-results.png index 177b5b507a..1b91e84ebc 100644 Binary files a/_site/docs/master/exploration-and-organization/images/search-results.png and b/_site/docs/master/exploration-and-organization/images/search-results.png differ diff --git a/_site/docs/master/exploration-and-organization/keyboard-shortcuts.html b/_site/docs/master/exploration-and-organization/keyboard-shortcuts.html index 0171e4df15..53ebf4e94f 100644 --- a/_site/docs/master/exploration-and-organization/keyboard-shortcuts.html +++ b/_site/docs/master/exploration-and-organization/keyboard-shortcuts.html @@ -5177,7 +5177,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5186,7 +5186,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/exploration-and-organization/start.html b/_site/docs/master/exploration-and-organization/start.html index ecd9fe751d..b0240a94d9 100644 --- a/_site/docs/master/exploration-and-organization/start.html +++ b/_site/docs/master/exploration-and-organization/start.html @@ -4983,7 +4983,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -4992,7 +4992,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/exploration-and-organization/uploads.html b/_site/docs/master/exploration-and-organization/uploads.html index b5060b411c..c805dcd947 100644 --- a/_site/docs/master/exploration-and-organization/uploads.html +++ b/_site/docs/master/exploration-and-organization/uploads.html @@ -5122,7 +5122,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5131,7 +5131,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/exploration-and-organization/x-rays.html b/_site/docs/master/exploration-and-organization/x-rays.html index 3c2bf0fcc2..1edadb7b19 100644 --- a/_site/docs/master/exploration-and-organization/x-rays.html +++ b/_site/docs/master/exploration-and-organization/x-rays.html @@ -5011,7 +5011,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5020,7 +5020,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/index.html b/_site/docs/master/index.html index 08d55d5804..d5992e4aef 100644 --- a/_site/docs/master/index.html +++ b/_site/docs/master/index.html @@ -5371,7 +5371,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5380,7 +5380,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/accessibility.html b/_site/docs/master/installation-and-operation/accessibility.html index 6325c4e5b2..19a9f54ac8 100644 --- a/_site/docs/master/installation-and-operation/accessibility.html +++ b/_site/docs/master/installation-and-operation/accessibility.html @@ -4968,7 +4968,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -4977,7 +4977,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/activating-the-enterprise-edition.html b/_site/docs/master/installation-and-operation/activating-the-enterprise-edition.html index 6b809ccc8a..b10333c5bf 100644 --- a/_site/docs/master/installation-and-operation/activating-the-enterprise-edition.html +++ b/_site/docs/master/installation-and-operation/activating-the-enterprise-edition.html @@ -5057,7 +5057,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5066,7 +5066,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/backing-up-metabase-application-data.html b/_site/docs/master/installation-and-operation/backing-up-metabase-application-data.html index 4543d44d8f..142aebe4cb 100644 --- a/_site/docs/master/installation-and-operation/backing-up-metabase-application-data.html +++ b/_site/docs/master/installation-and-operation/backing-up-metabase-application-data.html @@ -4989,7 +4989,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -4998,7 +4998,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/commands.html b/_site/docs/master/installation-and-operation/commands.html index ece5d167f1..b973feef87 100644 --- a/_site/docs/master/installation-and-operation/commands.html +++ b/_site/docs/master/installation-and-operation/commands.html @@ -5119,7 +5119,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5128,7 +5128,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/configuring-application-database.html b/_site/docs/master/installation-and-operation/configuring-application-database.html index 5bd5b746de..db0a139d62 100644 --- a/_site/docs/master/installation-and-operation/configuring-application-database.html +++ b/_site/docs/master/installation-and-operation/configuring-application-database.html @@ -5109,7 +5109,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5118,7 +5118,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/creating-RDS-database-on-AWS.html b/_site/docs/master/installation-and-operation/creating-RDS-database-on-AWS.html index 10105e76d2..83d698c117 100644 --- a/_site/docs/master/installation-and-operation/creating-RDS-database-on-AWS.html +++ b/_site/docs/master/installation-and-operation/creating-RDS-database-on-AWS.html @@ -5018,7 +5018,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5027,7 +5027,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/development-instance.html b/_site/docs/master/installation-and-operation/development-instance.html index fd6a2cf186..8047d18a5a 100644 --- a/_site/docs/master/installation-and-operation/development-instance.html +++ b/_site/docs/master/installation-and-operation/development-instance.html @@ -5013,7 +5013,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5022,7 +5022,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/images/AZPrivateLink.png b/_site/docs/master/installation-and-operation/images/AZPrivateLink.png index c520b55bdd..1834491eb7 100644 Binary files a/_site/docs/master/installation-and-operation/images/AZPrivateLink.png and b/_site/docs/master/installation-and-operation/images/AZPrivateLink.png differ diff --git a/_site/docs/master/installation-and-operation/images/AZVNETintegration.png b/_site/docs/master/installation-and-operation/images/AZVNETintegration.png index f69b404401..7bb1d7a4f0 100644 Binary files a/_site/docs/master/installation-and-operation/images/AZVNETintegration.png and b/_site/docs/master/installation-and-operation/images/AZVNETintegration.png differ diff --git a/_site/docs/master/installation-and-operation/images/AddRemoteHost.png b/_site/docs/master/installation-and-operation/images/AddRemoteHost.png index a3bdb2b9c8..ab8def0988 100644 Binary files a/_site/docs/master/installation-and-operation/images/AddRemoteHost.png and b/_site/docs/master/installation-and-operation/images/AddRemoteHost.png differ diff --git a/_site/docs/master/installation-and-operation/images/LocalProcessVisualVM.png b/_site/docs/master/installation-and-operation/images/LocalProcessVisualVM.png index d71e3e03d6..f07a2758c5 100644 Binary files a/_site/docs/master/installation-and-operation/images/LocalProcessVisualVM.png and b/_site/docs/master/installation-and-operation/images/LocalProcessVisualVM.png differ diff --git a/_site/docs/master/installation-and-operation/images/Metabase-AWS-SI.png b/_site/docs/master/installation-and-operation/images/Metabase-AWS-SI.png index 6a49e9a6dc..d60c5504d6 100644 Binary files a/_site/docs/master/installation-and-operation/images/Metabase-AWS-SI.png and b/_site/docs/master/installation-and-operation/images/Metabase-AWS-SI.png differ diff --git a/_site/docs/master/installation-and-operation/images/OpenRemoteInstance.png b/_site/docs/master/installation-and-operation/images/OpenRemoteInstance.png index fa97c0e30a..454be8a831 100644 Binary files a/_site/docs/master/installation-and-operation/images/OpenRemoteInstance.png and b/_site/docs/master/installation-and-operation/images/OpenRemoteInstance.png differ diff --git a/_site/docs/master/installation-and-operation/information-collection.html b/_site/docs/master/installation-and-operation/information-collection.html index 44fd21a129..ad7a0cba25 100644 --- a/_site/docs/master/installation-and-operation/information-collection.html +++ b/_site/docs/master/installation-and-operation/information-collection.html @@ -4990,7 +4990,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -4999,7 +4999,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/installing-metabase.html b/_site/docs/master/installation-and-operation/installing-metabase.html index 40457a9eb4..d0ee497370 100644 --- a/_site/docs/master/installation-and-operation/installing-metabase.html +++ b/_site/docs/master/installation-and-operation/installing-metabase.html @@ -5002,7 +5002,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5011,7 +5011,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/migrating-from-h2.html b/_site/docs/master/installation-and-operation/migrating-from-h2.html index d400ac9768..48a9113e6f 100644 --- a/_site/docs/master/installation-and-operation/migrating-from-h2.html +++ b/_site/docs/master/installation-and-operation/migrating-from-h2.html @@ -5147,7 +5147,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5156,7 +5156,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/monitoring-metabase.html b/_site/docs/master/installation-and-operation/monitoring-metabase.html index aafc41cfc0..f270d9ad76 100644 --- a/_site/docs/master/installation-and-operation/monitoring-metabase.html +++ b/_site/docs/master/installation-and-operation/monitoring-metabase.html @@ -5028,7 +5028,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5037,7 +5037,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/observability-with-prometheus.html b/_site/docs/master/installation-and-operation/observability-with-prometheus.html index 5a42e51f10..b64ae98da7 100644 --- a/_site/docs/master/installation-and-operation/observability-with-prometheus.html +++ b/_site/docs/master/installation-and-operation/observability-with-prometheus.html @@ -5110,7 +5110,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5119,7 +5119,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/privacy.html b/_site/docs/master/installation-and-operation/privacy.html index 74c0666503..46b58fbe3e 100644 --- a/_site/docs/master/installation-and-operation/privacy.html +++ b/_site/docs/master/installation-and-operation/privacy.html @@ -4956,7 +4956,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -4965,7 +4965,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/running-metabase-on-azure.html b/_site/docs/master/installation-and-operation/running-metabase-on-azure.html index 1b42e54a2d..fefdbf15a1 100644 --- a/_site/docs/master/installation-and-operation/running-metabase-on-azure.html +++ b/_site/docs/master/installation-and-operation/running-metabase-on-azure.html @@ -4807,7 +4807,7 @@

            Step 5: Create web applic
          • Options: Single container.
          • Image source: DockerHub.
          • Access Type: Public.
          • -
          • Image and tag: metabase/metabase:latest (or choose any other docker image tag of your preference, like our Enterprise Edition). To find the latest version, check our Community Edition Dockerhub repository and also our Enterprise Edition Dockerhub Repository.
          • +
          • Image and tag: metabase/metabase:latest (or choose any other docker image tag of your preference, like our Enterprise Edition). To find the latest version, check our Community Edition Docker Hub repository and also our Enterprise Edition Docker Hub Repository.
          • Startup command: Leave this field empty.
          • @@ -5151,7 +5151,7 @@

            Resources
            Example Dashboards - + SQL Best Practices @@ -5160,7 +5160,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/running-metabase-on-debian.html b/_site/docs/master/installation-and-operation/running-metabase-on-debian.html index 756c41fe35..50dda1e791 100644 --- a/_site/docs/master/installation-and-operation/running-metabase-on-debian.html +++ b/_site/docs/master/installation-and-operation/running-metabase-on-debian.html @@ -5101,7 +5101,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5110,7 +5110,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/running-metabase-on-docker.html b/_site/docs/master/installation-and-operation/running-metabase-on-docker.html index d299aeb7bc..c313ea4c0e 100644 --- a/_site/docs/master/installation-and-operation/running-metabase-on-docker.html +++ b/_site/docs/master/installation-and-operation/running-metabase-on-docker.html @@ -49,7 +49,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -4702,7 +4702,7 @@

            Running Metabase on Docker

            To get fast, reliable, and secure deployment with none of the work or hidden costs that come with self-hosting, check out Metabase Cloud.

            -

            Metabase provides an official Docker image via Dockerhub that can be used for deployments on any system that is running Docker.

            +

            Metabase provides an official Docker image via Docker Hub that can be used for deployments on any system that is running Docker.

            If you’re trying to upgrade your Metabase version on Docker, check out these upgrading instructions.

            @@ -5286,7 +5286,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5295,7 +5295,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/running-metabase-on-elastic-beanstalk.html b/_site/docs/master/installation-and-operation/running-metabase-on-elastic-beanstalk.html index 96bdfcab63..cb18330434 100644 --- a/_site/docs/master/installation-and-operation/running-metabase-on-elastic-beanstalk.html +++ b/_site/docs/master/installation-and-operation/running-metabase-on-elastic-beanstalk.html @@ -5027,7 +5027,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5036,7 +5036,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/running-metabase-on-podman.html b/_site/docs/master/installation-and-operation/running-metabase-on-podman.html index 013a30e9ab..7946b9b846 100644 --- a/_site/docs/master/installation-and-operation/running-metabase-on-podman.html +++ b/_site/docs/master/installation-and-operation/running-metabase-on-podman.html @@ -5086,7 +5086,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5095,7 +5095,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/running-the-metabase-jar-file.html b/_site/docs/master/installation-and-operation/running-the-metabase-jar-file.html index 454f2538ae..7f48a542e0 100644 --- a/_site/docs/master/installation-and-operation/running-the-metabase-jar-file.html +++ b/_site/docs/master/installation-and-operation/running-the-metabase-jar-file.html @@ -5108,7 +5108,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5117,7 +5117,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/serialization.html b/_site/docs/master/installation-and-operation/serialization.html index 069ae594f9..c7c83adf63 100644 --- a/_site/docs/master/installation-and-operation/serialization.html +++ b/_site/docs/master/installation-and-operation/serialization.html @@ -5795,7 +5795,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5804,7 +5804,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/start.html b/_site/docs/master/installation-and-operation/start.html index 04912786e1..3189609039 100644 --- a/_site/docs/master/installation-and-operation/start.html +++ b/_site/docs/master/installation-and-operation/start.html @@ -5003,7 +5003,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5012,7 +5012,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/supported-browsers.html b/_site/docs/master/installation-and-operation/supported-browsers.html index 9578489a48..a345f40510 100644 --- a/_site/docs/master/installation-and-operation/supported-browsers.html +++ b/_site/docs/master/installation-and-operation/supported-browsers.html @@ -4958,7 +4958,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -4967,7 +4967,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/installation-and-operation/upgrading-metabase.html b/_site/docs/master/installation-and-operation/upgrading-metabase.html index 09656c5c5c..90d3f51c96 100644 --- a/_site/docs/master/installation-and-operation/upgrading-metabase.html +++ b/_site/docs/master/installation-and-operation/upgrading-metabase.html @@ -5145,7 +5145,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5154,7 +5154,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/account-settings.html b/_site/docs/master/people-and-groups/account-settings.html index 196a4addab..f9e965ef60 100644 --- a/_site/docs/master/people-and-groups/account-settings.html +++ b/_site/docs/master/people-and-groups/account-settings.html @@ -4974,7 +4974,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -4983,7 +4983,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/api-keys.html b/_site/docs/master/people-and-groups/api-keys.html index 6ca33ddfc3..87d2ca41f3 100644 --- a/_site/docs/master/people-and-groups/api-keys.html +++ b/_site/docs/master/people-and-groups/api-keys.html @@ -5066,7 +5066,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5075,7 +5075,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/authenticating-with-jwt.html b/_site/docs/master/people-and-groups/authenticating-with-jwt.html index d591373ec3..9b303eaf44 100644 --- a/_site/docs/master/people-and-groups/authenticating-with-jwt.html +++ b/_site/docs/master/people-and-groups/authenticating-with-jwt.html @@ -5064,7 +5064,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5073,7 +5073,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/authenticating-with-saml.html b/_site/docs/master/people-and-groups/authenticating-with-saml.html index 81b349f0b0..67ca5d1a33 100644 --- a/_site/docs/master/people-and-groups/authenticating-with-saml.html +++ b/_site/docs/master/people-and-groups/authenticating-with-saml.html @@ -5251,7 +5251,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5260,7 +5260,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/changing-password-complexity.html b/_site/docs/master/people-and-groups/changing-password-complexity.html index b83a561fbf..f7d7439e71 100644 --- a/_site/docs/master/people-and-groups/changing-password-complexity.html +++ b/_site/docs/master/people-and-groups/changing-password-complexity.html @@ -4988,7 +4988,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -4997,7 +4997,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/changing-session-expiration.html b/_site/docs/master/people-and-groups/changing-session-expiration.html index 50ef39d1cf..dfa6fbf4b7 100644 --- a/_site/docs/master/people-and-groups/changing-session-expiration.html +++ b/_site/docs/master/people-and-groups/changing-session-expiration.html @@ -5003,7 +5003,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5012,7 +5012,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/google-sign-in.html b/_site/docs/master/people-and-groups/google-sign-in.html index 524841b0af..b59f6e4a5b 100644 --- a/_site/docs/master/people-and-groups/google-sign-in.html +++ b/_site/docs/master/people-and-groups/google-sign-in.html @@ -5021,7 +5021,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5030,7 +5030,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/images/JWT-auth-form.png b/_site/docs/master/people-and-groups/images/JWT-auth-form.png index ce5b0e7415..ed91fea29b 100644 Binary files a/_site/docs/master/people-and-groups/images/JWT-auth-form.png and b/_site/docs/master/people-and-groups/images/JWT-auth-form.png differ diff --git a/_site/docs/master/people-and-groups/images/auth0callbackurl.png b/_site/docs/master/people-and-groups/images/auth0callbackurl.png index dda21e391d..8371279d7d 100644 Binary files a/_site/docs/master/people-and-groups/images/auth0callbackurl.png and b/_site/docs/master/people-and-groups/images/auth0callbackurl.png differ diff --git a/_site/docs/master/people-and-groups/images/auth0createapp.png b/_site/docs/master/people-and-groups/images/auth0createapp.png index 6fbdab7fcf..2fb7bd3907 100644 Binary files a/_site/docs/master/people-and-groups/images/auth0createapp.png and b/_site/docs/master/people-and-groups/images/auth0createapp.png differ diff --git a/_site/docs/master/people-and-groups/images/auth0regularapp.png b/_site/docs/master/people-and-groups/images/auth0regularapp.png index 6fbdab7fcf..7d23c598f1 100644 Binary files a/_site/docs/master/people-and-groups/images/auth0regularapp.png and b/_site/docs/master/people-and-groups/images/auth0regularapp.png differ diff --git a/_site/docs/master/people-and-groups/images/auth0saml2addon.png b/_site/docs/master/people-and-groups/images/auth0saml2addon.png index 8926f599ba..6fbdab7fcf 100644 Binary files a/_site/docs/master/people-and-groups/images/auth0saml2addon.png and b/_site/docs/master/people-and-groups/images/auth0saml2addon.png differ diff --git a/_site/docs/master/people-and-groups/images/auth0samlmappings.png b/_site/docs/master/people-and-groups/images/auth0samlmappings.png index 6fbdab7fcf..a673bc98ba 100644 Binary files a/_site/docs/master/people-and-groups/images/auth0samlmappings.png and b/_site/docs/master/people-and-groups/images/auth0samlmappings.png differ diff --git a/_site/docs/master/people-and-groups/images/auth0samlusage.png b/_site/docs/master/people-and-groups/images/auth0samlusage.png index 6fbdab7fcf..7dbf8c7523 100644 Binary files a/_site/docs/master/people-and-groups/images/auth0samlusage.png and b/_site/docs/master/people-and-groups/images/auth0samlusage.png differ diff --git a/_site/docs/master/people-and-groups/images/groups.png b/_site/docs/master/people-and-groups/images/groups.png index 8926f599ba..759a222b61 100644 Binary files a/_site/docs/master/people-and-groups/images/groups.png and b/_site/docs/master/people-and-groups/images/groups.png differ diff --git a/_site/docs/master/people-and-groups/images/okta-group-attribute.png b/_site/docs/master/people-and-groups/images/okta-group-attribute.png index a48ae1a137..baf8cdc518 100644 Binary files a/_site/docs/master/people-and-groups/images/okta-group-attribute.png and b/_site/docs/master/people-and-groups/images/okta-group-attribute.png differ diff --git a/_site/docs/master/people-and-groups/images/saml-azure-step-1.png b/_site/docs/master/people-and-groups/images/saml-azure-step-1.png index e8ae330628..4becab567e 100644 Binary files a/_site/docs/master/people-and-groups/images/saml-azure-step-1.png and b/_site/docs/master/people-and-groups/images/saml-azure-step-1.png differ diff --git a/_site/docs/master/people-and-groups/images/saml-okta-groups.png b/_site/docs/master/people-and-groups/images/saml-okta-groups.png index 98a4a6fc63..9df2d9fb1d 100644 Binary files a/_site/docs/master/people-and-groups/images/saml-okta-groups.png and b/_site/docs/master/people-and-groups/images/saml-okta-groups.png differ diff --git a/_site/docs/master/people-and-groups/ldap.html b/_site/docs/master/people-and-groups/ldap.html index 003fd23da9..8340148f2b 100644 --- a/_site/docs/master/people-and-groups/ldap.html +++ b/_site/docs/master/people-and-groups/ldap.html @@ -5083,7 +5083,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5092,7 +5092,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/managing.html b/_site/docs/master/people-and-groups/managing.html index f1a715bda6..d1a10548b3 100644 --- a/_site/docs/master/people-and-groups/managing.html +++ b/_site/docs/master/people-and-groups/managing.html @@ -5222,7 +5222,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5231,7 +5231,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/saml-auth0.html b/_site/docs/master/people-and-groups/saml-auth0.html index 98961f38c0..f6d43d9b21 100644 --- a/_site/docs/master/people-and-groups/saml-auth0.html +++ b/_site/docs/master/people-and-groups/saml-auth0.html @@ -5058,7 +5058,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5067,7 +5067,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/saml-azure.html b/_site/docs/master/people-and-groups/saml-azure.html index 078bbd44c7..9c8a9b17ac 100644 --- a/_site/docs/master/people-and-groups/saml-azure.html +++ b/_site/docs/master/people-and-groups/saml-azure.html @@ -5036,7 +5036,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5045,7 +5045,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/saml-google.html b/_site/docs/master/people-and-groups/saml-google.html index 98d2504f4a..6e2d89227c 100644 --- a/_site/docs/master/people-and-groups/saml-google.html +++ b/_site/docs/master/people-and-groups/saml-google.html @@ -4793,7 +4793,12 @@

            Setting up attribute mappings

            Setting up synchronize group membership

              -
            1. In Google Admin, setup a multi-value custom user attribute for your users (recommended if you manage multiple SAML app permissions in Google or do not have existing Google Groups that align with your desired Metabase groups) OR map to existing Google Groups.
            2. +
            3. In Google Admin, you can EITHER: + +
            4. Follow the instructions for Configuring the group schema using the App attribute that you used in Google as the Group attribute name in Metabase.
            @@ -5050,7 +5055,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5059,7 +5064,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/saml-keycloak.html b/_site/docs/master/people-and-groups/saml-keycloak.html index b144368125..4a1982dfac 100644 --- a/_site/docs/master/people-and-groups/saml-keycloak.html +++ b/_site/docs/master/people-and-groups/saml-keycloak.html @@ -5072,7 +5072,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5081,7 +5081,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/saml-okta.html b/_site/docs/master/people-and-groups/saml-okta.html index 72a111a535..69bdfbae8a 100644 --- a/_site/docs/master/people-and-groups/saml-okta.html +++ b/_site/docs/master/people-and-groups/saml-okta.html @@ -5231,7 +5231,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5240,7 +5240,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/start.html b/_site/docs/master/people-and-groups/start.html index 4470f3ec93..08f7efbcc5 100644 --- a/_site/docs/master/people-and-groups/start.html +++ b/_site/docs/master/people-and-groups/start.html @@ -5010,7 +5010,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5019,7 +5019,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/people-and-groups/user-provisioning.html b/_site/docs/master/people-and-groups/user-provisioning.html index 376ac450d7..abd2b56825 100644 --- a/_site/docs/master/people-and-groups/user-provisioning.html +++ b/_site/docs/master/people-and-groups/user-provisioning.html @@ -5027,7 +5027,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5036,7 +5036,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/permissions/application.html b/_site/docs/master/permissions/application.html index 817c496423..612986d516 100644 --- a/_site/docs/master/permissions/application.html +++ b/_site/docs/master/permissions/application.html @@ -5004,7 +5004,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5013,7 +5013,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/permissions/collections.html b/_site/docs/master/permissions/collections.html index cfc6015e5c..e4e6e3fa0e 100644 --- a/_site/docs/master/permissions/collections.html +++ b/_site/docs/master/permissions/collections.html @@ -5097,7 +5097,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5106,7 +5106,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/permissions/data-sandbox-examples.html b/_site/docs/master/permissions/data-sandbox-examples.html index a5a67f8da8..3634df4068 100644 --- a/_site/docs/master/permissions/data-sandbox-examples.html +++ b/_site/docs/master/permissions/data-sandbox-examples.html @@ -5149,7 +5149,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5158,7 +5158,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/permissions/data-sandboxes.html b/_site/docs/master/permissions/data-sandboxes.html index ca4870b756..ceeb7ed870 100644 --- a/_site/docs/master/permissions/data-sandboxes.html +++ b/_site/docs/master/permissions/data-sandboxes.html @@ -5292,7 +5292,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5301,7 +5301,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/permissions/data.html b/_site/docs/master/permissions/data.html index 8a1ea7e705..4f24028b89 100644 --- a/_site/docs/master/permissions/data.html +++ b/_site/docs/master/permissions/data.html @@ -5330,7 +5330,7 @@
            Resources
            Example Dashboards - + SQL Best Practices @@ -5339,7 +5339,7 @@
            Resources
            How to Create Pivot Tables - + Types of SQL Joins diff --git a/_site/docs/master/permissions/database-routing.html b/_site/docs/master/permissions/database-routing.html index 4efb966df4..1c93fb2ba8 100644 --- a/_site/docs/master/permissions/database-routing.html +++ b/_site/docs/master/permissions/database-routing.html @@ -4730,6 +4730,7 @@

            Database routing

            Databases that support database routing