Resource & non-resource timeline
Lay out longer schedules on a horizontal date scale. Use resource-timeline to assign a row to each resource, or timeline to place ordinary events in overlapping lanes without inventing resource records.

What you configure
- view
- Select resource-timeline or timeline.
- resourceTimeline
- Configure durationDays, slotWidth, rowMinHeight, and resourceAreaWidth.
- virtualization thresholds
- Tune resource-row and date-slot windows independently for large schedules.
Integration code example
- Register resource scheduling and verify its license even when using the non-resource timeline.
- Choose a duration of 1–366 calendar days and a readable slot width.
- Supply events, add resources only for resource-timeline, and connect edit/selection callbacks.
Copy this TypeScript into your application, not the browser console. Replace YOUR_WTS_LICENSE_KEY with an entitlement issued for your deployment origin. A WTS license is not a Google, Microsoft or CalDAV credential. These examples are documentation only and never execute on this page.
npm install @wts-calendar/core<div id="calendar"></div>@import '@wts-calendar/core/styles/calendar.css';import { WtsCalendar, verifyCalendarLicense } from '@wts-calendar/core';
import { resourceSchedulingModule } from '@wts-calendar/core/resource-scheduling';
const license = await verifyCalendarLicense('YOUR_WTS_LICENSE_KEY');
const container = document.querySelector<HTMLElement>('#calendar');
if (!container) throw new Error('Calendar container not found');
const calendar = new WtsCalendar({
container,
license,
plugins: [resourceSchedulingModule],
viewDate: '2026-09-07',
timeZone: 'UTC',
startOfWeek: 1,
height: 560,
headerToolbar: { start: 'prev,next', center: 'title', end: '' },
view: 'resource-timeline',
resourceTimeline: { durationDays: 7, slotWidth: 120, rowMinHeight: 56 },
resources: [
{ id: 'design', title: 'Design studio', capacity: 2 },
{ id: 'engineering', title: 'Engineering', capacity: 4 },
],
events: [
{
id: 'delivery',
title: 'Delivery',
resourceId: 'engineering',
start: '2026-09-07',
end: '2026-09-10',
isAllDay: true,
},
],
});
await calendar.whenIdle();
// Optional: display the same dates without separate resource lanes.
export function showSingleLane() {
calendar.setView('timeline');
}
// Call from your component's unmount/destroy hook.
export function dispose() {
calendar.destroy();
}Application responsibilities
Mount after the host element exists. For Angular, React or Vue, pass these options and plugins to the web wrapper and use its calendar API for the calls below; let the wrapper own destruction.
Add the stylesheet once to your global CSS/SCSS file using a bundler that resolves npm package imports. Keep it separate from component TypeScript.
Behavior and lifecycle
- Overlapping events occupy deterministic lanes; background events and range shading remain available.
- Pointer, touch, and keyboard interactions share validation and rollback behavior.
Limits and responsibilities
- Timeline visualization does not calculate a critical path by itself; that analysis belongs to advanced resource planning.
- The non-resource view does not add synthetic resource IDs to event callbacks.
Enable this capability
- Optional module
- @wts-calendar/core/resource-scheduling
- Signed entitlement
- resource-scheduling
Request the required features and deployment origins by email. Pricing and terms are confirmed privately. A WTS license is separate from provider credentials; do not send passwords or production access tokens.
Email for a license key →This public guide does not execute Premium modules or collect license tokens.