import { ResponsivePie } from '@nivo/pie';
import {
Box,
FlexContainer,
FlexItem,
Icon,
Margins,
Skeleton,
Table,
Tile,
Palette,
Tooltip,
TableHead,
TableRow,
TableBody,
TableCell,
} from '@rocket.chat/fuselage';
import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { useMessageOrigins } from './useMessageOrigins';
import { useTopFivePopularChannels } from './useTopFivePopularChannels';
import DownloadDataButton from '../../../../components/dashboards/DownloadDataButton';
import PeriodSelector from '../../../../components/dashboards/PeriodSelector';
import { usePeriodSelectorState } from '../../../../components/dashboards/usePeriodSelectorState';
import EngagementDashboardCardFilter from '../EngagementDashboardCardFilter';
import LegendSymbol from '../dataView/LegendSymbol';
const colors = {
warning: Palette.statusColor['status-font-on-warning'].toString(),
success: Palette.statusColor['status-font-on-success'].toString(),
info: Palette.statusColor['status-font-on-info'].toString(),
};
const MessagesPerChannelSection = () => {
const [period, periodSelectorProps] = usePeriodSelectorState('last 7 days', 'last 30 days', 'last 90 days');
const { t } = useTranslation();
const { data: messageOriginsData } = useMessageOrigins({ period });
const { data: topFivePopularChannelsData } = useTopFivePopularChannels({ period });
const pie = useMemo(
() => messageOriginsData?.origins?.reduce<{ [roomType: string]: number }>((obj, { messages, t }) => ({ ...obj, [t]: messages }), {}),
[messageOriginsData],
);
const table = useMemo(
() =>
topFivePopularChannelsData?.channels?.reduce<
{
i: number;
t: string;
name?: string;
messages: number;
}[]
>((entries, { t, messages, name, usernames }, i) => [...entries, { i, t, name: name || usernames?.join(' × '), messages }], []),
[topFivePopularChannelsData],
);
return (
<>
messageOriginsData?.origins.map(({ t, messages }) => [t, messages])}
/>
{pie ? (
{t('Value_messages', { value: datum.value })}}
/>
{t('Private_Chats')}
{t('Private_Channels')}
{t('Public_Channels')}
) : (
)}
{table ? {t('Most_popular_channels_top_5')} : }
{table && !table.length && (
{t('Not_enough_data')}
)}
{(!table || !!table.length) && (
#
{t('Channel')}
{t('Number_of_messages')}
{table?.map(({ i, t, name, messages }) => (
{i + 1}.
{(t === 'd' && ) ||
(t === 'p' && ) ||
(t === 'c' && )}
{name}
{messages}
))}
{!table &&
Array.from({ length: 5 }, (_, i) => (
))}
)}
>
);
};
export default MessagesPerChannelSection;