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

JavaScript Discussion :

Collect Object dont une prop correspond à un tableau de valeurs


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Collect Object dont une prop correspond à un tableau de valeurs
    Bonjour,

    Afin d'éviter de recharger des données sur le serveur lors de l'application d'un filtre, je souhaite vérifier que les données souhaitées par le filtre soient déjà chargées

    L'idée est de vérifier que mes objets du tableau Filtres, dont une propriété 'loaded' est à true au premier chargement, dont la propriété 'value' est égale au tableau de values qui correspond à mes différents item cochés dans la liste déroulante, ont la propriété 'loaded' à true. Si Oui, je masque les lignes à filtrer, si non je refait un load des datas.

    Pour cela j'utilise du linq.js (de codeplex), sur l'évènement 'change' d'une liste déroulante multiple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var etatList = $(this).val();
                if (etatList) {
                    //var t = Enumerable.From(objFiltersRestGrf.statuts).Where(function (el) { return Enumerable.From(etatList).Contains(el.value) }).ToArray();
                    if (Enumerable.From(objFiltersRestGrf.statuts).Where(function (el) { return Enumerable.From(etatList).Contains(el.value) }).Any(function (x) { return x.loaded == true })) 
                        restrictionTable1.columns(13).search(etatList.join("|"), true, false).draw();
                    else
                        ActualiseData();
                }
                else { restrictionTable1.columns(13).search('').draw(); }
    Le problème est que le test du IF dure une bonne paire de secondes, c'est un peu frustrant....


    Auriez vous une autre solution SVP ?

    Par avance je vous remercie.

    Cordialement.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    L'idée est de vérifier que mes objets du tableau Filtres, dont une propriété 'loaded' est à true au premier chargement, dont la propriété 'value' est égale au tableau de values qui correspond à mes différents item cochés dans la liste déroulante, ont la propriété 'loaded' à true. Si Oui, je masque les lignes à filtrer, si non je refait un load des datas.


    Mon cerveau a fondu sur cette phrase.

    De ce que je comprends, tu as quelque-chose qui fonctionne mais qui est super lent. Et tu utilises une bibliothèque qui imite les API .NET en JS avec de la lazy evaluation, ce qui est logiquement plus lent que d'écrire directement ça en JavaScript. Du coup, est-ce envisageable pour toi d'écrire ça directement en JavaScript ? J'ignore si c'est ça le bottleneck, mais au moins on y verrait plus clair.
    One Web to rule them all

Discussions similaires

  1. Réponses: 8
    Dernier message: 28/09/2012, 12h44
  2. faire un invoke d'une Methode dont le parametre est un Tableau
    Par pcouas dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 18/11/2008, 09h12
  3. Tableau à 2 dimensions dont une dimension est un Tableau
    Par Sharkus dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/04/2008, 18h18
  4. Réponses: 8
    Dernier message: 18/11/2006, 13h04
  5. Réponses: 2
    Dernier message: 25/09/2006, 14h04

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