import React from 'react'; import { EventsList, FilterList } from 'Shared/Filters/FilterList'; import { Table, Dropdown } from 'antd'; import { MoreOutlined } from '@ant-design/icons'; import { numberWithCommas } from 'App/utils'; import { Pagination } from 'UI'; import OutsideClickDetectingDiv from '../../shared/OutsideClickDetectingDiv'; import ColumnsModal from './ColumnsModal'; import Event from './data/Event'; import { useModal } from 'App/components/Modal'; import EventDetailsModal from './EventDetailsModal'; import { useQuery } from '@tanstack/react-query'; import Select from 'Shared/Select'; import { Link } from 'react-router-dom'; import { dataManagement, withSiteId } from 'App/routes' import { observer } from 'mobx-react-lite'; import { useStore } from 'App/mstore'; const limit = 100; const testEv = new Event({ name: 'test ev #', time: Date.now(), defaultFields: { userId: '123', userLocation: 'NY', userEnvironment: 'Mac OS', }, customFields: {}, isAutoCapture: false, sessionId: '123123', }); const testAutoEv = new Event({ name: 'auto test ev', time: Date.now(), defaultFields: { userId: '123', userLocation: 'NY', userEnvironment: 'Mac OS', }, customFields: {}, isAutoCapture: true, sessionId: '123123', }); export const list = [testEv.toData(), testAutoEv.toData()]; const fetcher = async ( page: number ): Promise<{ list: any[]; total: number }> => { const total = 3000; return new Promise((resolve) => { resolve({ list, total }); }); }; function ActivityPage() { const { projectsStore } = useStore() const siteId = projectsStore.activeSiteId; const [page, setPage] = React.useState(1); const [hiddenCols, setHiddenCols] = React.useState([]); const { data, isPending } = useQuery({ queryKey: ['data', 'events', page], queryFn: () => fetcher(page), initialData: { list: [], total: 0 }, }); const { list, total } = data; const appliedFilter = { filters: [] }; const onAddFilter = () => {}; const onUpdateFilter = () => {}; const onRemoveFilter = () => {}; const onChangeEventsOrder = () => {}; const saveRequestPayloads = () => {}; const onFilterMove = () => {}; const [editCols, setEditCols] = React.useState(false); const { showModal, hideModal } = useModal(); const dropdownItems = [ { label: 'Show/Hide Columns', key: 'edit-columns', onClick: () => setTimeout(() => setEditCols(true), 1), }, ]; const columns = [ { title: 'Event Name', dataIndex: 'name', key: 'name', showSorterTooltip: { target: 'full-header' }, sorter: (a, b) => a.name.localeCompare(b.name), render: (text, row) => (
{row.$_isAutoCapture && ( [auto] )} {row.name}
), }, { title: 'Time', dataIndex: 'time', key: 'time', showSorterTooltip: { target: 'full-header' }, sorter: (a, b) => a.time - b.time, }, { title: 'Distinct ID', dataIndex: 'userId', key: 'userId', showSorterTooltip: { target: 'full-header' }, sorter: (a, b) => a.userId.localeCompare(b.userId), render: (text) => ( { e.stopPropagation(); }} > {text} ), }, { title: 'City', dataIndex: 'userLocation', key: 'userLocation', showSorterTooltip: { target: 'full-header' }, sorter: (a, b) => a.userLocation.localeCompare(b.userLocation), }, { title: 'Environment', dataIndex: 'userEnvironment', key: 'userEnvironment', showSorterTooltip: { target: 'full-header' }, sorter: (a, b) => a.userEnvironment.localeCompare(b.userEnvironment), }, { title: (
), dataIndex: '$__opts__$', key: '$__opts__$', width: 50, }, ]; const shownCols = columns.map((col) => ({ ...col, hidden: hiddenCols.includes(col.key), })); const onPageChange = (page: number) => { setPage(page); }; const onItemClick = (ev: Event) => { showModal(, { width: 420, right: true, }); }; const onUpdateVisibleCols = (cols: string[]) => { setHiddenCols((_) => { return columns .map((col) => cols.includes(col.key) || col.key === '$__opts__$' ? null : col.key ) .filter(Boolean); }); setEditCols(false); }; return (
Activity
} />
{editCols ? ( setEditCols(false)}> col.key !== '$__opts__$')} onSelect={onUpdateVisibleCols} hiddenCols={hiddenCols} /> ) : null}
All users activity
{ console.log(value); }} />
({ onClick: () => onItemClick(record), })} dataSource={list} pagination={false} columns={shownCols} />
{'Showing '} {(page - 1) * limit + 1} {' to '} {(page - 1) * limit + list.length} {' of '} {numberWithCommas(total)} {' events.'}
); } export default observer(ActivityPage);