diff --git a/frontend/src/metabase/routes.jsx b/frontend/src/metabase/routes.jsx index accdb80ae2fea490f1435f846c9ed850bdc2d13f..caca7e0b163268c2f887294ff6d04c843ea8b133 100644 --- a/frontend/src/metabase/routes.jsx +++ b/frontend/src/metabase/routes.jsx @@ -91,6 +91,7 @@ import { trackPageView } from "metabase/lib/analytics"; import { getAdminPaths } from "metabase/admin/app/selectors"; import ActionPage from "metabase/writeback/containers/ActionCreatorPage"; +import ActionsListPage from "metabase/writeback/containers/ActionsListPage"; const MetabaseIsSetup = UserAuthWrapper({ predicate: authData => authData.hasUserSetup, @@ -388,6 +389,8 @@ export const getRoutes = store => ( <Route path="create" component={ActionPage} /> <Route path=":actionId" component={ActionPage} /> </Route> + {/* DEV PAGE: REMOVE BEFORE SHIPPING */} + <Route path="/actions" component={ActionsListPage} /> </Route> </Route> diff --git a/frontend/src/metabase/writeback/containers/ActionsListPage.tsx b/frontend/src/metabase/writeback/containers/ActionsListPage.tsx new file mode 100644 index 0000000000000000000000000000000000000000..03832cb621012d683de52723bb9b8a0a017d36dc --- /dev/null +++ b/frontend/src/metabase/writeback/containers/ActionsListPage.tsx @@ -0,0 +1,50 @@ +// dev page, should NOT be shipped + +import React from "react"; +import { Link } from "react-router"; +import _ from "underscore"; +import { connect } from "react-redux"; + +import Actions from "metabase/entities/actions"; +import type { WritebackQueryAction } from "metabase-types/api"; + +function ActionsListPage({ actions }: { actions: WritebackQueryAction[] }) { + return ( + <div className="p4"> + <div className="flex justify-between"> + <h1>Actions</h1> + <Link to="/action/create" className="Button Button--primary"> + Create Action + </Link> + </div> + <div className="bordered rounded mt3"> + {actions + ?.sort((a, b) => b.id - a.id) + .map(action => ( + <ActionListItem action={action} key={action.id} /> + ))} + </div> + </div> + ); +} + +const ActionListItem = ({ action }: { action: WritebackQueryAction }) => { + return ( + <Link to={`/action/${action.id}`}> + <div className="border-bottom p1" style={{}}> + <strong> + <span className="text-primary">{action.name}</span> + <span className="text-light ml1">{action.id}</span> + </strong> + {!!action.description && ( + <div className="mt1">{action.description}</div> + )} + </div> + </Link> + ); +}; + +export default _.compose( + Actions.loadList(), + connect(ActionsListPage), +)(ActionsListPage);