]>
git.proxmox.com Git - proxmox-widget-toolkit.git/blob - data/reader/JsonObject.js
1 /* A reader to store a single JSON Object (hash) into a storage.
2 * Also accepts an array containing a single hash.
6 * example1: {data1: "xyz", data2: "abc"}
7 * returns [{key: "data1", value: "xyz"}, {key: "data2", value: "abc"}]
9 * example2: [ {data1: "xyz", data2: "abc"} ]
10 * returns [{key: "data1", value: "xyz"}, {key: "data2", value: "abc"}]
12 * If you set 'readArray', the reader expexts the object as array:
14 * example3: [ { key: "data1", value: "xyz", p2: "cde" }, { key: "data2", value: "abc", p2: "efg" }]
15 * returns [{key: "data1", value: "xyz", p2: "cde}, {key: "data2", value: "abc", p2: "efg"}]
17 * Note: The records can contain additional properties (like 'p2' above) when you use 'readArray'
19 * Additional feature: specify allowed properties with default values with 'rows' object
30 Ext
.define('Proxmox.data.reader.JsonObject', {
31 extend
: 'Ext.data.reader.Json',
32 alias
: 'reader.jsonobject',
38 constructor: function(config
) {
41 Ext
.apply(me
, config
|| {});
43 me
.callParent([config
]);
46 getResponseData: function(response
) {
51 var result
= Ext
.decode(response
.responseText
);
52 // get our data items inside the server response
53 var root
= result
[me
.getRootProperty()];
58 Ext
.Array
.each(root
, function(rec
) {
59 if (Ext
.isDefined(rec
.key
)) {
60 rec_hash
[rec
.key
] = rec
;
65 Ext
.Object
.each(me
.rows
, function(key
, rowdef
) {
66 var rec
= rec_hash
[key
];
67 if (Ext
.isDefined(rec
)) {
68 if (!Ext
.isDefined(rec
.value
)) {
69 rec
.value
= rowdef
.defaultValue
;
72 } else if (Ext
.isDefined(rowdef
.defaultValue
)) {
73 data
.push({key
: key
, value
: rowdef
.defaultValue
} );
74 } else if (rowdef
.required
) {
75 data
.push({key
: key
, value
: undefined });
79 Ext
.Array
.each(root
, function(rec
) {
80 if (Ext
.isDefined(rec
.key
)) {
90 if (Ext
.isArray(org_root
)) {
91 if (root
.length
== 1) {
99 Ext
.Object
.each(me
.rows
, function(key
, rowdef
) {
100 if (Ext
.isDefined(root
[key
])) {
101 data
.push({key
: key
, value
: root
[key
]});
102 } else if (Ext
.isDefined(rowdef
.defaultValue
)) {
103 data
.push({key
: key
, value
: rowdef
.defaultValue
});
104 } else if (rowdef
.required
) {
105 data
.push({key
: key
, value
: undefined});
109 Ext
.Object
.each(root
, function(key
, value
) {
110 data
.push({key
: key
, value
: value
});
118 json
: response
.responseText
,
120 msg
: 'Unable to parse the JSON returned by the server: ' + ex
.toString()