import React from 'react';
import { CalendarOutlined } from '@ant-design/icons';
import { Badge, Calendar, Card, Popover, List, Divider } from 'antd';
import urlTemplate from 'url-template';
import moment, { Dayjs } from 'dayjs';
import isBetween from 'dayjs/plugin/isBetween';
import 'moment/locale/zh-cn';
import { Portlet } from './Portlet';
import zh from 'antd/lib/calendar/locale/zh_CN';
import { DomainService } from 'matrix-ui-service';
moment.extend(isBetween);
moment.locale('zh-cn');
export class PortletCalendar extends Portlet {
render() {
if (!(this.state && this.state.portlet)) return null;
const { portletName, dateLink } = this.state.portlet;
return (
更多
}
style={this.props.style}
>
);
}
cellRender(unit: 'day' | 'month', date: Dayjs) {
const { portlet, dataList } = this.state;
if (!dataList) return null;
const matchData = dataList.filter((item) =>
date.isBetween(
moment(item[portlet.beginTimeField], portlet.timeFormat),
moment(item[portlet.endTimeField], portlet.timeFormat),
unit,
'[]',
),
);
const linkTemplate = urlTemplate.parse(portlet.titleLink);
return (
(
{item[portlet.titleField]}
)}
/>
}
>
);
}
get portletService(): DomainService | null {
return this.props.services.portletCalendarService;
}
/**
* 加了onSelect={this.calSelect}后,点击popup中的链接后打开两个链接,应该是bug,先放到标题栏
* @param date
*/
calSelect = (date?: Dayjs) => {
const { dateLink, timeFormat } = this.state.portlet;
const linkTemplate = urlTemplate.parse(dateLink);
window.open(linkTemplate.expand(date && { date: date.format(timeFormat) }), '_blank');
};
}