Skip to content
Snippets Groups Projects
user avatar
Kamil Mielnik authored
* Add actions dropdown to object detail modal (#32331)

* Rename showActions to showControls

* Use Flex

* Import Flex from local modules

* Make horizontalAttachments a prop in EntityMenu

* Use EntityMenu to create actions dropdown

* Render actions menu conditionally

* Add useActionListQuery

* Fetch actions in ObjectDetailHeader

* Remove unused canRunActions prop

* Move logic to root component

* Fix tests

* Use canRunAction and fetch databases in ObjectDetail view

* Rename actions to actionItems and getActions to getActionItems

* Extract getActionItems to utils

* Update tests

* Rename modelActions to actions

* Extract isValidImplicitDeleteAction and isValidImplicitUpdateAction out of getActionItems

* Consolidate getActionItems

* Use theme scale values for Mantine Flex component

* Either render all controls or none

* Fix default props/state in EntityMenu

* Fix props

* Update ObjectDetail unit tests

* Add unit tests for isValidImplicitDeleteAction and isValidImplicitUpdateAction

* Update tests with more specific non-implicit action cases

* Use singular form to match function interface

* Add unit tests for getActionItems

* Update test case name

* Avoid using Database constructor
- Use metadata.database() instead

* Add integration tests for basic cases when action menu is rendered and not

* Fix post-merge error

* Endpoint to fetch implicit actions param values (#32466)

* Add default update action to actions dropdown in object detail modal (#32433)

* Rename showActions to showControls

* Use Flex

* Import Flex from local modules

* Make horizontalAttachments a prop in EntityMenu

* Use EntityMenu to create actions dropdown

* Render actions menu conditionally

* Add useActionListQuery

* Fetch actions in ObjectDetailHeader

* Remove unused canRunActions prop

* Move logic to root component

* Fix tests

* Use canRunAction and fetch databases in ObjectDetail view

* Rename actions to actionItems and getActions to getActionItems

* Extract getActionItems to utils

* Update tests

* Rename modelActions to actions

* Extract isValidImplicitDeleteAction and isValidImplicitUpdateAction out of getActionItems

* Consolidate getActionItems

* Use theme scale values for Mantine Flex component

* Either render all controls or none

* Fix default props/state in EntityMenu

* Fix props

* Update ObjectDetail unit tests

* Add unit tests for isValidImplicitDeleteAction and isValidImplicitUpdateAction

* Update tests with more specific non-implicit action cases

* Use singular form to match function interface

* Add unit tests for getActionItems

* Update test case name

* Sort imports

* Rename initialValues to values

* Rename dashcardParamValues to initialValues

* Lift fetchInitialValues up from ActionParametersInputForm

* Rename refetchValues to prefetchValues

* Fix tests

* Refactor shouldPrefetch to be a prop

* Get rid of dashboard and dashcard props from ActionParametersInputForm

* Lift the canPrefetch condition up as it is not desired outside of dashboards

* Hook update action with temporary API

* Use executeActionId in fetchInitialValues

* Fix post-merge conflict

* Rename prefetchValues to prefetchDashcardValues

* Use the new endpoint

* Use rem values instead of scale values
- See https://github.com/metabase/metabase/pull/32331#discussion_r1267827835

* Lift data reloading out of executeRowAction

* Add onSuccess prop to ActionExecuteModal

* Use onSubmitSuccess from ActionParametersInputForm

* Reload question after action is successful

* Fix stale prop issues in ActionParametersInputForm

* Fix object id in initialValues

* Add prefetchesInitialValues prop to make useActionForm more generic

* Ignore public actions for now

* Fix id mixup

* Update unit test

* Remove redundant memoization

* Use modern JS syntax instead of noop

* Move getNextId to __support__/utils

* Extract isImplicitDeleteAction & isImplicitUpdateAction

* Reuse isImplicitDeleteAction

* Log error to console

* Get rid of useLatest

* Fix post-merge build error

* Add default delete action to actions dropdown in object detail modal (#32556)

* Rename showActions to showControls

* Use Flex

* Import Flex from local modules

* Make horizontalAttachments a prop in EntityMenu

* Use EntityMenu to create actions dropdown

* Render actions menu conditionally

* Add useActionListQuery

* Fetch actions in ObjectDetailHeader

* Remove unused canRunActions prop

* Move logic to root component

* Fix tests

* Use canRunAction and fetch databases in ObjectDetail view

* Rename actions to actionItems and getActions to getActionItems

* Extract getActionItems to utils

* Update tests

* Rename modelActions to actions

* Extract isValidImplicitDeleteAction and isValidImplicitUpdateAction out of getActionItems

* Consolidate getActionItems

* Use theme scale values for Mantine Flex component

* Either render all controls or none

* Fix default props/state in EntityMenu

* Fix props

* Update ObjectDetail unit tests

* Add unit tests for isValidImplicitDeleteAction and isValidImplicitUpdateAction

* Update tests with more specific non-implicit action cases

* Use singular form to match function interface

* Add unit tests for getActionItems

* Update test case name

* Sort imports

* Rename initialValues to values

* Rename dashcardParamValues to initialValues

* Lift fetchInitialValues up from ActionParametersInputForm

* Rename refetchValues to prefetchValues

* Fix tests

* Refactor shouldPrefetch to be a prop

* Get rid of dashboard and dashcard props from ActionParametersInputForm

* Lift the canPrefetch condition up as it is not desired outside of dashboards

* Hook update action with temporary API

* Use executeActionId in fetchInitialValues

* Fix post-merge conflict

* Rename prefetchValues to prefetchDashcardValues

* Use the new endpoint

* Use rem values instead of scale values
- See https://github.com/metabase/metabase/pull/32331#discussion_r1267827835

* Lift data reloading out of executeRowAction

* Add onSuccess prop to ActionExecuteModal

* Use onSubmitSuccess from ActionParametersInputForm

* Reload question after action is successful

* Fix stale prop issues in ActionParametersInputForm

* Fix object id in initialValues

* Add prefetchesInitialValues prop to make useActionForm more generic

* Ignore public actions for now

* Fix id mixup

* Update unit test

* Add DeleteObjectModal

* Introduce useActionQuery

* Use useActionQuery in DeleteObjectModal

* Hook action execution

* Fix typo in copy

* Sort exports

* Remove redundant memoization

* Use modern JS syntax instead of noop

* Move getNextId to __support__/utils

* Extract isImplicitDeleteAction & isImplicitUpdateAction

* Reuse isImplicitDeleteAction

* Fix object modal getting closed with Escape key when delete or update modals are open

* Rename isUpdateModalOpen to isActionExecuteModalOpen, updateActionId to actionId

* Navigate to sibling row or close the modal on deletion

* Revert "Navigate to sibling row or close the modal on deletion"

This reverts commit 8b24685eee5cd968f53cc14b7194a66588fb5845.

* Close object detail on deletion

* Add error handling

* Add error handling

* Greatly simplify DeleteObjectModal
- remove useActionQuery usage
- remove useActionQuery
- remove DeleteObjectModal.styled.tsx

* Improve diff

* Shorten code

* Always cast objectId to number
- See https://metaboat.slack.com/archives/C057T1QTB3L/p1690292706101109?thread_ts=1690279562.697669&cid=C057T1QTB3L
  "the reason you’re not seeing it fail on the sample dataset is probably because you’re
  using h2 for sample-dataset. it’ll fail the same if you use a postgres one.
  h2 is probably more loose in type so it allows sending a string for id.
  nevertheless, I think you can use cast it to the correct type using the param type.
  I think we did that on the UI where we execute actions from model details page."

* Inline disabled into JSX

* Use a more friendly error message when failed to delete an object because it's referenced by other objects
- See: https://metaboat.slack.com/archives/C057LE0Q4PQ/p1690377421352469?thread_ts=1690208614.530869&cid=C057LE0Q4PQ

* Revert "Use a more friendly error message when failed to delete an object because it's referenced by other objects"

This reverts commit 28327ac9b53ae92300e579d047b7f136d54e581e.

Friendly message is going to be implemented in https://github.com/metabase/metabase/issues/32694

* Rename initialValues back to dashcardParamValues in ActionVizForm

* Tests for basic deletes and updates on object detail views (#32525)

* Rename showActions to showControls

* Use Flex

* Import Flex from local modules

* Make horizontalAttachments a prop in EntityMenu

* Use EntityMenu to create actions dropdown

* Render actions menu conditionally

* Add useActionListQuery

* Fetch actions in ObjectDetailHeader

* Remove unused canRunActions prop

* Move logic to root component

* Fix tests

* Use canRunAction and fetch databases in ObjectDetail view

* Rename actions to actionItems and getActions to getActionItems

* Extract getActionItems to utils

* Update tests

* Rename modelActions to actions

* Extract isValidImplicitDeleteAction and isValidImplicitUpdateAction out of getActionItems

* Consolidate getActionItems

* Use theme scale values for Mantine Flex component

* Either render all controls or none

* Fix default props/state in EntityMenu

* Fix props

* Update ObjectDetail unit tests

* Add unit tests for isValidImplicitDeleteAction and isValidImplicitUpdateAction

* Update tests with more specific non-implicit action cases

* Use singular form to match function interface

* Add unit tests for getActionItems

* Update test case name

* Sort imports

* Rename initialValues to values

* Rename dashcardParamValues to initialValues

* Lift fetchInitialValues up from ActionParametersInputForm

* Rename refetchValues to prefetchValues

* Fix tests

* Refactor shouldPrefetch to be a prop

* Get rid of dashboard and dashcard props from ActionParametersInputForm

* Lift the canPrefetch condition up as it is not desired outside of dashboards

* Hook update action with temporary API

* Use executeActionId in fetchInitialValues

* Fix post-merge conflict

* Rename prefetchValues to prefetchDashcardValues

* Use the new endpoint

* Use rem values instead of scale values
- See https://github.com/metabase/metabase/pull/32331#discussion_r1267827835



* Lift data reloading out of executeRowAction

* Add onSuccess prop to ActionExecuteModal

* Use onSubmitSuccess from ActionParametersInputForm

* Reload question after action is successful

* Fix stale prop issues in ActionParametersInputForm

* Fix object id in initialValues

* Add prefetchesInitialValues prop to make useActionForm more generic

* Add test cases for other types of actions

* Ignore public actions for now

* Add e2e test for actions in object detail view

* Add second step and extract helpers

* Remove duplication by changing hierarchy

* Add step with enabling model actions

* Fix visiting model page

* Remove redundant code

* Ignore public actions for now

* Fix id mixup

* Update unit test

* Add objectId argument and function to open the modal

* Define whole order object to reuse

* Implement assertOrderFormPrefilled

* Assert Created At

* Add assertion to check whether object with new id has been reloaded

* Use all caps for constants

* Verify updating an object

* Fix test name

* Assert toast is shown on update

* Format code

* Use writable tables instead of sample db to avoid persisting updates between tests
- do not mock objects, assert against whatever comes from API

* Format code to wake GitHub up

* Add DeleteObjectModal

* Introduce useActionQuery

* Use useActionQuery in DeleteObjectModal

* Hook action execution

* Fix typo in copy

* Sort exports

* Remove redundant memoization

* Use modern JS syntax instead of noop

* Move getNextId to __support__/utils

* Extract isImplicitDeleteAction & isImplicitUpdateAction

* Reuse isImplicitDeleteAction

* Fix object modal getting closed with Escape key when delete or update modals are open

* Rename isUpdateModalOpen to isActionExecuteModalOpen, updateActionId to actionId

* Navigate to sibling row or close the modal on deletion

* Revert "Navigate to sibling row or close the modal on deletion"

This reverts commit 8b24685eee5cd968f53cc14b7194a66588fb5845.

* Close object detail on deletion

* Add error handling

* Add error handling

* Greatly simplify DeleteObjectModal
- remove useActionQuery usage
- remove useActionQuery
- remove DeleteObjectModal.styled.tsx

* Improve diff

* Shorten code

* Rename initialValues back to dashcardParamValues in ActionVizForm

* Extract assertScoreUpdatedInTable

* Extract visitModelDetail

* Add deletion and toast assertion

* Remove unused arguments

* Assert delete failed

* Update tests order after starting with writable db

* Move assertions to beginning of the test, remove enableDatabaseActions

* Test disabling model actions

* Add extra assertion

* Update names

* Update the deletion assertion

* Remove unused code

* Wrap tests in another describe, setup dashboard test

* Fix setup, use asAdmin util

* Add assertion for dashboard object view

* Update test names

* Extract actions to a constant

* Add test to open update object modal

* Update assertion order

* Add test to open delete object modal

* Organize tests

* Add a test case for implicit public delete action & implicit archived delete action

* Remove redundant async

* Reuse findActionInActionMenu

* Remove redundant constant

* Fix tests

* Add a test case for databases with disabled actions

* Update wording

* Use dataset instad of a query question

* Revert name change as it does not make sense

* Format code

* Add a test case for users with no write permission

* Add a test case for when showControls is false

* Add a test case for models with clauses

* Use metadata.question() instead of new Question()

* Tests for various number of PKs in a model (#32784)

* Add a test case for 0 PKs in a model

* Add a test case for 2 PKs in a model

* Improve test names

* Fix typo

* Use plural form for "PK"

---------

Co-authored-by: default avatarNgoc Khuat <qn.khuat@gmail.com>
338e80ba
History
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Name Last commit Last update
..