]>
git.proxmox.com Git - pve-manager.git/blob - www/manager/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('PVE.data.reader.JsonObject', {
31 extend
: 'Ext.data.reader.Json',
32 alias
: 'reader.jsonobject',
40 constructor: function(config
) {
43 Ext
.apply(me
, config
|| {});
45 me
.callParent([config
]);
48 getResponseData: function(response
) {
53 var result
= Ext
.decode(response
.responseText
);
54 var root
= me
.getRoot(result
);
59 Ext
.Array
.each(root
, function(rec
) {
60 if (Ext
.isDefined(rec
.key
)) {
61 rec_hash
[rec
.key
] = rec
;
66 Ext
.Object
.each(me
.rows
, function(key
, rowdef
) {
67 var rec
= rec_hash
[key
];
68 if (Ext
.isDefined(rec
)) {
69 if (!Ext
.isDefined(rec
.value
)) {
70 rec
.value
= rowdef
.defaultValue
;
73 } else if (Ext
.isDefined(rowdef
.defaultValue
)) {
74 data
.push({key
: key
, value
: rowdef
.defaultValue
} );
75 } else if (rowdef
.required
) {
76 data
.push({key
: key
, value
: undefined });
80 Ext
.Array
.each(root
, function(rec
) {
81 if (Ext
.isDefined(rec
.key
)) {
91 if (Ext
.isArray(org_root
)) {
92 if (root
.length
== 1) {
100 Ext
.Object
.each(me
.rows
, function(key
, rowdef
) {
101 if (Ext
.isDefined(root
[key
])) {
102 data
.push({key
: key
, value
: root
[key
]});
103 } else if (Ext
.isDefined(rowdef
.defaultValue
)) {
104 data
.push({key
: key
, value
: rowdef
.defaultValue
});
105 } else if (rowdef
.required
) {
106 data
.push({key
: key
, value
: undefined});
110 Ext
.Object
.each(root
, function(key
, value
) {
111 data
.push({key
: key
, value
: value
});
119 json
: response
.responseText
,
121 msg
: 'Unable to parse the JSON returned by the server: ' + ex
.toString()