IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Lourdeur du champs planning / éviter le recalcul visuel de centaines de rendezvous


Sujet :

WinDev

  1. #1
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut Lourdeur du champs planning / éviter le recalcul visuel de centaines de rendezvous
    Bonjour à tous,

    j'ai un sujet autour du champs Planning, version 24, mais de ce que j'ai pu lire, ça n'est pas forcément solutionné dans les versions suivantes.

    J'ai donc un planning, avec disons une bonne douzaines de machines (ça pourrait grandir), qui sont mes ressources en ligne.
    Mon planning me sert à gérer des OFs (issus d'un import CSV provenant de l'ERP) que je dépose sur les files de mes machine.
    Le planning peut être consulté en vue à la journée, en mode 2 semaines, sur 1 mois, et enfin sur 3 mois.

    Sachant que mes OFs resteront quoi qu'il arrive en base, même lorsqu'ils seront terminés, je m'arrange donc pour ne pas alimenter mes files machines avec des OFs plus vieux qu'une certaine date (un paramètre global pour ne pas charger inutilement les vieilleries).

    Malgré ce filtrage, je me retrouve quand même avec, dans le pire des cas (vue 3 mois), environ 250 objets "rendezVous" dans le planning, et cela occasionne des lourdeurs non seulement quand on scroll le planning pour faire glisser la période visualisée, mais aussi cela engendre un traitement de recalcul généralisé de tous les objets rendezvous présents dans le planning.

    J'aimerais donc court-circuiter l'exécution du code d'initialisation de la fenêtre interne FI_Windev_RDV qui sert de support pour mes rendezVous, et qui s'exécute autant de fois qu'il y a de rendezVous dans le planning, chaque fois que le planning retrouve le focus, ou qu'on fait un réduire/maximise, ou qu'on fait glisser la période. Dans mon exemple, quand le planning et ses ressources sont créés, et les rendez-vous ajoutés au planning, ce traitement de "calcul" du visuel du rendezvous est nécessaire uniquement la toute première fois, ensuite, et pour toute la durée d'utilisation du programme, je n'ai absolument plus besoin que le visuel se recalcule, et je pense que l'expérience utilisateur s'en trouverait incroyablement améliorée.



    Auriez-vous déjà manipulé le champs planning et rencontré ce cas de figure ?

    Merci par avance pour vos suggestions de résolution.

    droliprane
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  2. #2
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bonjour à tous, je fais avancer un peu la discussion.
    Je me suis dit que j'allais introduire un tableau de chaines (les clés de mes rendezvous) que je remplirais au fur et à mesure que les rendez-vous sont ajoutés au planning.
    Je ne peux pas me baser sur l'instruction standard planningListeRendezVous, car si je l'invoque depuis ma fenêtre interne FI_TACHE, c'est que l'objet rendezVous est déjà associé au planning.
    J'ai donc ce tableau de chaines, tab_taches, qui est global à mon projet, que je teste dans le code d'initialisation de la fenêtre FI_TACHE. Si ma clé est déjà connue (dans le tableau tab_taches) alors je fais un bête RETOUR :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PROCÉDURE FI_TACHE( gGclRendezVous est un agRendezVous dynamique )
     
    SI TableauCherche(FEN_START.tab_taches, tcLinéairePremier, taskid) > 0 ALORS
    	RETOUR
    FIN
    TableauAjoute(FEN_START.tab_taches, taskid)
    ...
    LIB_CONTENU = "blabla"
    LIB_CONTENU..CouleurFond = "une couleur qui dépend de la famille de la tâche" // je ne détaille pas comment je récupère la couleur, c'est sans intérêt ici
    // ....
    // suite du la mise en forme du rendez-vous
    // widgets sens interdit, engrenage qui matérialise un besoin de réglage de la machine, etc...
    Le comportement est maintenant le suivant :
    à la première alimentation du planning, le code d'initialisation de FI_TACHE s'exécute bien pour chaque objet rendez-vous du planning
    mais ensuite, dès que j'interagis avec le planning (sélection d'un rdv, redimensionnement de la fenêtre, ...) cela déclenche de façon automatisée un recalcul du visuel du ou des rdv concernés. Et même si j'ai maintenant ce "court-circuitage" du code d'initialisation si le rdv est connu dans tab_taches, le visuel du rendez-vous change quand même et prend les apparences du tout dernier rendezvous ajouté au planning.

    Exemple :

    premier chargement, vue sur 1 mois (notez le rendez vous tout à la fin, qui est en fond rouge, ce n'est pas flagrant comme ça mais faites moi confiance, ils sont chargés par ordre de la date de début, c'est bien le dernier ajouté visuellement) :



    clic sur des rendez-vous au hasard (il prennent le fond rouge, le contenu, les widgets, du dernier rendez-vous qui s'est servi de FI_TACHE) :



    redimensionnement de la fenêtre, tous les rdv deviennent rouge, prennent le même contenu :



    passage en mode 3 mois, de nouveaux rendez-vous apparaissent, le système ne calcule le visuel que de ceux qu'il découvre et qui ne sont pas déjà dans le tableau global tab_taches, les autres sont tous devenus rouges :



    à nouveau je m'amuse à cliquer sur certains rendez-vous, cela déclenche leur "redessin", et ils passent en vert, comme celui qui est actuellement le plus à droite...



    J'ai comme l'impression que la fenêtre interne FI_TACHE qui sert de support pour le visuel des rendez-vous n'est pas "propre" à chaque instance de rendez-vous, elle a comme une sorte de "mémoire" de ses dernières propriétés affectées, et elle les reproduit par défaut dans un traitement graphique automatique sur lequel on a pas la main, lors de chaque redessin d'un rendez-vous.

    J'ai conscience que je décris un truc bien tordu, et que vous risquez de pas être nombreux à pouvoir m'aider, mais j'ai tenté d'expliquer au mieux mon soucis, qui est bien gênant pour mon projet. Je pourrais laisser le programme redessiner systématiquement tous les rendez-vous, mais c'est réellement anti-performant, si je veux améliorer l'ergonomie et la vitesse, je dois pouvoir contrôler les objets à redessiner.

    Merci par avance à ceux qui auront lu et essayé de comprendre.

    droliprane
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour Droliprane,

    J'ai bien compris ton souci de ré-affichage. Je l'avais déjà subi (surtout quand la machine est peu performante).. avec le champ agenda. Comme le rafraichissement n'était pas aussi intense que le tien, j'avais dit aux utilisateurs que les pc étant de plus puissant, le clignotement serait trop rapide pour vraiment les importuner. En même temps, il y avait max 10 ressources et peu de rdv par ressource.

    Avec toi, on rentre dans un autre monde...

    En fait, comme tu l'as exprimé, il fait un "re-dessin" quand même et comme il doit y avoir une variable mal initialisée, les couleurs ne sont plus les bonnes.

    J'ai bien une idée, mais je ne sais pas si c'est possible (et peu coûteux en temps/ressources) : copier la FI RDV dans la fenêtre du planning (=FI modèle). Modifier la FI RDV en mettant juste une image dedans. Pour chaque nouveau rdv, afficher les infos dans la FI modèle et créer une image de ça (je ne sais pas encore comment faire, mais avec une API rect, peut-être que ça pourrait aller). Stocker l'id de ton rdv dans un tableau associatif / ou dans ton tableau de chaines.

    Livré sans aucune garantie
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  4. #4
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    C'est vraiment pas con en effet !

    C'est sûr que si je ne veux pas me voir changer en temps réel dans un miroir, rien de tel que de coller dessus une photo où je suis encore jeune et beau ^^

    Après, je serai vraisemblablement confronté au problème d'une image qui aura été capturée dans un format qui serait fixe, et qui subirait la taille variable du rendez-vous (en largeur essentiellement).

    Je vais réfléchir à ton idée.

    Merci pour cette piste
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Pour la largeur, avec l'ancrage, ça devrait le faire.

    Je pense que si l'utilisateur veut voir le détail du rdv, il double-clique dessus (et ça ouvre une fenêtre "fiche").
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  6. #6
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Pour la largeur, avec l'ancrage, ça devrait le faire.

    Je pense que si l'utilisateur veut voir le détail du rdv, il double-clique dessus (et ça ouvre une fenêtre "fiche").
    hélas non, mon client il veut tout plein d'infos déjà visibles sur la tâche, sans devoir ouvrir une popup.
    J'ai déjà une bulle, mais il faut quand même un certain nombre de pictogrammes d'alerte, nécessité d'anticiper un réglage machine, retard d'avancement OF, etc...

    Et quand j'y pense c'est un problème rien qu'à cause du texte (N°OF, Ref Produit, Ref Plan), si j'étire une image à 200% de sa largeur ça risque de pas passer inaperçu
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  7. #7
    Membre habitué Avatar de mous97
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2018
    Messages : 119
    Points : 175
    Points
    175
    Par défaut
    Salut drolipane

    Figure toi que je me retrouve aussi dans le même problème la lenteur est énorme

    Va s'avoir pourquoi le code d'initialisation de la FI est non stop appelée...

  8. #8
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Citation Envoyé par droliprane Voir le message
    hélas non, mon client il veut tout plein d'infos déjà visibles sur la tâche, sans devoir ouvrir une popup.
    J'ai déjà une bulle, mais il faut quand même un certain nombre de pictogrammes d'alerte, nécessité d'anticiper un réglage machine, retard d'avancement OF, etc...

    Et quand j'y pense c'est un problème rien qu'à cause du texte (N°OF, Ref Produit, Ref Plan), si j'étire une image à 200% de sa largeur ça risque de pas passer inaperçu
    Hello,

    Comme le sujet vient de remonter grâce à mous97, j'ai repensé à un truc que j'ai fait il y a quelques temps : utiliser une fenêtre flottante en lieu et place de la bulle d'aide. Ca permet de faire une fiche avec tes images bien placées (normalement, tu peux le faire avec une bulle mais c'est plutôt sport).
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  9. #9
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Salut à tous les deux,

    j'apprécie que le sujet concerne finalement quelques personnes, je me sens moins seul ^^

    L'idée d'une fenêtre ou d'une bulle, qui nécessiterait une action de l'utilisateur pour "révéler" les différentes informations contenues dans la tâche, ne sera pas satisfaisante en ce qui me concerne.

    J'ai besoin que la vue globale montre les différents pictogrammes sur chaque objet rdv.

    Je retourne le truc dans tous les sens, j'ai presque envie de refaire tout mon projet de zéro dans un autre framework.


    droliprane
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  10. #10
    Membre habitué Avatar de mous97
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2018
    Messages : 119
    Points : 175
    Points
    175
    Par défaut
    J'te comprend je sèche aussi j'ai même essayé de fouiner dans les api windows

  11. #11
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 393
    Points
    9 393
    Par défaut
    Je reviens juste sur un point qui est un peu anecdotique.
    Tu fais un TableauCherche() pour savoir s'il faut redessiner la fenêtre.
    J'aurais mis dans ma fenêtre interne une variable 'RedessinInutile' de type booléen, et ainsi tout se passe dans la fenêtre interne : Tu mets cette variable à Vrai à la fin de ta procédure d'affichage. Et tu la repasses à Faux quand c'est nécessaire, comme pour revenir au fonctionnement standard.
    Plus besoin de ce TableauCherche().
    Mais logiquement, ça ne va rien changer à tes problèmes.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

Discussions similaires

  1. [WD17] Champ Planning : Faire une Rupture / Couleur des RDV
    Par meganulos dans le forum WinDev
    Réponses: 5
    Dernier message: 10/01/2013, 08h23
  2. Requêtes avec beaucoup de champs vides à éviter.
    Par fred_vannes56 dans le forum Requêtes et SQL.
    Réponses: 26
    Dernier message: 23/04/2008, 16h20
  3. Tester la valeur d'un champ pour éviter options "has no properties"
    Par lodan dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 27/03/2007, 08h47
  4. [Conception] champ calculé - stocké ou recalculé à chaque fois
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2006, 21h51
  5. [Mail] verifier les champs pour éviter le mail vide
    Par temperature dans le forum Langage
    Réponses: 5
    Dernier message: 04/05/2006, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo