| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { Col, Layout, Progress, Row, Space, Tabs } from "antd";
- import { Typography } from "antd";
- import { LikeOutlined, EyeOutlined } from "@ant-design/icons";
- import { ChannelInfoProps } from "../api/Channel";
- import ChannelListItem from "../channel/ChannelListItem";
- import TimeShow from "../utilities/TimeShow";
- import { useIntl } from "react-intl";
- import { Link } from "react-router-dom";
- const { Text } = Typography;
- export interface IChapterChannelData {
- channel: ChannelInfoProps;
- progress: number;
- hit: number;
- like: number;
- updatedAt: string;
- }
- interface IWidgetChapterInChannel {
- data: IChapterChannelData[];
- book: number;
- para: number;
- }
- const Widget = ({ data, book, para }: IWidgetChapterInChannel) => {
- const intl = useIntl(); //i18n
- function getTab(type: string): JSX.Element[] {
- const output = data.map((item, id) => {
- if (item.channel.channelType === type) {
- return (
- <div key={id}>
- <Row>
- <Col span={5}>
- <Link
- to={`/article/chapter/${book}-${para}_${item.channel.channelId}`}
- target="_blank"
- >
- <ChannelListItem data={item.channel} />
- </Link>
- </Col>
- <Col span={5}>
- <Progress percent={item.progress} size="small" />
- </Col>
- <Col span={8}></Col>
- </Row>
- <Text type="secondary">
- <Space style={{ paddingLeft: "2em" }}>
- <EyeOutlined />
- {item.hit} | <LikeOutlined />
- {item.like} |
- <TimeShow time={item.updatedAt} title={item.updatedAt} />
- </Space>
- </Text>
- </div>
- );
- } else {
- return <></>;
- }
- });
- return output;
- }
- const items = [
- {
- label: intl.formatMessage({ id: "channel.type.translation.label" }),
- key: "translation",
- children: getTab("translation"),
- },
- {
- label: intl.formatMessage({ id: "channel.type.nissaya.label" }),
- key: "nissaya",
- children: getTab("nissaya"),
- },
- {
- label: intl.formatMessage({ id: "channel.type.commentary.label" }),
- key: "commentary",
- children: getTab("commentary"),
- },
- {
- label: intl.formatMessage({ id: "channel.type.original.label" }),
- key: "original",
- children: getTab("original"),
- },
- ];
- return <Tabs items={items} />;
- };
- export default Widget;
|