import React, {PropTypes, Component} from 'react'; import GregorianCalendar from 'gregorian-calendar'; import CalendarLocale from 'rc-calendar/lib/locale/zh_CN'; import FullCalendar from 'rc-calendar/lib/FullCalendar'; import Notes from './Notes'; import NoteList from './NoteList'; import {PREFIX_CLS} from './Constants'; import Header from './Header'; function noop () { return null; } function zerofixed (v) { if (v < 10) return '0' + v; return v + ''; } function getNow() { const value = new GregorianCalendar(); value.setTime(Date.now()); return value; } const MonthCellNoteNum = ({num, prefixCls}) => { return (
{num}
待办事项数
); }; class NoticeCalendar extends Component { constructor(props) { super(); this.state = { value: props.value || getNow(), type: props.type, }; } monthCellRender(value, locale) { const prefixCls = this.props.prefixCls; const month = value.getMonth(); const noteNum = this.props.getMonthData(value); if (noteNum > 0) { return ( {locale.format.shortMonths[month]} ); } return ( {locale.format.shortMonths[month]} ); } fullscreenDateCellRender(value) { const prefixCls = this.props.prefixCls; let listData = this.props.getDateData(value); return ( { zerofixed(value.getDayOfMonth()) }
); } dateCellRender(value) { const prefixCls = this.props.prefixCls; const el = ({ zerofixed(value.getDayOfMonth()) }); const listData = this.props.getDateData(value); return (
{ el } { (listData && listData.length > 0) ?
: null }
); } setValue(value) { if (this.state.value !== value) { this.setState({ value }); this.props.onChange(value); } } setType(type) { const oldType = this.state.type; this.setState({ type }); this.props.onTypeChange(type, oldType); } onPanelChange(value) { if (this.state.type === 'month') { this.setType('date'); } this.setValue(value); } render() { const props = this.props; const {value, type} = this.state; const {locale, prefixCls, style, className, fullscreen, monthCellRender, dateCellRender, fullscreenDateCellRender} = props; const _monthCellRender = monthCellRender ? monthCellRender : this.monthCellRender; const _dateCellRender = dateCellRender ? dateCellRender : this.dateCellRender; const _fullscreenDateCellRender = fullscreenDateCellRender ? fullscreenDateCellRender : this.fullscreenDateCellRender; return (
); } } NoticeCalendar.propTypes = { monthCellRender: PropTypes.func, dateCellRender: PropTypes.func, fullDateCellRender: PropTypes.func, getMonthData: PropTypes.func, getDateData: PropTypes.func, fullscreen: PropTypes.bool, locale: PropTypes.object, prefixCls: PropTypes.string, className: PropTypes.string, style: PropTypes.object, onChange: PropTypes.func, onTypeChange: PropTypes.func, }; NoticeCalendar.defaultProps = { locale: CalendarLocale, getMonthData: noop, getDateData: noop, fullscreen: true, prefixCls: PREFIX_CLS, onChange: noop, onTypeChange: noop, type: 'date', }; export default NoticeCalendar;