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