* feat ui: dashboards redesign start * more cards * fix ui: more different cards... * feat ui: finish cards, all trigger, all icons * change(ui): added missin const * feature(ui): new dashboard modal * feature(ui): new dashboard modal * change(ui): new cards * change(ui): dashboard redesign * change(ui): dashboard redesign * change(ui): dashboard redesign * change(ui): modal context and alert form * change(ui): table card show more with modal * change(ui): examples * change(ui): example categorize and other improvements * change(ui): example categorize and other improvements * change(ui): performance cards * change(ui): insights card * Various style updates in dashboards and other pages. (#2308) * Various minor style updates * Various style improvements * Update ExampleCards.tsx * change(ui): fixed an issue with card create * change(ui): fixed an issue with card create * change(ui): default filters and events order * change(ui): random data * Dashboards redesign - improvments (#2313) * Various minor style updates * Various style improvements * Update ExampleCards.tsx * various minor improvements in dashbaords. * revised dashboard widget header * change(ui): sessions by user * change(ui): funnel example * change(ui): modal height and scroll * change(ui): example cards with data * change(ui): example cards with data * change(ui): funnel bar text color * change(ui): example cards overlay click * change(ui): path analysis filter card --------- Co-authored-by: Shekar Siri <sshekarsiri@gmail.com> Co-authored-by: Sudheer Salavadi <connect.uxmaster@gmail.com>
83 lines
2.6 KiB
TypeScript
83 lines
2.6 KiB
TypeScript
import {useObserver} from 'mobx-react-lite';
|
|
import React from 'react';
|
|
import {Button, Modal, Form, Icon} from 'UI';
|
|
|
|
import {useStore} from 'App/mstore'
|
|
import Select from 'Shared/Select';
|
|
|
|
interface Props {
|
|
metricId: string,
|
|
show: boolean;
|
|
closeHandler?: () => void;
|
|
}
|
|
|
|
function DashboardSelectionModal(props: Props) {
|
|
const {show, metricId, closeHandler} = props;
|
|
const {dashboardStore} = useStore();
|
|
const dashboardOptions = dashboardStore.dashboards.map((i: any) => ({
|
|
key: i.id,
|
|
label: i.name,
|
|
value: i.dashboardId,
|
|
}));
|
|
const [selectedId, setSelectedId] = React.useState(dashboardOptions[0].value);
|
|
|
|
const onSave = () => {
|
|
const dashboard = dashboardStore.getDashboard(selectedId)
|
|
if (dashboard) {
|
|
dashboardStore.addWidgetToDashboard(dashboard, [metricId]).then(closeHandler)
|
|
}
|
|
}
|
|
|
|
React.useEffect(() => {
|
|
const handleEsc = (e: KeyboardEvent) => {
|
|
if (e.key === 'Escape' || e.key === 'Esc') {
|
|
closeHandler();
|
|
}
|
|
}
|
|
|
|
document.addEventListener('keydown', handleEsc, false);
|
|
|
|
return () => {
|
|
document.removeEventListener('keydown', handleEsc, false);
|
|
}
|
|
}, [])
|
|
|
|
return useObserver(() => (
|
|
<Modal size="small" open={show} onClose={closeHandler}>
|
|
<Modal.Header className="flex items-center justify-between">
|
|
<div className='text-xl font-medium'>{'Add to selected dashboard'}</div>
|
|
<Icon
|
|
role="button"
|
|
tabIndex="-1"
|
|
color="gray-dark"
|
|
size="14"
|
|
name="close"
|
|
onClick={closeHandler}
|
|
/>
|
|
</Modal.Header>
|
|
|
|
<Modal.Content>
|
|
<Form.Field>
|
|
<label className="mb-2">{'Dashbaord:'}</label>
|
|
<Select
|
|
options={dashboardOptions}
|
|
defaultValue={dashboardOptions[0].value}
|
|
onChange={({value}: any) => setSelectedId(value.value)}
|
|
/>
|
|
</Form.Field>
|
|
</Modal.Content>
|
|
<Modal.Footer>
|
|
<Button
|
|
variant="primary"
|
|
onClick={onSave}
|
|
className="float-left mr-2 "
|
|
>
|
|
Add
|
|
</Button>
|
|
<Button className="mr-2" onClick={closeHandler}>{'Cancel'}</Button>
|
|
</Modal.Footer>
|
|
</Modal>
|
|
));
|
|
}
|
|
|
|
export default DashboardSelectionModal;
|