react-big-scheduler
react-big-scheduler copied to clipboard
Events do not show
I've been able to have the entire calendar show, and interact with it. However events are not displayed and cells are not able to be selected.
import { PropTypes } from 'prop-types'
import 'react-big-scheduler/lib/css/style.css'
import 'antd/lib/style/index.less';
import Scheduler, { SchedulerData, ViewTypes, DATE_FORMAT } from 'react-big-scheduler'
import Measure from 'react-measure'
import { DragDropContext } from "react-dnd";
import HTML5Backend from 'react-dnd-html5-backend';
const DemoData = {
resources: [
{
id: 'r1',
name: 'Resource1',
},
{
id: 'r2',
name: 'Resource2',
},
{
id: 'r3',
name: 'Resource3',
},
{
id: 'r4',
name: 'Resource4',
},
{
id: 'r5',
name: 'Resource5',
},
{
id: 'r6',
name: 'Resource6',
},
{
id: 'r7',
name: 'Resource7',
}
],
events: [
{
id: 1,
start: '2017-12-18 09:30:00',
end: '2017-12-19 23:30:00',
resourceId: 'r1',
title: 'I am finished',
bgColor: '#D9D9D9',
showPopover: false
},
{
id: 2,
start: '2017-12-18 12:30:00',
end: '2017-12-26 23:30:00',
resourceId: 'r2',
title: 'I am not resizable',
resizable: false
},
{
id: 3,
start: '2017-12-19 12:30:00',
end: '2017-12-20 23:30:00',
resourceId: 'r3',
title: 'I am not movable',
movable: false
},
],
}
class Basic extends Component {
constructor(props) {
super(props);
//let schedulerData = new SchedulerData(new moment("2017-12-18").format(DATE_FORMAT), ViewTypes.Week);
let schedulerData = new SchedulerData('2017-12-18', ViewTypes.Week);
schedulerData.localeMoment.locale('en');
schedulerData.setResources(DemoData.resources);
schedulerData.setEvents(DemoData.events);
this.state = {
viewModel: schedulerData,
dimensions: {
width: -1,
height: -1,
},
}
}
render() {
const { viewModel } = this.state;
return (
<Measure
bounds
onResize={dimensions => {
this.setState({ dimensions: dimensions.bounds })
viewModel.config.schedulerWidth = this.state.dimensions.width;
this.forceUpdate();
}}
>
{({ measureRef }) => (
<div ref={measureRef} >
<Scheduler schedulerData={viewModel}
prevClick={this.prevClick}
nextClick={this.nextClick}
onSelectDate={this.onSelectDate}
onViewChange={this.onViewChange}
eventItemClick={this.eventClicked}
/>
</div>
)}
</Measure>
)
}
prevClick = (schedulerData) => {
schedulerData.prev();
schedulerData.setEvents(DemoData.events);
this.setState({
viewModel: schedulerData
})
}
nextClick = (schedulerData) => {
schedulerData.next();
schedulerData.setEvents(DemoData.events);
this.setState({
viewModel: schedulerData
})
}
onViewChange = (schedulerData, view) => {
schedulerData.setViewType(view.viewType, view.showAgenda, view.isEventPerspective);
schedulerData.setEvents(DemoData.events);
this.setState({
viewModel: schedulerData
})
}
onSelectDate = (schedulerData, date) => {
schedulerData.setDate(date);
schedulerData.setEvents(DemoData.events);
this.setState({
viewModel: schedulerData
})
}
eventClicked = (schedulerData, event) => {
alert(`You just clicked an event: {id: ${event.id}, title: ${event.title}}`);
};
ops1 = (schedulerData, event) => {
alert(`You just executed ops1 to event: {id: ${event.id}, title: ${event.title}}`);
};
ops2 = (schedulerData, event) => {
alert(`You just executed ops2 to event: {id: ${event.id}, title: ${event.title}}`);
};
newEvent = (schedulerData, slotId, slotName, start, end, type, item) => {
if (window.confirm(`Do you want to create a new event? {slotId: ${slotId}, slotName: ${slotName}, start: ${start}, end: ${end}, type: ${type}, item: ${item}}`)) {
let newFreshId = 0;
schedulerData.events.forEach((item) => {
if (item.id >= newFreshId)
newFreshId = item.id + 1;
});
let newEvent = {
id: newFreshId,
title: 'New event you just created',
start: start,
end: end,
resourceId: slotId,
bgColor: 'purple'
}
schedulerData.addEvent(newEvent);
this.setState({
viewModel: schedulerData
})
}
}
updateEventStart = (schedulerData, event, newStart) => {
if (window.confirm(`Do you want to adjust the start of the event? {eventId: ${event.id}, eventTitle: ${event.title}, newStart: ${newStart}}`)) {
schedulerData.updateEventStart(event, newStart);
}
this.setState({
viewModel: schedulerData
})
}
updateEventEnd = (schedulerData, event, newEnd) => {
if (window.confirm(`Do you want to adjust the end of the event? {eventId: ${event.id}, eventTitle: ${event.title}, newEnd: ${newEnd}}`)) {
schedulerData.updateEventEnd(event, newEnd);
}
this.setState({
viewModel: schedulerData
})
}
moveEvent = (schedulerData, event, slotId, slotName, start, end) => {
if (window.confirm(`Do you want to move the event? {eventId: ${event.id}, eventTitle: ${event.title}, newSlotId: ${slotId}, newSlotName: ${slotName}, newStart: ${start}, newEnd: ${end}`)) {
schedulerData.moveEvent(event, slotId, slotName, start, end);
this.setState({
viewModel: schedulerData
})
}
}
onScrollRight = (schedulerData, schedulerContent, maxScrollLeft) => {
if (schedulerData.ViewTypes === ViewTypes.Day) {
schedulerData.next();
schedulerData.setEvents(DemoData.events);
this.setState({
viewModel: schedulerData
});
schedulerContent.scrollLeft = maxScrollLeft - 10;
}
}
onScrollLeft = (schedulerData, schedulerContent, maxScrollLeft) => {
if (schedulerData.ViewTypes === ViewTypes.Day) {
schedulerData.prev();
schedulerData.setEvents(DemoData.events);
this.setState({
viewModel: schedulerData
});
schedulerContent.scrollLeft = 10;
}
}
onScrollTop = (schedulerData, schedulerContent, maxScrollTop) => {
console.log('onScrollTop');
}
onScrollBottom = (schedulerData, schedulerContent, maxScrollTop) => {
console.log('onScrollBottom');
}
}
export default DragDropContext(HTML5Backend)(Basic);`
I am having the same issue with my implementation. Blank
Hi guys, I encountered this problem too. There is an issue discussing the same problem, and a fix is mentioned here: https://github.com/StephenChou1017/react-big-scheduler/issues/82#issuecomment-484132998
Hi guys,
Resolved this issue, had to downgrade to:
"react-dnd": "^5.0.0", "react-dnd-html5-backend": "^5.0.1" "react-big-scheduler": "0.2.5",
At my first attempt, I missed the ^ flag, so it got still installed in the wrong version. Seems that is also compatible with [email protected].
Also, Make sure you have to remove the node_modules and package-lock.json and Do "npm i --save".
If anyone still have the same issue, these versions seem to work
"react-dnd": "^7.5.0", "react-dnd-html5-backend": "^7.5.0", "react-dom": "^17.0.2", "react-big-scheduler": "^0.2.7",