Table of Contents

Codeunit "Calendar Helper V2 UTCAP"

ID 70344816
Namespace: CapVision.Core.Controls

Propose des fonctionnalités fortement typées pour construire les objets JSON attendus par le contrôle calendrier « Calendar V2 UTCAP ». Le positionnement se fait par index de colonne (startIndex/endIndex, 0-based, inclusifs) ; utilisez le codeunit Calendar Column Math UTCAP (ToColumnIndex) pour convertir une (période, sous-période) en index de colonne.

Remarks

Pattern builder : chaque Create... renvoie un objet minimal que l'on enrichit ensuite par des procédures Set... / MakeEditable (appelées ligne à ligne sur l'objet). Chaque objet porte une propriété _context qui identifie son type (renderer, resource, task…) : les procédures Set... vérifient ce _context et refusent un objet d'un autre type, garantissant qu'on n'enrichit qu'un objet valide (ex. SetLocale n'accepte qu'un objet issu de CreateTeamPlanRenderer).

Methods

CreateTeamPlanRenderer

Créé une configuration minimale pour la vue Planning d'équipe (Team).

procedure CreateTeamPlanRenderer(PeriodCount: Integer; SubPeriodCount: Integer): JsonObject

Parameters

Name Type Description
PeriodCount Integer

Nombre de périodes (colonnes principales).

SubPeriodCount Integer

