# Qu’est-ce qu’un planificateur de ressources ?

> Ce qui distingue un planificateur de ressources d’un agenda de rendez-vous, quand votre produit en a besoin et ce qu’apportent SuperScheduler Lite et Pro.

Source: https://superscheduler.org/fr/docs/what-is-a-resource-scheduler/
Reviewed: 2026-10-07

Un planificateur de ressources est une frise avec une ligne par ressource (une chambre, une personne, une machine, un véhicule) et le temps qui défile à l’horizontale : chaque réservation ou intervention est une barre sur la ligne de la ressource qui l’assure. Un agenda de rendez-vous montre un seul agenda en grilles jour, semaine ou mois ; un planificateur de ressources compare de nombreuses ressources côte à côte et permet de déplacer le travail de l’une à l’autre. SuperScheduler est un tel composant pour React : Lite est une frise quotidienne publique en lecture seule sur npm, et Pro ajoute l’édition, le zoom, les arborescences et des modules de planification.

Un planificateur de ressources répond à une seule question : **quelle ressource fait quoi, et quand est-elle libre ?** Les ressources sont des lignes, le temps défile à l’horizontale, et chaque tâche est une barre posée sur la ligne de la ressource qui l’exécute. La réception d’un hôtel voit des chambres et des séjours, un atelier voit des postes et des réparations, un répartiteur voit des techniciens et des interventions.

Cette page explique en quoi cette disposition diffère d’un agenda, quand votre produit en a besoin, ce que SuperScheduler prend en charge et ce qui reste dans votre application, ainsi que la différence entre les deux éditions. Elle se termine par le vocabulaire employé dans le reste de la documentation.

## Ce qui le distingue d’un agenda de rendez-vous
Les deux affichent des événements sur un axe de temps, mais ils répondent à des questions différentes.

| | Agenda de rendez-vous | Planificateur de ressources |
|---|---|---|
| Question principale | Qu’y a-t-il dans cet agenda ? | Quelle ressource fait quoi, et où reste-t-il de la capacité ? |
| Disposition | Les jours en colonnes, les heures de haut en bas | Les ressources en lignes, le temps de gauche à droite |
| Lignes | Un agenda, parfois quelques-uns côte à côte | De quelques dizaines à des milliers de ressources, souvent groupées en arborescence |
| Action typique | Ouvrir ou créer un rendez-vous | Déplacer le travail vers une autre ressource, changer ses dates, repérer un conflit |
| Horizon | Un jour, une semaine ou un mois | De la minute au mois, souvent dans la même vue grâce au zoom |
| Chevauchements | Dessinés côte à côte dans la colonne du jour | Empilés dans la ligne, ou refusés par vos règles |

Un agenda s’organise autour de la personne qui le lit. Un planificateur de ressources s’organise autour de ce dont la capacité est limitée. Dès que les utilisateurs doivent en comparer beaucoup à la fois et déplacer le travail de l’un à l’autre, la disposition d’agenda ne tient plus : une vue semaine de 80 chambres, ce sont 80 agendas.

## Quand vous en avez besoin
Il vous faut un planificateur de ressources lorsque plusieurs de ces conditions sont réunies :

- **La capacité est le problème.** Chambres, lits, postes, équipes, studios, machines, véhicules, quais ou instruments ne peuvent faire qu’une chose à la fois, ou un nombre limité de choses.
- **Le travail passe d’une ressource à l’autre.** Une réservation passe de la chambre 101 à la chambre 102, une réparation part vers un poste équipé d’un pont élévateur, une intervention est réattribuée à un autre technicien.
- **Beaucoup de ressources sont comparées en même temps.** Des dizaines à des milliers de lignes, souvent groupées par site, étage, équipe ou type.
- **Les durées varient fortement.** Des créneaux de 15 minutes et des affectations de plusieurs semaines cohabitent dans les mêmes données : la vue doit aller de la minute au mois.
- **Des règles décident de ce qui peut aller où.** Un séjour ne peut pas être déplacé dans le passé, une intervention exige un technicien certifié, deux opérations ne peuvent pas partager un bloc.

Un agenda classique suffit quand une seule personne gère un seul agenda, quand le besoin principal porte sur les invitations et les réunions récurrentes, ou quand personne ne compare de ressources. Dans ce cas, un planificateur de ressources ajoute une dimension dont personne ne se sert.

→ https://superscheduler.org/fr/examples/hotel-rooms/
→ https://superscheduler.org/fr/examples/clinic-appointments/
## Ce que fait la bibliothèque et ce que fait votre application
SuperScheduler est un composant d’interface. Il affiche, mesure et gère les interactions ; il ne possède ni vos données ni votre logique métier.

