-
Notifications
You must be signed in to change notification settings - Fork 77
/
Copy pathCell.js
52 lines (48 loc) · 1.05 KB
/
Cell.js
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
define([
"dojo/_base/declare",
"dojo/_base/lang",
"dojo/_base/Deferred"
], function(declare, lang, Deferred){
return declare([], {
constructor: function(grid, row, column){
var t=this;
t.grid = grid;
t.model = grid.model;
t.row = row;
t.column = column;
},
data: function(){
return this.model.byId(this.row.id).data[this.column.id];
},
rawData: function(){
var t = this, f = t.column.field();
return f && t.model.byId(t.row.id).rawData[f];
},
setRawData: function(rawData){
var d = new Deferred(),
t = this,
field = t.column.field(),
s = t.grid.store,
h = lang.hitch,
success = h(d, d.callback),
fail = h(d, d.errback);
if(field){
var item = t.model.byId(t.row.id).item;
if(s.setValue){
s.setValue(item, field, rawData);
s.save({
onComplete: success,
onError: fail
});
}else if(s.put){
var obj = lang.clone(item);
obj[field] = rawData;
Deferred.when(s.put(obj), success, fail);
}
}else{
success();
}
return d;
}
});
});