Skip to content
Snippets Groups Projects
This project is mirrored from https://github.com/metabase/metabase. Pull mirroring updated .
  1. Jun 11, 2024
    • bryan's avatar
      Make recents understand context (#43478) · 7b849da3
      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...
      Unverified
      7b849da3
    • John Swanson's avatar
      Improve the Trash data model (#42845) · 7374e61e
      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: default avatarNoah Moss <32746338+noahmoss@users.noreply.github.com>
      
      * Update src/metabase/search/impl.clj
      
      Co-authored-by: default avatarNoah 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
      
      * :sob:
      
       e2e test fix
      
      ---------
      
      Co-authored-by: default avatarSloan Sparger <sloansparger@gmail.com>
      Co-authored-by: default avatarNoah Moss <32746338+noahmoss@users.noreply.github.com>
      Unverified
      7374e61e
    • Phoomparin Mano's avatar
      feat(sdk): theme option to customize the dashboard card border (#43963) · a742b340
      Phoomparin Mano authored
      
      * add option to customize dashcard border
      
      * use the shadow CSS variable
      
      Co-authored-by: default avatarDenis Berezin <denis.berezin@metabase.com>
      
      * make the shadow and border decoration call more explicit
      
      Co-authored-by: default avatarDenis Berezin <denis.berezin@metabase.com>
      
      * pass in theme as argument
      
      ---------
      
      Co-authored-by: default avatarDenis Berezin <denis.berezin@metabase.com>
      Unverified
      a742b340
    • Romeo Van Snick's avatar
      Unary number parameter (#43921) · d876627b
      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
      Unverified
      d876627b
    • Jeff Bruemmer's avatar
      docs - updates for 50 (#44002) · 64f82436
      Jeff Bruemmer authored
      Unverified
      64f82436
    • Nemanja Glumac's avatar
      Fix "line/bar chart" tooltip flake (#43975) · 28fc3320
      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: default avatarAleksandr Lesnenko <alxnddr@gmail.com>
      Unverified
      28fc3320
    • Aleksandr Lesnenko's avatar
      move stackable settings (#43978) · 6ec9de85
      Aleksandr Lesnenko authored
      Unverified
      6ec9de85
    • Nemanja Glumac's avatar
      Fix E2E flake in the `native_subquery` spec (#43991) · eebf4b52
      Nemanja Glumac authored
      * Re-work `startNewNativeQuestion` helper
      
      * Fix native_subquery flakes
      
      * Simplify the helper
      
      * Remove the `flaky` tags
      Unverified
      eebf4b52
    • Kamil Mielnik's avatar
      Copy question link from dashboard (#43816) · c0a804bf
      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
      Unverified
      c0a804bf
    • Kamil Mielnik's avatar
    • Phoomparin Mano's avatar
    • Mahatthana (Kelvin) Nomsawadi's avatar
    • Mahatthana (Kelvin) Nomsawadi's avatar
      ci(sdk): Remind SDK PR author to use conventional commits PR title (#43932) · 45942998
      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.
      Unverified
      45942998
    • Chris Truter's avatar
      More precise migration range logs (#43962) · a46b9d7f
      Chris Truter authored
      Unverified
      a46b9d7f
  2. Jun 10, 2024
    • Denis Berezin's avatar
      feat(sdk): SDK theming part 6 - text-brand, text-dark, text-light,... · e8fedf01
      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: default avatarNgoc 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: default avatarNgoc 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: default avatarDenis Berezin <denis.berezin@metabase.com>
      
      ---------
      
      Co-authored-by: default avatarDenis 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: default avatarJohn 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: default avatarAleksandr Lesnenko <alxnddr@users.noreply.github.com>
      Co-authored-by: default avatarRaphael Krut-Landau <raphael.kl@gmail.com>
      Co-authored-by: default avatarSloan Sparger <sloansparger@users.noreply.github.com>
      Co-authored-by: default avatarRyan Laurie <30528226+iethree@users.noreply.github.com>
      Co-authored-by: default avatarAlex Yarosh <alexandra@metabase.com>
      Co-authored-by: default avataradam-james <21064735+adam-james-v@users.noreply.github.com>
      Co-authored-by: default avatarNgoc Khuat <qn.khuat@gmail.com>
      Co-authored-by: default avatarmetamben <103100869+metamben@users.noreply.github.com>
      Co-authored-by: default avatarlbrdnk <lbrdnk@users.noreply.github.com>
      Co-authored-by: default avatarPhoomparin Mano <poom@metabase.com>
      Co-authored-by: default avatarNemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com>
      Co-authored-by: default avatarSakuragiYoshimasa <ysrhsp@outlook.com>
      Co-authored-by: default avatarJohn Swanson <john.swanson@metabase.com>
      Co-authored-by: default avatarNick Fitzpatrick <nick@metabase.com>
      Unverified
      e8fedf01
    • Aleksandr Lesnenko's avatar
      fix bar normalized stacking breaks line charts (#43957) · 8936df34
      Aleksandr Lesnenko authored
      * fix bar normalized stacking breaks line charts
      
      * spec
      Unverified
      8936df34
    • Emmad Usmani's avatar
      remove unused timeseries interval (#43421) · 80d33f68
      Emmad Usmani authored
      * remove two year timeseries interval
      
      * use two year instead of five year interval
      
      * update binning e2e spec
      Unverified
      80d33f68
    • Nemanja Glumac's avatar
      Fix the flaky "bookmark" E2E test (#43965) · c62003ff
      Nemanja Glumac authored
      * Fix the flaky "bookmark" E2E test
      
      Resolves #43871
      
      * Remove the `flaky` tag
      Unverified
      c62003ff
    • Alexander Polyankin's avatar
    • lbrdnk's avatar
      Add connection string parsing to Snowflake (#43923) · f971c42a
      lbrdnk authored
      * Add connection string parsing
      
      * Add test case with role suffixed key
      Unverified
      f971c42a
    • metamben's avatar
      Enable Clojure logging in the browser (#43959) · be9740ca
      metamben authored
      Messages at INFO level and higher will appear in the browser console.
      Unverified
      be9740ca
    • Uladzimir Havenchyk's avatar
    • Nemanja Glumac's avatar
      Fix "CC typing suggestion" E2E flake (#43956) · 84fd549f
      Nemanja Glumac authored
      * Fix E2E flake "cc-typing-suggestion"
      
      Resolves #43872
      
      * Remove `@flaky` tag
      
      * Improve the assertion
      Unverified
      84fd549f
    • Cal Herries's avatar
    • Nemanja Glumac's avatar
      Fix flaky E2E test "sidebar should be resizable" (#43947) · 121fe66f
      Nemanja Glumac authored
      * Fix flaky E2E test "sidebar should be resizable"
      
      * Remove the `flaky` tag
      
      * Remove unused intercept
      Unverified
      121fe66f
    • Ivan Križnar's avatar
      Fix scrollbar interaction in the custom expression suggestion list (#43837) · a297e9a6
      Ivan Križnar authored
      * Expose `ExpressionEditorSuggestions` ref
      
      * Add popup ref
      
      * Prevent popup being dismissed when active
      
      * Update displayName
      Unverified
      a297e9a6
    • metamben's avatar
    • Raphael Krut-Landau's avatar
      Remove classnames (#43869) · 46215d51
      Raphael Krut-Landau authored
      Unverified
      46215d51
    • Raphael Krut-Landau's avatar
    • Chris Truter's avatar
      Unverified
      5fc87983
    • Raphael Krut-Landau's avatar
      Use the metric icon for metrics (#43893) · b6dea77a
      Raphael Krut-Landau authored
      Closes #43894
      Unverified
      b6dea77a
    • Anton Kulyk's avatar
      Fix stacked redirects to homepage dashboard crashing the app (#43836) · f106ffa7
      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
      Unverified
      f106ffa7
    • Chris Truter's avatar
    • Cal Herries's avatar
    • Denis Berezin's avatar
      feat(sdk): SDK theming part 5 - success, summarize, warning, white, text-white, bg-white (#43676) · 7046fef3
      Denis Berezin authored
      * Migrate success
      
      * Migrate summarize
      
      * Migrate warning
      
      * Migrate white
      
      * Add colors to storybook
      
      * Fix CI
      
      * Fix CI
      
      * Codereview fixes
      
      * Convert warning color
      Unverified
      7046fef3
    • Jeff Bruemmer's avatar
      note on locked filters (#43886) · 88734ca3
      Jeff Bruemmer authored
      Unverified
      88734ca3
    • Kamil Mielnik's avatar
      Time-over-time comparison - e2e tests (#43724) · 897a22f2
      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: default avatarBraden Shepherdson <braden@metabase.com>
      Unverified
      897a22f2
    • Ngoc Khuat's avatar
    • Uladzimir Havenchyk's avatar
    • Ngoc Khuat's avatar
      Task history sorted by started at (#43809) · 7b919f8b
      Ngoc Khuat authored
      Unverified
      7b919f8b
Loading