f-react-native-schedule
Version:
Flexible scheduling library with more built-in features and enhanced customization options
73 lines (70 loc) • 2.3 kB
JavaScript
import dayjs from 'dayjs';
import { defaultSchedulingSettings, Hours } from './constants';
import isSameOrAfter from 'dayjs/plugin/isSameOrAfter';
import isSameOrBefore from 'dayjs/plugin/isSameOrBefore';
import { Dimensions } from 'react-native';
dayjs.extend(isSameOrAfter);
dayjs.extend(isSameOrBefore);
export function getHours(startHourRaw, endHourRaw) {
const [startHour, startMinute = '00'] = startHourRaw.split(':');
const [endHour, endMinute = '00'] = endHourRaw.split(':');
const start = dayjs().hour(parseInt(startHour, 10)).minute(parseInt(startMinute, 10));
const end = dayjs().hour(parseInt(endHour, 10)).minute(parseInt(endMinute, 10));
const hours = Hours;
Hours.forEach((hour, key) => {
const hourMoment = dayjs().hour(hour);
if (!hourMoment.isSameOrAfter(start, 'hour')) {
delete hours[key];
}
if (!hourMoment.isSameOrBefore(end, 'hour')) {
delete hours[key];
}
});
return hours;
}
export function getDays(selectedDate, currentView, daysWeek) {
if (currentView === 'day') return [dayjs(selectedDate).day()];
return daysWeek;
}
export function getCellDimensions(view, settings) {
if (view === 'day') {
return {
width: Dimensions.get('window').width - 50,
height: settings.height
};
}
return settings;
}
export function getScrollViewContainerWidth(view, days, cellWidth) {
if (view === 'day') return Dimensions.get('window').width - 80;
return cellWidth * days.length;
}
export function isUndefined(value) {
return value === undefined;
}
export function getSchedulingSettings(settings) {
const {
fields,
style,
render
} = settings;
return {
fields: {
subject: { ...defaultSchedulingSettings.fields.subject,
...((fields === null || fields === void 0 ? void 0 : fields.subject) && { ...fields.subject
})
},
startTime: { ...defaultSchedulingSettings.fields.startTime,
...((fields === null || fields === void 0 ? void 0 : fields.startTime) && { ...fields.startTime
})
},
endTime: { ...defaultSchedulingSettings.fields.endTime,
...((fields === null || fields === void 0 ? void 0 : fields.endTime) && { ...fields.endTime
})
}
},
style,
render
};
}
//# sourceMappingURL=utils.js.map