Premium

Capacity, skills & roles

Describe both how much work a resource can accept and which work it is qualified to perform. Weighted event demand and resource requirements support decisions beyond simple visual overlap.

Capacity, skills & roles — Screenshot of the actual WTS Calendar package with sample data. Static image, not a live demo. The supplementary API result table is application-owned. 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. The supplementary API result table is application-owned. Preview build: @wts-calendar/core@1.1.0 (unpublished).

What you configure

capacity / resourceUnits
Describe resource capacity and the units consumed by assigned events.
assignmentPolicy
Declare allowed event types, available skills, and roles.
resourceRequirements
Carry an event's type, skill, and role requirements with its assignment.

Integration code example

  1. Agree on the capacity unit used by your resource and event data.
  2. Describe resource capabilities and event requirements with consistent identifiers.
  3. Enable the relevant constraint checks and surface structured failures in the editing experience.

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-day',
  resources: [
    {
      id: 'design',
      title: 'Design studio',
      capacity: 2,
      assignmentPolicy: { skills: ['research'], roles: ['reviewer'] },
    },
  ],
  events: [],
});
await calendar.whenIdle();

calendar.addEvent({
  id: 'review',
  title: 'Research review',
  resourceId: 'design',
  resourceUnits: 1,
  resourceRequirements: { skills: ['research'], roles: ['reviewer'] },
  start: '2026-09-07T09:00:00Z',
  end: '2026-09-07T10:00:00Z',
});

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

Catch validation failures in your edit handler. Client-side resource policies do not replace authorization in a shared backend.

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

  • Requirements are considered across resource-aware mutation and interaction paths.
  • Resource summaries expose booked units and capacity conflicts for the visible range.

Limits and responsibilities

  • The application defines what a unit, skill, or role means; the package does not certify qualifications.
  • Capacity rules require reliable input data and server-side validation for shared scheduling.
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.