Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Dojo
Dojo Forum d'entraide sur le framework Dojo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2011, 17h46   #1
Membre du Club
 
Homme
Étudiant
Inscription : mars 2011
Messages : 136
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2011
Messages : 136
Points : 51
Points : 51
Par défaut Format de la sauvegarde d'un ItemFileWriteStore

J'utilise un ItemFileWriteStore pour afficher un arbre. Je charge les données dans un fichier json de la forme :

Code json :
1
2
3
4
5
6
7
8
9
10
11
 
{
	"identifier": "id",
	"label": "id",
	"items": [
		{
			"id": "1",
			"children": [
				{
					"id":"2",
                                        "children":[ etc.

Mais la fonction de sauvegarde renvoie un fichier de la forme

Code json :
1
2
3
4
5
6
7
8
9
{
	"identifier": "id",
	"items": [
		{
			"id": "1",
			"children": [
				{
					"_reference": "2"
				} etc.

Qui est un format beaucoup moins pratique y a-t-il un moyen de dire à dojo que je veux la première forme et pas la deuxième ?
ernestrenan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 15h56   #2
Membre du Club
 
Homme
Étudiant
Inscription : mars 2011
Messages : 136
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2011
Messages : 136
Points : 51
Points : 51
Bon trouvé une solution pas très élégante ("à la main") avec un _saveCustom et deux fonctions d'ecriture.

Code javascript :
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
 
dojo.declare('SimpleSaveWriteStore', dojo.data.ItemFileWriteStore, {
	_postUrl: 'postdata.php',
	_saveCustom: function(saveCompleteCallback, saveFailedCallback){
		dojo.xhrPost({
			url: this._postUrl,
			content: {	
				data: this.meToJson()
			},
			load: saveCompleteCallback,
			error: saveFailedCallback
		});
	},
	itemToJson : function(item) {
		var json = {};
		if (item) {
			var attributes = this.getAttributes(item);
			if (attributes && attributes.length > 0) {
				var i;
				for (i = 0; i < attributes.length; i++) {
					var values = this.getValues(item, attributes[i]);
					if (values) {
						if (values.length > 1 ) {
							var j;
							json[attributes[i]] = [];
							for (j = 0; j < values.length; j++ ) {
								var value = values[j];
								if (this.isItem(value)) {json[attributes[i]].push(dojo.fromJson(this.itemToJson(value)));}
								else {json[attributes[i]].push(value);}
							}
						}
						else{
							if (store.isItem(values[0])){json[attributes[i]] = dojo.fromJson(this.itemToJson(values[0]));} 
							else {json[attributes[i]] = values[0];}
						}
					}
				}
			}
		}
		return dojo.toJson(json);
	},
	meToJson: function() {
		var me = this;
		var data = "{'identifier':'id','label':'libelle','items':[";
		this.fetch({
			onComplete:function(items){
				items.forEach(function(item){data += me.itemToJson(item); data+= ",";})
			}
		});
		data += "]}"
		return data;
	}
});

Voilà le code si ça peut sevir à quelqu'un....
ernestrenan est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h52.


 
 
 
 
Partenaires

Hébergement Web