Nombre de sous-périodes par période (sert au calcul d'index de colonne).

Returns

Type Description
JsonObject

La configuration à passer à SetRenderer.

CreateTeamPlanRenderer

Créé une configuration pour la vue Planning d'équipe (Team) avec les libellés de colonnes.

procedure CreateTeamPlanRenderer(PeriodCount: Integer; Periods: List of [Text]; SubPeriodCount: Integer; SubPeriods: List of [Text]): JsonObject

Parameters

Name Type Description
PeriodCount Integer

Nombre de périodes (colonnes principales).

Periods List of [Text]

Libellés des périodes, alignés par index.

SubPeriodCount Integer

Nombre de sous-périodes par période (≥ 1 ; sert au calcul d'index de colonne).

SubPeriods List of [Text]

Libellés des sous-périodes, alignés par index.

Returns

Type Description
JsonObject

La configuration à passer à SetRenderer.

Examples

// 5 jours × 2 créneaux nommés (Matin / Après-midi), répétés chaque jour :
Renderer := Helper.CreateTeamPlanRenderer(5, Days, 2, HalfDays); // HalfDays = ['Matin','Après-midi']

// 5 jours × 1 colonne, SANS ligne de sous-périodes (vue "journées") :
Renderer := Helper.CreateTeamPlanRenderer(5, Days, 1, Empty);

// 5 jours × 4 colonnes conservées pour le placement, mais sans en-tête de sous-périodes :
Renderer := Helper.CreateTeamPlanRenderer(5, Days, 4, Empty);

Remarks

STRUCTURE (nombre de colonnes) — PeriodCount et SubPeriodCount font foi : la grille compte PeriodCount × SubPeriodCount colonnes de temps. C'est aussi le pas de conversion (période, sous-période) → index de colonne (index = période × SubPeriodCount + sousPériode). SubPeriodCount doit être ≥ 1 (sinon une erreur est levée).

LIBELLÉS (alignés PAR INDEX) — Periods/SubPeriods sont alignés colonne par colonne. Une liste plus COURTE que le nombre de colonnes laisse les colonnes de fin sans libellé ; une liste plus LONGUE voit son surplus ignoré. En mode par défaut, il n'y a PAS de bouclage des libellés.

RÉPÉTITION DES SOUS-PÉRIODES — par défaut, SubPeriods décrit les créneaux d'UNE période et se répète à l'identique sur chaque période (ex. "Matin"/"Après-midi" affichés pour chaque jour). Des libellés identiques consécutifs sont fusionnés en un seul en-tête (ex. ["Matin","Matin"] → un titre "Matin" sur 2 colonnes). Pour répartir les libellés sur TOUTE la grille (axe continu) au lieu de les répéter par période, voir SetSubPeriodsMode.

MASQUER LA LIGNE DES SOUS-PÉRIODES — la ligne d'en-tête des sous-périodes ne s'affiche que s'il y a plus d'une sous-période ET au moins un libellé non vide. Autrement dit :

  • SubPeriodCount = 1 (avec ou sans libellé) → une seule colonne par période, ligne des sous-périodes masquée (vue "journées").
  • SubPeriodCount = N ≥ 2 avec SubPeriods VIDE (ou uniquement des libellés vides) → les N colonnes par période sont conservées pour le placement, mais la ligne des sous-périodes est masquée. Il n'existe pas de SubPeriodCount = 0 (valeur ≥ 1 obligatoire) : pour masquer les sous-périodes, on joue sur les libellés, pas sur un compte nul.

Enrichissez ensuite la configuration avec les procédures Set... (largeur, coin, pauses, etc.).

SetLocale

Définit la locale d'affichage (format "xx-XX", ex. "fr-FR").

procedure SetLocale(var Config: JsonObject; Locale: Text)

Parameters

Name Type Description
Config JsonObject

Configuration issue de CreateTeamPlanRenderer.

Locale Text

Locale au format "xx-XX".

Remarks

Réservée : la locale est transmise au moteur de rendu mais n'influence pas encore l'affichage (les libellés sont fournis tels quels par l'AL). Prévue pour un formatage localisé ultérieur.

SetHeaderColumnWidth

Définit la largeur (px) de la colonne des ressources (colonne figée de gauche).

procedure SetHeaderColumnWidth(var Config: JsonObject; Width: Integer)

Parameters

Name Type Description
Config JsonObject

Configuration issue de CreateTeamPlanRenderer.

Width Integer

Largeur en pixels.

Remarks

Sans appel, une largeur par défaut s'applique. La colonne reste FIGÉE horizontalement pendant le défilement ; à l'export PDF paginé A4, elle conserve cette largeur (seules les colonnes de temps sont réduites pour tenir dans la page).

SetCollapsedHeaderMaxVisibleRows

Définit le nombre maximum de sous-lignes affichées par ressource avant repli.

procedure SetCollapsedHeaderMaxVisibleRows(var Config: JsonObject; Rows: Integer)

Parameters

Name Type Description
Config JsonObject

Configuration issue de CreateTeamPlanRenderer.

Rows Integer

Nombre de sous-lignes visibles avant repli (≥ 1).

Remarks

Quand les tâches d'une ressource se chevauchent, elles s'empilent sur plusieurs sous-lignes. Si le nombre de sous-lignes dépasse cette valeur, un bouton de repli apparaît sur la ressource : une fois repliée, seules les Rows premières sous-lignes (et les tâches qu'elles portent) restent visibles. Défaut : 1.

SetRowHeight

Définit la hauteur UNITAIRE d'une ligne (ressource / tâche). L'avatar et les textes (ressources ET activités) grandissent / rétrécissent proportionnellement à cette hauteur. Même système de joker (étoile) que SetSubPeriodWidth, mais sur l'axe VERTICAL : la position de l'étoile (avant/après le nombre) indique s'il s'agit d'une borne MIN ou MAX.

procedure SetRowHeight(var Config: JsonObject; Height: Text)

Parameters

Name Type Description
Config JsonObject
Height Text

Hauteur au format "N", "N*", "*N" ou "*".

Examples

Helper.SetRowHeight(Renderer, '*');     // s'adapte pile à la hauteur disponible
Helper.SetRowHeight(Renderer, '*50');   // au moins 50 px par ligne, défile si nécessaire
Helper.SetRowHeight(Renderer, '80*');   // au plus 80 px, se resserre pour éviter tout défilement

Remarks

Formes acceptées et comportement (une valeur invalide lève une erreur) :

  • "50" (ou un nombre) → hauteur FIXE de 50 px ; si le total dépasse la hauteur visible, défilement vertical.
  • "50*" → 50 px MAX : les lignes sont réduites pour tout faire tenir en hauteur (jamais de défilement), sans jamais dépasser 50 px.
  • "*50" → 50 px MIN : les lignes sont agrandies pour remplir la hauteur visible ; si 50 px ne tiennent pas toutes, défilement vertical.
  • "*" → remplit EXACTEMENT la hauteur visible (ni plus, ni moins).
  • non appelé → hauteur par défaut, fixe. Les valeurs fixes restent bornées dans un intervalle raisonnable côté control add-in ; les bornes des jokers (N) sont libres, comme pour SetSubPeriodWidth.

SetPeriodHeaderHeight

Définit la hauteur (px) de la ligne d'en-tête des périodes.

procedure SetPeriodHeaderHeight(var Config: JsonObject; Height: Integer)

Parameters

Name Type Description
Config JsonObject

Configuration issue de CreateTeamPlanRenderer.

Height Integer

Hauteur en pixels.

Remarks

Facultatif — sans appel, une hauteur par défaut s'applique. Une hauteur élevée est surtout utile avec un texte de périodes VERTICAL (cf. SetPeriodTextOrientation) et des colonnes fines, pour laisser la place à des libellés longs. Ne modifie pas la hauteur des lignes de ressources (cf. SetRowHeight).

SetPeriodTextOrientation

Définit l'orientation du texte des périodes : horizontal (défaut) ou vertical.

procedure SetPeriodTextOrientation(var Config: JsonObject; Orientation: Enum "Calendar Period Orient UTCAP")

Parameters

Name Type Description
Config JsonObject

Configuration issue de CreateTeamPlanRenderer.

Orientation Enum CapVision.Core.Controls."Calendar Period Orient UTCAP"

Horizontal (défaut) ou Vertical.

Remarks

En mode Vertical, les libellés de périodes sont pivotés et lus de BAS EN HAUT, centrés dans la hauteur de l'en-tête. À combiner avec un en-tête haut (SetPeriodHeaderHeight) et des colonnes fines pour afficher des intitulés longs sur des colonnes étroites. N'affecte pas la structure de la grille.

SetCornerCellText

Définit le texte de la cellule du coin haut-gauche (au-dessus de la colonne des ressources).

procedure SetCornerCellText(var Config: JsonObject; CornerText: Text)

Parameters

Name Type Description
Config JsonObject

Configuration issue de CreateTeamPlanRenderer.

CornerText Text

Texte du coin haut-gauche.

Remarks

Affiché en petites majuscules ; sert généralement d'intitulé de la colonne des ressources (ex. « Équipe »).

SetSubPeriodWidth

Définit la largeur d'une sous-colonne (créneau). L'étoile est un joker : sa position (avant/après le nombre) indique s'il s'agit d'une borne MIN ou MAX.

procedure SetSubPeriodWidth(var Config: JsonObject; Width: Text)

Parameters

Name Type Description
Config JsonObject
Width Text

Largeur au format "N", "N*", "*N" ou "*".

Examples

Helper.SetSubPeriodWidth(Renderer, '*');     // s'adapte pile à la largeur disponible
Helper.SetSubPeriodWidth(Renderer, '*60');   // au moins 60 px par créneau, défile si nécessaire
Helper.SetSubPeriodWidth(Renderer, '120*');  // au plus 120 px, se resserre pour éviter tout défilement

Remarks

Formes acceptées et comportement (une valeur invalide lève une erreur) :

  • "200" (ou un nombre) → largeur FIXE de 200 px ; si le total dépasse la largeur visible, défilement horizontal.
  • "200*" → 200 px MAX : les colonnes sont réduites pour tout faire tenir (jamais de défilement), sans jamais dépasser 200 px.
  • "*200" → 200 px MIN : les colonnes sont agrandies pour remplir la largeur visible ; si 200 px ne tiennent pas toutes, défilement horizontal.
  • "*" → remplit EXACTEMENT la largeur visible (ni plus, ni moins).
  • non appelé → largeur par défaut, fixe.

SetSubPeriodsMode

Choisit COMMENT les libellés de sous-périodes (SubPeriods) sont répartis sur la grille. Ne change PAS la structure (le nombre de colonnes reste PeriodCount × SubPeriodCount) : seule la disposition des libellés d'en-tête diffère. Les trois modes sont MUTUELLEMENT EXCLUSIFS (un seul à la fois).

procedure SetSubPeriodsMode(var Config: JsonObject; Mode: Enum "Calendar SubPeriods Mode UTCAP")

Parameters

Name Type Description
Config JsonObject

Configuration issue de CreateTeamPlanRenderer.

Mode Enum CapVision.Core.Controls."Calendar SubPeriods Mode UTCAP"

Default (défaut) = aligné par index, sans bouclage ; Repeat = bouclé (modulo) sur la période ; Stretch = réparti/espacé sur toute la grille.

Examples

// Axe espacé : 12 sous-colonnes, 4 libellés → chaque libellé suivi de 2 colonnes vides (⌈12÷4⌉−1), 2 vides finaux.
Renderer := Helper.CreateTeamPlanRenderer(2, Week, 12, Points); // Points = ['SP1','SP2','SP3','SP4']
Helper.SetSubPeriodsMode(Renderer, "Calendar SubPeriods Mode UTCAP"::Stretch);

Remarks

Default (défaut, non appelé) — SubPeriods décrit les créneaux d'UNE période, ALIGNÉS PAR INDEX et SANS bouclage : les colonnes au-delà de la liste restent VIDES. Le motif se répète à l'identique sur chaque période et les libellés consécutifs identiques sont fusionnés en un seul en-tête centré. Ex. grille 5 jours × 6, SubPeriods = ['Matin','Matin','Midi','Midi','Soir','Soir'] → chaque jour affiche trois titres centrés "Matin" | "Midi" | "Soir" (chacun sur 2 colonnes).

Repeat ("bouclé") — les libellés BOUCLENT (modulo) pour remplir TOUTES les colonnes d'UNE période : la colonne c reçoit libellés[c mod nbLibellés]. Motif répété à l'identique sur chaque période. Ex. SubPeriodCount = 6, SubPeriods = ['A','B'] → chaque période affiche "A B A B A B".

Stretch ("axe / graduation") — les libellés sont ESPACÉS dans la période : chaque libellé occupe une colonne puis est SUIVI de N colonnes VIDES, avec N = ⌈SubPeriodCount ÷ nbLibellés⌉ − 1. La période peut se terminer par des colonnes vides si SubPeriodCount n'est pas un multiple. Deux cas de figure (mêmes 4 libellés) :

  • SubPeriodCount = 10 → "SP1", "", "", "SP2", "", "", "SP3", "", "", "SP4" (le dernier libellé tombe pile sur la dernière colonne, aucun vide final).
  • SubPeriodCount = 12 → "SP1", "", "", "SP2", "", "", "SP3", "", "", "SP4", "", "" (2 colonnes vides finales).

Cas particulier — s'il y a TROP de libellés pour être espacés (ex. autant ou plus de libellés que de sous-colonnes), l'axe devient CONTINU et les libellés BOUCLENT (libellés[c mod nbLibellés]) en traversant les frontières de période. Ex. 24 heures sur 3 périodes × 8 sous-colonnes.

SetBreakSubPeriods

Marque certaines sous-périodes comme PAUSES (ex. déjeuner) : colonnes hachurées et non-droppables.

procedure SetBreakSubPeriods(var Config: JsonObject; BreakIndexes: List of [Integer])

Parameters

Name Type Description
Config JsonObject

Configuration issue de CreateTeamPlanRenderer.

BreakIndexes List of [Integer]

Index (0-based, au sein d'une période) des sous-périodes de pause.

Remarks

Les index sont 0-based et s'entendent DANS une période (0 = 1ʳᵉ sous-période) ; la pause est répétée sur chaque période. Une colonne de pause est hachurée et REFUSE le dépôt d'une tâche par glisser-déposer (le placement programmatique par index, lui, reste possible).

SetOptimistic

Active le mode OPTIMISTE du contrôle : les actions sur les tâches (déplacement, redimensionnement) sont appliquées IMMÉDIATEMENT à l'écran, avant la confirmation de BC.

procedure SetOptimistic(var Config: JsonObject; Optimistic: Boolean)

Parameters

Name Type Description
Config JsonObject

Configuration issue de CreateTeamPlanRenderer.

Optimistic Boolean

Vrai pour activer le mode optimiste.

Remarks

Défaut : false — le contrôle n'applique RIEN en local ; la tâche reste dans son état d'origine jusqu'à ce que BC republie la donnée réelle. En true, le contrôle applique tout de suite le nouveau startIndex/endIndex (et la ressource) sur la tâche, sans rien recalculer d'autre, puis attend le retour de BC — qui fait foi et écrase l'état optimiste. Dans les DEUX cas, BC reste seul maître de la position finale et DOIT republier la tâche (CreateTask) avec la position retenue (acceptée, corrigée, ou d'origine si refusée).

ShowTaskSpinnerOnTreatment

Affiche un indicateur de chargement (spinner) sur une tâche pendant qu'une action initiée par le contrôle (déplacement, redimensionnement, suppression) est en cours de traitement par BC.

procedure ShowTaskSpinnerOnTreatment(var Config: JsonObject; ShowLoading: Boolean)

Parameters

Name Type Description
Config JsonObject

Configuration issue de CreateTeamPlanRenderer.

ShowLoading Boolean

Vrai pour afficher l'indicateur de traitement sur la tâche.

Remarks

Défaut : false. En true, dès qu'une action est déclenchée sur une tâche, un spinner s'affiche sur cette tâche jusqu'à ce que BC la republie (CreateTask(s)) ou la supprime (DeleteTask(s)). Filet de sécurité : l'indicateur disparaît après un court délai si BC ne répond pas — BC DOIT donc répondre par une republication / suppression de la tâche concernée.

AllowMultiSelection

Autorise la MULTI-SÉLECTION de tâches (Ctrl/Cmd+clic) dans le contrôle.

procedure AllowMultiSelection(var Config: JsonObject; Allow: Boolean)

Parameters

Name Type Description
Config JsonObject

Configuration issue de CreateTeamPlanRenderer.

Allow Boolean

Vrai pour autoriser la multi-sélection.

Remarks

Défaut : false — un clic (simple ou Ctrl/Cmd+clic) sélectionne UNE seule tâche à la fois. En true, Ctrl/Cmd+clic ajoute/retire une tâche de la sélection courante ; une action de menu contextuel (OnTaskContextMenuClicked) est alors rejouée pour CHAQUE tâche sélectionnée, une par une (le contrôle appelle le déclencheur une fois par tâche — aucun changement de contrat).

CreateResource

Créé une ressource (une ligne du planning). Enrichissez-la ensuite avec les procédures SetResource... (description, image, couleurs, repli), puis publiez-la via CreateResource(s).

procedure CreateResource(Id: Text; Name: Text): JsonObject

Parameters

Name Type Description
Id Text

Identifiant unique de la ressource (obligatoire).

Name Text

Nom affiché de la ressource.

Returns

Type Description
JsonObject

Remarks

Republier une ressource avec un Id DÉJÀ PRÉSENT la met à jour : les champs fournis sont remplacés, les champs optionnels non fournis restent inchangés. Le nom s'affiche sur 2 lignes au maximum (tronqué avec « … » au-delà).

SetResourceDescription

Définit la description (métier / rôle) affichée sous le nom de la ressource.

procedure SetResourceDescription(var Resource: JsonObject; Description: Text)

Parameters

Name Type Description
Resource JsonObject

Ressource issue de CreateResource.

Description Text

Description à afficher sous le nom.

Remarks

Affichée en plus petit, sur une seule ligne (tronquée avec « … » si trop longue).

SetResourceImageColor

Définit la couleur de l'anneau entourant la photo de profil (vide = aucun anneau).

procedure SetResourceImageColor(var Resource: JsonObject; ImageColor: Text)

Parameters

Name Type Description
Resource JsonObject

Ressource issue de CreateResource.

ImageColor Text

Couleur de l'anneau (CSS).

Remarks

N'a d'effet visible que si une photo est fournie (cf. SetResourceImage) : sans photo, aucun cadre n'est affiché. Couleur CSS (ex. "#21888c", "rgb(...)"). À défaut de nameColor, cette couleur sert aussi de couleur de repli pour le nom.

SetResourceNameColor

Définit la couleur du nom de la ressource (couleur CSS).

procedure SetResourceNameColor(var Resource: JsonObject; NameColor: Text)

Parameters

Name Type Description
Resource JsonObject

Ressource issue de CreateResource.

NameColor Text

Couleur du nom (CSS).

Remarks

À défaut, le nom reprend la couleur de l'anneau (imageColor) si définie, sinon la couleur primaire du thème.

SetResourceCollapsed

Force l'état replié/déplié de la ligne de la ressource.

procedure SetResourceCollapsed(var Resource: JsonObject; Collapsed: Boolean)

Parameters

Name Type Description
Resource JsonObject

Ressource issue de CreateResource.

Collapsed Boolean

Vrai pour replier la ligne.

Remarks

Le repli n'a d'effet que si la ressource a plus de sous-lignes que le maximum configuré (cf. SetCollapsedHeaderMaxVisibleRows). L'utilisateur peut ensuite basculer l'état via le bouton de repli.

SetResourceImage

Définit la photo de profil de la ressource (encodée en Base64 depuis le flux fourni). Un flux vide laisse la ressource SANS photo.

procedure SetResourceImage(var Resource: JsonObject; ImageStream: InStream)

Parameters

Name Type Description
Resource JsonObject

Ressource issue de CreateResource.

ImageStream InStream

Flux de l'image (PNG).

Remarks

La photo est affichée détourée dans un cadre rond, avec l'anneau imageColor éventuel. Sans photo, AUCUN cadre n'est affiché : seuls le nom et la description occupent la cellule. Format attendu : PNG.

SetResourceDefaultImage

Définit une image de profil PAR DÉFAUT (repli générique) pour une ressource sans vraie photo. L'image s'affiche normalement, mais en mode mobile — quand la colonne des ressources se réduit — le contrôle lui substitue un avatar « monogramme » (initiales + couleur dérivée). Un flux vide laisse la ressource sans image.

procedure SetResourceDefaultImage(var Resource: JsonObject; ImageStream: InStream)

Parameters

Name Type Description
Resource JsonObject

Ressource issue de CreateResource.

ImageStream InStream

Flux de l'image de repli (PNG).

Remarks

À utiliser pour un avatar anonyme commun quand la ressource n'a pas de photo personnelle. Publier ensuite une vraie photo (SetResourceImage) lève automatiquement le caractère « par défaut ». Format attendu : PNG.

CreateTask

Créé une tâche (carte d'activité) positionnée par INDEX DE COLONNE (jamais par date/heure). Enrichissez-la ensuite (SetTask..., SetTaskStyle, MakeEditable) puis publiez-la via CreateTask(s).

procedure CreateTask(Id: Text; ResourceId: Text; StartIndex: Integer; EndIndex: Integer): JsonObject

Parameters

Name Type Description
Id Text

Identifiant unique de la tâche (obligatoire).

ResourceId Text

Identifiant de la ressource (ligne) à laquelle la tâche est assignée.

StartIndex Integer

Index de colonne de début (0-based).

EndIndex Integer

Index de colonne de fin (0-based, inclusif).

Returns

Type Description
JsonObject

Remarks

La tâche occupe une bande CONTIGUË de colonnes de StartIndex à EndIndex (inclus) sur la ligne de la ressource ResourceId. Conversion : `index = période × SubPeriodCount

  • sousPériode. Les tâches qui se chevauchent sur une même ressource s'empilent automatiquement sur des sous-lignes (cf. SetCollapsedHeaderMaxVisibleRows). Republier une tâche avec un Id` existant la met à jour (repositionnement inclus).

SetTaskText

Définit le texte principal de la carte (1ʳᵉ ligne, en gras).

procedure SetTaskText(var Task: JsonObject; PrimaryText: Text)

Parameters

Name Type Description
Task JsonObject

Tâche issue de CreateTask.

PrimaryText Text

Texte principal.

Remarks

Tronqué avec « … » s'il dépasse la largeur de la carte. Sur une carte très étroite portant une pastille de quantité, les textes sont masqués au profit de la seule pastille.

SetTaskSecondaryText

Définit le texte secondaire de la carte (2ᵉ ligne, plus petit).

procedure SetTaskSecondaryText(var Task: JsonObject; SecondaryText: Text)

Parameters

Name Type Description
Task JsonObject

Tâche issue de CreateTask.

SecondaryText Text

Texte secondaire.

Remarks

Tronqué avec « … » si trop long ; mêmes règles d'affichage que le texte principal.

SetTaskTertiaryText

Définit le texte tertiaire de la carte (3ᵉ ligne, plus petit, en italique).

procedure SetTaskTertiaryText(var Task: JsonObject; TertiaryText: Text)

Parameters

Name Type Description
Task JsonObject

Tâche issue de CreateTask.

TertiaryText Text

Texte tertiaire.

Remarks

Tronqué avec « … » si trop long.

SetTaskQuantity

Définit la quantité de la tâche, affichée dans une pastille ronde à droite de la carte.

procedure SetTaskQuantity(var Task: JsonObject; Quantity: Decimal)

Parameters

Name Type Description
Task JsonObject

Tâche issue de CreateTask.

Quantity Decimal

Quantité.

Remarks

La pastille n'apparaît QUE si cette procédure est appelée (présence du champ) — ne pas l'appeler = aucune pastille. Elle reprend la COULEUR DU TEXTE de la carte (donc visible quel que soit le fond). Valeur affichée avec 2 décimales maximum (les décimales inutiles sont retirées).

SetTaskQuantity

Surcharge TEXTE de SetTaskQuantity : la quantité est déjà formatée côté AL et affichée telle quelle dans la pastille (aucun arrondi, aucune conversion numérique).

procedure SetTaskQuantity(var Task: JsonObject; Quantity: Text)

Parameters

Name Type Description
Task JsonObject

Tâche issue de CreateTask.

Quantity Text

Quantité, libellé libre affiché tel quel.

Remarks

À utiliser pour une quantité non numérique ou pré-formatée (ex. « 1/2 », « 2 h », « n/a ») ; pour une valeur numérique, préférer la surcharge Decimal (formatage homogène par le contrôle). La pastille étant un petit cercle, garder un libellé TRÈS COURT (2-3 caractères) : un texte long débordera du cercle. Une chaîne vide reste une quantité PRÉSENTE (pastille vide affichée) — ne pas appeler la procédure pour ne rien afficher.

SetTaskStyle

Définit les couleurs de la tâche : BackgroundColor (fond de la carte) et BorderLeft (bandeau vertical accentué le long du bord gauche). Une couleur vide est ignorée.

procedure SetTaskStyle(var Task: JsonObject; BackgroundColor: Text; BorderLeft: Text)

Parameters

Name Type Description
Task JsonObject

Tâche issue de CreateTask.

BackgroundColor Text

Couleur de fond de la carte (CSS).

BorderLeft Text

Couleur du bandeau vertical gauche (CSS).

Remarks

Couleurs CSS ("#rrggbb", "rgb(...)"). La couleur du texte est calculée automatiquement pour rester lisible (noir ou blanc selon le contraste) ; pour l'imposer, utiliser la surcharge à trois couleurs ci-dessous. Le bandeau gauche est indépendant du fond.

SetTaskStyle

Surcharge de SetTaskStyle permettant d'IMPOSER la couleur du texte de la carte (ForegroundColor) en plus du fond et du bandeau gauche. Une couleur vide est ignorée.

procedure SetTaskStyle(var Task: JsonObject; BackgroundColor: Text; ForegroundColor: Text; BorderLeft: Text)

Parameters

Name Type Description
Task JsonObject

Tâche issue de CreateTask.

BackgroundColor Text

Couleur de fond de la carte (CSS).

ForegroundColor Text

Couleur du texte de la carte (CSS).

BorderLeft Text

Couleur du bandeau vertical gauche (CSS).

Remarks

Couleurs CSS ("#rrggbb", "rgb(...)"). Sans ForegroundColor, la couleur du texte est calculée automatiquement d'après le fond (noir ou blanc selon le contraste) ; la fournir DÉSACTIVE ce calcul et la couleur est conservée telle quelle, y compris si le fond change ensuite — c'est donc à l'AL d'assurer la lisibilité. La pastille de quantité et la case de sélection reprennent cette couleur.

MakeEditable

Autorise le déplacement et le redimensionnement de la tâche par l'utilisateur (glisser-déposer).

procedure MakeEditable(var Task: JsonObject; Editable: Boolean)

Parameters

Name Type Description
Task JsonObject

Tâche issue de CreateTask.

Editable Boolean

Vrai pour rendre la tâche éditable.

Remarks

Le geste est appliqué IMMÉDIATEMENT à l'écran, puis l'événement OnTaskMoved est déclenché. Pour REFUSER un déplacement, l'AL doit re-publier la tâche à son ancienne position (CreateTask) — sans quoi la carte reste à sa nouvelle position. Une tâche non éditable ne peut être ni déplacée ni redimensionnée.

SetTaskDateTimeInfo

Attache des dates/heures purement INFORMATIVES à une tâche.

procedure SetTaskDateTimeInfo(var Task: JsonObject; StartingDateTime: DateTime; EndingDateTime: DateTime)

Parameters

Name Type Description
Task JsonObject

Tâche issue de CreateTask.

StartingDateTime DateTime

Date/heure de début informative.

EndingDateTime DateTime

Date/heure de fin informative.

Remarks

Ces dates ne sont JAMAIS utilisées pour le placement (qui se fait exclusivement par index de colonne) : elles sont transmises et conservées, à des fins d'affichage/tooltip ou de logique métier côté AL uniquement.

CreateMarker

Créé un marqueur posé sur les cellules d'une ressource, sur la plage de colonnes indiquée. Enrichissez-le ensuite avec SetMarkerTitle, SetMarkerColors et, au besoin, SetMarkerAnchorType.

procedure CreateMarker(Id: Text; ResourceId: Text; StartIndex: Integer; EndIndex: Integer; Shape: Enum "Calendar Marker Shape UTCAP"): JsonObject

Parameters

Name Type Description
Id Text

Identifiant unique du marqueur.

ResourceId Text

Ressource (ligne) sur laquelle poser le marqueur.

StartIndex Integer

Index de colonne de début (0-based).

EndIndex Integer

Index de colonne de fin (0-based, inclusif).

Shape Enum CapVision.Core.Controls."Calendar Marker Shape UTCAP"

Forme du marqueur : Line (bande hachurée) ou Triangle (alerte par cellule).

Returns

Type Description
JsonObject

Remarks

Deux formes (Shape) :

  • Line : une bande hachurée CONTIGUË couvrant toute la plage (peut traverser plusieurs périodes).
  • Triangle : un petit triangle d'alerte RÉPÉTÉ sur chaque cellule de la plage (repère ponctuel, pas étiré). Ancré sur cellule par défaut (seul Cell est rendu actuellement). Le marqueur se superpose aux tâches sans les bloquer. À noter : DeleteMarkers supprime TOUS les marqueurs (il n'y a pas de suppression unitaire).

SetMarkerAnchorType

Définit le type d'ancrage du marqueur.

procedure SetMarkerAnchorType(var Marker: JsonObject; AnchorType: Enum "Calendar Anchor Type UTCAP")

Parameters

Name Type Description
Marker JsonObject

Marqueur issu de CreateMarker.

AnchorType Enum CapVision.Core.Controls."Calendar Anchor Type UTCAP"

Type d'ancrage.

Remarks

Seul Cell est rendu actuellement ; Header/Period sont réservés (sans effet visible).

SetMarkerTitle

Définit le texte affiché en info-bulle au survol du marqueur.

procedure SetMarkerTitle(var Marker: JsonObject; Title: Text)

Parameters

Name Type Description
Marker JsonObject

Marqueur issu de CreateMarker.

Title Text

Texte affiché au survol.

SetMarkerColors

Définit les couleurs du marqueur. Une couleur vide est ignorée.

procedure SetMarkerColors(var Marker: JsonObject; Color1: Text; Color2: Text)

Parameters

Name Type Description
Marker JsonObject

Marqueur issu de CreateMarker.

Color1 Text

Couleur principale (CSS).

Color2 Text

Couleur secondaire (CSS ; hachuré alterné pour une ligne).

Remarks

Forme Line : hachuré alterné Color1/Color2 ; si une seule couleur est fournie, la bande est unie. Forme Triangle : seule Color1 est utilisée.

CreateClosedPeriod

Créé une période fermée (férié, absence) applicable à TOUTES les ressources, rendue en bande hachurée/grisée. Enrichissez-la avec SetClosedPeriodDescription / SetClosedPeriodColors.

procedure CreateClosedPeriod(Id: Text; StartIndex: Integer; EndIndex: Integer): JsonObject

Parameters

Name Type Description
Id Text

Identifiant unique de la période fermée.

StartIndex Integer

Index de colonne de début (0-based, inclusif).

EndIndex Integer

Index de colonne de fin (0-based, inclusif).

Returns

Type Description
JsonObject

Remarks

Calque purement VISUEL : il n'empêche PAS le placement d'activités (les tâches restent affichées et déplaçables par-dessus). Couvre les colonnes StartIndex..EndIndex (inclus) sur toute la hauteur du planning. Pour couvrir une période entière, indiquer la plage de colonnes correspondante (ex. SubPeriodCount = 2 → période n° 2 = colonnes 4 à 5).

CreateClosedPeriod

Créé une période fermée limitée à UNE SEULE ressource (même rendu que la surcharge « toutes ressources », mais restreint à la ligne de ResourceId).

procedure CreateClosedPeriod(Id: Text; StartIndex: Integer; EndIndex: Integer; ResourceId: Text): JsonObject

Parameters

Name Type Description
Id Text

Identifiant unique de la période fermée.

StartIndex Integer

Index de colonne de début (0-based, inclusif).

EndIndex Integer

Index de colonne de fin (0-based, inclusif).

ResourceId Text

Ressource concernée.

Returns

Type Description
JsonObject

Remarks

Calque hachuré non bloquant, cf. la surcharge à trois paramètres.

SetClosedPeriodDescription

Définit le texte affiché en info-bulle au survol de la période fermée.

procedure SetClosedPeriodDescription(var ClosedPeriod: JsonObject; Description: Text)

Parameters

Name Type Description
ClosedPeriod JsonObject

Période fermée issue de CreateClosedPeriod.

Description Text

Texte / tooltip.

SetClosedPeriodColors

Définit les deux couleurs du hachuré de la période fermée. Une couleur vide est ignorée.

procedure SetClosedPeriodColors(var ClosedPeriod: JsonObject; Color1: Text; Color2: Text)

Parameters

Name Type Description
ClosedPeriod JsonObject

Période fermée issue de CreateClosedPeriod.

Color1 Text

Couleur principale du hachuré (CSS).

Color2 Text

Couleur secondaire du hachuré (CSS).

CreateTaskTooltip

Créé une info-bulle HTML riche affichée au survol d'une tâche ; la mise en page est entièrement décidée côté AL. Ajoutez au besoin une classe CSS via SetTaskTooltipCssClass.

procedure CreateTaskTooltip(TaskId: Text; ContentHtml: Text): JsonObject

Parameters

Name Type Description
TaskId Text

Identifiant de la tâche à laquelle lier l'info-bulle.

ContentHtml Text

Contenu HTML libre (source de confiance).

Returns

Type Description
JsonObject

Remarks

Le HTML est injecté TEL QUEL (les styles inline sont conservés : tableaux, pastilles de couleur, etc.) — la source est considérée de confiance. N'y concaténez JAMAIS d'entrée utilisateur non échappée. L'info-bulle apparaît après un court délai au survol et suit le curseur, en restant confinée à la zone du planning.

SetTaskTooltipCssClass

Ajoute une classe CSS additionnelle à l'info-bulle.

procedure SetTaskTooltipCssClass(var TaskTooltip: JsonObject; CssClass: Text)

Parameters

Name Type Description
TaskTooltip JsonObject

Info-bulle issue de CreateTaskTooltip.

CssClass Text

Classe CSS additionnelle.

CreateMenuItem

Créé une entrée de menu contextuel.

procedure CreateMenuItem(Identifier: Text; Caption: Text): JsonObject

Parameters

Name Type Description
Identifier Text

Identifiant de l'élément.

Caption Text

Texte à afficher à l'utilisateur (un tiret « - » affiche un séparateur).

Returns

Type Description
JsonObject

CreateMenuItem

Créé une entrée de menu contextuel avec icône.

procedure CreateMenuItem(Identifier: Text; Caption: Text; Image: Text): JsonObject

Parameters

Name Type Description
Identifier Text

Identifiant de l'élément.

Caption Text

Texte à afficher à l'utilisateur.

Image Text

Nom de l'icône Office UI Fabric à afficher.

Returns

Type Description
JsonObject

CreateMenuItem

Créé une entrée de menu contextuel complète (icône, raccourci, style dangereux).

procedure CreateMenuItem(Identifier: Text; Caption: Text; Image: Text; Shortcut: Text; Dangerous: Boolean): JsonObject

Parameters

Name Type Description
Identifier Text

Identifiant de l'élément (renvoyé au clic).

Caption Text

Texte à afficher à l'utilisateur (« - » = séparateur).

Image Text

Nom de l'icône Office UI Fabric à afficher.

Shortcut Text

Raccourci affiché (informatif).

Dangerous Boolean

Applique le style « action dangereuse » (rouge).

Returns

Type Description
JsonObject

Remarks

Ajoutez les entrées à un JsonArray passé à OpenTaskContextMenu / OpenCalendarContextMenu (en réponse aux événements On*ContextMenuRequested). Un Caption égal à « - » affiche un séparateur. Pour un sous-menu, ajoutez manuellement une propriété subActions (tableau d'entrées) à l'objet retourné. L'Identifier est renvoyé tel quel par On*ContextMenuClicked. Le Caption accepte un Markdown minimal : **gras**, *italique*, __souligné__ (converti en strong / em / u) — utilisable aussi dans les sous-menus.

See also