Premium

Dates above resources

Choose which question the header answers first: when work happens, or who is assigned. Vertical resource DayGrid and TimeGrid views support both date-major and resource-major arrangements.

Dates above resources — Screenshot of the actual WTS Calendar package with sample data. Static image, not a live demo. Preview build: @wts-calendar/core@1.1.0 (unpublished).
Screenshot of the actual WTS Calendar package with sample data. Static image, not a live demo. Preview build: @wts-calendar/core@1.1.0 (unpublished).

What you configure

datesAboveResources
Set true for date-major headings; false is resource-major.
vertical resource views
Use resource DayGrid or resource TimeGrid day/week variants.
visible range
Keep the date range and resource collection consistent while comparing arrangements.

Integration code example

  1. Enable a licensed vertical resource view and load the resource collection.
  2. Choose the datesAboveResources value that matches your users' scanning pattern.
  3. Confirm the header grouping remains understandable with your real resource titles and translations.

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.

Install command
npm install @wts-calendar/core
Host markup
<div id="calendar"></div>
Global CSS / SCSS
@import '@wts-calendar/core/styles/calendar.css';
TypeScript integration
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-time-grid-week',
  datesAboveResources: true,
  resourceTimeGrid: { columnWidth: 180 },
  resources: [
    { id: 'design', title: 'Design studio', capacity: 2 },
    { id: 'engineering', title: 'Engineering', capacity: 4 },
  ],
  events: [
    {
      id: 'review',
      title: 'Design review',
      resourceId: 'design',
      start: '2026-09-07T09:00:00Z',
      end: '2026-09-07T10:30:00Z',
    },
  ],
});
await calendar.whenIdle();

export function groupByResource() {
  calendar.setOptions({ datesAboveResources: false });
}

// 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

  • Date-major headers repeat resources under each date.
  • Resource-major headers repeat dates under each resource without changing underlying event assignments.

Limits and responsibilities

  • This option changes heading and column organization, not the event data model.
  • It is not a setting for the ordinary Month view or horizontal timeline.
Premium

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.