Bonjour,
J'essaye de construire un objet formaté définissant les colonnes de mon datatable mais dynamiquement à partir d'un json reflétant ma base de donnée.
Pour ce faire, j'essaye d'utiliser une fonction récursif mais pour l'instant le rendu final est loin d'être bon.
Mon Json :
Ma fonction :
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 (7) [ ] 0: { } id: 4 libelleAgenceControle: "SCHS" site: "ville" agenceControle1: null agenceControle2: null agenceControle3: null agent: "maDonnee" agent: { } id: 7 mail: null numero: 1234567 nomagent: "dupond" personne: { } adressepersonne: "49 R DE LA JANNE" codePostpersonne: 59890 ... 1: ...
Le résultat :
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 var defColCache = function(donnees, champIgnore, keyParent){ console.debug(donnees); var defCol = []; $.each(donnees, function (key, value) { console.debug(key); if ($.inArray(key, champIgnore) == -1) { console.debug("clé non présente dans champIgnore"); if (value instanceof Date) { console.debug("c'est une date"); defCol.push({ title: key, data: (keyParent!="")?keyParent+"."+key:key, visible: false, render: function (data, type, row) { return moment(data, "YYYY-MM-DD HH:mm:ss.SSS").format("DD-MM-YYYY"); }, type: "date", }); } else { if (value instanceof Array) { console.debug("c'est un tableau"); var nbDonnesMax = value.length; var temp = []; $.each(value, function (key2, value2) { console.debug("************ "+value2); var temp = defColCache(value2, champIgnore, (key<nbDonnesMax-1)?keyParent+"."+key2:key2); if (temp) { $.merge(defCol, temp); } }); } else if (value instanceof Object) { console.debug("c'est un objet"); var nbDonnesMax = value.length; var temp = defColCache(value, champIgnore, (key<nbDonnesMax-1)?keyParent+"."+key:key); key = (key<nbDonnesMax-1)?keyParent+"."+key:key; if (temp) { $.merge(defCol, temp); } } else { console.debug("c'est une clé standart"); if(key!="id") { defCol.push({ title: key, data: (keyParent != "") ? keyParent + "." + key : key, visible: false }); } } } } else { return false; } }); return defCol; }
Du coté résultat on s'appercoit que l'on obtient 2 sous objets identiques, je ne vois pas comment cela peut se faire. Ensuite, j'obtiens 28: Object { title: "dateEtat", data: "1.dateEtat", visible: false } au lieu de 28: Object { title: "dateEtat", data: "dateEtat", visible: false }
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 (140) [ ] [0 99] 0: Object { title: "numero", data: "agent.numero", visible: false } 1: Object { title: "nomagent", data: "agent.nomagent", visible: false } 2: Object { title: "prenomagent", data: "agent.prenomagent", visible: false } 3: Object { title: "telephone", data: "agent.telephone", visible: false } 4: Object { title: "mail", data: "agent.mail", visible: false } 8: Object { title: "dateEtat", data: "dateEtat", visible: false } 20: Object { title: "numero", data: "agent.numero", visible: false } 21: Object { title: "nomagent", data: "agent.nomagent", visible: false } 22: Object { title: "prenomagent", data: "agent.prenomagent", visible: false } 23: Object { title: "telephone", data: "agent.telephone", visible: false } 24: Object { title: "mail", data: "agent.mail", visible: false } 28: Object { title: "dateEtat", data: "1.dateEtat", visible: false } 43: Object { title: "numero", data: "agent.numero", visible: false } 44: Object { title: "nomagent", data: "agent.nomagent", visible: false } 45: Object { title: "prenomagent", data: "agent.prenomagent", visible: false } 46: Object { title: "telephone", data: "agent.telephone", visible: false } 47: Object { title: "mail", data: "agent.mail", visible: false } ... [100 139] ...
Avez vous une idée d'où cela peut bloquer svp?
Partager