| | |
| | | } |
| | | |
| | | UNSAFE_componentWillReceiveProps(nextProps) { |
| | | if (!is(fromJS(this.props.config.wrap), fromJS(nextProps.config.wrap))) { |
| | | const { datelist } = this.state |
| | | if (!is(fromJS(this.props.data), fromJS(nextProps.data))) { |
| | | this.setState({ |
| | | levels: nextProps.config.wrap.levels, |
| | | level: nextProps.config.wrap.levels[0] |
| | | datelist: this.mountdata(datelist, nextProps.data) |
| | | }) |
| | | } |
| | | } |
| | | |
| | | shouldComponentUpdate (nextProps, nextState) { |
| | | return !is(fromJS(this.state), fromJS(nextState)) |
| | | } |
| | | |
| | | mountdata = (datelist, data) => { |
| | | return fromJS(datelist).toJS().map(month => { |
| | | month.subData = [] |
| | | data.forEach(item => { |
| | | if (item.$startM <= month.time && item.$endM >= month.time) { |
| | | month.subData.push(item) |
| | | } |
| | | }) |
| | | |
| | | month.children = month.children.map(week => { |
| | | week.children = week.children.map(day => { |
| | | if (day.$disable) return day |
| | | |
| | | day.subData = [] |
| | | day.style = null |
| | | day.$level = 100 |
| | | data.forEach(item => { |
| | | if (item.$start <= day.time && item.$end >= day.time) { |
| | | day.subData.push(item) |
| | | |
| | | if (!day.style) { |
| | | day.style = item.$style |
| | | day.$level = item.$level |
| | | } else if (item.$level < day.$level) { |
| | | day.style = item.$style |
| | | day.$level = item.$level |
| | | } |
| | | } |
| | | }) |
| | | return day |
| | | }) |
| | | return week |
| | | }) |
| | | return month |
| | | }) |
| | | } |
| | | |
| | | getNongLi = (nyear, nmonth, nday, week) => { |
| | |
| | | |
| | | let item = { |
| | | day: _day, |
| | | time: times[0] + times[1] + _day, |
| | | time: +(times[0] + times[1] + _day), |
| | | label: _day, |
| | | subData: [], |
| | | $disable: true, |
| | |
| | | |
| | | let item = { |
| | | day: _day, |
| | | time: selectYear + month + _day, |
| | | time: +(selectYear + month + _day), |
| | | label: i, |
| | | subData: [], |
| | | ...nl |
| | |
| | | |
| | | let item = { |
| | | day: _day, |
| | | time: times[0] + times[1] + _day, |
| | | time: +(times[0] + times[1] + _day), |
| | | label: i, |
| | | subData: [], |
| | | $disable: true, |
| | |
| | | |
| | | datelist.push({ |
| | | month: month, |
| | | time: selectYear + month, |
| | | time: +(selectYear + month), |
| | | label: monthName[month], |
| | | children: _weeklist, |
| | | subData: [] |
| | |
| | | } |
| | | |
| | | yearChange = (value) => { |
| | | const { data } = this.props |
| | | const { selectMonth } = this.state |
| | | let datelist = this.getDateList(value) |
| | | |
| | | if (data.length > 0) { |
| | | datelist = this.mountdata(datelist, data) |
| | | } |
| | | |
| | | let monthlist = datelist.filter(item => item.month === selectMonth)[0].children.filter(cell => !cell.children[0].$disable || !cell.children[6].$disable) |
| | | |
| | | this.setState({ selectYear: value, datelist, monthlist }) |
| | |
| | | <tr key={m}> |
| | | {cell.children.map((d, i) => ( |
| | | <td key={i}> |
| | | <div className={'day-wrap' + (d.$disable ? ' disabled' : '')}> |
| | | <div style={d.style} className={'day-wrap' + (d.$disable ? ' disabled' : '')}> |
| | | {d.label} |
| | | </div> |
| | | </td> |