* allow non-sequential IDs for DataSources in Cypress tests
* refactor redash-api to a set of Cypress commands
* support mounting Redash endpoints in Cypress routes
* fix some parameter specs by waiting for schema to load
* extract baseUrl from cypress.json
* Restyled by prettier (#5110)
Co-authored-by: Restyled.io <commits@restyled.io>
Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com>
Co-authored-by: Restyled.io <commits@restyled.io>
* on dashboard api calls - take the id from the beginning of the slug, unless there is no number in it - in that case, take the entire slug as id
* add dashboard id when showing links to dashboards
* change path to include new name when renaming dashboards
* move slug generation to backend
* redirect to new name after changing (this time with a proper promise)
* oh right, we already have a slug function
* add spec that makes sure that renamed dashboards are redirected to the
url which contains their new name
* use id-slug in all Cypress specs
* move dashboards from /dashboard/:slug to /dashboards/:id-:name_as_slug
* Update dashboard url as its name changes
* Update separator to be "/"
* Update missing dashboard urls
* Update api not to depend on int id
* Use '-' instead of '/' as separator and update Dashboard.get calls
* slug -> name_as_slug
* Keep slug urls on cypress
* Update route path
* Use legacy attr for GET
* Use getter for urlForDashboard
* Update dashboard url when loaded by slug
* Update Dashboard routes to use id instead of slug
* Update Dashboard handler tests
* Update Cypress tests
* Fix create new dashboard spec
* Use axios { params }
* Drop Ternary operator
* Send updated slug directly in 'slug' attr
* Update multiple urls Dashboard test name
* Update route names
Co-authored-by: Levko Kravets <levko.ne@gmail.com>
Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com>
Co-authored-by: Levko Kravets <levko.ne@gmail.com>
* Vertical navbar
* Update vertical menu look and add create menu.
* Make query editor work with vertical nav.
* Dark mode
* Fix create menu & make sidebar fixed.
* Update Alert pages layout
* Update System status pages
* Update Queries and Dashboards list pages
* Update Query Source and Query View pages
* Use dark theme for mobile navbar
* Update Dashboard page: fix Add widget/textbox panel positioning
* Dashboard page: fix layout issues when container changes its size (fixes known issues: navbar expand/collapse, scrollbar appears/hides)
* Fix dashboard page sticky header (there was a 15px space above it)
* Fix embeds
* Extract desktop navbar component; move mobile navbar and its styles to ApplicationLayout folder
* Remove old app header
* Fix tests
* Restore version info block
* Make Percy capture entire page
* Make vertical navbar expand/collapse animation smoother (as it's currently impossible to disable it :-( )
* Fix misc UI issues (show Create label on expanded menu; fix some CSS; don't select items on click)
* Allow to override navbars with DynamicComponent
* Fix misc UI issues: expand/collapse button animation, menu items styles, menu expand/collapse animation
* Hide submenu arrow; show username when menu is expanded
* Refine CSS and make it more isolated; adjust colors
* Update tests
Co-authored-by: Arik Fraimovich <arik@arikfr.com>
* change has_access and require_access signatures to work with the objects that require access, instead of their groups
* use the textless endpoint (/api/queries/:id/results) for pristine
queriest
* Revert "use the textless endpoint (/api/queries/:id/results) for pristine"
This reverts commit cd2cee7738.
* go to textless /api/queries/:id/results by default
* change `run_query`'s signature to accept a ParameterizedQuery instead of
constructing it inside
* raise HTTP 400 when receiving invalid parameter values. Fixes#3394
* enqueue jobs for ApiUsers
* rename `id` to `user_id`
* support executing queries using Query api_keys by instantiating an ApiUser that would be able to execute the specific query
* show deprecation messages for ALLOW_PARAMETERS_IN_EMBEDS. Also, move
other message (email not verified) to use the same mechanism
* add link to forum message regarding embed deprecation
* change API to /api/queries/:id/dropdowns/:dropdown_id
* split to 2 different dropdown endpoints and implement the second
* add test cases for /api/queries/:id/dropdowns/:id
* use new /dropdowns endpoint in frontend
* first e2e test for sharing embeds
* Pleasing the CodeClimate overlords
* All glory to CodeClimate
* remove residues from bad rebase
* add query id and data source id to serialized public dashboards
* add global parameters directive to public dashboards page
* allow access to a query by the api_key of the dashboard which includes
it
* rename `object` to `obj`
* simplify permission tests once `has_access` accepts groups
* support global parameters for public dashboards
* change has_access and require_access signatures to work with the objects that require access, instead of their groups
* rename `object` to `obj`
* simplify permission tests once `has_access` accepts groups
* no need to log `is_api_key`
* send parameters to public dashboard page
* allow access to a query by the api_key of the dashboard which includes it
* disable sharing if dashboard is associated with unsafe queries
* remove cypress test added in the wrong place due to a faulty rebase
* add support for clicking buttons in cy.clickThrough
* Cypress test which verifies that dashboards with safe queries can be shared
* Cypress test which verifies that dashboards with unsafe queries can't be shared
* remove duplicate tests
* use this.enabled and negate when needed
* remove stale comment
* add another Cypress test to verify that unauthenticated users have access to public dashboards with parameters
* obviously, I commit 'only' the first time I use it
* search for query access by query id and not api_key
* no need to fetch latest query data as it is loaded by frontend from the textless endpoint
* test that queries associated with dashboards are accessible when supplying the dashboard api_key
* propagate `isDirty` down to `QueryBasedParameterInput`
* go to /api/:id/dropdown while editing a query, since dropdown queries might still not be associated with the parent. see #3711
* show helpful error message if dropdown values cannot be fetched
* use backticks instead of line concatenation
* remove requirement to have direct access to dropdown query in order validate it. parent query association checks are sufficient
* remove isDirty-based implementation and allow dropdown queries through nested ACL even if they aren't associated yet (given that the user has _direct_ access to the dropdown query)
* fix tests to cover all cases for /api/queries/:id/dropdowns/:id
* fix indentation
* require access to the query, not the data source
* resolve dashboard user by query id
* apply new copy to Cypress tests
* if only something would have prevented me from commiting an 'only' call 🤔
* very important handling of whitespace
* respond to parameter's Apply button
* text widgets are safe for sharing
* remove redundant event
* add a safety check that object has dashboard_api_keys before calling it
* supply a parameter value for text parameters to have it show up
* add parameter values for date and datetime
* use the current year and month to avoid pagination
* use Cypress.moment() instead of preinstalled moment()
* explicitly create parameters
* refresh query data if a querystring parameter is provided
* avoid sending a data_source_id - it's only relevant to unsaved queries, since a saved query's data_source is available in the backend
* remove empty query text workaround
* provide default value to parameter
* add a few more dashboard sharing specs
* lint
* wait for DynamicTable to appear to reveal that actual results are displaying
* override error message for unsafely shared widgets
* Dashboard grid React migration
* Updated tests
* Fixes comments
* One col layout
* Tests unskipped
* Test fixes
* Test fix
* AutoHeight feature
* Kebab-cased
* Get rid of lazyInjector
* Replace react-grid-layout with patched fork to fix performance issues
* Fix issue with initial layout when page has a scrollbar
* Decrease polling interval (500ms is too slow)
* Rename file to match it's contents
* Added some notes and very minor fixes
* Fix Remove widget button (should be visible only in editing mode); fix widget actions menu
* Fixed missing grid markings
* Enhanced resize handle
* Updated placeholder color
* Render DashboardGrid only when dashboard is loaded
* Add touch state to parameters and autoupdate query
* Use values change event instead of $watch
* Remove getQueryResultDebounced
* Add Apply button
* Remove Input Number spinners for Parameters
* Make Apply Button optional
* Update share_embed_spec
* Change debounce to the Parameters component
* Remove unnecessary click on Execute query
* Add apply button to the remaining places
* Update dashboard_spec
* Use onKeyUp for InputNumber
* Simplify onParametersValuesChanged
* Update DateTime onChange function
* Don't apply when modifier key is pressed
* Remove refresh Button from Parameters
* Update apply button styling
* Update apply right distance
* Remove debounce for testing
* Use data-dirty instead of classNames for styling
* Make sure $apply runs before calling onChange