This project is mirrored from https://github.com/metabase/metabase.
Pull mirroring updated .
- Jun 11, 2024
-
-
bryan authored
* adds the endpoint and a test * add recents endpoint, todo: tests * add post recents endpoint * return recent views for both lists, but make the endpoint work * Make recent-views context aware - pruning is context aware, only checks for the recently-inserted context - Adds endpoints: - POST to create selection recents, - GET activity/recents - requres context query param to be one of: - all, views, selections - Adds context arg to update-users-recent-views! - Cleans up arg schema for update-users-recent-views * impl GET api/activity/recents - return recent-selections and recent-views from - send context == collection from pinned card reads * update callsites of recent-views/update-users-recent-views! - to use :view param where necessary * fixes models/recent-view tests * adds more activity/recent-view tests * wip - fix whitespace linter * Fix command palette e2e test - reuse util snake-k...
-
John Swanson authored
* Improve the Trash Ok, so I had a realization at the PERFECT time, immediately after the RC cutoff. Great job, brain! Here's the realization. For the Trash, we need to keep track of two things: - where the item actually is located in the hierarchy, and - what collection we should look at to see what permissions apply to the item. For example, a Card might be in the Trash, but we need to look at Collection 1234 to see that a user has permission to Write that card. My implementation of this was to add a column, `trashed_from_collection_id`, so that we could move a Card or a Dashboard to a new `collection_id`, but keep track of the permissions we actually needed to check. So: - `collection_id` was where the item was located in the collection hierarchy, and - `trashed_from_collection_id` was where we needed to look to check permissions. Today I had the realization that it's much, much more important to get PERMISSIONS right than to get collection hierarchy right. Like if we mess up and show something as in the Trash when it's not in the Trash, or show something in the wrong Collection - that's not great, sure. But if we mess up and show a Card when we shouldn't, or show a Dashboard when we shouldn't, that's Super Duper Bad. So the problem with my initial implementation was that we needed to change everywhere that checked permissions, to make sure they checked BOTH `trashed_from_collection_id` and `collection_id` as appropriate. So... there's a much better solution. Instead of adding a column to represent the *permissions* that we should apply to the dashboard or card, add a column to represent the *location in the hierarchy* that should apply to the dashboard or the card. We can simplify further: the *only time* we want to display something in a different place in the hierarchy than usual is when it was put directly into the trash. If you trash a dashboard as a part of a collection, then we should display it in that collection just like normal. So, we can do the following: - add a `trashed_directly` column to Cards and Dashboards, representing whether they should be displayed in the Trash instead of their actual parent collection - use the `collection_id` column of Cards and Dashboards without modification to represent permissions. There's one main downside of this approach. If you trash a dashboard, and then delete the collection that the dashboard was originally in, what do we do with `dashboard.collection_id`? - we have to change it, because it's a foreign key - we can't set it to null, because that represents the root collection In this initial implementation, I've just cascaded the delete: if you delete a dashboard and then delete a collection, the dashboard will be deleted. This is not ideal. I'm not totally sure what we should do in this situation. * Rip out all the `trashed_from_collection_id` * Migration to delete trashed_from_collection_id * fixes * don't move collections And don't allow deleting collections * only show cards/dashboards with write perms * Show the correct archived/unarchived branch * some cleanup * add a todo for tomorrow * Fix for yesterday's TODO * more wip * refactor * memoize collection info * move around memoization a bit * fix schema migration test * oops, delete server.middleware.memo * Use a migration script (postgres only for now) * Fix some tests * remove n+1 queries in `collection-can-restore` * fix test * fix more tests, and x-db migration script * fix h2 rollback * fix mysql/mariadb migration * lint * fix some mariadb/mysql tests * fix h2 rollback * Fix mysql rollback * Fix Postgres migration * "Real" `trash_operation_id` UUIDs from migration * fix mariadb migration * Separate MySQL/MariaDB migrations * trashed directly bit->boolean * Remove `trashed_from_*` from migrations * Rename `api/updates-with-trashed-directly` Previously named `move-on-archive-or-unarchive`, which was no longer accurate since we're not moving anything! * Add `can_delete` * Delete test of deleted code * Can't move anything to the Trash The Trash exists as a real collection so that we can list items in and such without needing special cases. But we don't want anything to _actually_ get moved to it. * integrates can_delete flag on FE * Update src/metabase/models/collection.clj Co-authored-by:
Noah Moss <32746338+noahmoss@users.noreply.github.com> * Update src/metabase/search/impl.clj Co-authored-by:
Noah Moss <32746338+noahmoss@users.noreply.github.com> * Better name for `fix-collection-id` Also consolidated it into a single function. It takes the trash-collection-id as an argument to prevent a circular dependency. * s/trashed/archived/ on the backend In the product, we want to move to "trashed" as the descriptor for things that are currently-known-as-archived. It'd be nice to switch to that on the backend as well, but that'll require quite a lot of churn on the frontend as we'd need to change the API (or have an awkward translation layer, where we call it `trashed` on the backend, turn it into `archived` when sending data out via the API, and then the FE turns around and called it "trashed" again). For now, let's just be consistent on the backend and call it `archived` everywhere. So: - `archived_directly` instead of `trashed_directly`, and - `archive_operation_id` instead of `trash_operation_id` * Fix up a couple docstrings * Rename `visible-collection-ids` args for `collection/permissions-set->visible-collection-ids`: - `:include-archived` => `:include-archived-items` - `:include-trash?` => `:include-trash-collection` * select affected-collection-ids in the tx * Stop dealing with `:all` visible collection ids This used to be a possible return value for `permissions-set->visible-collection-ids` indicating that the user could view all collections. Now that function always returns a set of collection IDs (possibly including "root" for the root collection) so we don't need to deal with that anymore. * Don't use separate hydration keys for collections Dispatch on the model of each item (but still keep them in batches for efficiency.) * vars for collectable/archived-directly models * Round up loose `trashed_directly`s * Fix a test * Use `clojure.core.memoize` instead of handrolled It's slightly different (TTL instead of exactly per-request) but that should be fine. * FE lint fixes *
e2e test fix --------- Co-authored-by:Sloan Sparger <sloansparger@gmail.com> Co-authored-by:
Noah Moss <32746338+noahmoss@users.noreply.github.com>
-
Phoomparin Mano authored
* add option to customize dashcard border * use the shadow CSS variable Co-authored-by:
Denis Berezin <denis.berezin@metabase.com> * make the shadow and border decoration call more explicit Co-authored-by:
Denis Berezin <denis.berezin@metabase.com> * pass in theme as argument --------- Co-authored-by:
Denis Berezin <denis.berezin@metabase.com>
-
Romeo Van Snick authored
* Allow picking arity of number parameters * Limit to input to have arity 1 when multi is false * Use MultiAutocomplete in NumberInputWidget when arity is 1 * Add test cases for single value numbers * Only change arity when it is n * Fix unit tests for NumberInputWidget * Move arity check for numbers to getNumberParameterArity
-
Jeff Bruemmer authored
-
Nemanja Glumac authored
* Fix the typo * Replace `realHover` with the `mouseMove` trigger * Be explicit when targetting elements by their index * fix combo chart tooltip e2e specs * cy.wait as a last resort --------- Co-authored-by:
Aleksandr Lesnenko <alxnddr@gmail.com>
-
Aleksandr Lesnenko authored
-
Nemanja Glumac authored
* Re-work `startNewNativeQuestion` helper * Fix native_subquery flakes * Simplify the helper * Remove the `flaky` tags
-
Kamil Mielnik authored
* Improve typing in Question * Remove dead CSS * Improve typing in getUrlWithParameters * Add LegendLabel * Drop navigateToNewCardFromDashboard in PublicOrEmbeddedDashboard * Extract getNewCardUrl and move getParametersMappedToDashcard closer to it * Add link to dashboard chart title * Update title-drill tests * Format code * Update test * Add HrefMemo * Use state to memoize href * Recompute state on getHref prop change * Format code * Refactor href computation * Update test * Use selector instead of useMemo * Fix unit tests * Ensure type safety * Revert getDashCardById type change to not make this PR too large * Use complete dashboard * Add a workaround for metabase#43990
-
Kamil Mielnik authored
This reverts commit a297e9a6.
-
Phoomparin Mano authored
-
Mahatthana (Kelvin) Nomsawadi authored
-
Mahatthana (Kelvin) Nomsawadi authored
* Remind embedding SDK PR author to use conventional commits * Only remind PR author when PR title isn't conventional commits * Add branch for testing * Fix gh cli command * Fix getting wrong user login * Ensure we don't create more than 1 comment * Improve comment format * Add more info for non-changelog related type * Check non-changelog related types * Update the comment for consistency * Revert "Add branch for testing" This reverts commit 4a1be68828ca2b81d5548e24a7be491f9c0348c0.
-
Chris Truter authored
-
- Jun 10, 2024
-
-
Denis Berezin authored
feat(sdk): SDK theming part 6 - text-brand, text-dark, text-light, text-medium, admin-navbar, `accentX` (#43687) * Migrate text-brand * Migrate text-dark * Migrate text-light * Migrate text-medium * Migrate admin-navbar * make compact formatting consistent across all series (#43472) * make compact formatting consistent across all series * fix rebase * [Browse] Show Browse models link in nav only when there are models (#43286) * Upgrade to TypeScript v5.4 (#43736) * use correct github api for CI (#43750) * update list of releases (#43754) * Multi Series Dashcards Render with Filters Applied To All Series (#43428) * Multi Series Dashcards Render with Filters Applied To All Series Fixes: #39083 Multi-series dashcards now properly render when a subscription is set up with filters that impact the values of each card in the multi-series card. * Small refactor for executing dashcards in a pulse context. - move execute-dashboard-subscription to pulse.util - this fn now will also execute all card series cards and put those results into a list on the key :series-results in the dashcard which is then used in the render multimethod to send the correct data to the javascript context A small todo was taken care of as well, we can now use :dashboard-subscription in the :context key * Fix up render fn The shape of hte data going into the javascript was a bit unclear before. This keeps things a little more understandable. Next step is probably to create some Malli schemas inside the js_svg namespace to document and enforce the needed data shapes * pull :data up a level from :result in the series cards * Update src/metabase/pulse/render/body.clj Co-authored-by:
Ngoc Khuat <qn.khuat@gmail.com> * Remove unneeded let * set/rename-keys won't work here because we raise the :data key I've realised a suggested change to just use set/rename-keys won't do what we need. We need instead to raise :data from within the result key up to the same level (and dissoc result). I've renamed the helper function to make its purpose a bit clearer --------- Co-authored-by:
Ngoc Khuat <qn.khuat@gmail.com> * Hydrate can_run_adhoc_query and address review comments (#43747) This is a followup on #43625. * Consolidate dashboard-card specs (#43716) * Consolidate joins specs (#43717) * Update translations for v50 and add Danish Language Support (#43314) * update translations for v50 * add Danish * update translations for v50 release * alphabetical order is nice * Move database role to url parameters from connection properties on Snowflake (#43602) * Move role to url parameters from connection properties * Fix test * Fix width of save button in cache sidebar (#43755) * Remove dead code (#43603) * Combine search e2e specs (#43718) * Highlight the table cell data in dashboards when the cell is an ID column (#43728) * highlight id cell column * add simpletable stories * add simple table test data * add loki reference image * Update frontend/src/metabase/visualizations/components/TableSimple/TableCell.styled.tsx Co-authored-by:
Denis Berezin <denis.berezin@metabase.com> --------- Co-authored-by:
Denis Berezin <denis.berezin@metabase.com> * Remove old repro for 39150 (#43749) * Fix remaining `tinyint` booleans in MySQL (#43296) * Correct type for `report_card.dataset` This was missed in the original migration of boolean types to ${boolean.type} in MySQL/MariaDB, and then missed again by me when I migrated `collection_preview` over a week ago. * Change all boolean types to `bit(1)` in MySQL Liquibase changed their boolean type in MySQL from `bit(1)` to `tinyint(4)` in version 4.25.1. Our JDBC driver does not recognize these as booleans, so we needed to migrate them to `bit(1)`s. As discussed [here](#36964), we changed all existing `boolean` types that were in the `001_update_migrations.yml` but not the SQL initialization file. For new installations, this works: things in the SQL initialization file get created with the `bit(1)` type. However, for existing installations, there's a potential issue. Say I'm on v42 and am upgrading to v49. In v43, a new `boolean` was added. In this case, I'll get the `boolean` from the liquibase migration rather than from the SQL initialization file, and it need to be changed to a `bit(1)`. I installed Metabase v41 with MySQL, migrated the database, and then installed Metabase v49 and migrated again. I made a list of all the columns that had the type `tinyint`: ``` mysql> SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_TYPE = 'tinyint' AND TABLE_SCHEMA='metabase_test'; +---------------+------------------------------+-------------------+-------------+----------------+-------------+ | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | COLUMN_TYPE | COLUMN_DEFAULT | IS_NULLABLE | +---------------+------------------------------+-------------------+-------------+----------------+-------------+ | metabase_test | core_user | is_datasetnewb | tinyint | 1 | NO | | metabase_test | metabase_field | database_required | tinyint | 0 | NO | | metabase_test | metabase_fieldvalues | has_more_values | tinyint | 0 | YES | | metabase_test | permissions_group_membership | is_group_manager | tinyint | 0 | NO | | metabase_test | persisted_info | active | tinyint | 0 | NO | | metabase_test | report_card | dataset | tinyint | 0 | NO | | metabase_test | timeline | archived | tinyint | 0 | NO | | metabase_test | timeline | default | tinyint | 0 | NO | | metabase_test | timeline_event | archived | tinyint | 0 | NO | | metabase_test | timeline_event | time_matters | tinyint | NULL | NO | +---------------+------------------------------+-------------------+-------------+----------------+-------------+ 10 rows in set (0.01 sec) ``` Then wrote migrations. For each column, we: - turn it into a `bit(1)`, - re-set the previously existing default value, and - re-add the NOT NULL constraint, if applicable. * Change author and add missing `dbms` --------- Co-authored-by:
John Swanson <john.swanson@metabase.com> * Add ts-pattern library (#43752) * Add events to measure search performance (#43135) * new_search_query event * Filters in object, search click event * updating event schema * type and event schema adjustments * delete comments BE code * adjusting tests * PR feedback * typos and spacing * Fixup missing colors --------- Co-authored-by:
Aleksandr Lesnenko <alxnddr@users.noreply.github.com> Co-authored-by:
Raphael Krut-Landau <raphael.kl@gmail.com> Co-authored-by:
Sloan Sparger <sloansparger@users.noreply.github.com> Co-authored-by:
Ryan Laurie <30528226+iethree@users.noreply.github.com> Co-authored-by:
Alex Yarosh <alexandra@metabase.com> Co-authored-by:
adam-james <21064735+adam-james-v@users.noreply.github.com> Co-authored-by:
Ngoc Khuat <qn.khuat@gmail.com> Co-authored-by:
metamben <103100869+metamben@users.noreply.github.com> Co-authored-by:
lbrdnk <lbrdnk@users.noreply.github.com> Co-authored-by:
Phoomparin Mano <poom@metabase.com> Co-authored-by:
Nemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com> Co-authored-by:
SakuragiYoshimasa <ysrhsp@outlook.com> Co-authored-by:
John Swanson <john.swanson@metabase.com> Co-authored-by:
Nick Fitzpatrick <nick@metabase.com>
-
Aleksandr Lesnenko authored
* fix bar normalized stacking breaks line charts * spec
-
Emmad Usmani authored
* remove two year timeseries interval * use two year instead of five year interval * update binning e2e spec
-
Nemanja Glumac authored
* Fix the flaky "bookmark" E2E test Resolves #43871 * Remove the `flaky` tag
-
Alexander Polyankin authored
-
lbrdnk authored
* Add connection string parsing * Add test case with role suffixed key
-
metamben authored
Messages at INFO level and higher will appear in the browser console.
-
Uladzimir Havenchyk authored
-
Nemanja Glumac authored
* Fix E2E flake "cc-typing-suggestion" Resolves #43872 * Remove `@flaky` tag * Improve the assertion
-
Cal Herries authored
-
Nemanja Glumac authored
* Fix flaky E2E test "sidebar should be resizable" * Remove the `flaky` tag * Remove unused intercept
-
Ivan Križnar authored
* Expose `ExpressionEditorSuggestions` ref * Add popup ref * Prevent popup being dismissed when active * Update displayName
-
metamben authored
-
Raphael Krut-Landau authored
-
Raphael Krut-Landau authored
-
Chris Truter authored
-
Raphael Krut-Landau authored
Closes #43894
-
Anton Kulyk authored
* Add repro test * Move home selectors to `metabase/selectors/app` * Prevent unnecessary redirects to home dashboard * Rename * Handle navbar home link * Fix unit tests * Fix navigating away from an archived dashboard * Handle sub-root Metabase URLs
-
Chris Truter authored
-
Cal Herries authored
-
Denis Berezin authored
* Migrate success * Migrate summarize * Migrate warning * Migrate white * Add colors to storybook * Fix CI * Fix CI * Codereview fixes * Convert warning color
-
Jeff Bruemmer authored
-
Kamil Mielnik authored
* Sort functions * Add boilerplate for aggregateOffset and tests * Simplify assertion * Make basic case work * Handle name generation * Do not require "lib/uuid" attribute to be present since MLv2 will normalize it under the hood anyway * Fix typing * Group tests * Refactor offsetClause to return a new clause instead of a new query - Move offsetClause to expressions.ts - Add assertion * Revert "Sort functions" This reverts commit ab9ce2b24ea6bdad5ff7e9bed8ef38d4b5923f00. * Move tests * Handle names dynamically * Shorten a test * Update comment * Add TODO * Update expression types * Add diffOffsetClause & percentDiffOffsetClause * Add a test for diffOffsetClause * Add TODOs * Add tests for diffOffsetClause and percentDiffOffsetClause * Unwrap tests * Add skeleton for new tests * Refactor first offsetClause tests * Add tests for names * Fix case of non-datetime columns * Handle a case with offset < 1 and no breakouts * Handle a case with offset < 1 and breakouts on non-datetime column * Handle a case with offset < 1 and breakouts binned datetime column * Handle a case with offset < 1 and breakout on non-binned datetime column * Refactor * Refactor * Remove TODO * Add tests for diffOffsetClause * Add tests for percentDiffOffsetClause * Move offset stuff to offset.ts and offset.unit.spec.ts * Use template string for prefixes * Use breakoutColumn + isDate to check column type * Refactor * Fix error message * Add boilerplate for CompareAggregations * Fix title * Render aggregations list * Style AccordionList * Sort props * Fix bucket name * Use displayName instead shortName * Support parseValue prop in NumberInput * Add period input accepting integers only * Accept non-negative values only * Do not accept zeros * Add state * Add submit button * Export offset functions via Lib * Make it possible to skip rightSection * Add column picker * Map offset user input to api input (negative value) * Add label * Fix crash * Extract shouldCreate * Make onSelect in AggregationPicker support multiple values * Extract ReferenceAggregationPicker * Extract ColumnPicker * Extract getAggregations * Rename * Add custom items * Refactor item component * Extract OffsetInput * Remove unused data-testid * Style OffsetInput * Generate titles according to specs * Generate label * Generate help * Extract utils * Use different width for the 1st step * Format code * Use MultiSelect directly * Avoid custom parseValue * Revert MultiaAutocomplete changes * Improve typing in describeTemporalInterval and describeRelativeDatetime * Use describeTemporalUnit to pluralize * Use interface * Avoid setting value as DOM attribute * Fix test * Add onAdd prop to AggregationPicker and revert the change to have onSelect pass multiple aggregations * Reduce number of props * Render checkboxes in custom items * Introduce and use --mb-color-brand-lighter * Avoid !important * Remove redundant prop * Rename ExtractColumn to ExtractColumnAction * Add lines.svg * Fix positioning in case dir attribute is not present in any parent component * Add CompareAggregationsAction * Fix warning about isSelected being used as DOM attribute * Fix positioning in case dir attribute is not present in any parent component * Remove redundant Box * Compute the title * Add compareAggregationsDrill boilerplate * Add compare-aggregations drill stub * Update comment * Compute title and aggregation * Add TODO * Use proper title when there's only 1 aggregation * Show visualization on submit * Limit aggregation choice to 1 in compare aggregations drill * Redirect to chart upon submission * Do not navigate to chart view * Do not navigate to chart view * Make drill-thru tests expect the new compare-aggregations drill * Add type attribute to all ListItems * Add aggregationIndex to drillInfo * Add aggregationDrillDetails and wire it up * Add tracking helpers * Add new schema * Add tracking in column header * Add tracking in plus modal * Add tracking in aggregation picker * Fix destructuring * Add functionsUsedByExpression * Fix schema number * Add tests boilerplate * Implement test for notebook editor * Add test for column header * Add a test for summarize sidebar * Add a test for the plus button * Add expectNoBadSnowplowEvents call in afterEach * Format code * Add missing redux store state in tests * Add data for tests * Move createQuestion call out of beforeEach * Add tests for labels when there are no aggregations * Add describe * Add group helper * Revert "Add group helper" This reverts commit e047a223e954804c63cf0c519389aee6b99240b7. * Optimize: use cy.log() instead of it() * Format code * Add tests for 1 breakout, add helpers * Add test for non-binned datetime column text * Add test for non-datetime column text * Nest tests * Add test for multiple aggregations and no breakout, fix getTitle in this case * Add all text tests * Reduce nesting * Enable test * Format code * Add tests * Rename function * Format code * Simplify code * Add assertions * Format code * Add column assertions * Run tests with all 3 aggregations * Remove logs * Introduce CUSTOM_EXPRESSIONS_USED * Avoid force click * Remove explicit assertion * Use be.visible instead of exist --------- Co-authored-by:
Braden Shepherdson <braden@metabase.com>
-
Ngoc Khuat authored
-
Uladzimir Havenchyk authored
-
Ngoc Khuat authored
-