Upgrade to ExtJS 4.0.7 - Released 10/19/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="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
7   <script type="text/javascript" src="../resources/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  * @class Ext.direct.RemotingMethod
21  * @ignore
22  */
23 Ext.define('Ext.direct.RemotingMethod', {
24
25     constructor: function(config){
26         var me = this,
27             params = Ext.isDefined(config.params) ? config.params : config.len,
28             name;
29
30         me.name = config.name;
31         me.formHandler = config.formHandler;
32         if (Ext.isNumber(params)) {
33             // given only the number of parameters
34             me.len = params;
35             me.ordered = true;
36         } else {
37             /*
38              * Given an array of either
39              * a) String
40              * b) Objects with a name property. We may want to encode extra info in here later
41              */
42             me.params = [];
43             Ext.each(params, function(param){
44                 name = Ext.isObject(param) ? param.name : param;
45                 me.params.push(name);
46             });
47         }
48     },
49
50 <span id='Ext-direct-RemotingMethod-method-getCallData'>    /**
51 </span>     * Takes the arguments for the Direct function and splits the arguments
52      * from the scope and the callback.
53      * @param {Array} args The arguments passed to the direct call
54      * @return {Object} An object with 3 properties, args, callback &amp; scope.
55      */
56     getCallData: function(args){
57         var me = this,
58             data = null,
59             len  = me.len,
60             params = me.params,
61             callback,
62             scope,
63             name;
64
65         if (me.ordered) {
66             callback = args[len];
67             scope = args[len + 1];
68             if (len !== 0) {
69                 data = args.slice(0, len);
70             }
71         } else {
72             data = Ext.apply({}, args[0]);
73             callback = args[1];
74             scope = args[2];
75
76             // filter out any non-existent properties
77             for (name in data) {
78                 if (data.hasOwnProperty(name)) {
79                     if (!Ext.Array.contains(params, name)) {
80                         delete data[name];
81                     }
82                 }
83             }
84         }
85
86         return {
87             data: data,
88             callback: callback,
89             scope: scope
90         };
91     }
92 });
93 </pre>
94 </body>
95 </html>