Skip to content
Snippets Groups Projects
This project is mirrored from https://github.com/metabase/metabase. Pull mirroring updated .
  1. Apr 03, 2024
  2. Apr 02, 2024
  3. Mar 28, 2024
    • adam-james's avatar
      Make format export optional (#40606) · 347c5ef4
      adam-james authored
      
      * Make Formatting on Exports Optional
      
      Formatting on exports can be turned off via a middleware key:
      
      `:format-export?` which will control if the 'app style' formatting will be applied to the exported results.
      `:format-export? false` will return the file as in previous Metabase versions.
      
      * format_export's default value provided in the QP middleware
      
      Should still default to formatted for v. 49, as the formatting is intended as a feature. This default value should be
      provided in a central place, so is added to the middleware and is therefore not necessary for the API to provide a default.
      
      * weird indentation
      
      * Add format_export param to dashboard dashcard query endpoint
      
      * Add format_export option to embedded dashboard downloads endpoint
      
      * Move default true value to the streaming-results-writer impls
      
      * Default true but for real this time
      
      * Add format_export to the public Question endpoint
      
      * Add test to card api
      
      * Dashboard exports endpoint test
      
      * Add test to dashboard embeds
      
      Test still fails and I don't know why yet
      
      * the dangers of println debugging....
      
      Well, I was passing a string false the whole time. Turns out the problem was me
      
      * Public Card downloads endpoint now has format_export and test
      
      * export_format also works for adhoc queries using api/dataset
      
      * Let defendpoint do the boolean parsing
      
      * Embed endpoint should now work too.
      
      * Unify format-rows and format-export middlewares
      
      * Sneaky endpoint!
      
      * In xlsx, always parse temporal strings so that viz-settings formatting is applied
      
      * Snuck in an incomplete change by accident. removed it.
      
      * Can now specify format/no format on subscriptions
      
      * Fix and move migration
      
      * default format rows to true in attachments
      
      * Ok, I think that should actually work for subscriptions.
      
      * Change endpoints to use format_rows instead of confusing format_export
      
      * format_rows everywhere
      
      * Fix more test failures
      
      * redef'd function had wrong signature
      
      * Make format export optional (FE part) (#40643)
      
      * Refactor download URL builder code
      
      Need to handle query `params` and request `body` separately
      
      * Export `useHover` from `metabase/ui`
      
      * Add unformatted export for dashboard cards
      
      * Add unformatted export for saved questions
      
      * Fix POST body encoding
      
      * Add unformatted export for ad-hoc questions
      
      * Ensure `format_export` is always false for Excel
      
      * Add unformatted export to public questions
      
      * Add unformatted export to embedded questions and dashboards
      
      * Fix behavior for PNG format
      
      * Add tests for `QueryDownloadPopover`
      
      * Fix e2e downloads helper (allow URL query params)
      
      * Rework alt key handling
      
      * Add e2e test
      
      * Switch to `format_rows` instead of `format_export`
      
      * Add unformatted export option to subscriptions
      
      * Fix `isHoldingAltKey` initial state
      
      * Rework e2e test to use Total column
      
      * Fix initial checkbox state for subscriptions
      
      * Use "Alt" in tooltip label for Windows/Linux
      
      * Show the subscriptions toggle only for CSV attachments
      
      ---------
      
      Co-authored-by: default avataradam-james <21064735+adam-james-v@users.noreply.github.com>
      
      * Address review feedback
      
      ---------
      
      Co-authored-by: default avatarAnton Kulyk <kuliks.anton@gmail.com>
      347c5ef4
    • Tim Macdonald's avatar
      ParseSQL: select * (#40637) · df1366e1
      Tim Macdonald authored
      * Parse wildcards in native queries
      
      Add query_field.direct_reference
      
      * Do away with old Model refs in Card model test
      
      * Do not show stale cards with a select *
      df1366e1
  4. Mar 27, 2024
  5. Mar 26, 2024
    • Denis Berezin's avatar
      Embedding SDK - integration commit (#40198) · 98f6cd82
      Denis Berezin authored
      * Minimal SDK code
      
      * Fix viz, styles
      
      * Move SDK code to enterprise folder
      
      * Fix files structure
      
      * Clean-up
      
      * Review fixes
      
      * Review fixes
      
      * Review fixes
      
      * Remove elementid
      
      * Reuse some options from main webpack config
      
      * Actualize package.json
      
      * Actualize package.json
      98f6cd82
  6. Mar 25, 2024
  7. Mar 21, 2024
  8. Mar 20, 2024
  9. Mar 15, 2024
  10. Mar 14, 2024
    • Tim Macdonald's avatar
      SQL Lineage: Track field usage, expose stale queries (#39707) · 3093f7c3
      Tim Macdonald authored
      * SQL Lineage: Create the QueryField model
      
      This links Cards (with native queries) to Fields, showing us which
      queries use which Fields.
      
      QueryFields are automatically maintained as part of the Card lifecycle
      
      Cards with stale queries (powered by QueryField info) are exposed via the `card?f=stale` API
      3093f7c3
  11. Mar 07, 2024
  12. Feb 27, 2024
    • Cam Saul's avatar
      Drop report_card.dataset (#38981) · ddfd9f63
      Cam Saul authored
      
      * Drop report_card.dataset [WIP] [ci skip]
      
      * Drop report_card.dataset
      
      * Some test fixes
      
      * More test fixes
      
      * All OSS tests should be fixed now?
      
      * Remove check for :dataset key from snake-hating-map
      
      * Remove NOCOMMIT stuff
      
      * Remove unused namespaces
      
      * PR feedback
      
      * Migrate dataset attribute in autocomplete suggestions (#39054)
      
      * FE - Migrate `dataset: true` to enum value in Bookmarks (#39056)
      
      * Fix Card["type"] - Bookmark["card_type"] mapping and add an extra assertion
      
      * Fix card-type check out of raw query
      
      * Fix the test
      
      * Fix tests after merge
      
      * Log body when unexpected response code
      
      * Get logging in CI
      
      * Relax is_upload schema for latest mariadb
      
      ---------
      
      Co-authored-by: default avatarKamil Mielnik <kamil@kamilmielnik.com>
      Co-authored-by: default avatarCase Nelson <case@metabase.com>
      Co-authored-by: default avatarAlexander Polyankin <alexander.polyankin@metabase.com>
      ddfd9f63
  13. Feb 22, 2024
  14. Feb 09, 2024
    • Oisin Coveney's avatar
      Add snowplow events for embedding setup flow (#37617) · d43863a2
      Oisin Coveney authored
      * Add snowplow events for embedding setup flow
      
      * Fix dashboard model tests
      
      * Fix dashboard tests
      
      * Fix card tests
      
      * Fix dashboard API tests
      
      * Fix type error
      
      * Implement analytics 2/7
      
      1. public_link_copied
      2. public_link_removed
      
      * Fix snowplow schema enum
      
      Removing null as we don't seem to put `null` in `enum`
      
      * Complete the embed_flow snowplow schema
      
      * Modify `initial_published_at` to not be overridden
      
      * Implement analytics 4/7
      
      1. public_link_copied
      2. public_link_removed
      3. public_embed_code_copied
      4. static_embed_published
      5. static_embed_unpublished
      
      * Prevent accidental ESLint log in Cypress
      
      * Differentiate `EmbeddingParametersSettings` from `EmbeddingParametersValues`
      
      We were mixing the type before, as the former one are the type of the
      setting values, not the actual values for the parameters.
      
      * Fix dashboard and card types
      
      * Fix `params` count for `static_embed_published` event
      
      * fixup! Prevent accidental ESLint log in Cypress
      
      * Fix ESlint from the result of upgrading ESLint package
      
      * Fix Snowplow schema enum to include null
      
      * Fully implement `static_embed_code_copied`
      
      * Finish embed_flow snowplow :tada:
      
      
      
      * Fix unit tests because markup change
      
      * Fix E2E tests
      
      * Fix E2E CI failure
      
      Apparently using `.realClick()` on copy button could fail locally,
      but pass on CI and vice-versa. I couldn't replicate this all the time.
      
      I'm not sure why it would fail locally.
      
      * Fix copy to clipboard not working on CI
      
      * Improve test readability
      
      * Remove extra test-id
      
      * Fix refactor `*CodeOptionId`
      
      * Restrict Snowplow schema
      
      * Revert unnecessary change
      
      * Apply Cal's suggestions for BE improvements
      
      Co-authored-by: default avatarCal Herries <39073188+calherries@users.noreply.github.com>
      
      * Update src/metabase/util/embed.clj
      
      Co-authored-by: default avatarCal Herries <39073188+calherries@users.noreply.github.com>
      
      * Fix backend linter error, hopefully.
      
      ---------
      
      Co-authored-by: default avatarMahatthana Nomsawadi <mahatthana.n@gmail.com>
      Co-authored-by: default avatarMahatthana (Kelvin) Nomsawadi <me@bboykelvin.dev>
      Co-authored-by: default avatarCal Herries <39073188+calherries@users.noreply.github.com>
      Co-authored-by: default avatarNicolò Pretto <info@npretto.com>
      d43863a2
    • Noah Moss's avatar
      Default enable-public-sharing to false for existing instances, and true for new ones (#38609) · 48119c60
      Noah Moss authored
      * Default enable-public-sharing to false for existing instances, and true for new ones
      
      * add rollback
      
      * fix typo
      
      * try to fix e2e test
      
      * invert conditionals
      
      * use derivedSettings instead
      48119c60
    • Noah Moss's avatar
      v2 audit views and migrations (#38531) · 5e8286c9
      Noah Moss authored
      
      * new audit views and migrations
      
      * fix tests
      
      * rename external users group to anonymous, handle api key users, and add query definition to query_execution table
      
      * fix mysql user email field
      
      * update yamls for 49
      
      ---------
      
      Co-authored-by: default avatarLuiz Arakaki <luiz.arakaki@metabase.com>
      5e8286c9
  15. Feb 05, 2024
  16. Feb 01, 2024
    • adam-james's avatar
      Fixed width dashboard migration (#38247) · ffd18732
      adam-james authored
      
      * Migration adding 'width' to Dashboards
      
      3 migrations:
       - 1st adding the width column with default value of 'fixed'
       - 2nd updating all existing dashboards to have width 'full', which corresponds to what the current behaviour is (will
       be the 'old' behaviour after the fixed-width project lands).
         - The rolloback here is necessary but we don't care what happens as the column will be dropped immediately in the
         next rollback anyway
       - 3rd sets the notNullableConstraint. DefaultNull is 'full' here, just in case there's an existing dashboard whose
       width value is not yet set from the 1st migration. Don't know how that could happen, but its here in case
      
      * Dashboard PUT api endpoint accepts width changes and updates appdb
      
      update-dashboard function now is aware of the :width key so those changes can end up in the transaction.
      
      Also added a width test that asserts that the value's default is "fixed", it can be changed, eg. to "full", but cannot
      be changed to other values.
      
      * Add width to revision tests
      
      * Fix dashboard revision tests.
      
      :width key is now needed in some revision tests. As well we need a string communicating that the :width setting has
      changed from 'full' to 'fixed' or vice-versa.
      
      * Fix comments/remarks in migration to be accurate
      
      * Attempt to fix default not working mysql/mariadb
      
      * Set default in dashboard model
      
      Signed-off-by: default avatarAdam James <adam.vermeer2@gmail.com>
      
      * Revert default :width 'fixed' value.
      
      * Explicitly add default value 'fixed' for MySQL/MariaDB
      
      ---------
      
      Signed-off-by: default avatarAdam James <adam.vermeer2@gmail.com>
      ffd18732
  17. Jan 31, 2024
  18. Jan 26, 2024
    • Romeo Van Snick's avatar
      Optimise autocomplete query (#38080) · a35f41d1
      Romeo Van Snick authored
      For big databases autocomplete can be quite slow. At stats, query in regular form takes about 80 ms to run. Filtering out inactive tables and adding an index (pgsql-only unfortunately) for ordering clause brings that down to 10 ms.
      
      Also I suspect that in a single session you'll hit similar autocomplete rules multiple time, so some client caching could help with performance.
      a35f41d1
  19. Jan 19, 2024
  20. Jan 18, 2024
  21. Jan 17, 2024
    • Anton Kulyk's avatar
      Trend chart improvements (#37038) · 03540497
      Anton Kulyk authored
      
      * Update Trend chart copy for special cases (on frontend) (#35184)
      
      * add computeTrend
      
      * fix unit test
      
      * fix e2e test
      
      * explicitly fallback to day unit if backend doesn’t provide one
      
      * fix empty data cases
      
      * rename function parameters
      
      * correct and simplify computeChange function
      
      - when prevVal < 0 and nextVal < 0, it would return the wrong percentChange. (nextVal - prevVal) / Math.abs(prevVal) fixes this issue.
        - i.e. prevVal = -5, nextVal = -10 -> computeChange(-5, -10) -> computeChange(--10, --5) -> -50% but we should it expect to be -100% since it dropped by a factor of Math.abs(prevVal)
      
      * refactor PREVIOUS_VALUE options
      
      * correct and simplify computeChange further
      
      (-) -> (0) should be + increase (our end case already accounts for this behavior)
      
      * update unit tests to reflect correctness changes to computeChange
      
      * refactor for readability
      
      * refactor to use isEmpty instead of ==/!= null
      
      * refactor variable names for readability
      
      * refactor nested ternaries into function
      
      * refactor for readability
      
      * refactor variable names
      
      * re-use end of array index variable
      
      * re-word comments
      
      * refactor consumers based on return variable re-naming
      
      * add missing test cases
      
      * nit refactor
      
      * re-arrange functions for readability
      
      * truncate prevDate based on nextDate
      
      - if prevDate is same day as nextDate, remove the day, month, and year from the comparisonPeriodStr
      - if prevDate is same year as nextDate, remove the year from the comparisonPeriodStr
      
      * fix comment
      
      * fix test
      
      * instead of ↓ and ↑ symbols, use icon names
      
      * fix night mode hack
      
      * refactor formatDateTimeRangeWithUnit behavior
      
      - refactor how options.removeDay and options.removeYear work
      - reorganize the layout to make the conditional branches easier to see
      
      * fix tooltip styles
      
      * Add tests to cover new options
      
      - options.removeDay
      - options.removeYear
      
      * add option descriptors to test string
      
      ---------
      
      Co-authored-by: default avatarJesse Devaney <22608765+JesseSDevaney@users.noreply.github.com>
      
      * Trend Charts: Support arbitrary date comparison (#36666)
      
      * add computeTrend
      
      * fix unit test
      
      * fix e2e test
      
      * explicitly fallback to day unit if backend doesn’t provide one
      
      * fix empty data cases
      
      * rename function parameters
      
      * correct and simplify computeChange function
      
      - when prevVal < 0 and nextVal < 0, it would return the wrong percentChange. (nextVal - prevVal) / Math.abs(prevVal) fixes this issue.
        - i.e. prevVal = -5, nextVal = -10 -> computeChange(-5, -10) -> computeChange(--10, --5) -> -50% but we should it expect to be -100% since it dropped by a factor of Math.abs(prevVal)
      
      * refactor PREVIOUS_VALUE options
      
      * correct and simplify computeChange further
      
      (-) -> (0) should be + increase (our end case already accounts for this behavior)
      
      * update unit tests to reflect correctness changes to computeChange
      
      * refactor for readability
      
      * refactor to use isEmpty instead of ==/!= null
      
      * refactor variable names for readability
      
      * refactor nested ternaries into function
      
      * refactor for readability
      
      * refactor variable names
      
      * re-use end of array index variable
      
      * re-word comments
      
      * refactor consumers based on return variable re-naming
      
      * add missing test cases
      
      * nit refactor
      
      * re-arrange functions for readability
      
      * truncate prevDate based on nextDate
      
      - if prevDate is same day as nextDate, remove the day, month, and year from the comparisonPeriodStr
      - if prevDate is same year as nextDate, remove the year from the comparisonPeriodStr
      
      * fix comment
      
      * fix test
      
      * instead of ↓ and ↑ symbols, use icon names
      
      * fix night mode hack
      
      * refactor formatDateTimeRangeWithUnit behavior
      
      - refactor how options.removeDay and options.removeYear work
      - reorganize the layout to make the conditional branches easier to see
      
      * fix tooltip styles
      
      * Add tests to cover new options
      
      - options.removeDay
      - options.removeYear
      
      * add option descriptors to test string
      
      * add support for different trend comparisons
      
      - compare to previous value
      - compare to previous period (minute, hour, day, ...)
      - compare to X previous periods ago (30 minutes, 6 hours, 3 days, ...)
      
      * refactor + add comments
      
      * only show periodsAgo comparison option if # of selectable periods ago is >= 2
      
      * auto select all text on click in periodsAgo field input
      
      * fix bug caused by upstream date change
      
      - this caused the parser to try to parse an already existing date object when it expected a string timestamp
      
      * prevent accidental button click
      
      -  Since the input field is small, when mouseDown in child and dragged across (to highlight the input text) and outside the input field, it accidentally mouseUps on the button. This causes the button to be considered clicked since the child element is within the parent element.
      
      * fix searching outside of array bounds
      
      * validate scalar.comparisons setting after any query changes
      
      * add ttag for new copy
      
      * clamp search to start of array incase rows contain missing periods
      
      * rename styled components
      
      * fix SmartScalarSettingsWidgets type errors
      
      * change default comparison to previous period (if dateUnit is supplied)
      
      - default to "compare to previous" if no dateUnit is supplied
      
      * leave "X periods ago" setting even if filtered data reduces date range of dataset
      
      * change copy for no comparable value using `compare to previous` comparison
      
      * rename comparison `compare to previous` to `previous value`
      
      * fix type errors
      
      * fix bug if dateUnit is null
      
      * fix bug and move option down
      
      * fix type error
      
      * remove comment
      
      * refactor names
      
      * fix wrong date display
      
      * add tests
      
      * add tests for "compare to previous"
      
      * fix "previous period" tests
      
      * rename COMPARE_TO_PREVIOUS to PREVIOUS_VALUE
      
      - because copy changed, lets change this const name to match it
      
      * default return null if no comparison selected
      
      * remove unused export
      
      * remove unused export on types
      
      * do not hide primary number selector
      
      * fix dateUnit null
      
      * refactor computeTrend
      
      * fix test b/c of refactor
      
      * update computeChange unit tests
      
      * refactor
      
      * improve tests
      
      * refactor tests based on functionality
      
      * fix timezones bug
      
      * reformat tests
      
      * add test cases for invalid settings
      
      * handle invalid comparison types
      
      * fix type errors and rename variables
      
      * hit "Enter" to submit periodsAgo comparison value
      
      * fix timezone bug when comparisons dates are in different time-zones
      
      - different time-zones in this case in daylight savings time
      - this was causing two dates to not be the same ONLY b/c there timezone offset was different
      
      * refactor tests
      
      * reorganize SmartScalar file
      
      * rename comparison option name
      
      * fix type
      
      * add unit tests for comparison option functions and comparison validation
      
      * add component tests for SmartScalar
      
      * re-organize tests
      
      * add E2E tests
      
      * use more direct variable
      
      * refactor variable names
      
      * fix translations error
      
      * fix type errors
      
      * update translation strings
      
      * fix dateTime diffing
      
      - see comment in function and tests for more info
      
      * refactor test assertions
      
      * move comparison types to metabase-types/api/visualization-settings
      
      * drop any type
      
      * update native_form type
      
      * remove todo comment
      
      * remove optionality on types
      
      * remove console.error mock
      
      - used for creating tests to sift out repetitive test errors. forgot to remove
      
      * refactor icon check
      
      * Remove CSS class targeting
      
      * relocate props type object
      
      * Remove CSS class targeting
      
      * group smartscalar settings components into their own directory
      
      * refactor component
      
      * refactor tests to use it.each
      
      * use createMockSingleSeries
      
      * use createMockVisualizationSettings
      
      * use createMockColumn
      
      * reorganize code and files
      
      * fix type
      
      * fix i18n translations
      
      * update periods ago value on blur if selected
      
      * fix type error
      
      * Trend Charts: Address Milestone 2 Feedback (#37062)
      
      * add computeTrend
      
      * fix unit test
      
      * fix e2e test
      
      * explicitly fallback to day unit if backend doesn’t provide one
      
      * fix empty data cases
      
      * rename function parameters
      
      * correct and simplify computeChange function
      
      - when prevVal < 0 and nextVal < 0, it would return the wrong percentChange. (nextVal - prevVal) / Math.abs(prevVal) fixes this issue.
        - i.e. prevVal = -5, nextVal = -10 -> computeChange(-5, -10) -> computeChange(--10, --5) -> -50% but we should it expect to be -100% since it dropped by a factor of Math.abs(prevVal)
      
      * refactor PREVIOUS_VALUE options
      
      * correct and simplify computeChange further
      
      (-) -> (0) should be + increase (our end case already accounts for this behavior)
      
      * update unit tests to reflect correctness changes to computeChange
      
      * refactor for readability
      
      * refactor to use isEmpty instead of ==/!= null
      
      * refactor variable names for readability
      
      * refactor nested ternaries into function
      
      * refactor for readability
      
      * refactor variable names
      
      * re-use end of array index variable
      
      * re-word comments
      
      * refactor consumers based on return variable re-naming
      
      * add missing test cases
      
      * nit refactor
      
      * re-arrange functions for readability
      
      * truncate prevDate based on nextDate
      
      - if prevDate is same day as nextDate, remove the day, month, and year from the comparisonPeriodStr
      - if prevDate is same year as nextDate, remove the year from the comparisonPeriodStr
      
      * fix comment
      
      * fix test
      
      * instead of ↓ and ↑ symbols, use icon names
      
      * fix night mode hack
      
      * refactor formatDateTimeRangeWithUnit behavior
      
      - refactor how options.removeDay and options.removeYear work
      - reorganize the layout to make the conditional branches easier to see
      
      * fix tooltip styles
      
      * Add tests to cover new options
      
      - options.removeDay
      - options.removeYear
      
      * add option descriptors to test string
      
      * add support for different trend comparisons
      
      - compare to previous value
      - compare to previous period (minute, hour, day, ...)
      - compare to X previous periods ago (30 minutes, 6 hours, 3 days, ...)
      
      * refactor + add comments
      
      * only show periodsAgo comparison option if # of selectable periods ago is >= 2
      
      * auto select all text on click in periodsAgo field input
      
      * fix bug caused by upstream date change
      
      - this caused the parser to try to parse an already existing date object when it expected a string timestamp
      
      * prevent accidental button click
      
      -  Since the input field is small, when mouseDown in child and dragged across (to highlight the input text) and outside the input field, it accidentally mouseUps on the button. This causes the button to be considered clicked since the child element is within the parent element.
      
      * fix searching outside of array bounds
      
      * validate scalar.comparisons setting after any query changes
      
      * add ttag for new copy
      
      * clamp search to start of array incase rows contain missing periods
      
      * rename styled components
      
      * fix SmartScalarSettingsWidgets type errors
      
      * change default comparison to previous period (if dateUnit is supplied)
      
      - default to "compare to previous" if no dateUnit is supplied
      
      * leave "X periods ago" setting even if filtered data reduces date range of dataset
      
      * change copy for no comparable value using `compare to previous` comparison
      
      * rename comparison `compare to previous` to `previous value`
      
      * fix type errors
      
      * fix bug if dateUnit is null
      
      * fix bug and move option down
      
      * fix type error
      
      * remove comment
      
      * refactor names
      
      * fix wrong date display
      
      * add tests
      
      * add tests for "compare to previous"
      
      * fix "previous period" tests
      
      * rename COMPARE_TO_PREVIOUS to PREVIOUS_VALUE
      
      - because copy changed, lets change this const name to match it
      
      * default return null if no comparison selected
      
      * remove unused export
      
      * remove unused export on types
      
      * do not hide primary number selector
      
      * fix dateUnit null
      
      * refactor computeTrend
      
      * fix test b/c of refactor
      
      * update computeChange unit tests
      
      * refactor
      
      * improve tests
      
      * refactor tests based on functionality
      
      * fix timezones bug
      
      * reformat tests
      
      * add test cases for invalid settings
      
      * handle invalid comparison types
      
      * fix type errors and rename variables
      
      * hit "Enter" to submit periodsAgo comparison value
      
      * fix timezone bug when comparisons dates are in different time-zones
      
      - different time-zones in this case in daylight savings time
      - this was causing two dates to not be the same ONLY b/c there timezone offset was different
      
      * refactor tests
      
      * reorganize SmartScalar file
      
      * rename comparison option name
      
      * fix type
      
      * add unit tests for comparison option functions and comparison validation
      
      * add component tests for SmartScalar
      
      * re-organize tests
      
      * add E2E tests
      
      * use more direct variable
      
      * refactor variable names
      
      * fix translations error
      
      * fix type errors
      
      * update translation strings
      
      * fix dateTime diffing
      
      - see comment in function and tests for more info
      
      * refactor test assertions
      
      * move comparison types to metabase-types/api/visualization-settings
      
      * drop any type
      
      * update native_form type
      
      * remove todo comment
      
      * remove optionality on types
      
      * remove console.error mock
      
      - used for creating tests to sift out repetitive test errors. forgot to remove
      
      * refactor icon check
      
      * Remove CSS class targeting
      
      * relocate props type object
      
      * Remove CSS class targeting
      
      * group smartscalar settings components into their own directory
      
      * refactor component
      
      * refactor tests to use it.each
      
      * use createMockSingleSeries
      
      * use createMockVisualizationSettings
      
      * use createMockColumn
      
      * reorganize code and files
      
      * fix type
      
      * fix i18n translations
      
      * update periods ago value on blur if selected
      
      * fix type error
      
      * rename types
      
      * improve types
      
      * rename function
      
      * improve button styles
      
      * rename component
      
      * remove comments
      
      * use rightIcon prop
      
      * rename style
      
      * refactor click hacks for periodsAgo menu component
      
      * refactor menu change handling
      
      - if menu is closed, submit onChange with the latest edited value.
      - if item is simple, submit value itself
      - it item is complex, set edited value state as input changes and submit value when committed
      
      * disable invalid typescript error
      
      - error is coming from using typescript 4.7.2 when .findLast was first introduced in 5.0.0
      - code functions properly. IDE recognizes correct type
      
      * if selectedValue and editedValue are equal, we do not need to submit a new value
      
      * update file names to reflect component name changes
      
      * refactor type export
      
      * remove prop type covered by other type
      
      * remove unused file
      
      * remove unnecessary {}
      
      * fix broken test b/c of functionality changes
      
      * remove typescript ignore and replace with type safe function
      
      * rename handleChange to onChange
      
      * rename input validation function
      
      * Trend Charts — Add static number comparison (#36951)
      
      * Fix `MenuItemStyled` props type
      
      * Implement static number comparison
      
      * Fix `utils` unit tests
      
      * Add unit tests for `getTrend`
      
      * Add e2e test coverage
      
      * Fix type
      
      * Fix `compute` tests
      
      * Rename `SmartScalarComparisonStaticNumber` type
      
      * Replace `Flex` with `Stack`
      
      * Fix `StaticNumberForm's` `value` type
      
      * Fix options calc
      
      * Simplify block
      
      * Validate static number comparison
      
      * Remove test
      
      * Replace `Flex` with `Group`
      
      * Minor `DoneButton` tweak
      
      * Minor fix
      
      * Fix value state
      
      * Trend charts — Compact formatting viz setting (#36992)
      
      * Refactor `compactifyValue`
      
      * Add setting to `VisualizationSettings` type
      
      * Respect `compact` option in `compactifyValue`
      
      * Add viz setting
      
      * Add e2e coverage
      
      * Fix `onChange` for `StaticNumberForm`
      
      * Move compact setting to `computeTrend`
      
      * Add `formatOptions` tests for `computeTrend`
      
      * Extend e2e tests
      
      * Test formatting done by `computeTrend`
      
      * Trend charts — Compare to another column (#37087)
      
      * Add viz setting type
      
      * Implement comparison
      
      * Extract `renderMenuDropdownContent`
      
      * Align `Select` label style with other inputs
      
      * Use `column.name`
      
      * Show opt only if there're cols to choose from
      
      * Extend comparison validation check
      
      * Handle missing column
      
      * Fix type error
      
      * Add tests for `getComparisonOptions`
      
      * Extract test `describe` group
      
      * Add tests for `isComparisonValid`
      
      * Add tests for `computeTrend`
      
      * Add basic e2e test
      
      * Ensure comparison column exists in query results
      
      * Fix onChange callback
      
      * Trend charts — multiple comparisons (#37176)
      
      * Turn `scalar.comparisons` into an array
      
      * Implement adding new comparisons
      
      * Implement removing comparison
      
      * Use HTML list for comparisons
      
      * Add `id` to comparison objects
      
      * Implement sorting
      
      * Extract `ComparisonPicker` component
      
      * Trend charts — Misc fixes and polish (#37269)
      
      * Use vertical layout for `StaticNumberForm`
      
      * Update comparison picker display name
      
      * Make smart scalar utils easier to use in static viz
      
      * Fix height
      
      * Fix `Icon` import
      
      * Fix deprecated color reference
      
      * Fix deprecated color reference
      
      * Static viz path for the updated trend chart (#37418)
      
      * Returning map-based response from js-svg/isomorphic.
      
      * add common static viz code path which will be used for the trend chart
      
      * review feedback
      
      * update formatter type
      
      * Fixed detect-pulse-chart-type test response to `:javascript_visualization` for `:smartscalar` case.
      
      * Fixed TODO WRT keywordizing type value of `javascript-visualization` result.
      
      * Better clj formatting
      
      ---------
      
      Co-authored-by: default avatarMark Bastian <markbastian@gmail.com>
      
      * Fix merge conflict
      
      * Trend charts — Static viz (#37602)
      
      * Make `computeTrend` independent of "lib/formatting"
      
      * Refactor `getArrowColor`
      
      * Make `computeTrend` independent of "lib/colors"
      
      * Make `computeTrend` independent `formatChange`
      
      * Add `SmartScalar` placeholder
      
      * Add basic static `SmartScalar` viz
      
      * Fix `findLast` not available for static viz
      
      * Clean up `SmartScalar`
      
      * Enable PNG export
      
      * static trend settings computation
      
      * Fix `getDefaultComparison` return type
      
      * Add `VIZ_SETTINGS_DEFAULTS` const for trend charts
      
      * Add `getDefaultColumn` helper for `scalar.field`
      
      * Fix `getDefaultComparison` tests
      
      * Revert "Make `computeTrend` independent `formatChange`"
      
      This reverts commit 9ab1db5a84cbcb58ec2d044f4d6cf7ffb341f62b.
      
      * Fix `formatChange`
      
      * Remove custom `formatChange`
      
      * Add `scalar.comparisons` to `computeSmartScalarSettings`
      
      * Fix `measureText` type
      
      * Fix bad default value for `scalar.field`
      
      * Use `getColor` instead of `color`
      
      * Add stories
      
      * Visual tweaks
      
      * Add `getValue` for `scalar.comparisons`
      
      * Extend e2e test
      
      ---------
      
      Co-authored-by: default avatarAleksandr Lesnenko <alxnddr@gmail.com>
      
      * Fix flaky test
      
      * Hide drag handle when there's only one comparison
      
      * Update the "periods ago" control
      
      * Inform people when "periodsAgo" value is clamped
      
      ---------
      
      Co-authored-by: default avatarshaun <shaun@metabase.com>
      Co-authored-by: default avatarJesse Devaney <22608765+JesseSDevaney@users.noreply.github.com>
      Co-authored-by: default avatarAleksandr Lesnenko <alxnddr@users.noreply.github.com>
      Co-authored-by: default avatarMark Bastian <markbastian@gmail.com>
      Co-authored-by: default avatarAleksandr Lesnenko <alxnddr@gmail.com>
      03540497
  22. Jan 15, 2024
    • Mahatthana (Kelvin) Nomsawadi's avatar
      Add show metabase links toggle admin setting (#37076) · 9a840f92
      Mahatthana (Kelvin) Nomsawadi authored
      
      * Add show metabase links toggle admin setting
      
      * Hide Metabase links
      
      * Fix type error
      
      * Add selector tests
      
      * Hide a link in HomeHelpCard
      
      * Make test names more consistent with existing test suites
      
      * Add tests to `NewModelOptions`
      
      * Prepare `VisualizationError` for testing
      
      * Add tests to `VisualizationError`
      
      * Hide link and add tests to `PreviewQueryModal`
      
      * Extract components to make it easier to test
      
      * Move the new component into its own folder
      
      * Hide Metabase link in `ActionDashcardSettings`
      
      * Prepare `EmptyFormPlaceholder` for testing
      
      * Hide Metabase link in `EmptyFormPlaceholder`
      
      * Extract Metabase link from `FormCreator` for testing
      
      * Hide Metabase link in `FormCreator`
      
      * Extract link from `DashCardCardParameterMapper` to prepare for testing
      
      * Hide Metabase link in `DashCardParameterMapper`
      
      * Clean up the test setup function
      
      * Hide Metabase link in `ExpressionEditorHelpText`
      
      * Hide Metabase link in `TagEditorHelp`
      
      * Hide Metabase links in `MetricList`
      
      * Hide Metabase link in `SegmentList`
      
      * Prepare `CaveatMessage` for testing
      
      * Hide Metabase link in `CaveatMessage`
      
      * Hide Metabase link in `CustomMapFooter`
      
      * Hide Metabase link in `ImpossibleToCreateModelModal`
      
      * Hide Metabase link in `ExpressionWidget`
      
      * Hide Metabase link in `ExpressionWidget`
      
      * Add BE tests
      
      * Update sample database description
      
      * Fix TypeScript type-check
      
      * Fix failed unit tests
      
      * Fix wrong test names
      
      * Add missing translations
      
      * Make tests looks like tests from other components
      
      * Update enterprise/frontend/src/metabase-enterprise/whitelabel/components/MetabaseLinksToggleWidget/MetabaseLinksToggleWidget.tsx
      
      Co-authored-by: default avatarNicolò Pretto <info@npretto.com>
      
      * Simplify the change
      
      * Fix weird import directory
      
      * Fix wrapped translation copy
      
      * Fix test name
      
      * Move comment next to the component
      
      * Fix test names
      
      * Review: Make code easier to review
      
      * Fix wrong document link
      
      * Update src/metabase/public_settings.clj
      
      Co-authored-by: default avatarNoah Moss <32746338+noahmoss@users.noreply.github.com>
      
      * Update src/metabase/public_settings.clj
      
      Co-authored-by: default avatarNoah Moss <32746338+noahmoss@users.noreply.github.com>
      
      * Address review: BE changes
      
      ---------
      
      Co-authored-by: default avatarNicolò Pretto <info@npretto.com>
      Co-authored-by: default avatarNoah Moss <32746338+noahmoss@users.noreply.github.com>
      9a840f92
  23. Jan 09, 2024
  24. Jan 03, 2024
  25. Dec 24, 2023
  26. Dec 22, 2023
    • John Swanson's avatar
      Add `updated_by` to API Keys (#37014) · 2550abbb
      John Swanson authored
      This required a bit of modification of the DB.
      
      First, I had named the column meant to hold the ID of the user who last updated an API key as `updated_by`. But it seemed like `updated_by` was the natural field to hold the user name that FE wanted, and I didn't want to clobber an existing field with `hydrate`.
      
      So, I renamed the existing column to `updated_by_id` and used `updated_by` to hold the hydrated user that updated the ApiKey.
      
      Second, for consistency, I renamed `created_by` to `creator_id`.
      
      The logic for presenting an ApiKey was getting a bit complicated and spread out over many different endpoints, so I pulled it out into its own function that's called from almost every endpoint defined in the `metabase.api.api-key` namespace. Note that it calls `(t2/hydrate api-key :updated_by :group_name)` - but I verified that this will not result in additional DB calls if the model was already hydrated.
      2550abbb
  27. Dec 20, 2023
  28. Dec 19, 2023
    • John Swanson's avatar
      Create an API key with `POST /api/api-key` (#36595) · 959292cf
      John Swanson authored
      This creates a new endpoint, `POST /api/api-key` that takes two arguments, a `group_id` and a `name`, and creates an
      API key (along with a special API key user).
      
      I also went ahead and threw in the `api-key/count` endpoint here since
      it's so small.
      959292cf
  29. Dec 15, 2023
    • adam-james's avatar
      Migrate PulseCards include_csv = true when the card has :display table (#36383) · 85d31205
      adam-james authored
      * Migrate PulseCards include_csv = true when the card has :display table
      
      Why? This is so that we can eliminate the behaviour of csv attachments being included in emails even when a user
      doesn't have them seleted in the dashboard subscription pane. This is confusing behaviour and undesirable in many
      cases.
      
      The likely better behaviour is that attachments for any card are only included if explicitly asked for by a user. But,
      in order to change the app to behave this way, we should first migrate things so that any user who relies on this old
      behavior will still see the attachments they have come to expect.
      
      This PR is still draft and some things must happen still:
      
       - [ ] the migration is incomplete! At the moment, this will include .csv attachments even for tables with n-rows <
       10. This migration would cause users to see more .csv attachments than before. So, the migration should only set
       include_csv = true when the row count of the results is greater than 10.
       - [ ] the migration # is NOT claimed in the slack channel yet. This should be claimed as soon as the migration
       approach is reviewed to work and an appropriate issue for this change is linked.
      
      * Use the proper migration # which is now claimed appropriately
      
      * Change SQL to work with H2
      
      * Attachment message logic depends on include_csv/xls values now
      
      Also lift the attachment message inclusion up a level so that it can be applied to all card types, not just tables.
      
      * Fix a failing test
      
      * Change copy for when attachments are included
      
      Also change a test to explicitly include csv (since now that's the only way csvs will be attached).
      
      * Fix test
      85d31205
  30. Dec 13, 2023
    • John Swanson's avatar
      Api key migrations (#36316) · 25089c87
      John Swanson authored
      
      * Part 1: Add `core_user.type`
      
      With the addition of API keys and "api key users", we want to add a `type` field to users to easily distinguish
      between "regular" users and API key users.
      
      The one non-standard user we have right now is the "internal" Metabase user. We don't actually need this field for
      that one (because we fix that user's ID to `13371338`), but we might as well set the `type` correctly anyway.
      
      * Part 2: API Key table
      
      Create an API Key table to contain, uh, API keys.
      
      The table has the following fields:
      
      - id
      
      - user_id (the associated API key user, who this API key "acts as")
      
      - key (the hash of the API key itself)
      
      - key_prefix (the first 7 digits of the *raw* API key, beginning with `mb_XXXX`)
      
      - created_by (the user that created the API key)
      
      - created_at
      
      - updated_at
      
      * Part 3: Set the type of the internal user
      
      The internal user is actually identified by the ID, but we might as well set the type correctly.
      
      
      Finally: don't condition view recompilation on is-prod? since Cypress actually runs the backend in prod mode
      
      ---------
      
      Co-authored-by: default avatarNoah Moss <noahbmoss@gmail.com>
      25089c87
  31. Dec 12, 2023
  32. Dec 11, 2023
Loading