Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dayStartFrom - dayStopTo not working! #8

Open
Hawwash76 opened this issue Apr 1, 2023 · 3 comments
Open

dayStartFrom - dayStopTo not working! #8

Hawwash76 opened this issue Apr 1, 2023 · 3 comments

Comments

@Hawwash76
Copy link

they seem to not work, the scheduler renders on 12am no matter what i set it to

@hbatalhaStch
Copy link
Owner

I just tested it and it seems to working fine on my end, could you share your code?

@Hawwash76
Copy link
Author

Hawwash76 commented Apr 1, 2023

Sure, this is what how i'm using it

let schedulerData = new SchedulerData('2023-3-3', ViewTypes.Day, false, false);

export const TeamCalendar = () => {
  useEffect(() => {
    schedulerData.setEvents(events);
    schedulerData.config.schedulerWidth = '82.3%';
    schedulerData.config.dayStartFrom = 9;
    schedulerData.config.dayStopTo = 18;
    schedulerData.config.headerEnabled = false;
    schedulerData.config.nonWorkingTimeHeadColor = '#ffffff';
    schedulerData.config.nonWorkingTimeHeadBgColor = '#262626';
    schedulerData.config.nonWorkingTimeBodyBgColor = '#262626';
    schedulerData.config.dayCellWidth = 60;
    schedulerData.config.movable = false;
    schedulerData.config.creatable = false;
    schedulerData.config.dragAndDropEnabled = false;
    schedulerData.config.eventItemHeight = 43;
    schedulerData.config.eventItemLineHeight = 60;
    schedulerData.config.resourceName = 'Sales Team (24)';
    schedulerData.setResources(resources);
    schedulerData.setEvents(events);
  }, []);


      <Scheduler
        schedulerData={schedulerData}
        eventItemTemplateResolver={eventItemTemplateResolver}
      />
 
};

@hbatalhaStch
Copy link
Owner

hbatalhaStch commented Apr 2, 2023

JavaScript

import dayjs, { Dayjs } from 'dayjs';
import React, { useEffect, useState } from 'react';
import Scheduler, {
    EventItem, Resource, SchedulerData, SchedulerDataBehaviors, SchedulerDataConfig, View, ViewType
} from 'react-big-scheduler-stch';
import "react-big-scheduler-stch/lib/css/style.css";


function TeamCalendar (props) {
    const [schedulerData, setSchedulerData] = useState(new SchedulerData(props.date ?? dayjs(),
        props.viewType ?? ViewType.Month,
        props.showAgenda ?? false,
        props.isEventPerspective ?? false,
        {
            ...props.schedulerDataConfig,
            dayStartFrom: 9,
            dayStopTo: 18
        }
    ))

    useEffect(() => {
        schedulerData.setResources(props.resources);
        schedulerData.setEvents(props.events);
    }, [])


    const prevClick = (schedulerData) => {
        schedulerData.prev();
        schedulerData.setEvents(props.events);
        setSchedulerData(schedulerData)
    }

    const nextClick = (schedulerData) => {
        schedulerData.next();
        schedulerData.setEvents(props.events);
        setSchedulerData(schedulerData)
    }

    const onViewChange = (schedulerData, view) => {
        schedulerData.setViewType(view.viewType, view.showAgenda, view.isEventPerspective);
        schedulerData.setEvents(props.events);
        setSchedulerData(schedulerData)
    }

    const onSelectDate = (schedulerData, date) => {
        schedulerData.setDate(date);
        schedulerData.setEvents(props.events);
        setSchedulerData(schedulerData)

    }

    const eventClicked = (schedulerData, event) => {

    };

    const toggleExpandFunc = (schedulerData, slotId) => {
        schedulerData.toggleExpandStatus(slotId);
        setSchedulerData(schedulerData)
    }

    return (
        <Scheduler
            parentRef={props.parentRef}
            prevClick={prevClick}
            nextClick={nextClick}
            onSelectDate={onSelectDate}
            onViewChange={onViewChange}
            toggleExpandFunc={toggleExpandFunc}
            eventItemClick={eventClicked}
            schedulerData={schedulerData}
        />
    )
}

export default TeamCalendar 

TypeScript

import dayjs, { Dayjs } from 'dayjs';
import React, { useEffect, useState } from 'react';
import Scheduler, {
    EventItem, Resource, SchedulerData, SchedulerDataBehaviors, SchedulerDataConfig, View, ViewType
} from 'react-big-scheduler-stch';
import "react-big-scheduler-stch/lib/css/style.css";

interface IProps {
    date?: string | Dayjs;
    viewType?: ViewType;
    showAgenda?: boolean;
    isEventPerspective?: boolean;
    newConfig?: SchedulerDataConfig;
    newBehaviours?: SchedulerDataBehaviors;
    schedulerDataConfig?: SchedulerDataConfig;
    resources: Resource[];
    events: EventItem[];
    parentRef?: React.RefObject<any>;
}


