Bonsoir à tous,
Après plusieurs heures passées à me tirer les cheveux à essayer de comprendre d'où venait mon erreur et comment y répondre, je suis forcé de constaté que j'aurais du mal à résoudre ça sans vous.
Voici la cause de calvitie certaine :
Je récupère un ensemble de données en ajax que j'affiche ensuite sur un dashboard.
Je souhaiterais que la date (timestamp) s'affiche ne vert si elle est de moins de 7 jours, en rouge si elle est de plus de 90 jours (reste normal sinon).
Souhaitant cependant sauvegarder les données brutes dans une variable globale, je stocke celles-ci dès le retour de la requête ajax.
Le problème que je rencontre est, qu'après avoir effectué les modifications sur la date plus tard dans le script, je constate que les modifications ont également été effectuées dans la variable globale ...
Voici mon code (j'ai synthétisé pour être plus rapidement compréhensible) :
Les dates sont bien modifiées avec les balises <SPAN> pour être affichées via Mustache, cependant, ces modifications ont également eu lieu dans la variable globale list_global.
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 var list_global = new Object(); function init(name) { var request = $.get( 'get_data.php', { type : type, name : name }); request.done(function(data) { var result = JSON.parse(data); $.each( result, function(key,value) { var id = value.id; var get_elems = $.get("find_elem.php", { id: id }); get_elems.done(function(data1) { var result = JSON.parse(data1); list_global['item'] = result; $.each( result.content, function( key, value ) { if (value.date) { value.date = check_date(value.date); } ul.append( Mustache.render(li, value) ); }); }); }); }); }
Fonction de modification de date :
Est-ce que certain d'entre vous aurez une solution ou au moins une explication à ce "phénomène".
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 const OLD_DATE = 7776000; // Correspond à 90 jours en secondes const RECENT_DATE = 604800; // Correspond à 7 jours en secondes function check_date( entry_date ) { var today = Math.floor(Date.now() / 1000); var diff = dateDiff(date, today); var full_date = new Date(entry_date * 1000); var day = full_date.getDate(); var month = full_date.getMonth()+1; var year = full_date.getFullYear(); var date = year+'-'+month+'-'+day; if ( diff > OLD_DATE ) { result = "<span style='color:blue'>"+date+"</span>"; } else if ( diff < RECENT_DATE ) { result = "<span style='color:green'>"+date+"</span>"; } else { result = date; } return result; }
Personnellement je suis perdu et ne trouve pas cela très logique, mais je suis certain qu'il y a une explication !
Merci d'avance !
Sam
Partager