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 :

JSON parse() push() - modification module


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Par d�faut JSON parse() push() - modification module
    Yop,

    je bosse sur un module qui r�cup�re des infos sur todoist.com

    je ne suis pas super � l'aise avec javascript :/

    voici le module
    https://github.com/cbrooker/MMM-Todoist
    je l'ai modifi� au niveau du fetcher.js pour r�cup�rer plus d'infos (priority, datedue...)
    je concat�ne mes variables et je push ensuite dans l'affichage - mon probl�me se situe au niveau du tri (j'aimerais tri� par date ou priorit�)
    et au niveau de l'affichage (j'aimerais une icone differente par rapport � la Priorit�) mais comment g�rer ca ? je ne comprends pas comment je pourrais g�rer le contenu de ma variable dans MMM-Todoist.js
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    if (JSON.parse(body).items[i].priority == '1') {icontodo ='P1 - '}
    		else if (JSON.parse(body).items[i].priority == '2') {icontodo ='P2 - '}
    		else if (JSON.parse(body).items[i].priority == '3') {icontodo ='P3 - '}
    		else {icontodo ='P4 - '};
     
    if (JSON.parse(body).items[i].due_date_utc) 
    			{
    				date1 = new Date();
    				date2 = new Date(JSON.parse(body).items[i].due_date_utc);
    				diff = dateDiff(date1, date2);
     
    				if(diff.day > 0)
    					{ 
    						dayretour = diff.day + "d ";
    					}
    				else 
    					{
    						dayretour = '';
    					};
    				if(diff.hour > 0)
    					{
     
    						hourretour = diff.hour + "h";
    					}
    				else 
    					{
    						hourretour = '';
    					};
    				if(diff.hour > 0)
    					{
     
    						minretour = diff.min + "min";
    					}
    				else 
    					{
    						minretour = '';
    					};	
     
    				if (!dayretour && !hourretour && !minretour) {datedueretour ='TIME IS UP - ';} 		
    				else {datedueretour += dayretour + hourretour + minretour + " - ";};
    		}
    		else {datedueretour =''};
     
    		contentretour = JSON.parse(body).items[i].content;
     
    		if (JSON.parse(body).items[i].responsible_uid ) {
    		if (JSON.parse(body).items[i].responsible_uid == '102xxxx') {
    		assignedtodoname ='T - '
    		}
     
    		else if (JSON.parse(body).items[i].responsible_uid == '102xxxx') {assignedtodoname ='N - '}
    		else {assignedtodoname ='Inconnu'};
    		} else { assignedtodoname ='' };
     
    		//checkedretour = JSON.parse(body).items[i].checked;
    		onbalance +=assignedtodoname + icontodo + datedueretour + contentretour;
    		items.push(onbalance);
    merci merciiii si vous savez me mettre sur une piste

  2. #2
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    J'avoue que j'ai beaucoup de mal � comprendre ton algo

    mais il y a au moins une chose � faire c'est d'utiliser une variable pour le r�sultat du parsing
    j'ai compt� 10 appels � JSON.parse(body) en clair tu relis et re parse le body 10 fois alors que si tu mets le r�sultat du parsing dans une variable tu ne le fais qu'1 fois.

    pour le reste j'ai pas compris ce que �a fait.
    A+JYT

  3. #3
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Si j�ai bien compris il y a une boucle for autour de tout �a, que tu ne nous as pas montr�e.
    Pour appuyer la suggestion de sekaijin d�utiliser une variable afin d��viter les appels multiples � JSON.parse, je te sugg�re une structure comme ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var jsonBody = JSON.parse(body);
     
    for () { // la boucle for que tu as déjà
      var currentItem = jsonBody.item[i];
      icontodo = "P" + currentItem.priority + " - ";
     
      if (currentItem.due_date_utc) {
        date1 = new Date();
        date2 = new Date(currentItem.due_date_utc);
        …
      }
     
      … etc.
    }
    On ne voit pas non plus la d�claration des variables, en particulier onbalance. J�attire ton attention sur le fait que tu y ajoutes des donn�es � chaque it�ration, avec l�op�rateur +=, sans jamais la r�initialiser. � chaque it�ration tu te retrouves donc avec les nouvelles donn�es mais aussi les anciennes, ce qui fait une sorte de pyramide, introduisant de la redondance dans ton tableau.

    Un exemple hypoth�tique pour illustrer mon histoire de pyramide :
    Code exemple : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    itération 0 --> "abc"
    itération 1 --> "abcdef"  (au lieu de "def")
    itération 2 --> "abcdefghi"  (au lieu de "ghi")
    ...

    Cela dit, je te sugg�re de pusher un objet litt�ral dans ton tableau, plut�t qu�une cha�ne. Pour trier �a sera bien plus pratique (sinon tu devras faire des substring et �a va �tre super compliqu�).

    Fais quelque chose dans ce genre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
      items.push({
        assignedtodoname : assignedtodoname,
        icontodo         : icontodo,
        contentretour    : contentretour,
        datedueretour    : datedueretour
      });
    �a te permettra d�exploiter la magie de la m�thode sort en lui passant une fonction en param�tre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    items.sort(function (itemA, itemB) {
      if (itemA.datedueretour > itemB.datedueretour) return 1;
      if (itemA.datedueretour < itemB.datedueretour) return -1;
      return 0;
    });
    Car oui, les op�rateurs de comparaison marchent aussi avec les cha�nes. Toutefois tu peux utiliser des types de variables plus pratiques dans tes objets litt�raux, par exemple faire en sorte que datedueretour soit de type Date et, dans la fonction pass�e � sort, utiliser ta fonction dateDiff.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

Discussions similaires

  1. Tri par cl� lors d'un JSON.parse
    Par legentil dans le forum jQuery
    R�ponses: 4
    Dernier message: 11/02/2012, 20h56
  2. JSON Parsing en JSONArray sur android
    Par S.Jihad dans le forum Android
    R�ponses: 7
    Dernier message: 08/05/2011, 13h49
  3. Jersey Json parse
    Par allouli_raf dans le forum Format d'�change (XML, JSON...)
    R�ponses: 0
    Dernier message: 20/04/2011, 15h32
  4. JSON parse et stringify
    Par sekaijin dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 05/11/2009, 15h36
  5. Parsing et modification fichier xml
    Par Premium dans le forum Modules
    R�ponses: 2
    Dernier message: 02/12/2008, 15h49

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