TreeStoreModel : Query sur un store "Inversé"
Salut ( à tous les courageux qui ne sont pas sur la plage ;) )
Dans une phase précédente, j'ai affiché une arborescence dans un Tree qui avait pour model un TreeStoreModel lui-même alimenté par un query sur un jsonStore :
Code:
1 2 3
| var jsonRepertoire = new dojo.data.ItemFileReadStore({
url: 'javascript/jsonreps.json'
}); |
Le store avait une structure classique ( description descendante parent -> enfants ); cette structure n'étant pas la plus simple à générer, je me suis orienté vers la structure inverse ( description ascendante parent <- enfant ), ce qui me donne un fichier jsonreps.json de type :
Code:
1 2 3 4 5 6 7 8 9 10 11
| { label: 'name',
identifier: 'id',
'items':[
{'id': 'root','name': 'RootFiles','type': 'directory'},
{'name': 'visuelTotal','parent': 'RootFiles','type': 'file'},
{'id': 'node1','name': 'visuelsBHV','parent': 'RootFiles','type': 'directory'},
{'name': 'visuelBHV1','parent': 'visuelsBHV','type': 'file'},
{'name': 'visuelBHV2','parent': 'visuelsBHV','type': 'file'},
{'name': 'visuelBHV3','parent': 'visuelsBHV','type': 'file'},
{'id': 'node2','name': 'visuelsDecathlon','parent': 'RootFiles','type': 'directory'},
...... |
Mais la je butte sur la réalisation de mon model :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| var myModel = new dijit.tree.TreeStoreModel({
store: jsonRepertoire,
query: {parent: ..... }
});
var arbo = new dijit.Tree({
model: myModel,
onClick: stockitem,
rowSelector: '20px'
});
var contenu = new dijit.layout.ContentPane({
content: arbo,
splitter: false,
region: 'leading'
}, document.createElement('div'));
dojo.byId("affichageRepertoire").appendChild(contenu.domNode);
contenu.startup(); |
D'après mes recherches, il faudrait redéfinir la méthode getChildren(), mais je ne vois pas trop comment? C'est vrai qu'au début, j'avais squizzé le modèle et pluggé directement le Tree sur le store ( avec un beau message deprecated en prime ) ; mais bon , quand il s'agit de valider un principe, on n'est pas très regardant. Ensuite il faut affiner et s'appuyer sur des choses cohérentes ( informatiquement parlant ), et c'est là que les difficultés commencent :cry:.