1 <html><head><title>/home/alan/gitlive/roojs1/Roo/tree/TreeLoader.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
4 * Copyright(c) 2006-2007, Ext JS, LLC.
6 * Originally Released Under LGPL - original licence link has changed is not relivant.
9 * <script type="text/javascript">
12 * @class Roo.tree.TreeLoader
13 * @extends Roo.util.Observable
14 * A TreeLoader provides for lazy loading of an {@link Roo.tree.TreeNode}'s child
15 * nodes from a specified URL. The response must be a javascript Array definition
16 * who's elements are node definition objects. eg:
17 * <pre><code>
21 { 'id': 1, 'text': 'A folder Node', 'leaf': false },
22 { 'id': 2, 'text': 'A leaf Node', 'leaf': true }
27 </code></pre>
28 * <br><br>
29 * The old style respose with just an array is still supported, but not recommended.
30 * <br><br>
32 * A server request is sent, and child nodes are loaded only when a node is expanded.
33 * The loading node's id is passed to the server under the parameter name "node" to
34 * enable the server to produce the correct child nodes.
35 * <br><br>
36 * To pass extra parameters, an event handler may be attached to the "beforeload"
37 * event, and the parameters specified in the TreeLoader's baseParams property:
38 * <pre><code>
39 myTreeLoader.on("beforeload", function(treeLoader, node) {
40 this.baseParams.category = node.attributes.category;
42 </code></pre><
43 * This would pass an HTTP parameter called "category" to the server containing
44 * the value of the Node's "category" attribute.
46 * Creates a new Treeloader.
47 * @param {Object} config A config object containing config properties.
49 </span><span class="jsdoc-var">Roo.tree.TreeLoader </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
50 </span><span class="jsdoc-var">this.baseParams </span><span class="jsdoc-syntax">= {};
51 </span><span class="jsdoc-var">this.requestMethod </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"POST"</span><span class="jsdoc-syntax">;
52 </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
54 </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
56 </span><span class="jsdoc-comment">/**
58 * Fires before a network request is made to retrieve the Json text which specifies a node's children.
59 * @param {Object} This TreeLoader object.
60 * @param {Object} node The {@link Roo.tree.TreeNode} object being loaded.
61 * @param {Object} callback The callback function specified in the {@link #load} call.
63 </span><span class="jsdoc-var">beforeload </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
64 </span><span class="jsdoc-comment">/**
66 * Fires when the node has been successfuly loaded.
67 * @param {Object} This TreeLoader object.
68 * @param {Object} node The {@link Roo.tree.TreeNode} object being loaded.
69 * @param {Object} response The response object containing the data from the server.
71 </span><span class="jsdoc-var">load </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
72 </span><span class="jsdoc-comment">/**
73 * @event loadexception
74 * Fires if the network request failed.
75 * @param {Object} This TreeLoader object.
76 * @param {Object} node The {@link Roo.tree.TreeNode} object being loaded.
77 * @param {Object} response The response object containing the data from the server.
79 </span><span class="jsdoc-var">loadexception </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
80 </span><span class="jsdoc-comment">/**
82 * Fires before a node is created, enabling you to return custom Node types
83 * @param {Object} This TreeLoader object.
84 * @param {Object} attr - the data returned from the AJAX call (modify it to suit)
86 </span><span class="jsdoc-var">create </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
87 </span><span class="jsdoc-syntax">});
89 </span><span class="jsdoc-var">Roo.tree.TreeLoader.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
92 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.tree.TreeLoader</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.util.Observable</span><span class="jsdoc-syntax">, {
93 </span><span class="jsdoc-comment">/**
94 * @cfg {String} dataUrl The URL from which to request a Json string which
95 * specifies an array of node definition object representing the child nodes
99 * @cfg {String} requestMethod either GET or POST
100 * defaults to POST (due to BC)
104 * @cfg {Object} baseParams (optional) An object containing properties which
105 * specify HTTP parameters to be passed to each request for child nodes.
108 * @cfg {Object} baseAttrs (optional) An object containing attributes to be added to all nodes
109 * created by this loader. If the attributes sent by the server have an attribute in this object,
110 * they take priority.
113 * @cfg {Object} uiProviders (optional) An object containing properties which
115 * DEPRECATED - use 'create' event handler to modify attributes - which affect creation.
116 * specify custom {@link Roo.tree.TreeNodeUI} implementations. If the optional
117 * <i>uiProvider</i> attribute of a returned child node is a string rather
118 * than a reference to a TreeNodeUI implementation, this that string value
119 * is used as a property name in the uiProviders object. You can define the provider named
120 * 'default' , and this will be used for all nodes (if no uiProvider is delivered by the node data)
122 </span><span class="jsdoc-var">uiProviders </span><span class="jsdoc-syntax">: {},
124 </span><span class="jsdoc-comment">/**
125 * @cfg {Boolean} clearOnLoad (optional) Default to true. Remove previously existing
126 * child nodes before loading.
128 </span><span class="jsdoc-var">clearOnLoad </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
130 </span><span class="jsdoc-comment">/**
131 * @cfg {String} root (optional) Default to false. Use this to read data from an object
132 * property on loading, rather than expecting an array. (eg. more compatible to a standard
133 * Grid query { data : [ .....] }
136 </span><span class="jsdoc-var">root </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
137 </span><span class="jsdoc-comment">/**
138 * @cfg {String} queryParam (optional)
139 * Name of the query as it will be passed on the querystring (defaults to 'node')
140 * eg. the request will be ?node=[id]
144 </span><span class="jsdoc-var">queryParam</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
146 </span><span class="jsdoc-comment">/**
147 * Load an {@link Roo.tree.TreeNode} from the URL specified in the constructor.
148 * This is called automatically when a node is expanded, but may be used to reload
149 * a node (or append new children if the {@link #clearOnLoad} option is false.)
150 * @param {Roo.tree.TreeNode} node
151 * @param {Function} callback
153 </span><span class="jsdoc-var">load </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">){
154 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.clearOnLoad</span><span class="jsdoc-syntax">){
155 </span><span class="jsdoc-keyword">while</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.firstChild</span><span class="jsdoc-syntax">){
156 </span><span class="jsdoc-var">node.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.firstChild</span><span class="jsdoc-syntax">);
159 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.attributes.children</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// preloaded json children
160 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.attributes.children</span><span class="jsdoc-syntax">;
161 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cs.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">< </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
162 </span><span class="jsdoc-var">node.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.createNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cs</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]));
164 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">callback </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"function"</span><span class="jsdoc-syntax">){
165 </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">();
167 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dataUrl</span><span class="jsdoc-syntax">){
168 </span><span class="jsdoc-var">this.requestData</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">);
172 </span><span class="jsdoc-var">getParams</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">){
173 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">buf </span><span class="jsdoc-syntax">= [], </span><span class="jsdoc-var">bp </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.baseParams</span><span class="jsdoc-syntax">;
174 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">key </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">bp</span><span class="jsdoc-syntax">){
175 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">bp</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">] != </span><span class="jsdoc-string">"function"</span><span class="jsdoc-syntax">){
176 </span><span class="jsdoc-var">buf.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">encodeURIComponent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">), </span><span class="jsdoc-string">"="</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">encodeURIComponent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">bp</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">]), </span><span class="jsdoc-string">"&"</span><span class="jsdoc-syntax">);
179 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.queryParam </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'node' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.queryParam</span><span class="jsdoc-syntax">;
180 </span><span class="jsdoc-var">buf.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">"="</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">encodeURIComponent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.id</span><span class="jsdoc-syntax">));
181 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">buf.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">""</span><span class="jsdoc-syntax">);
184 </span><span class="jsdoc-var">requestData </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">){
185 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"beforeload"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
186 </span><span class="jsdoc-var">this.transId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.Ajax.request</span><span class="jsdoc-syntax">({
187 </span><span class="jsdoc-var">method</span><span class="jsdoc-syntax">:</span><span class="jsdoc-var">this.requestMethod</span><span class="jsdoc-syntax">,
188 </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.dataUrl</span><span class="jsdoc-syntax">||</span><span class="jsdoc-var">this.url</span><span class="jsdoc-syntax">,
189 </span><span class="jsdoc-var">success</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.handleResponse</span><span class="jsdoc-syntax">,
190 </span><span class="jsdoc-var">failure</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.handleFailure</span><span class="jsdoc-syntax">,
191 </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">,
192 </span><span class="jsdoc-var">argument</span><span class="jsdoc-syntax">: {</span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">},
193 </span><span class="jsdoc-var">params</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.getParams</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)
195 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
196 </span><span class="jsdoc-comment">// if the load is cancelled, make sure we notify
197 // the node that we are done
198 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">callback </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"function"</span><span class="jsdoc-syntax">){
199 </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">();
204 </span><span class="jsdoc-var">isLoading </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
205 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.transId </span><span class="jsdoc-syntax">? </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
208 </span><span class="jsdoc-var">abort </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
209 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isLoading</span><span class="jsdoc-syntax">()){
210 </span><span class="jsdoc-var">Roo.Ajax.abort</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.transId</span><span class="jsdoc-syntax">);
214 </span><span class="jsdoc-comment">// private
215 </span><span class="jsdoc-var">createNode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">attr</span><span class="jsdoc-syntax">)
217 </span><span class="jsdoc-comment">// apply baseAttrs, nice idea Corey!
218 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.baseAttrs</span><span class="jsdoc-syntax">){
219 </span><span class="jsdoc-var">Roo.applyIf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">attr</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.baseAttrs</span><span class="jsdoc-syntax">);
221 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.applyLoader </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
222 </span><span class="jsdoc-var">attr.loader </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
224 </span><span class="jsdoc-comment">// uiProvider = depreciated..
226 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">attr.uiProvider</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string'</span><span class="jsdoc-syntax">){
227 </span><span class="jsdoc-var">attr.uiProvider </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.uiProviders</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">attr.uiProvider</span><span class="jsdoc-syntax">] ||
228 </span><span class="jsdoc-comment">/** eval:var:attr */ </span><span class="jsdoc-keyword">eval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">attr.uiProvider</span><span class="jsdoc-syntax">);
230 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.uiProviders</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'default'</span><span class="jsdoc-syntax">]) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
231 </span><span class="jsdoc-var">attr.uiProvider </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.uiProviders</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'default'</span><span class="jsdoc-syntax">];
234 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'create'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">attr</span><span class="jsdoc-syntax">);
236 </span><span class="jsdoc-var">attr.leaf </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">attr.leaf</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">attr.leaf </span><span class="jsdoc-syntax">* 1 : </span><span class="jsdoc-var">attr.leaf</span><span class="jsdoc-syntax">;
237 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">attr.leaf </span><span class="jsdoc-syntax">?
238 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.tree.TreeNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">attr</span><span class="jsdoc-syntax">) :
239 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.tree.AsyncTreeNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">attr</span><span class="jsdoc-syntax">));
242 </span><span class="jsdoc-var">processResponse </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">)
244 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">json </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">response.responseText</span><span class="jsdoc-syntax">;
245 </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
247 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.decode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">json</span><span class="jsdoc-syntax">);
249 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.root </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.success</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-var">undefined</span><span class="jsdoc-syntax">) {
250 </span><span class="jsdoc-var">this.root </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'data'</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// the default behaviour for list like data..
251 </span><span class="jsdoc-syntax">}
253 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.root </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">o.success</span><span class="jsdoc-syntax">) {
254 </span><span class="jsdoc-comment">// it's a failure condition.
255 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">a </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">response.argument</span><span class="jsdoc-syntax">;
256 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"loadexception"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">a.node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">);
257 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"Load failed - should have a handler really"</span><span class="jsdoc-syntax">);
258 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
263 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.root </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) {
264 </span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">this.root</span><span class="jsdoc-syntax">];
267 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">< </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
268 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.createNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
269 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">){
270 </span><span class="jsdoc-var">node.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
273 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">callback </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"function"</span><span class="jsdoc-syntax">){
274 </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
276 }</span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
277 </span><span class="jsdoc-var">this.handleFailure</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">);
281 </span><span class="jsdoc-var">handleResponse </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">){
282 </span><span class="jsdoc-var">this.transId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
283 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">a </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">response.argument</span><span class="jsdoc-syntax">;
284 </span><span class="jsdoc-var">this.processResponse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">a.node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">a.callback</span><span class="jsdoc-syntax">);
285 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"load"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">a.node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">);
288 </span><span class="jsdoc-var">handleFailure </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">)
290 </span><span class="jsdoc-comment">// should handle failure better..
291 </span><span class="jsdoc-var">this.transId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
292 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">a </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">response.argument</span><span class="jsdoc-syntax">;
293 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"loadexception"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">a.node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">);
294 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">a.callback </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"function"</span><span class="jsdoc-syntax">){
295 </span><span class="jsdoc-var">a.callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">a.node</span><span class="jsdoc-syntax">);
298 });</span></code></body></html>