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
|
/*
* jason - Javascript based skin for xxv
* Copyright(c) 2008-2012, anbr
*
* http://projects.vdr-developer.org/projects/xxv
*
*/
Ext.xxv.jsonReader = function(meta, recordType){
meta = meta || {};
Ext.xxv.jsonReader.superclass.constructor.call(this, meta, recordType || meta.fields);
};
Ext.extend(Ext.xxv.jsonReader, Ext.data.DataReader, {
read : function(r){
if(r.status != 200) {
throw {message: "XXVReader.read: " + r.statusText };
}
var o = eval('('+r.responseText+')');
if(!o || !o.data || typeof(o.data) != 'object') {
if(o && o.data && typeof(o.data) == 'string') {
throw {message: o.data};
}
throw {message: "XXVReader.read: Json object not found"};
}
return this.readRecords(o.data,o.param);
},
readRecords : function(o,p){
var Record = this.recordType,
f = Record.prototype.fields, fi = f.items, fl = f.length;
var records = [];
for (var i = 0; i < o.length; i++) {
var n = o[i];
var values = {};
var id = n[0];
for(var j = 0; j < fl; j++){
f = fi[j];
var v = n[j];
values[f.name] = f.convert((v !== undefined) ? v : f.defaultValue);
}
var record = new Record(values, id);
record.json = n;
records[i] = record;
}
var total = records.length;
if(p && p.rows) {
total = p.rows;
}
if(this.meta && p) {
if(this.meta.param) {
delete this.meta.param;
}
this.meta.param = p;
}
return {
success : true,
records : records,
totalRecords : total
};
}
});
|