Implémenter une notion de "comptage jours consécutifs" dans une galerie.

  • Implémenter une notion de "comptage jours consécutifs" dans une galerie.

    Posté par Sylvain sur 21 mai 2025 at 19h35

    Hello !

    J’ai un petit sujet un peu technique je me gratte pas mal la tête dessus, je pense y arriver à un moment mais si jamais quelqu’un a une solution je suis preneur :

    J’ai un calendrier intégré dans une galerie, genre pour définir un planning par tête de pipe :

    Je cherche à faire en sorte qu’il y ait une alerte si j’ai plus de 6 jours travaillés consécutifs.

    J’arrive à faire ressortir si un jour est consécutif par rapport à un autre avec des formules genre :

    With(
    {
    estJourConsecutif:
    !IsEmpty(
    Filter(
    colTamponPlanningEquipier;
    idPvtEquipierMetierDansPhase = ThisItem.idPvtEquipierMetierDansPhase;
    dtePlanningEquipier = DateAdd(ThisItem.dateDuJour;-1;TimeUnit.Days);
    repos=false
    )
    );
    jourConsecutif:
    LookUp(
    colTamponPlanningEquipier;
    idPvtEquipierMetierDansPhase = ThisItem.idPvtEquipierMetierDansPhase
    && dtePlanningEquipier = DateAdd(ThisItem.dateDuJour;-1;TimeUnit.Days)
    && repos=false
    )
    };
    If(
    !IsBlank(jourConsecutif);
    1;
    0
    )
    )

    Mais ensuite je bloque.

    Je suis sur des listes Sharepoint pas moyen de faire grand chose en backend, aussi je souhaite que ça déroule sur mes collections tampons je veux pas passer par la base de données.

    Si jamais quelqu’un a une piste ^^

    Merci !

    • This discussion was modified 1 week, 3 days ago by  Sylvain.
    • This discussion was modified 1 week, 3 days ago by  Sylvain.
    • This discussion was modified 1 week, 3 days ago by  Sylvain.
    Sylvain a répondu 1 week, 2 days ago 2 Membres · 3 Réponses
  • 3 Réponses
  • Sylvain

    Member
    21 mai 2025 at 20h04

    Bon ben j’étais pas loin, voici la solution :

    <div></div>

    • This reply was modified 1 week, 3 days ago by  Sylvain.
  • R3dKap

    Member
    21 mai 2025 at 21h55

    Salut @Sylvain,

    L’algorithme va dépendre de la manière dont tu veux détecter ces 6 journées consécutives :

    1. Est-ce que c’est 6 journées sur une semaine qui s’étale du dimanche au samedi ?
    2. Est-ce que ces 6 journées peuvent s’étaler à cheval sur 2 semaines ?
    3. Est-ce que l’algo doit retourner vrai ou faux pour ces 6 journées consécutives entre 2 dates données ?

    Mais comme ça au premier abord, à supposer que l’on regarde dans toutes les occurrences de ta collection, je dirais qu’il va falloir :

    • initialiser un compteur de jours consécutifs à zéro
    • boucler avec un ForAll() sur les items de la collection :
      • je regarde si je trouve un item à la date D+1 par rapport à la date de l’item en cours
      • si je le trouve :
        • si le compteur est égal à 6 alors je sais que j’ai 6 jours consécutifs
      • si je ne le trouve pas c’est que je suis sur un trou -> je réinitialise le compteur de jours consécutifs à zéro

    Note : pour travailler avec des variables dans une boucle ForAll() (vu qu’on ne peut ni utiliser Set() ni UpdateContext()), il faut utiliser une variable locale de type enregistrement à une colonne (par ex. : {Value: 0}) et utiliser la fonction Patch() pour la faire évoluer : Patch(locCompteur; {Value: locCompteur.Value + 1}).

    Sinon, est-ce tu peux nous préciser comment est structurée et conmment fonctionne ta collection colTamponPlanningEquipier ?

  • Sylvain

    Member
    22 mai 2025 at 7h35

    Hello R3dKap,

    Merci beaucoup pour ton retour sur le sujet, comme indiqué sur mon deuxième message à priori j’ai pu trouver la parade répondant à mon besoin dans le contexte particulier, voici un peu plus de détails :

    -> c’est une application de gestion de planning “par équipier” et il faut qu’il y ait une forme d’alerte, en direct, au cas où l’utilisateur pose plus de 6 jours consécutifs (avec ou sans chevauchement de semaine) sans jours de pause :

    Sur chaque template de la galerie “planning” je pilote une petite pastille “repos nécessaire” avec la condition de visibilité suivante :

    -> dans mon contexte spécifique je n’ai pas besoin d’intégrer la notion de jours consécutif dans la base de données, ça doit juste être une indication qui se calcule en temps réel à l’utilisation.

    Bien cordialement

Connectez-vous pour répondre.