]>
git.proxmox.com Git - proxmox-widget-toolkit.git/blob - data/reader/JsonObject.js
5deadd3616a753eb92217ea971c894974a3cdf81
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()];
57 Ext
.Array
.each(root
, function(rec
) {
58 if (Ext
.isDefined(rec
.key
)) {
59 rec_hash
[rec
.key
] = rec
;
64 Ext
.Object
.each(me
.rows
, function(key
, rowdef
) {
65 var rec
= rec_hash
[key
];
66 if (Ext
.isDefined(rec
)) {
67 if (!Ext
.isDefined(rec
.value
)) {
68 rec
.value
= rowdef
.defaultValue
;
71 } else if (Ext
.isDefined(rowdef
.defaultValue
)) {
72 data
.push({ key
: key
, value
: rowdef
.defaultValue
});
73 } else if (rowdef
.required
) {
74 data
.push({ key
: key
, value
: undefined });
78 Ext
.Array
.each(root
, function(rec
) {
79 if (Ext
.isDefined(rec
.key
)) {
87 if (Ext
.isArray(org_root
)) {
88 if (root
.length
== 1) {
96 Ext
.Object
.each(me
.rows
, function(key
, rowdef
) {
97 if (Ext
.isDefined(root
[key
])) {
98 data
.push({ key
: key
, value
: root
[key
] });
99 } else if (Ext
.isDefined(rowdef
.defaultValue
)) {
100 data
.push({ key
: key
, value
: rowdef
.defaultValue
});
101 } else if (rowdef
.required
) {
102 data
.push({ key
: key
, value
: undefined });
106 Ext
.Object
.each(root
, function(key
, value
) {
107 data
.push({ key
: key
, value
: value
});
114 json
: response
.responseText
,
116 msg
: 'Unable to parse the JSON returned by the server: ' + ex
.toString(),