vigigraph / vigigraph / public / js / tree.js @ b02623ff
History | View | Annotate | Download (3.14 KB)
1 |
/**
|
---|---|
2 |
* VigiGraph, composant de Vigilo.
|
3 |
* (c) CSSI 2009-2010 <contact@projet-vigilo.org>
|
4 |
* Licence : GNU GPL v2 ou superieure
|
5 |
*
|
6 |
*/
|
7 |
|
8 |
/*
|
9 |
* Affichage en arbre des groupes d'hôtes.
|
10 |
*/
|
11 |
var TreeGroup = new Class({ |
12 |
Implements: [Options, Events],
|
13 |
|
14 |
initialize: function(options) { |
15 |
this.setOptions(options);
|
16 |
|
17 |
/* L'objet tree se réfère à un élément div*/
|
18 |
this.container = new Element('div'); |
19 |
this.container.setStyle("padding", "0 10px 10px 10px"); |
20 |
this.tree = new Jx.Tree({parent: this.container}); |
21 |
|
22 |
this.dlg = new Jx.Dialog({ |
23 |
label: this.options.title, |
24 |
modal: true, |
25 |
resize: true, |
26 |
content: this.container |
27 |
}); |
28 |
|
29 |
this.redraw();
|
30 |
}, |
31 |
|
32 |
/* Récupération des items (noeuds/feuilles) de l'arbre dépendant
|
33 |
* du parent dont l'identifiant est passé en paramètre */
|
34 |
retrieve_tree_items: function(parent_node, top_node) { |
35 |
|
36 |
// Si l'identifiant est bien défini, on ajoute les
|
37 |
// items récupérés à leur parent dans l'arbre
|
38 |
var req = new Request.JSON({ |
39 |
url: this.options.url, |
40 |
onSuccess: function(data, xml) { |
41 |
if ($defined(data.groups)) { |
42 |
data.groups.each(function(item) {
|
43 |
this.addNode(item, parent_node);
|
44 |
}, this);
|
45 |
} |
46 |
if ($defined(data.leaves)) { |
47 |
data.leaves.each(function(item) {
|
48 |
this.addLeaf(item, parent_node);
|
49 |
}, this);
|
50 |
} |
51 |
this.fireEvent("branchloaded"); |
52 |
}.bind(this)
|
53 |
}); |
54 |
|
55 |
// Envoi de la requête
|
56 |
if (!$chk(top_node)) { |
57 |
if (!$defined(this.options.hostid)) { |
58 |
req.get({parent_id: parent_node.options.data});
|
59 |
} |
60 |
else {
|
61 |
req.get({parent_id: parent_node.options.data, host_id: this.options.hostid}); |
62 |
} |
63 |
} |
64 |
else if (!$defined(this.options.hostid)) { |
65 |
req.get(); |
66 |
} |
67 |
else {
|
68 |
req.get({host_id: this.options.hostid}); |
69 |
} |
70 |
}, |
71 |
|
72 |
/* Ajout d'un noeud à l'arbre */
|
73 |
addNode: function(data, parent_node) { |
74 |
var node = new Jx.TreeFolder({ |
75 |
label: data.name,
|
76 |
data: data.id
|
77 |
}); |
78 |
|
79 |
node.addEvent("disclosed", function(node) { |
80 |
this.fireEvent("nodedisclosed", node); |
81 |
if (!node.options.open || node.nodes.length > 0) |
82 |
return;
|
83 |
this.retrieve_tree_items(node);
|
84 |
}.bind(this));
|
85 |
|
86 |
parent_node.append(node); |
87 |
}, |
88 |
|
89 |
/* Ajout d'une feuille à l'arbre */
|
90 |
addLeaf: function(data, parent_node) { |
91 |
var leaf = new Jx.TreeItem({ |
92 |
label: data.name,
|
93 |
data: data.id
|
94 |
}); |
95 |
|
96 |
leaf.addEvent("click", function() { |
97 |
this.fireEvent('select', [leaf]); |
98 |
this.dlg.close();
|
99 |
}.bind(this));
|
100 |
|
101 |
parent_node.append(leaf); |
102 |
}, |
103 |
|
104 |
selectGroup: function() { |
105 |
this.dlg.open();
|
106 |
}, |
107 |
|
108 |
redraw: function() { |
109 |
this.tree.clear();
|
110 |
this.retrieve_tree_items(this.tree, true); |
111 |
} |
112 |
}); |