| SuperScheduler | Votre application |
|---|---|
| Dessine les lignes de ressources, les en-têtes de temps et les barres d’événements, et virtualise les deux axes pour que seul ce qui est à l’écran existe dans le DOM | Charge les données depuis votre backend et y enregistre les modifications |
| Empile les événements qui se chevauchent dans une ligne | Décide qui peut voir et modifier quoi |
| Gère les gestes au pointeur, au toucher et au clavier (Pro) et consulte vos callbacks avant de valider une modification | Implémente les règles métier dans ces callbacks, et valide de nouveau côté serveur |
| Affiche les refus, les conflits et le temps désactivé (Pro) | Décide de ce qui constitue un conflit ou une période fermée |
| Formate les dates civiles dans la locale configurée | Convertit les instants avec fuseau en heures civiles locales, et inversement |

> **Limitation:**
> SuperScheduler ne persiste pas les données, ne vérifie pas les permissions, ne convertit pas les fuseaux horaires, ne développe pas les règles de récurrence et ne planifie pas le travail automatiquement. Les événements récurrents arrivent au planificateur sous forme d’intervalles concrets que votre application a déjà développés ; un optimiseur ou un outil de planification automatique s’exécute dans votre backend et transmet son résultat au planificateur sous forme de données.

## Lite et Pro
SuperScheduler existe en deux éditions, avec le même nom de composant et les mêmes conventions de dates et de données.

