使用工作周视图更改一周的第一天
change the first day of the week with work week view
我正在尝试使用 React big calendar 更改 work_week 视图的第一天,但我没有找到方法...我能够更改 work_week 视图的第一天周视图,但对工作周没有任何帮助...有什么想法吗?
这是我更改一周第一天视图的方式:
import "moment/locale/en-gb";
moment.locale("en-gb", {
week: {
dow: 0,
},
});
const localizer = momentLocalizer(moment);
不幸的是,唯一的方法是定义自定义 'View',而不是使用 'work_week' 视图。首先,您可以创建 'View',使用 'work_week' 视图作为模板。
import PropTypes from "prop-types";
import React from "react";
import Week from "react-big-calendar/lib/Week";
import TimeGrid from "react-big-calendar/lib/TimeGrid";
function workWeekRange(date, options) {
return Week.range(date, options).filter(
(d) => [0, 1, 6].indexOf(d.getDay()) === -1
);
}
class MyWorkWeek extends React.Component {
render() {
let { date, ...props } = this.props;
let range = workWeekRange(date, this.props);
return <TimeGrid {...props} range={range} eventOffset={15} />;
}
}
MyWorkWeek.propTypes = {
date: PropTypes.instanceOf(Date).isRequired
};
MyWorkWeek.defaultProps = TimeGrid.defaultProps;
MyWorkWeek.range = workWeekRange;
MyWorkWeek.navigate = Week.navigate;
MyWorkWeek.title = (date, { localizer }) => {
let [start, ...rest] = workWeekRange(date, { localizer });
return localizer.format({ start, end: rest.pop() }, "dayRangeHeaderFormat");
};
export default MyWorkWeek;
神奇之处在于 workWeekRange
方法,我在该方法中定义了要从周中隐藏的天数(零索引)。在这个例子中,我隐藏了周日、周一和周六。
另请注意,我必须更改 Week
和 TimeGrid
组件的导入语句。
我必须做的最后一件事是提供自定义 'View',以及工具栏中按钮的标题。您可以在日历道具中执行此操作。 views
属性从标准数组更改为 object.
return (
<Calendar
// other props
views={{
day: true,
month: true,
myweek: MyWorkWeek
}}
messages={{
myweek: 'Work Week'
}}
/>
你可以看到一个working example in CodeSandbox.
我正在尝试使用 React big calendar 更改 work_week 视图的第一天,但我没有找到方法...我能够更改 work_week 视图的第一天周视图,但对工作周没有任何帮助...有什么想法吗?
这是我更改一周第一天视图的方式:
import "moment/locale/en-gb";
moment.locale("en-gb", {
week: {
dow: 0,
},
});
const localizer = momentLocalizer(moment);
不幸的是,唯一的方法是定义自定义 'View',而不是使用 'work_week' 视图。首先,您可以创建 'View',使用 'work_week' 视图作为模板。
import PropTypes from "prop-types";
import React from "react";
import Week from "react-big-calendar/lib/Week";
import TimeGrid from "react-big-calendar/lib/TimeGrid";
function workWeekRange(date, options) {
return Week.range(date, options).filter(
(d) => [0, 1, 6].indexOf(d.getDay()) === -1
);
}
class MyWorkWeek extends React.Component {
render() {
let { date, ...props } = this.props;
let range = workWeekRange(date, this.props);
return <TimeGrid {...props} range={range} eventOffset={15} />;
}
}
MyWorkWeek.propTypes = {
date: PropTypes.instanceOf(Date).isRequired
};
MyWorkWeek.defaultProps = TimeGrid.defaultProps;
MyWorkWeek.range = workWeekRange;
MyWorkWeek.navigate = Week.navigate;
MyWorkWeek.title = (date, { localizer }) => {
let [start, ...rest] = workWeekRange(date, { localizer });
return localizer.format({ start, end: rest.pop() }, "dayRangeHeaderFormat");
};
export default MyWorkWeek;
神奇之处在于 workWeekRange
方法,我在该方法中定义了要从周中隐藏的天数(零索引)。在这个例子中,我隐藏了周日、周一和周六。
另请注意,我必须更改 Week
和 TimeGrid
组件的导入语句。
我必须做的最后一件事是提供自定义 'View',以及工具栏中按钮的标题。您可以在日历道具中执行此操作。 views
属性从标准数组更改为 object.
return (
<Calendar
// other props
views={{
day: true,
month: true,
myweek: MyWorkWeek
}}
messages={{
myweek: 'Work Week'
}}
/>
你可以看到一个working example in CodeSandbox.