JavaScript/jQuery Scheduler - views

Specifies and configures the views to be available in the view switcher.

Type:

Array<String | Object>

Default Value: ['day', 'week']
Accepted Values: 'day' | 'week' | 'workWeek' | 'month' | 'timelineDay' | 'timelineWeek' | 'timelineWorkWeek' | 'timelineMonth' | 'agenda'

This property accepts an array of strings and objects:

  • String
    A view name. Use a string if the view does not need customization, but should be available in the view switcher.

  • Object
    An individual view's configuration. Set the type property to specify the view to customize. Properties set for an individual view override their corresponding component configuration properties.

    JavaScript
    views: [{
            type: 'workWeek',
            name: 'Vertical Grouping',
            groupOrientation: 'vertical',
            cellDuration: 60,
            intervalCount: 2,
        }, {
            type: 'workWeek',
            name: 'Horizontal Grouping',
            groupOrientation: 'horizontal',
            cellDuration: 30,
            intervalCount: 2,
        },
        'agenda'
    ]

    For more information about how to customize an individual view, refer to the following topic: Customize Individual Views.

To specify the current view, configure the currentView property.

NOTE
  • Be sure to include the currentView value in the views array.
  • If the views array is empty or contains a single item, Scheduler hides the view switcher.

View Demo View on GitHub

agendaDuration

Specifies the number of dates that can be shown at a time in the agenda view.

Type:

Number

Default Value: 7

allDayPanelMode

Specifies the display mode for the All day panel.

Default Value: 'all'

View Demo

allDayPanelMode set to 'all'

To hide the All day panel, set this property to hidden.

If you set the allDayPanelMode property to allDay, the All day panel displays only the appointments whose allDay property is set to true.

To also display appointments that have a duration equal to or more than 24 hours, assign all to this property.

jQuery
index.js
$(function() {
    $("#schedulerContainer").dxScheduler({
        // ...
        views: [{
            type: 'week',
            name: 'Week',
            allDayPanelMode: 'all',
        }, 
        // ...
        ],            

    });
});
Angular
app.component.html
app.module.ts
<dx-scheduler ... >
    <dxi-view type="week" allDayPanelMode="all" name="Week">
    </dxi-view>
</dx-scheduler>
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';

import { DxSchedulerModule } from 'devextreme-angular';

@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule,
        DxSchedulerModule
    ],
    providers: [],
    bootstrap: [AppComponent]
})
export class AppModule { }
Vue
App.vue
<template>
    <DxScheduler ...>
        <DxView
            type="week"
            name="Week"
            all-day-panel-mode="all"
        />
    </DxScheduler>
</template>

<script>
import 'devextreme/dist/css/dx.light.css';

import { DxScheduler } from 'devextreme-vue/scheduler';

export default {
    components: {
        DxScheduler,
        DxView
    },
    data() {
        return {
            // ...
        }
    }
}
</script>
React
App.js
import React from 'react';

import 'devextreme/dist/css/dx.light.css';

import { Scheduler } from 'devextreme-react/scheduler';

class App extends React.Component {
    render() {
        return (
            <Scheduler ...>
                <View
                    type="week"
                    name="Week"
                    allDayPanelMode="all"
                />                    
            </Scheduler>
        );
    }
}

export default App;

appointmentCollectorTemplate

Specifies a custom template for cell overflow indicators in this view.

Type:

template

Template Data:

AppointmentCollectorTemplateData

Information about a cell overflow indicator.

Default Name: 'appointmentCollector'
jQuery
index.js
$(function() {
    $("#schedulerContainer").dxScheduler({
        // ...
        views: [{
            // ...
            appointmentCollectorTemplate: function(data, $indicatorElement) {
                $indicatorElement.append(
                    // Custom jQuery elements go here
                )
                // ===== or =====
                return /* your markup goes here */
            }
        },
        // ...
        ]
    });
});
Angular
app.component.html
app.module.ts
<dx-scheduler ... >
    <dxi-view ...
        appointmentCollectorTemplate="myTemplate">
    </dxi-view>
    <div *dxTemplate="let data of 'myTemplate'">
        <!-- your markup goes here -->
    </div>
</dx-scheduler>
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';

import { DxSchedulerModule } from 'devextreme-angular';

@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule,
        DxSchedulerModule
    ],
    providers: [],
    bootstrap: [AppComponent]
})
export class AppModule { }
Vue
App.vue
<template>
    <DxScheduler ... >
        <DxView ...
            appointment-collector-template="myTemplate"
        />
        <template #myTemplate="{ data }">
            <!-- your markup goes here -->
        </template>
    </DxScheduler>
</template>

<script>
import 'devextreme/dist/css/dx.light.css';

import { DxScheduler, DxView } from 'devextreme-vue/scheduler';

export default {
    components: {
        DxScheduler,
        DxView
    },
    data() {
        return {
            // ...
        }
    }
}
</script>
React
App.js
import React from 'react';

import 'devextreme/dist/css/dx.light.css';

import { Scheduler, View } from 'devextreme-react/scheduler';

const renderCellOverflowIndicator = (data) => {
    return (
        {/* your markup goes here */}
    );
}

class App extends React.Component {
    render() {
        return (
            <Scheduler ... >
                <View ...
                    appointmentCollectorRender={renderCellOverflowIndicator}
                />
            </Scheduler>
        );
    }
}

export default App;
See Also

appointmentTemplate

Specifies a custom template for appointments.

Type:

template

Template Data:
Name Type Description
appointmentData

