| 
                        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;
 
 
  |