Upgrade to ExtJS 4.0.1 - Released 05/18/2011
[extjs.git] / docs / source / RemotingMethod.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5   <title>The source code</title>
6   <link href="../prettify/prettify.css" type="text/css" rel="stylesheet" />
7   <script type="text/javascript" src="../prettify/prettify.js"></script>
8   <style type="text/css">
9     .highlight { display: block; background-color: #ddd; }
10   </style>
11   <script type="text/javascript">
12     function highlight() {
13       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
14     }
15   </script>
16 </head>
17 <body onload="prettyPrint(); highlight();">
18   <pre class="prettyprint lang-js"><span id='Ext-direct-RemotingMethod'>/**
19 </span> * Small utility class used internally to represent a Direct method.
20  * Thi class is used internally.
21  * @class Ext.direct.RemotingMethod
22  * @ignore
23  */
24 Ext.define('Ext.direct.RemotingMethod', {
25     
26     constructor: function(config){
27         var me = this,
28             params = Ext.isDefined(config.params) ? config.params : config.len,
29             name;
30             
31         me.name = config.name;
32         me.formHandler = config.formHandler;
33         if (Ext.isNumber(params)) {
34             // given only the number of parameters
35             me.len = params;
36             me.ordered = true;
37         } else {
38             /*
39              * Given an array of either
40              * a) String
41              * b) Objects with a name property. We may want to encode extra info in here later
42              */
43             me.params = [];
44             Ext.each(params, function(param){
45                 name = Ext.isObject(param) ? param.name : param;
46                 me.params.push(name);
47             });
48         }
49     },
50     
51 <span id='Ext-direct-RemotingMethod-method-getCallData'>    /**
52 </span>     * Takes the arguments for the Direct function and splits the arguments
53      * from the scope and the callback.
54      * @param {Array} args The arguments passed to the direct call
55      * @return {Object} An object with 3 properties, args, callback &amp; scope.
56      */
57     getCallData: function(args){
58         var me = this,
59             data = null,
60             len  = me.len,
61             params = me.params,
62             callback,
63             scope,
64             name;
65             
66         if (me.ordered) {
67             callback = args[len];
68             scope = args[len + 1];
69             if (len !== 0) {
70                 data = args.slice(0, len);
71             }
72         } else {
73             data = Ext.apply({}, args[0]);
74             callback = args[1];
75             scope = args[2];
76             
77             // filter out any non-existent properties
78             for (name in data) {
79                 if (data.hasOwnProperty(name)) {
80                     if (!Ext.Array.contains(params, name)) {
81                         delete data[name];
82                     }
83                 }
84             }
85         }
86         
87         return {
88             data: data,
89             callback: callback,
90             scope: scope    
91         };
92     }
93 });
94 </pre>
95 </body>
96 </html>