dxSchedulerAppointment

The appointment's data object.

targetedAppointmentData

dxSchedulerAppointment

The appointment's data object.
The difference between this and appointmentData fields is explained in the onAppointmentClick description.

Default Name: 'item'

appointmentTooltipTemplate

Specifies a custom template for tooltips displayed when users click an appointment or cell overflow indicator in this view.

Type:

template

Template Data:
Name Type Description
appointmentData

dxSchedulerAppointment

The appointment's data object.

targetedAppointmentData

dxSchedulerAppointment

The clicked appointment's data object.

isButtonClicked

Boolean

Specifies whether you click a button or an appointment element.

Default Name: 'appointmentTooltip'

cellDuration

The cell duration in minutes.

Type:

Number

Default Value: 30

dataCellTemplate

Specifies a custom template for table cells.

Type:

template

Template Data:

Object

The current table cell's data.

Default Name: null
NOTE
There is no dataCellTemplate in the agenda view.

View Demo

See Also

dateCellTemplate

Specifies a custom template for date scale items.

Type:

template

Template Data:

Object

The data of the current date scale item.

Default Name: null

View Demo

NOTE
There is no dateCellTemplate in such views as "day" and "timelineDay".
See Also

endDayHour

Specifies the last hour on the view's time scale. Accepts integer values from 0 to 24.

Type:

Number

Default Value: 24

firstDayOfWeek

The first day of a week. Does not apply to the agenda view.

Type:

FirstDayOfWeek

| undefined
Default Value: undefined

groupByDate

If true, appointments are grouped by date first and then by resource; opposite if false. Applies only if appointments are grouped and groupOrientation is "horizontal".

Type:

Boolean

Default Value: false

groupOrientation

Arranges resource headers vertically (in a column) or horizontally (in a row).

Type:

Orientation

This property's default value depends on the view type. The following list illustrates the dependency:

  • "horizontal"
    For the day, month, week, and workWeek view types.

  • "vertical"
    For the timelineDay, timelineMonth, timelineWeek, and timelineWorkWeek view types. For the agenda, resource headers are always organized vertically.

View Demo

See Also

groups

The resource kinds by which appointments are grouped.

Type:

Array<String>

Default Value: []

intervalCount

Multiplies the default view interval. Applies to all view types except "agenda".

Type:

Number

Default Value: 1

The following is a list of views and their default intervals:

  • "day", "timelineDay" - a day
  • "week", "timelineWeek" - a week
  • "workWeek", "timelineWorkWeek" - a week without weekends
  • "month" - a month

View Demo

See Also

maxAppointmentsPerCell

Specifies the limit of full-sized appointments displayed per cell. Applies to all views except "agenda".

Default Value: 'auto'

name

A custom view name displayed in the view switcher.

Type:

String

| undefined
Default Value: undefined

offset

Specifies the minute offset applied to configured day durations in the view.

Type:

Number

Default Value: 0

This property shifts the interval between startDayHour and endDayHour. The offset value can be between -1440 (24 hours back) and 1440 (24 hours forward).

You can implement offset along with different startDayHour, endDayHour, and cellDuration combinations to customize the view. The following code snippet integrates these properties to configure days from 4:40 AM to 11:40 AM and a 40-minute cell duration:

jQuery
index.js
$(() => {
    $('#scheduler').dxScheduler({
        // ...
        views: [
            {
                type: 'workWeek',
                offset: -20,
                startDayHour: 5,
                endDayHour: 12,
                cellDuration: 40,
            }
        ]
    });
});
Angular
app.component.html
<dx-scheduler ... >
    <dxi-view ...
        type="workWeek"
        [offset]="-20"
        [startDayHour]="5"
        [endDayHour]="12"
        [cellDuration]="40"
    >
    </dxi-view>
</dx-scheduler>
Vue
App.vue
<template>
    <DxScheduler ... >
        <DxView
            type="workWeek"
            offset="-20"
            start-day-hour="5"
            end-day-hour="12"
            cell-duration="40" 
        />
    </DxScheduler>
</template>
React
App.tsx
import { Scheduler } from 'devextreme-react/scheduler';

function App() {
    return (
        <Scheduler ... >
            <View
                type="workWeek"
                offset="-20"
                startDayHour="5"
                endDayHour="12"
                cellDuration="40"
            />
        </Scheduler>
    )
}
NOTE
  • This property has no effect in the agenda view.
  • The offset value must be a multiple of 5.

View Demo

resourceCellTemplate

Specifies a custom template for resource headers.

Type:

template

Template Data:

Object

The current resource header's data.

Default Name: null

scrolling

Configures scrolling for a view.

Type: dxSchedulerScrolling

Scrolling allows a user to browse data outside the current viewport. Information about the available scrolling modes is in the mode property description.

View Demo

See Also

startDate

Specifies the date from which to start counting the view interval. Applies to all view types except "agenda".

Type:

Date

|

Number

|

String

| undefined
Default Value: undefined

If this property is not defined, the count starts from the currentDate.

View Demo

startDayHour

Specifies the first hour on the view's time scale. Accepts integer values from 0 to 24.

Type:

Number

Default Value: 0

timeCellTemplate

Specifies a custom template for time scale items.

Type:

template

Template Data:

Object

The data of the current time scale item.

Default Name: null
NOTE
There is no timeCellTemplate in such views as "month", "timelineMonth" and "agenda".
See Also

type

The type of the view.

Type:

ViewType

| undefined
Default Value: undefined