| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import LineChart from '@/components/line-chart';
- import { useSetModalState, useTranslate } from '@/hooks/commonHooks';
- import { IModalProps } from '@/interfaces/common';
- import { IDialog, IStats } from '@/interfaces/database/chat';
- import { Button, Card, DatePicker, Flex, Modal, Space, Typography } from 'antd';
- import { RangePickerProps } from 'antd/es/date-picker';
- import dayjs from 'dayjs';
- import camelCase from 'lodash/camelCase';
- import ChatApiKeyModal from '../chat-api-key-modal';
- import { useFetchStatsOnMount, useSelectChartStatsList } from '../hooks';
- import styles from './index.less';
-
- const { Paragraph } = Typography;
- const { RangePicker } = DatePicker;
-
- const ChatOverviewModal = ({
- visible,
- hideModal,
- dialog,
- }: IModalProps<any> & { dialog: IDialog }) => {
- const { t } = useTranslate('chat');
- const chartList = useSelectChartStatsList();
-
- const {
- visible: apiKeyVisible,
- hideModal: hideApiKeyModal,
- showModal: showApiKeyModal,
- } = useSetModalState();
-
- const { pickerValue, setPickerValue } = useFetchStatsOnMount(visible);
-
- const disabledDate: RangePickerProps['disabledDate'] = (current) => {
- return current && current > dayjs().endOf('day');
- };
-
- return (
- <>
- <Modal
- title={t('overview')}
- open={visible}
- onCancel={hideModal}
- width={'100vw'}
- >
- <Flex vertical gap={'middle'}>
- <Card title={dialog.name}>
- <Flex gap={8} vertical>
- {t('publicUrl')}
- <Paragraph copyable className={styles.linkText}>
- This is a copyable text.
- </Paragraph>
- </Flex>
- <Space size={'middle'}>
- <Button>{t('preview')}</Button>
- <Button>{t('embedded')}</Button>
- </Space>
- </Card>
- <Card title={t('backendServiceApi')}>
- <Flex gap={8} vertical>
- {t('serviceApiEndpoint')}
- <Paragraph copyable className={styles.linkText}>
- This is a copyable text.
- </Paragraph>
- </Flex>
- <Space size={'middle'}>
- <Button onClick={showApiKeyModal}>{t('apiKey')}</Button>
- <Button>{t('apiReference')}</Button>
- </Space>
- </Card>
- <Space>
- <b>{t('dateRange')}</b>
- <RangePicker
- disabledDate={disabledDate}
- value={pickerValue}
- onChange={setPickerValue}
- allowClear={false}
- />
- </Space>
- <div className={styles.chartWrapper}>
- {Object.keys(chartList).map((x) => (
- <div key={x} className={styles.chartItem}>
- <b className={styles.chartLabel}>{t(camelCase(x))}</b>
- <LineChart data={chartList[x as keyof IStats]}></LineChart>
- </div>
- ))}
- </div>
- </Flex>
- <ChatApiKeyModal
- visible={apiKeyVisible}
- hideModal={hideApiKeyModal}
- dialogId={dialog.id}
- ></ChatApiKeyModal>
- </Modal>
- </>
- );
- };
-
- export default ChatOverviewModal;
|