DevExtreme v24.1 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.

Work Shifts

This demo uses the Scheduler component’s offset property to indicate the starting point of a day. The Scheduler’s offset can be set in multiples of 5 and can range from -1440 minutes (-24 hours) to 1440 minutes (24 hours).

For instance, if you set the offset to -120, like the First shift in this demo, the day begins at 10:00 PM on the previous day instead of 00:00. If you set the offset to 360, like the Second shift, the day begins at 6:00 AM.

You can also combine this property with startDayHour, endDayHour, and cellDuration to obtain desired display results.

Backend API
$(() => { const scheduler = $('#scheduler').dxScheduler({ timeZone: 'America/Los_Angeles', dataSource: data, views: ['day', 'workWeek'], currentView: 'workWeek', currentDate: new Date(2021, 2, 30), startDayHour: 0, endDayHour: 8, offset: shifts[0].offset, cellDuration: 60, showAllDayPanel: false, }).dxScheduler('instance'); $('#shifts').dxRadioGroup({ items: shifts, value: shifts[0], layout: 'horizontal', onValueChanged: (e) => { scheduler.option('offset', e.value.offset); }, }); });
<!DOCTYPE html> <html xmlns="" lang="en"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0" /> <script src=""></script> <script>window.jQuery || document.write(decodeURIComponent('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script> <link rel="stylesheet" type="text/css" href="" /> <script src="js/dx.all.js"></script> <script src="data.js"></script> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="index.js"></script> </head> <body class="dx-viewport"> <div class="demo-container"> <div class="options"> <div class="option"> <div class="label">Work Hours:</div> <div class="value"> <div id="shifts"></div> </div> </div> </div> <br /> <div id="scheduler"></div> </div> </body> </html>
.options { background-color: rgba(191, 191, 191, 0.15); margin-top: 20px; display: flex; align-items: flex-start; height: 100%; } .option { padding: 16px; display: flex; align-items: center; } .label, .value { display: inline-block; vertical-align: middle; } .label { width: 100px; }
const shifts = [{ text: 'First shift', offset: -120, }, { text: 'Second shift', offset: 360, }, { text: 'Third shift', offset: 840, }]; const data = [{ text: 'Website Re-Design Plan', startDate: '2021-03-29T16:00:00.000Z', endDate: '2021-03-29T18:00:00.000Z', }, { text: 'Approve Personal Computer Upgrade Plan', startDate: '2021-03-31T01:30:00.000Z', endDate: '2021-03-31T03:00:00.000Z', }, { text: 'Final Budget Review', startDate: '2021-03-30T16:30:00.000Z', endDate: '2021-03-30T18:05:00.000Z', }, { text: 'New Brochures', startDate: '2021-04-01T23:30:00.000Z', endDate: '2021-04-02T02:30:00.000Z', }, { text: 'Approve New Online Marketing Strategy', startDate: '2021-03-31T16:30:00.000Z', endDate: '2021-03-31T18:30:00.000Z', }, { text: 'Prepare 2021 Marketing Plan', startDate: '2021-04-01T16:30:00.000Z', endDate: '2021-04-01T18:00:00.000Z', }, { text: 'Brochure Design Review', startDate: '2021-04-02T17:30:00.000Z', endDate: '2021-04-02T19:00:00.000Z', }, { text: 'Create Icons for Website', startDate: '2021-04-01T18:00:00.000Z', endDate: '2021-04-01T19:30:00.000Z', }, { text: 'Submit New Website Design', startDate: '2021-04-02T09:30:00.000Z', endDate: '2021-04-02T11:00:00.000Z', }, { text: 'Launch New Website', startDate: '2021-04-01T01:30:00.000Z', endDate: '2021-04-01T03:00:00.000Z', recurrenceRule: 'FREQ=WEEKLY;BYDAY=WE;INTERVAL=2', }, { text: 'Install New Router in Dev Room', startDate: '2021-03-29T08:00:00.000Z', endDate: '2021-03-29T09:00:00.000Z', }, { text: 'Upgrade Personal Computers', startDate: '2021-03-30T01:00:00.000Z', endDate: '2021-03-30T03:00:00.000Z', }, { text: 'Install New Database', startDate: '2021-03-31T08:30:00.000Z', endDate: '2021-03-31T10:00:00.000Z', }, { text: 'Update Customer Shipping Profiles', startDate: '2021-04-01T09:30:00.000Z', endDate: '2021-04-01T11:00:00.000Z', recurrenceRule: 'FREQ=WEEKLY;BYDAY=TH', }, { text: 'Upgrade Server Hardware', startDate: '2021-03-30T08:30:00.000Z', endDate: '2021-03-30T11:00:00.000Z', recurrenceRule: 'FREQ=MONTHLY;BYMONTHDAY=30', }];