function TeamCalendar (props: IProps) {
    const [schedulerData, setSchedulerData] = useState(new SchedulerData(props.date ?? dayjs(),
        props.viewType ?? ViewType.Month,
        props.showAgenda ?? false,
        props.isEventPerspective ?? false,
        {
            ...props.schedulerDataConfig,
            dayStartFrom: 9,
            dayStopTo: 18
        }
    ))

    useEffect(() => {
        schedulerData.setResources(props.resources);
        schedulerData.setEvents(props.events);
    }, [])


    const prevClick = (schedulerData: SchedulerData) => {
        schedulerData.prev();
        schedulerData.setEvents(props.events);
        setSchedulerData(schedulerData)
    }

    const nextClick = (schedulerData: SchedulerData) => {
        schedulerData.next();
        schedulerData.setEvents(props.events);
        setSchedulerData(schedulerData)
    }

    const onViewChange = (schedulerData: SchedulerData, view: View) => {
        schedulerData.setViewType(view.viewType, view.showAgenda, view.isEventPerspective);
        schedulerData.setEvents(props.events);
        setSchedulerData(schedulerData)
    }

    const onSelectDate = (schedulerData: SchedulerData, date: string) => {
        schedulerData.setDate(date);
        schedulerData.setEvents(props.events);
        setSchedulerData(schedulerData)

    }

    const eventClicked = (schedulerData: SchedulerData, event: EventItem) => {

    };

    const toggleExpandFunc = (schedulerData: SchedulerData, slotId: string) => {
        schedulerData.toggleExpandStatus(slotId);
        setSchedulerData(schedulerData)
    }

    return (
        <Scheduler
            parentRef={props.parentRef}
            prevClick={prevClick}
            nextClick={nextClick}
            onSelectDate={onSelectDate}
            onViewChange={onViewChange}
            toggleExpandFunc={toggleExpandFunc}
            eventItemClick={eventClicked}
            schedulerData={schedulerData}
        />
    )
}

export default TeamCalendar 

Note that I use it in a class component so I haven't much tested it in function components
My personal usage:

import dayjs, { Dayjs } from 'dayjs';
import React, { Component } from 'react';
import "react-big-scheduler-stch/lib/css/style.css";
import Scheduler, {
    EventItem, Resource, SchedulerData, SchedulerDataBehaviors, SchedulerDataConfig, SchedulerProps, View, ViewType
} from 'react-big-scheduler-stch';

export interface SState {
    viewModel: SchedulerData
}

interface IProps<T extends EventItem = EventItem>
    extends Omit<SchedulerProps<T>, 'schedulerData' | 'prevClick' | 'nextClick' | 'onSelectDate' | 'onViewChange' | 'toggleExpandFunc'> {
    date?: string | Dayjs;
    viewType?: ViewType;
    showAgenda?: boolean;
    isEventPerspective?: boolean;
    newConfig?: SchedulerDataConfig;
    newBehaviours?: SchedulerDataBehaviors;
    schedulerDataConfig?: SchedulerDataConfig;
    resources: Resource[];
    events: EventItem[];
    onYearChange?: (year: number) => void;
}

export default class BigScheduler<T extends EventItem = EventItem> extends Component<IProps<T>, SState> {
    private viewDate = dayjs();

    constructor(props: IProps<T>) {
        super(props);
        let schedulerData = new SchedulerData(props.date ?? dayjs(),
            props.viewType ?? ViewType.Month,
            props.showAgenda ?? false,
            props.isEventPerspective ?? false,
            props.schedulerDataConfig,
               
        );
        schedulerData.setResources(props.resources);
        schedulerData.setEvents(props.events);
        this.state = {
            viewModel: schedulerData
        }
    }

    render() {
        const { viewModel } = this.state;
        return (
            <Scheduler
                schedulerData={viewModel}
                prevClick={this.prevClick}
                nextClick={this.nextClick}
                onSelectDate={this.onSelectDate}
                onViewChange={this.onViewChange}
                toggleExpandFunc={this.toggleExpandFunc}
                {...this.props}
            />
        )
    }

    onDateChange = (schedulerData: SchedulerData) => {
        const newDate = schedulerData.getViewStartDate();
        if (this.viewDate !== newDate) {
            if (this.viewDate.year() !== newDate.year()) {
                const { onYearChange } = this.props;
                if (!!onYearChange) {
                    onYearChange(newDate.year())
                }
            }
            this.viewDate = newDate;
        }
    }

    prevClick = (schedulerData: SchedulerData) => {
        schedulerData.prev();
        this.onDateChange(schedulerData)
        schedulerData.setEvents(this.props.events);
        this.setState({
            viewModel: schedulerData
        })
    }

    nextClick = (schedulerData: SchedulerData) => {
        schedulerData.next();
        this.onDateChange(schedulerData)
        schedulerData.setEvents(this.props.events);
        this.setState({
            viewModel: schedulerData
        })
    }

    onViewChange = (schedulerData: SchedulerData, view: View) => {
        const start = new Date();
        schedulerData.setViewType(view.viewType, view.showAgenda, view.isEventPerspective);
        schedulerData.setEvents(this.props.events);
        this.setState({
            viewModel: schedulerData
        })
    }

    onSelectDate = (schedulerData: SchedulerData, date: string) => {
        schedulerData.setDate(date);
        this.onDateChange(schedulerData)
        schedulerData.setEvents(this.props.events);
        this.setState({
            viewModel: schedulerData
        })
    }

    toggleExpandFunc = (schedulerData: SchedulerData, slotId: string) => {
        schedulerData.toggleExpandStatus(slotId);
        this.setState({
            viewModel: schedulerData
        });
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants