This project is mirrored from https://github.com/metabase/metabase.
Pull mirroring updated .
- Nov 08, 2021
-
-
Tomás Pinho authored
multiple user groups from Okta
-
Greg Wilson authored
* Added documentation on how to connect to Google Analytics * Added section explaining how to enable Google Analytics API * Reduced png size by 35 percent using optipng * Update docs/administration-guide/databases/google-analytics.md Co-authored-by:
Jeff Bruemmer <jeffbruemmer@gmail.com> * Update docs/administration-guide/databases/google-analytics.md Co-authored-by:
Jeff Bruemmer <jeffbruemmer@gmail.com> * Update docs/administration-guide/databases/google-analytics.md Co-authored-by:
Jeff Bruemmer <jeffbruemmer@gmail.com> * Update docs/administration-guide/databases/google-analytics.md Co-authored-by:
Jeff Bruemmer <jeffbruemmer@gmail.com> * Update docs/administration-guide/databases/google-analytics.md Co-authored-by:
Damon P. Cortesi <d.lifehacker@gmail.com> * Update docs/administration-guide/databases/google-analytics.md Co-authored-by:
Damon P. Cortesi <d.lifehacker@gmail.com> * Removed reference to Google Analytics versions for API scopes * Update docs/administration-guide/databases/google-analytics.md Co-authored-by:
etoulas <etoulas@users.noreply.github.com> * Editing the Google Analytics docs Co-authored-by:
Leandro Lamaison <leandro.lamaison@ank.app> Co-authored-by:
Leandro Lamaison <69637098+lama-ank@users.noreply.github.com> Co-authored-by:
Jeff Bruemmer <jeffbruemmer@gmail.com> Co-authored-by:
Damon P. Cortesi <d.lifehacker@gmail.com> Co-authored-by:
etoulas <etoulas@users.noreply.github.com>
-
Alexander Lesnenko authored
* add progress static viz * fix negative values, amend contract
-
Alexander Polyankin authored
-
Anton Kulyk authored
-
Jeff Evans authored
* Add backend support for keystore type secrets Adding code to handle keystore type secrets Adding test code to create and verify a keystore through the secret DB roundtrip Adding util fn to secret namespace for converting the value to file, and adding test for that
-
Alexander Polyankin authored
-
Noah Moss authored
-
Alexander Polyankin authored
-
Jeff Bruemmer authored
-
Anton Kulyk authored
* Support datasets in search * Extend SearchResult not to be a link on demand * Use common SearchResult component for data picker * Wrap data picker search results in `li` * Fix E2E test selector * Fix E2E test selector
-
Anton Kulyk authored
* Extract BaseSelectListItem component * Remove redundant prop types * Switch to custom SelectList for data bucket step * Remove iconPosition prop from AccordionList * Fix SelectListItem
-
Anton Kulyk authored
-
- Nov 06, 2021
-
-
Dalton authored
* add DimensionInfo component * reorder imports * add a max height to the description * add index.js
-
Dalton authored
* simplify logic for checking if a parameter's fields are populated with values * lint fix * always define a fields array * make sure fields is defaulted to array in template tag sidebar
-
- Nov 05, 2021
-
-
Dalton authored
* add DimensionLabel ui component add index.js Update size convert jsx to tsx move logic from info file to unit test go back to jsx * replace IconWrapper with a styled(Icon)
-
Alexander Polyankin authored
-
Cam Saul authored
-
Cam Saul authored
* Fix sandboxing when the source query gets cached * Fix circular references
-
Noah Moss authored
-
Alexander Polyankin authored
-
Anton Kulyk authored
* Remove eslint comment * Reorder imports * Extract UndoList * Use func declaration for DefaultMessage * Remove class decorators * Turn UndoListing into a func component * Cleanup UndoListing * Fix undo and dismiss * Restyle UndoListing * Fix Cypress test using undo toast
-
Ariya Hidayat authored
The rotating spinner is replaced by a static hourglass icon.
-
Alexander Lesnenko authored
-
Anton Kulyk authored
* Add an E2E test * Undo turning a question into a dataset
-
Phil Brown authored
Add :mb-jetty-ssl-client-auth boolean config key to require ssl client auth when set.
-
- Nov 04, 2021
-
-
Jeff Evans authored
Add a new dynamic var - *source-query* - to sqp.qp to bind the current source-query, and bind that in the same place that *table-alias* is currently bound Update bigquery-cloud-sqp qp implementation to check the sqp.qp/*source-query*, and only qualify the source query alias if the type of source query is a table (which is apparently required; see #15074) Add test for #18742
-
Ariya Hidayat authored
-
Anton Kulyk authored
* Add basic tests for GUI question header * Reorganise tests * Add basic tests for native questions header * Group saved question tests * Test filters in question header * Test "Started from ..." label * Test refresh button * Add useToggle hook * Turn ViewHeader into a functional component * Reorder imports * Extract some components * Extract ViewTitleHeader components * Fix padding * Extract visual components * Fix backticks * Fix padding * Fix header items alignment * Minor fix
-
Anton Kulyk authored
* Add repro for #18818 * Fix date time field check in JoinStep
-
Alexander Polyankin authored
-
Jeff Bruemmer authored
-
dpsutton authored
* Handle api/tiles requests for native queries Ordinarily the api takes the source query and adds in a filter clause for a region: ```clojure {:database 19 :query {:source-table 88 :fields [[:field 562 nil] [:field 574 nil] [:field 576 nil]] :limit 2000} :type :query} {:database 19 :query {:source-table 88 :fields [[:field 562 nil] [:field 574 nil] [:field 576 nil]] :limit 2000 :filter [:inside [:field 576 nil] [:field 574 nil] -40.97989944013222 -179.99999564141046 -66.51326189011354 -134.99999673105785]} :type :query :async? false} ``` But when native, this would break, for three different reasons: - native queries don't necessarily (or possibly) know their field ids. So the api request it would construct would have `undefined` in the slot where the field-id would normally go. This would cause the route to 404 as it would fail to match the expected numeric part of the url - just passing in the field name isn't suffiencient, because mbql cannot natively use an mbql filter clause into a native snippet. We do this to a limited extent with filters and substitution but this requires a marker like `{{filter}}` placeholder for us to add the filter text. - when using `[:field name ...]` type field references we need the base-type of a field in order to construct a query. So the solution: - allow the route to take field ids or names - if native, rewrite the query to be a nested query using the native query as the source query. ie, "select name, lat, long from table" -> "select source.* from (select name, lat, long from table) source" but in mbql so we can add our fliter clause - if a string name is passed in, annotate it with a base-type of :type/Float since we are dealing with lats and longs. A concern was that we need to include the source-metadata. I'm omitting this because we are essentially "select * from nested" so we just take what we want, and the route already expects the index of the lat and long columns and then selects only those from the query results. As it stands we end up with a working query but a log ``` 2021-11-02 14:37:25,470 DEBUG middleware.log :: GET /api/tiles/2/1/1/latitude/longitude/1/2/ 200 47.3 ms (5 DB calls) App DB connections: 2/13 Jetty threads: 9/50 (2 idle, 0 queued) (128 total active threads) Queries in flight: 0 (0 queued); postgres DB 19 connections: 3/6 (0 threads blocked) 2021-11-02 14:37:25,474 WARN middleware.add-implicit-clauses :: Warning: cannot determine fields for an explicit `source-query` unless you also include `source-metadata`. 2021-11-02 14:37:25,490 WARN middleware.add-implicit-clauses :: Warning: cannot determine fields for an explicit `source-query` unless you also include `source-metadata`. 2021-11-02 14:37:25,501 DEBUG middleware.log :: GET /api/tiles/2/0/2/latitude/longitude/1/2/ 200 39.4 ms (5 DB calls) App DB connections: 1/13 Jetty threads: 8/50 (2 idle, 0 queued) (128 total active threads) Queries in flight: 0 (0 queued); postgres DB 19 connections: 2/6 (0 threads blocked) ``` It might be possible to suppress these logs when we are in a query context of `:map-tiles`. Or we might be able to require the frontend to send along the metadata to include in the query. I didn't do this yet since it seems to work fine and it would just make the urls quite long if there are lots of columns (and the metadata can get quite verbose). ```clojure ;; source query of the card {:type :native :native {:query "select name, latitude, longitude from zomato limit 2000;" :template-tags {}} :database 19} ;; nest it into a source query {:database 19 :type :query :query {:source-query {:template-tags {} :native "select name, latitude, longitude from zomato limit 2000;"}}} ;; add the `:inside` filter for the tile {:database 19 :type :query :query {:source-query {:template-tags {} :native "select name, latitude, longitude from zomato limit 2000;"} :filter [:inside [:field "latitude" {:base-type :type/Float}] [:field "longitude" {:base-type :type/Float}] 0.0 89.99999782070523 -66.51326189011354 179.99999564141046]} :async? false} ``` * Add docstring and make function private * url encode column names to api/tiles
-
dpsutton authored
* Annotate collection tree with datasets and cards In order to know which collections have items of interest, they are annotated with two new keys: `:here` and `:below`. These keys will have a collection (in clojure a set, in js an array) which could contain dataset and card, depending if they have those items "here" or in collections below this node. We include information about which subtrees are interesting so we know to show or highlight those. We include information about which nodes have interesting things versus which contain nodes which have things so we can possibly implement drilldown in an intelligent manner. ie ``` . ├── root ``` could expand automatically to ``` . ├── root │ ├── collection │ │ ├── collection that actually has items ``` without requiring someone to click on the intermediate collection which has no items itself, just a collection with items. http://localhost:3000/api/collection/tree?tree=true ```js { "name": "super", "id": 154, "location": "/", "below": ["dataset"] ;; indicates collections below have datasets "children": [{ "name": "parent", "id": 155, "location": "/154/", "below": ["dataset"] ;; indicates the same "children": [{ "children": [], "slug": "contains", "name": "contains", "here": ["dataset"], ;; this node has datasets "id": 157, "location": "/154/155/", }], }, { "children": [], "name": "sibling", "id": 156, "location": "/154/", }], } ``` * docstring * Alignment for readability
-
Jeff Evans authored
* Change all active TEXT columns in MySQL app DB to LONGTEXT Add new text.type Liquibase property to dynamically select the correct text type to use, per DB (which is LONGTEXT for MySQL), very similar to the existing blob.type one Adding new migrations that update all existing app DB TEXT columns to LONGTEXT columns, only for mariadb/mysql Update migrations linter to ensure no new text types get added, via a new predicate that searches for text types being added Do the same logic for "blob" now (should be "${blob.type}"), update rule and test Add test for migrations, that checks the new types, for all types in scope for this PR, to ensure that they have all been changed to their expected DB-specific type (either LONGTEXT for MySQL or TEXT/CLOB for others) Updating a couple migrations to remove special casing that was originally done only for MySQL to simply make them universally "${text.type}", in order to unify behavior and reduce surprises going forward Co-authored-by:
Cam Saul <github@camsaul.com>
-
Alexander Polyankin authored
-
Ariya Hidayat authored
-
Jeff Bruemmer authored
-
- Nov 03, 2021
-
-
Cam Saul authored
* Drop long-unused Table.entity_name column * Add NOT NULL constraint to Card.database_id * Test fix
🔧 * Test fix🔧 * Fix migration * Add note about H2 shell to deps.edn * Add new SQL migration to attempt to set database_id when unset * Remove data migration that is now done in Liquibase land * Oops, '$.database', not '$.database_id' * Parse ints as signed rather than unsigned just to be safe (they *might* be -1337 if they're really broken) * Don't run for H2 * Update comment * Fix migration indentation * Clean namespace * Use new migration number. * Use the new migration numbers * Adopt new migration numbering scheme * Fix comments * Fix MySQL + MariaDB insanity * Fix ID range validation * Actually 382 is the last legacy ID * Improved validation and tests * Adopt the new-new migration ID format. * Test fixes🔧 * Fix merge * Simplify precondition -
Cam Saul authored
* Revert changes from Jeff's PR * Add index to ModerationReview moderated_item_type + moderated_item_id * Add to 0.41.2 instead * Require explicit index name for createIndex * Move 41.2 migrations to after the 41.0 migrations * Adopt new migration numbering scheme * Fix comments * Fix MySQL + MariaDB insanity * Fix ID range validation * Actually 382 is the last legacy ID * Improved validation and tests * Adopt the new-new migration ID format. * Test fixes
🔧
-