- **Lite** est le paquet npm public `super-scheduler-lite` : une frise quotidienne en lecture seule. Voir [Démarrage rapide avec Lite](https://superscheduler.org/fr/docs/quick-start-lite/).
- **Pro** est le paquet `super-scheduler`, installé depuis une archive tarball privée et versionnée. Voir [Installer SuperScheduler Pro](https://superscheduler.org/fr/docs/install-pro/).

| Fonctionnalité | Lite | Pro |
|---|---|---|
| Axe du temps | Cellules d’un jour uniquement (`scale: 'Day'`) | Minutes, durées de cellule personnalisées, heures, jours, semaines, mois et années |
| Ressources | Liste plate (`id`, `name`) | Listes plates, arborescences, lignes figées et scindées, colonnes d’en-tête de ligne |
| Événements | Barres en lecture seule avec couleurs de base, classe et infobulle | Glisser, redimensionner, créer par sélection, supprimer, HTML personnalisé, zones et menus |
| Callbacks | `onEventClick`, `onTimeRangeClick` | L’ensemble complet : avant et après chaque modification, pendant le glisser, hooks de rendu |
| Événements qui se chevauchent | Empilés automatiquement | Empilés, ou refusés avec `allowEventOverlap: false`, avec retour visuel sur le conflit |
| Règles métier pendant le glisser | Sans objet | `onEventMoving`, `onEventResizing`, cellules désactivées, verrous par événement, confirmation asynchrone |
| Zoom | Aucun | Niveaux de zoom, gestes de pincement et Ctrl/Cmd + molette, niveau de détail, widgets de zoom |
| Clavier | Les flèches déplacent la cellule active ; Entrée ou Espace l’active | Modèle clavier complet, y compris le déplacement et le redimensionnement des événements |
| Virtualisation | Lignes, jours et événements | Lignes, temps et événements, plus le défilement infini |
| Sélection | Aucune | Événements, lignes, plages de temps, rectangles, plusieurs plages à la fois |
| Liens entre événements | Aucun | Dessinés à partir de vos données (fin-début et les trois autres types) |
| Modules | Aucun | Minimap, volets, annuler et rétablir, vues enregistrées, chargement par plages, slots de rendu React, hooks d’état |
| Thèmes | Six propriétés CSS personnalisées | Jeu complet de tokens, mode sombre, préréglages de densité, preset Tailwind |
| Options non prises en charge | Lèvent une erreur | Les API réservées sont typées et émettent un avertissement unique en développement |

Aucune des deux éditions ne limite le nombre de ressources ou d’événements. Lite lève une erreur lorsqu’il reçoit une option qu’il n’implémente pas : une configuration Pro ne fonctionne donc jamais à moitié, en silence, sur Lite. Pro conserve un petit ensemble d’API réservées, typées pour la compatibilité mais non implémentées (par exemple l’édition de texte en ligne, la création interactive de liens et l’export en images ou en tableurs) ; elles émettent un avertissement unique en développement, et la [référence de l’API](https://superscheduler.org/fr/docs/api-reference/) les signale.

Pour les questions commerciales sur Pro, consultez les [tarifs](https://superscheduler.org/fr/pricing/).

## Les données en une image
Tout ce que dessine le planificateur provient de deux tableaux : les ressources et les événements. Un événement désigne sa ressource par son id.

```ts
// src/planning-data.ts
import type { SuperScheduler } from 'super-scheduler'

// Rows: anything that can only do one thing at a time, or has a limited capacity.
export const resources: SuperScheduler.ResourceData[] = [
  { id: 'room-101', name: 'Room 101' },
  { id: 'room-102', name: 'Room 102' },
  { id: 'van-3', name: 'Van 3' },
]

// Bars: one interval on one row. `end` is exclusive, so the stay below ends at 11:00 on
// 5 October and a booking that starts at 11:00 that day does not overlap it.
export const events: SuperScheduler.EventData[] = [
  {
    id: 'booking-1042',
    resource: 'room-101',
    start: '2026-10-02T14:00:00',
    end: '2026-10-05T11:00:00',
    text: 'Booking 1042',
  },
  {
    id: 'route-7',
    resource: 'van-3',
    start: '2026-10-03T08:00:00',
    end: '2026-10-03T12:30:00',
    text: 'Delivery route 7',
  },
]
```
Sur un axe en jours, vous verriez trois lignes et deux barres : l’une du 2 au 5 octobre sur la ligne Room 101, l’autre le 3 octobre sur Van 3. Le [guide du modèle de données](https://superscheduler.org/fr/docs/resources-events-intervals/) détaille les ids, les intervalles et les champs personnalisés.

## Glossaire
Ces termes ont le même sens dans toute la documentation et dans l’API.

### Ressource
Une ligne du planificateur : tout ce qui peut travailler au fil du temps. Dans l’API, c’est `ResourceData`, avec un `id` et un `name`. Dans Pro, les ressources peuvent avoir des `children` (une arborescence), être figées en haut ou en bas, ou être scindées en sous-lignes. Certaines API parlent de *row* (ligne) : une ligne est la ressource affichée.

### Événement
Une barre sur la ligne d’une ressource : une réservation, un poste, une intervention, un séjour. Dans l’API, c’est `EventData`, avec un `id`, un `text`, un `start`, un `end` et la `resource` à laquelle il appartient. Dans les callbacks, vous recevez généralement un objet enveloppe (`SuperScheduler.Event`) dont la propriété `data` est votre objet.

### Intervalle
L’étendue d’un événement, de `start` à `end`. Les intervalles sont semi-ouverts, `[start, end)` : le début appartient à l’événement, la fin non. Un événement qui se termine à 11:00 et un autre qui commence à 11:00 ne se chevauchent pas.

### Cellule
Un pas de la grille de temps sur une ligne : un jour, une heure ou un créneau de 15 minutes, selon l’échelle. C’est sur les cellules que l’on clique pour sélectionner du temps, sur elles que s’aligne le magnétisme, et ce sont elles que vous pouvez désactiver ou décorer avec `onBeforeCellRender` (Pro).

### Échelle
La taille d’une cellule : `Day` dans Lite ; dans Pro, aussi `Hour`, `Minute`, `Week`, `Month`, `Year`, ou `CellDuration` avec un nombre de minutes personnalisé. L’échelle est indépendante des libellés des en-têtes. Voir [Heures, minutes, jours et zoom](https://superscheduler.org/fr/docs/time-scales-zoom/).

### Niveau de zoom
Un ensemble nommé d’options de l’axe du temps (échelle, durée de cellule, largeur de cellule, en-têtes) que Pro applique en bloc. Les gestes et `control.zoom` passent d’un niveau de zoom à l’autre, ou zooment en continu entre eux.

### Contrôle
L’instance du planificateur, `SuperScheduler.Scheduler`. Le composant React en crée une au montage et la libère au démontage. Vous appelez ses méthodes pour faire défiler, sélectionner, mettre à jour ou zoomer ; les handlers la reçoivent dans `args.control`. Voir [Intégration React](https://superscheduler.org/fr/docs/react-integration/#control).

## Étapes suivantes
- Essayez l’édition en lecture seule en quelques minutes : [Démarrage rapide avec Lite](https://superscheduler.org/fr/docs/quick-start-lite/).
- Installez Pro et construisez un planning modifiable : [Installer SuperScheduler Pro](https://superscheduler.org/fr/docs/install-pro/).
- Découvrez le modèle de données avant de brancher un backend : [Ressources, événements et intervalles](https://superscheduler.org/fr/docs/resources-events-intervals/).
- Parcourez des plannings fonctionnels pour douze secteurs dans les [exemples](https://superscheduler.org/fr/examples/).
