| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- import React, { memo } from 'react';
- import { Row, Col, Table, Tooltip, Card, Icon } from 'antd';
- import { FormattedMessage } from 'umi/locale';
- import Trend from '@/components/Trend';
- import numeral from 'numeral';
- import styles from './Analysis.less';
- import NumberInfo from '@/components/NumberInfo';
- import { MiniArea } from '@/components/Charts';
- const columns = [
- {
- title: <FormattedMessage id="app.analysis.table.rank" defaultMessage="Rank" />,
- dataIndex: 'index',
- key: 'index',
- },
- {
- title: (
- <FormattedMessage id="app.analysis.table.search-keyword" defaultMessage="Search keyword" />
- ),
- dataIndex: 'keyword',
- key: 'keyword',
- render: text => <a href="/">{text}</a>,
- },
- {
- title: <FormattedMessage id="app.analysis.table.users" defaultMessage="Users" />,
- dataIndex: 'count',
- key: 'count',
- sorter: (a, b) => a.count - b.count,
- className: styles.alignRight,
- },
- {
- title: <FormattedMessage id="app.analysis.table.weekly-range" defaultMessage="Weekly Range" />,
- dataIndex: 'range',
- key: 'range',
- sorter: (a, b) => a.range - b.range,
- render: (text, record) => (
- <Trend flag={record.status === 1 ? 'down' : 'up'}>
- <span style={{ marginRight: 4 }}>{text}%</span>
- </Trend>
- ),
- align: 'right',
- },
- ];
- const TopSearch = memo(({ loading, visitData2, searchData, dropdownGroup }) => (
- <Card
- loading={loading}
- bordered={false}
- title={
- <FormattedMessage id="app.analysis.online-top-search" defaultMessage="Online Top Search" />
- }
- extra={dropdownGroup}
- style={{ marginTop: 24 }}
- >
- <Row gutter={68}>
- <Col sm={12} xs={24} style={{ marginBottom: 24 }}>
- <NumberInfo
- subTitle={
- <span>
- <FormattedMessage id="app.analysis.search-users" defaultMessage="search users" />
- <Tooltip
- title={<FormattedMessage id="app.analysis.introduce" defaultMessage="introduce" />}
- >
- <Icon style={{ marginLeft: 8 }} type="info-circle-o" />
- </Tooltip>
- </span>
- }
- gap={8}
- total={numeral(12321).format('0,0')}
- status="up"
- subTotal={17.1}
- />
- <MiniArea line height={45} data={visitData2} />
- </Col>
- <Col sm={12} xs={24} style={{ marginBottom: 24 }}>
- <NumberInfo
- subTitle={
- <span>
- <FormattedMessage
- id="app.analysis.per-capita-search"
- defaultMessage="Per Capita Search"
- />
- <Tooltip
- title={<FormattedMessage id="app.analysis.introduce" defaultMessage="introduce" />}
- >
- <Icon style={{ marginLeft: 8 }} type="info-circle-o" />
- </Tooltip>
- </span>
- }
- total={2.7}
- status="down"
- subTotal={26.2}
- gap={8}
- />
- <MiniArea line height={45} data={visitData2} />
- </Col>
- </Row>
- <Table
- rowKey={record => record.index}
- size="small"
- columns={columns}
- dataSource={searchData}
- pagination={{
- style: { marginBottom: 0 },
- pageSize: 5,
- }}
- />
- </Card>
- ));
- export default TopSearch;
|