This project is mirrored from https://github.com/metabase/metabase.
Pull mirroring updated .
- Oct 31, 2023
-
-
Cam Saul authored
-
Cam Saul authored
-
Jeff Bruemmer authored
-
Nick Fitzpatrick authored
* ensure that column is removed from table.columns when updating question * PR feedback * better asserts
-
John Swanson authored
* Make `SESSION_COOKIE_SAMESITE` a setting Considerations here: - I didn't want to break the existing behavior, which allows the env var to be case insensitive. This required a bit of weirdness in the getter/setter - we get the *raw* value, then normalize it to a keyword, then make sure it's one of the valid options. - I'm not sure what the best practice is regarding i18n - I just went off the existing code, but I'm not entirely sure whether I need to also add translations to the `locales/*.po` files, and how I get those translations if so (err... chatGPT?). - permissions: I'm not exactly sure how we decide between the `:settings-manager` and `:admin` settings. I went with `:settings-manager` here. - I'm not sure whether the frontend has its own definitions of possible values for set-based settings, or if I need to expose that somehow? The existing tests were good, easily adapted to the new behavior, and caught the above-mentioned backwards incompatibility issue with case insensitivity.
-
Nicolò Pretto authored
* move cards analytics event, closes #35123 * change test to check specific analytics event * fix version in schema * update src/metabase/analytics/snowplow.clj with 1-1-2 schema version * update all dashboard schema events to use version 1-1-2 * refactor: exctracted "DASHBOARD_SCHEMA_VERSION" variable * refactor: use camelCase for local constant
-
Emmad Usmani authored
Closes https://github.com/metabase/metabase/issues/34271 ### Description In Arabic locales (`ar` and `ar-sa`), we were displaying Arabic numerals for translated dates, but in the rest of the app we used Western numerals. This PR makes it so that for dates we also use Western numerals. Ideally we would have an option for which kind of numeral to use, but it's a sufficient solution to always use Western numerals. Even in Arabic-speaking countries where Arabic numerals are widely used, Western numerals are commonly seen on digital interfaces, so users should not be bothered by it. ### How to verify 1. Go to the Products model. 2. See "Created At" field in English. 3. Go to account settings, change language to "Arabic", then go back to Products model. 4. "Created At" field should now be translated, but using Western numerals. 5. Repeat the same for "Arabic (Saudi Arabia)" locale, and using admin site locale setting. 6. Go back to English, in Products model should see English dates again. ### Demo https://github.com/metabase/metabase/assets/37751258/826375a2-1f85-4a3d-9abf-fab2e26dd0c0 ### Checklist - [x] Tests have been added/updated to cover changes in this PR
-
Braden Shepherdson authored
Use `(dev.fe-helpers/current-query)` from a CLJS REPL to get the query currently open in the UI.
-
Cal Herries authored
-
Cal Herries authored
-
Alexander Solovyov authored
`api.dashboard/chain-filter-constraints` now generates a list of constraints using a filter type defined (like `:string/!=` or `:number/between`). `chain-filter/filter-clause` down the call chain has no access to _dashboard_ data, but accepts operators like `:!=` and `:between` readily.
-
Kamil Mielnik authored
* Reuse addOrUpdateDashboardCard * Extract 15993 repro * Extract 16334 repro * Extract 23137 repro * Extract 18067 repro * Remove unused alias * Add empty test suite for click-behavior * Add a test for text cards * Add createHeadingCard helper * Add a test for heading cards * Add createActionCard helper - make text/label params optional in helpers - remove unused dashboardId param in helpers * Add a test for an action card * Format code * Reuse createActionCard in #32974 repro * Simplify text code * Reuse createActionCard, createTextCard & getNextUnsavedDashboardCardId in dashboard back navigation e2e * Remove unused alias * Inline 1-line createLinkCard helper * Add createLinkCard helper * Add a test for link cards * Simplify interfaces of helper functions * Update test title * Add a test for object detail dashcard * Remove redundant identifier * Format code * Add data-testid to ClickBehaviorSidebar * Add setup for line chart test * Test the actual click behavior * Refactor expectDynamicAnchorClick to expectNextAnchorClick - get rid of manual mock resetting * Add test for editing URL filter * Refactor expectNextAnchorClick to onNextAnchorClick * Extract URL parameters test as a seprate one * Fix assertions - Add escapeCypressCurlyBraces * Assert user can use dashboard filters and click event columns * Use cy.get("aside") instead of sidebar functions - Revert adding data-testid to sidebars * Use all available parameters in the URL * Add test for 0 filters * Extract addFilter * Add a test for single dashboard filter - Add constants for magic numbers and values * Extract OBJECT_DETAIL_CHART * Use saveDashboard * Add a test for multiple dashboard filters * Improve URL assertion * Improve assertions * Format code * Add a test for saved question destination * Improve assertions * Consolidate assertions * Improve assertions * Add a test for saved question with single parameter passed * Update JSDoc * Extract GAUGE_QUESTION_DETAILS & PROGRESS_QUESTION_DETAILS * Reuse addOrUpdateDashboardCard * Add a test for saved question with multiple parameters passed * Extract FILTER_CREATED_AT & FILTER_COUNT * Do not use elevated privileges * Rename FILTER_COUNT to FILTER_QUANTITY * Reuse ORDERS_ID * Add a test for no saved question permissions * Create dashboard filters via API * Add a test * Add a test for dashboard target * Add test for 1 and multiple dashboard parameters * Extract addTextParameter & addTimeParameter * Improve assertions * Use different question as target * Use TARGET_QUESTION instead of SECRET_QUESTION * Add a test for no dashboard permissions * Add a test for drill-through menu behavior * Fix typo * Destructure location * Format code, remove console.log * Use slug instead of name where appropriate * Add a test case for editing the click behavior * Update comment * Commit a dumb change to trigger uberjar rebuild * Commit a dumb change to trigger uberjar rebuild * Optimize line chart question - add limit: 5 - update constants & assertions - rename LINE_CHART to QUESTION_LINE_CHART - extract clickLastLineChartPoint as click({ force: true }) is now needed * Fix click simulation * Add first test for tables - extract assertDrillThroughMenuOpen * - extract clickLastTableCreatedAtCell - extract clickLastTableCountCell * Revert "Commit a dumb change to trigger uberjar rebuild" This reverts commit 27ef0600ad0dae1dec98bf1e7282e5872b7293e7. * Revert "Commit a dumb change to trigger uberjar rebuild" This reverts commit a5141eb020db0dc9bd2ca61d47bae98b435e80c8. * Add logs for clarity * Prepare single test case for all click behavior in table * Update labels * Remove year aggregation * Extract addCustomDashboardDestination * Extract addSavedQuestionDestination * Extract addSavedQuestionCreatedAtParameter and addSavedQuestionQuantityParameter * Fix assertions * Fix typo * Extract helpers * Extract addUrlDestination * Add more assertions * Remove redundant indentation * Reduce indentation, remove redundant assertions * Chain assertions * Chain assertions * Add test for URL click * Rename test case * Use parseSpecialCharSequences and get rid of escapeCypressCurlyBraces * Assert dashboard pathname * Remove pointless assertions * Sort tests * Test reverting to default click behavior * Handle month column first * Format code * Remove redundant assertions * Move assertions closer to tests * Add test for dashboard mapping * Refactor clickTableCell into getTableCell * Update post-merge conflicts * Update post-merge conflicts * Fix test crashing * Add custom link text assertions * Add full app embedding tests * Add a test for URL * Format code * Add test for custom question destination * Add a test for passing question parameters, skip other failing tests * Add test for updating dashboard filters in embedding * Add an edge case test * Add missing attributes * Add missing assertion * Format code * Fix failing test * Fix failing test * Update tests to account for disallowing targeting saved questions & dashboards in embedding context - see https://metaboat.slack.com/archives/C01LQQ2UW03/p1698669573035739
-
Ngoc Khuat authored
-
Ngoc Khuat authored
-
- Oct 30, 2023
-
-
shaun authored
-
lbrdnk authored
* Add percentile capabilities to sqlserver * Bind sqlserver percentile capabilities to version * Modify version retrieval Take advantage of `db` containing `:dbms_version`. * Extend honeysql with `::approx-percentile-cont` Use `fn-handler` to extend honeysql instead of a `raw`.
-
lbrdnk authored
* Add multimethod to pretty-format native form `driver/prettify-native-form` is added. It is added to `driver` namespace, even though at the time of writing there is no need to pretty format nosql, eg. mongo, but this way branchings, as present in `dataset/native`, or rather `mbql.query/format-sql` can be avoided. * Move and update `mdb.query/format-sql` * Add `prettify-native-form` sql implementation * Refactor endpoint `/dataset/native` * Update docstring in `prettify-native-form` `prettify-native-form`has now docstring explaining its relationship to `sql.u/format-sql`. * Update tests * Refactor references in sql-jdbc code * Implement `prettify-native-form`in drivers - sqlserver - oracle - bigquery-cloud-sdk * Update test format-sql references * Refactor modules use of format-sql * Correct whitespace * Correct whitespace for bigquery * Update test Make `nonsql-dialects-return-original-query-test` run only for mongo as it now requires initialized mongo driver - mongo paths on class path. * Update docstring (review suggestions) For `prettify-native-form`. * Update docstring (review suggestion) For `mdb.query/format-sql`. * Whitespace (review suggestions) * Update docs (review suggestions)
-
Uladzimir Havenchyk authored
-
Ryan Laurie authored
-
John Swanson authored
* Improve stacktraces for validation errors in malli-instrumented fns First, when we throw exceptions in `metabase.util.malli/validate`, manually edit the stacktrace to remove those StackTraceElements that start with `metabase.util.malli.fn`. Second, instead of rewriting `mu/fn` bodies like so: ``` (let [f& ...] (fn [args] (do-validation) (f& args))) ``` Rewrite them like this: ``` (fn [args] (do-validation) ((fn [args'] ...) args)) ``` I wasn't entirely sure that this wouldn't have a negative performance impact, so I tested it with these toy examples: ``` (def option-1 (let [f (fn [x] (+ x 10))] (fn [x] (f x)))) (def option-2 (fn [x] ((fn [x'] (+ x 10)) x))) ``` Then evaluated them with Criterium to benchmark. The first option (our current behavior) looked like this: ``` Evaluation count : 10184236800 in 60 samples of 169737280 calls. Execution time sample mean : 4.117003 ns Execution time mean : 4.117119 ns Execution time sample std-deviation : 0.017140 ns Execution time std-deviation : 0.017686 ns Execution time lower quantile : 4.100963 ns ( 2.5%) Execution time upper quantile : 4.149603 ns (97.5%) Overhead used : 1.783065 ns ``` The second option (the new behavior) looked like this: ``` Evaluation count : 13861192260 in 60 samples of 231019871 calls. Execution time sample mean : 2.553532 ns Execution time mean : 2.553510 ns Execution time sample std-deviation : 0.019674 ns Execution time std-deviation : 0.019824 ns Execution time lower quantile : 2.524266 ns ( 2.5%) Execution time upper quantile : 2.599826 ns (97.5%) Overhead used : 1.783065 ns ``` So overall the performance does not look to be worse and may actually be slightly better. In the end, we end up with stacktraces like: ``` (mu/defn bad-input :- :string [x :- :int] (str x)) (mu/defn bad-output :- :string [x :- :int] x) (defn call-bad-input [] (bad-input "1")) (call-bad-input) ;; Invalid input: ["should be an integer"] ;; {:type :metabase.util.malli.fn/invalid-input, ;; :error {:schema :int, :value "1", :errors ({:path [], :in [], :schema :int, :value "1"})}, ;; :humanized ["should be an integer"], ;; :schema :int, ;; :value "1", ;; :fn-name playground/bad-input} ;; REPL: 19 playground/bad-input ;; REPL: 19 playground/bad-input ;; REPL: 28 playground/call-bad-input ;; REPL: 27 playground/call-bad-input (defn call-bad-output [] (bad-output 1)) (call-bad-output) ;; Invalid output: ["should be a string"] ;; {:type :metabase.util.malli.fn/invalid-output, ;; :error {:schema :string, :value 1, :errors ({:path [], :in [], :schema :string, :value 1})}, ;; :humanized ["should be a string"], ;; :schema :string, ;; :value 1, ;; :fn-name playground/bad-output} ;; REPL: 23 playground/bad-output ;; REPL: 23 playground/bad-output ;; REPL: 31 playground/call-bad-output ;; REPL: 30 playground/call-bad-output ```
-
Luis Paolini authored
-
Tim Macdonald authored
* varchar_255 -> varchar-255 * Add ::offset-datetime support for CSV uploads * Use appropriate TZ logic for MySQL * Now with more whitespace tolerance * Handle OffsetDateTimes properly in MySQL export * Make MySQL handle 0-offset datetimes * Fix OffsetDateTimes for MariaDB uploads
-
Nicolò Pretto authored
* undo logic * test(e2e): e2e test for undo dashcard to tab movement * Revert "test(e2e): e2e test for undo dashcard to tab movement" This reverts commit 050817b895022336753128c27e00c91aa56adea7. * better e2e test for undoing * self review new lines * Apply suggestions from code review Co-authored-by:
Mahatthana (Kelvin) Nomsawadi <me@bboykelvin.dev> * destTabId -> destinationTabId * undo moved into thunk * use checkNotNull * throw Error -> throw new Error for consistency * Update e2e/test/scenarios/dashboard/tabs.cy.spec.js Co-authored-by:
Kamil Mielnik <kamil@kamilmielnik.com> * change toast to match figma * ??= operator * Revert "undo moved into thunk" This reverts commit 753a7d9357af4bec12616a5e379388d06594a581. * restored design from figma after revert * address pr feedback * fix import after rebase on master * Revert "address pr feedback" This reverts commit bea6a27511358b87c4d95367d5952f43e3fe1276. * re-implement part of the feedback * wip refactor to use thunk and avoid global redux state * refactor: removed unused code + used selector --------- Co-authored-by:
Mahatthana (Kelvin) Nomsawadi <me@bboykelvin.dev> Co-authored-by:
Kamil Mielnik <kamil@kamilmielnik.com>
-
Mark Bastian authored
Fixing situations where a cell queries with a temporal unit of year produced nulls in description strings like: "A closer look at number of Orders where null of Created At is 2025" The simple fix was just to add `:year` to the `unit-name` function in `metabase.automagic-dashboards.names`. In addition to adding a unit test for this case, several other temporal units were added to the test. This fixes https://github.com/metabase/metabase/issues/35170.
-
Braden Shepherdson authored
This adds the `underlying-records` drill, the one that allows you to click an aggregation (possibly with a breakout) and see the raw table rows with appropriate filtering. Removes some hacks in how dimensions are handled by drill-thru, and fixes up some tests accordingly. This changed the format of `zoom-in.timeseries` drills somewhat. Also adds `dev.fe-helpers` for inspecting the current query in the CLJS REPL. Resolves #34233
-
Mark Bastian authored
* I was able to reproduce this in the UI as well as by adding the `">"`, `"<"`, `">="`, and `"<="` clauses to the `cell-title-test` in `metabase.automagic-dashboards.names-test`. The fix is to add the following `humanize-filter-value` implementations: ```clojure (defmethod humanize-filter-value :>= [root [_ field-reference value]] (let [field (magic.util/field-reference->field root field-reference) field-name (field-name field)] (if (isa? ((some-fn :effective_type :base_type) field) :type/Temporal) (tru "{0} is at least {1}" field-name (humanize-datetime value (:unit field))) (tru "{0} is at least {1}" field-name value)))) (defmethod humanize-filter-value :> [root [_ field-reference value]] (let [field (magic.util/field-reference->field root field-reference) field-name (field-name field)] (if (isa? ((some-fn :effective_type :base_type) field) :type/Temporal) (tru "{0} is greater than {1}" field-name (humanize-datetime value (:unit field))) (tru "{0} is greater than {1}" field-name value)))) (defmethod humanize-filter-value :<= [root [_ field-reference value]] (let [field (magic.util/field-reference->field root field-reference) field-name (field-name field)] (if (isa? ((some-fn :effective_type :base_type) field) :type/Temporal) (tru "{0} is at most {1}" field-name (humanize-datetime value (:unit field))) (tru "{0} is at most {1}" field-name value)))) (defmethod humanize-filter-value :< [root [_ field-reference value]] (let [field (magic.util/field-reference->field root field-reference) field-name (field-name field)] (if (isa? ((some-fn :effective_type :base_type) field) :type/Temporal) (tru "{0} is less than {1}" field-name (humanize-datetime value (:unit field))) (tru "{0} is less than {1}" field-name value)))) ``` With these in place, both the unit tests pass and the UI reproduction now produces the right result. * Incorporated suggestions for humanized >= and <= wording for numeric and date values. Added unit tests for humanized data comparisons. * Updated comment string * Added a default case for `humanize-filter-value` of "{0} relates to {1}". IDK if there's anything better, but for now it's something.
-
Cal Herries authored
-
Cal Herries authored
-
Cal Herries authored
-
dpsutton authored
```diff - info.sunng/ring-jetty9-adapter {:mvn/version "0.22.1"} ; Drop-in replacement for official Ring Jetty adapter. Supports Jetty 11 webserver. + info.sunng/ring-jetty9-adapter {:mvn/version "0.22.3"} ; Drop-in replacement for official Ring Jetty adapter. Supports Jetty 11 webserver. ``` Simple change, and quite possibly a no-op. We have previously been overriding the jetty dep to be ```clojure org.eclipse.jetty/jetty-server {:mvn/version "11.0.17"} ``` And the dep tree before this change was: ``` info.sunng/ring-jetty9-adapter 0.22.1 X ring/ring-core 1.10.0 :use-top X org.eclipse.jetty/jetty-server 11.0.15 :use-top ``` This is saying it declared a dep on 11.0.15 but was ignoring that in favor of "use-top", aka the top level dependency we declared (11.0.17). But synk is a scanning tool that doesn't check the artifact but the manifests involved and flags issues in 11.0.15 and therefore Metabase despite us not having that version. Now the deps tree: ``` clj -X:deps tree :aliases '[:ee :drivers]' info.sunng/ring-jetty9-adapter 0.22.3 X org.eclipse.jetty/jetty-server 11.0.17 :use-top ``` Doesn't specify an older version of jetty and we're using the same jetty version as we have for the last bit.
-
Kamil Mielnik authored
* Reuse addOrUpdateDashboardCard * Extract 15993 repro * Extract 16334 repro * Extract 23137 repro * Extract 18067 repro * Remove unused alias * Add empty test suite for click-behavior * Add a test for text cards * Add createHeadingCard helper * Add a test for heading cards * Add createActionCard helper - make text/label params optional in helpers - remove unused dashboardId param in helpers * Add a test for an action card * Format code * Reuse createActionCard in #32974 repro * Simplify text code * Reuse createActionCard, createTextCard & getNextUnsavedDashboardCardId in dashboard back navigation e2e * Remove unused alias * Inline 1-line createLinkCard helper * Add createLinkCard helper * Add a test for link cards * Simplify interfaces of helper functions * Update test title * Add a test for object detail dashcard * Remove redundant identifier * Format code * Add data-testid to ClickBehaviorSidebar * Add setup for line chart test * Test the actual click behavior * Refactor expectDynamicAnchorClick to expectNextAnchorClick - get rid of manual mock resetting * Add test for editing URL filter * Refactor expectNextAnchorClick to onNextAnchorClick * Extract URL parameters test as a seprate one * Fix assertions - Add escapeCypressCurlyBraces * Assert user can use dashboard filters and click event columns * Use cy.get("aside") instead of sidebar functions - Revert adding data-testid to sidebars * Use all available parameters in the URL * Add test for 0 filters * Extract addFilter * Add a test for single dashboard filter - Add constants for magic numbers and values * Extract OBJECT_DETAIL_CHART * Use saveDashboard * Add a test for multiple dashboard filters * Improve URL assertion * Improve assertions * Format code * Add a test for saved question destination * Improve assertions * Consolidate assertions * Improve assertions * Add a test for saved question with single parameter passed * Update JSDoc * Extract GAUGE_QUESTION_DETAILS & PROGRESS_QUESTION_DETAILS * Reuse addOrUpdateDashboardCard * Add a test for saved question with multiple parameters passed * Extract FILTER_CREATED_AT & FILTER_COUNT * Do not use elevated privileges * Rename FILTER_COUNT to FILTER_QUANTITY * Reuse ORDERS_ID * Add a test for no saved question permissions * Create dashboard filters via API * Add a test * Add a test for dashboard target * Add test for 1 and multiple dashboard parameters * Extract addTextParameter & addTimeParameter * Improve assertions * Use different question as target * Use TARGET_QUESTION instead of SECRET_QUESTION * Add a test for no dashboard permissions * Add a test for drill-through menu behavior * Fix typo * Destructure location * Format code, remove console.log * Use slug instead of name where appropriate * Add a test case for editing the click behavior * Update comment * Commit a dumb change to trigger uberjar rebuild * Commit a dumb change to trigger uberjar rebuild * Optimize line chart question - add limit: 5 - update constants & assertions - rename LINE_CHART to QUESTION_LINE_CHART - extract clickLastLineChartPoint as click({ force: true }) is now needed * Fix click simulation * Revert "Commit a dumb change to trigger uberjar rebuild" This reverts commit 27ef0600ad0dae1dec98bf1e7282e5872b7293e7. * Revert "Commit a dumb change to trigger uberjar rebuild" This reverts commit a5141eb020db0dc9bd2ca61d47bae98b435e80c8. * Extract helpers * Reduce indentation, remove redundant assertions * Chain assertions * Rename test case * Use parseSpecialCharSequences and get rid of escapeCypressCurlyBraces * Assert dashboard pathname * Remove pointless assertions * Sort tests * Test reverting to default click behavior * Update post-merge conflicts * Update post-merge conflicts
-
- Oct 29, 2023
-
-
Ngoc Khuat authored
-
Uladzimir Havenchyk authored
-
- Oct 28, 2023
-
-
metamben authored
-
Nemanja Glumac authored
It should include `e2e_specs`. This has been missing from #35079.
-
- Oct 27, 2023
-
-
Nemanja Glumac authored
* Fix model metadata flakes * Do not use hard-coded ID * Tweak tests * Make viewport wider in order to fit the table content
-
Nemanja Glumac authored
* Stop caching the uberjar for E2E tests * Bring back SHA1 in an uberjar name * Adjust the download uberjar action * Fix uberjar name for percy
-
Mark Bastian authored
Co-authored-by:
dan sutton <dan@dpsutton.com>
-
Case Nelson authored
-
Ryan Laurie authored
-