react-big-scheduler icon indicating copy to clipboard operation
react-big-scheduler copied to clipboard

Events do not show

Open trowacat opened this issue 5 years ago • 4 comments

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);`

trowacat avatar Apr 21 '19 19:04 trowacat

I am having the same issue with my implementation. Blank

is getting render. when We enable agenda view. Events are showing there with respective resources.

jayeshwebcluesglobal avatar Apr 26 '19 07:04 jayeshwebcluesglobal

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

hanchiang avatar Apr 29 '19 02:04 hanchiang

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".

image

premji1528 avatar Oct 07 '20 14:10 premji1528

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",

KennanObura avatar Feb 17 '22 02:02 KennanObura