sync
[Pman.Admin] / Pman.Tab.AdminEnum.bjs
1 {
2  "name" : "Pman.Tab.AdminEnum",
3  "parent" : "Pman.Tab.Admin",
4  "title" : "Pman.Tab.AdminEnum",
5  "path" : "/home/alan/gitlive/Pman.Admin/Pman.Tab.AdminEnum.bjs",
6  "permname" : "",
7  "modOrder" : "500",
8  "strings" : {
9   "2df80d5febcde0c10a66818488622b7c" : "Pulldown Options",
10   "13348442cc6a27032d2b4aa28b75a5d3" : "Search",
11   "d1228f5476d15142b1358ae4b5fa2454" : "Order #",
12   "fdff10eac021dfbb69e9c38204237fdc" : "Add new pulldown list",
13   "1206eb8aea05be4625371c9c12818785" : "Pulldown",
14   "801ab24683a4a8c433c6eb40c48bcd9d" : "Download",
15   "7af54708cf5a4286cf0cfa58ff5148a8" : "Internal #",
16   "be53a0541a6d36f6ecb879fa2c584b08" : "Image",
17   "1a87a3d29199e3435b8fb314624c008f" : "Merge Option",
18   "b48968e1c912da07df5e8d6d246291ec" : "Display Name",
19   "510bc6e58593b2b8002c9fe0c21f3fde" : "Displaying core_enum{0} - {1} of {2}",
20   "1ba4d808fc7b27a7f60ce2ff75a8af3a" : "No core_enum found",
21   "c550aeed26e71a81a88360c1889245ab" : "Upload Values",
22   "d9ec74f5aa29ceef6bf7b45f7fec5d0f" : "Add Value",
23   "b9c49611cfda3259a2b837b39489e650" : "Add Image",
24   "4d3d769b812b6faa6b76e1a8abaece2d" : "Active",
25   "f2a6c498fb90ee345d997f888fce3b18" : "Delete",
26   "49ee3087348e8d44e1feda1917443987" : "Name",
27   "d41d8cd98f00b204e9800998ecf8427e" : " "
28  },
29  "named_strings" : {
30   "search_fieldLabel" : "13348442cc6a27032d2b4aa28b75a5d3"
31  },
32  "items" : [
33   {
34    "xtype" : "NestedLayoutPanel",
35    "$ xns" : "Roo",
36    "String region" : "center",
37    "String title" : "Pulldown Options",
38    "items" : [
39     {
40      "xtype" : "BorderLayout",
41      "$ xns" : "Roo",
42      "* prop" : "layout",
43      "items" : [
44       {
45        "Number width" : 200,
46        "xtype" : "LayoutRegion",
47        "$ xns" : "Roo",
48        "* prop" : "west",
49        "Boolean split" : true
50       },
51       {
52        "xtype" : "LayoutRegion",
53        "$ xns" : "Roo",
54        "* prop" : "center"
55       },
56       {
57        "listeners" : {
58         "|activate" : "function() {\n    _this.epanel = this;\n    //if (_this.egrid) {\n    //    _this.egrid.footer.onClick('first');\n    //}\n}"
59        },
60        "background" : false,
61        "region" : "west",
62        "title" : "Pulldown Options",
63        "xtype" : "GridPanel",
64        "$ xns" : "Roo",
65        "tableName" : "core_enum",
66        "items" : [
67         {
68          "listeners" : {
69           "beforeedit" : "function (e)\n{\n    if(e.field == 'name' && e.record.data.is_system_enum*1 == 1){\n        return false;\n    }\n}",
70           "cellclick" : "function (_self, rowIndex, columnIndex, e)\n{\n\n        var di = this.colModel.getDataIndex(columnIndex);\n        if (di != 'active') {\n            return;\n        }\n         \n        var rec = _this.grid.ds.getAt(rowIndex);\n        \n        rec.set('active', rec.data.active ? 0 : 1);\n        rec.commit();\n         \n        \n}",
71           "|render" : "function() \n{\n    _this.egrid = this; \n    //_this.dialog = Pman.Dialog.FILL_IN\n    if (_this.epanel.active) {\n       this.footer.onClick('first');\n    }\n}",
72           "celldblclick" : "function (_self, rowIndex, columnIndex, e)\n{\n    var rec = _this.egrid.ds.getAt(rowIndex);\n    Pman.Dialog.AdminEnumType.show(rec.data,function(){\n        \n        _this.egrid.footer.onClick('first');\n    });\n}",
73           "afteredit" : "function (e)\n{\n   e.record.commit();     \n}"
74          },
75          "autoExpandColumn" : "display_name",
76          "xtype" : "EditorGrid",
77          "loadMask" : true,
78          "clicksToEdit" : 1,
79          "$ xns" : "Roo.grid",
80          "* prop" : "grid",
81          "items" : [
82           {
83            "listeners" : {
84             "update" : "function (_self, record, operation)\n{\n    if (operation != Roo.data.Record.COMMIT) {\n        return;\n    }\n    // got commit..\n    new Pman.Request({\n        url : baseURL + '/Roo/Core_enum.php',\n        method : 'POST',\n        params : {\n            id : record.data.id,\n            etype : _this.grid.ds.getById(record.id).data.etype,\n            name : record.data.name,\n            active : record.data.active,\n            seqid : record.data.seqid,\n            display_name : record.data.display_name\n        }, \n        success : function(res) {\n            //Roo.log(data);\n            // update the ID if it's not set..\n            if (record.data.id * 1 < 1) {\n                record.set('id', res.data.id);\n            }\n        }\n    });\n    \n}",
85             "beforeload" : "function (_self, o)\n{\n    o.params['query[empty_etype]'] = 1; \n  \n}"
86            },
87            "xtype" : "Store",
88            "remoteSort" : true,
89            "$ sortInfo" : "{ field : 'display_name', direction: 'ASC' }",
90            "$ xns" : "Roo.data",
91            "* prop" : "dataSource",
92            "items" : [
93             {
94              "$ url" : "baseURL + '/Roo/core_enum.php'",
95              "xtype" : "HttpProxy",
96              "method" : "GET",
97              "$ xns" : "Roo.data",
98              "* prop" : "proxy"
99             },
100             {
101              "id" : "id",
102              "root" : "data",
103              "xtype" : "JsonReader",
104              "$ xns" : "Roo.data",
105              "$ fields" : "[\n    {\n        'name': 'id',\n        'type': 'int'\n    },\n    {\n        'name': 'etype',\n        'type': 'string'\n    },\n    {\n        'name': 'name',\n        'type': 'string'\n    },\n    {\n        'name': 'active',\n        'type': 'int'\n    },\n    {\n        'name': 'seqid',\n        'type': 'int'\n    }\n]",
106              "* prop" : "reader",
107              "totalProperty" : "total"
108             }
109            ]
110           },
111           {
112            "listeners" : {
113             "selectionchange" : "function (_self, selection)\n{\n    _this.grid.footer.onClick('first');\n}"
114            },
115            "xtype" : "CellSelectionModel",
116            "$ xns" : "Roo.grid",
117            "* prop" : "sm"
118           },
119           {
120            "pageSize" : 100,
121            "xtype" : "PagingToolbar",
122            "emptyMsg" : "No core_enum found",
123            "$ xns" : "Roo",
124            "displayInfo" : false,
125            "displayMsg" : " ",
126            "* prop" : "footer"
127           },
128           {
129            "xtype" : "Toolbar",
130            "$ xns" : "Roo",
131            "* prop" : "toolbar",
132            "items" : [
133             {
134              "listeners" : {
135               "|click" : "function()\n{\n    \n    var data = {\n        active:1,\n        display_name:'',\n        etype:'',\n        name:''\n    };\n    Pman.Dialog.AdminEnumType.show(data,function(){\n        \n        _this.egrid.footer.onClick('first');\n    });\n         \n         \n\n}\n"
136              },
137              "text" : "Add new pulldown list",
138              "xtype" : "Button",
139              "cls" : "x-btn-text-icon",
140              "$ icon" : "Roo.rootURL + 'images/default/dd/drop-add.gif'",
141              "$ xns" : "Roo.Toolbar"
142             }
143            ]
144           },
145           {
146            "xtype" : "ColumnModel",
147            "header" : "Pulldown",
148            "width" : 200,
149            "$ renderer" : "function(v,x,r) { \n\n\n    return String.format('<span qtip=\"{1}\">{0}</span>', (''+v).length ? v : r.data.name, r.data.name); \n}",
150            "$ xns" : "Roo.grid",
151            "* prop" : "colModel[]",
152            "dataIndex" : "display_name"
153           },
154           {
155            "xtype" : "ColumnModel",
156            "header" : "Active",
157            "width" : 50,
158            "$ renderer" : "function(v) {  \n    var state = v> 0 ?  '-checked' : '';\n\n    return '<img class=\"x-grid-check-icon' + state + '\" src=\"' + Roo.BLANK_IMAGE_URL + '\"/>';\n                \n }",
159            "$ xns" : "Roo.grid",
160            "* prop" : "colModel[]",
161            "dataIndex" : "active"
162           }
163          ]
164         }
165        ]
166       },
167       {
168        "listeners" : {
169         "|activate" : "function() {\n    _this.panel = this;\n    if (_this.grid) {\n        _this.grid.footer.onClick('first');\n    }\n}"
170        },
171        "fitToframe" : true,
172        "background" : false,
173        "region" : "center",
174        "title" : "Pulldown Options",
175        "xtype" : "GridPanel",
176        "$ xns" : "Roo",
177        "tableName" : "core_enum",
178        "items" : [
179         {
180          "listeners" : {
181           "keypress" : "function (e)\n{\n    if(e.keyCode == 13){\n        _this.grid.footer.onClick('first');\n    }\n}",
182           "beforeedit" : "function (e)\n{\n    if(e.field == 'name' && e.record.data.is_system_enum*1 == 1){\n        return false;\n    }\n}",
183           "|render" : "function() \n{\n    _this.grid = this; \n    //_this.dialog = Pman.Dialog.FILL_IN\n    if (_this.panel.active) {\n       this.footer.onClick('first');\n    }\n}",
184           "cellclick" : "function (_self, rowIndex, columnIndex, e)\n{\n\n        var di = this.colModel.getDataIndex(columnIndex);\n        var rec = _this.grid.ds.getAt(rowIndex);\n            \n        if (di == 'active') {\n            \n            rec.set('active', rec.data.active ? 0 : 1);\n            rec.commit();\n            return;\n        }\n        if (di == 'id' ) {\n            \n            if (!e.ctrlKey && !e.shiftKey) { // shift or control not pressed -clear selection.\n            \n                this.dataSource.each(function(rr) {\n                    rr.selected = 0;\n                    rr.set('sel', 0);\n                });\n            }\n            \n            if (this.last_selected && e.shiftKey) {\n                // the highlight all the lines between the one last selected, and this one.\n                var s = this.dataSource.indexOf(this.last_selected);\n                var e = this.dataSource.indexOf(rec);\n                var ss = Math.min(s,e);\n                var ee = Math.max(s,e) +1;\n                for(var i = ss; i < ee; i++) {\n                    var rr = this.dataSource.getAt(i);\n                    rr.selected = 1;\n                    rr.set('sel', 1);\n                }\n                this.last_selected = rec;\n                return;\n\n            }\n            \n            rec.selected = rec.selected ? 0 : 1;\n            this.last_selected = rec.selected ? rec : false;\n            rec.set('sel', rec.data.sel ? 0 : 1);\n        }\n         \n\n         \n        \n}",
185           "afteredit" : "function (e)\n{\n   e.record.commit();     \n}"
186          },
187          "autoExpandColumn" : "display_name",
188          "xtype" : "EditorGrid",
189          "loadMask" : true,
190          "clicksToEdit" : 1,
191          "$ xns" : "Roo.grid",
192          "* prop" : "grid",
193          "items" : [
194           {
195            "listeners" : {
196             "update" : "function (_self, record, operation)\n{\n    if (operation != Roo.data.Record.COMMIT) {\n        return;\n    }\n    // got commit..\n    new Pman.Request({\n        url : baseURL + '/Roo/Core_enum.php',\n        method : 'POST',\n        params : {\n            id : record.data.id,\n            etype : _this.grid.ds.getById(record.id).data.etype,\n            name : record.data.name,\n            active : record.data.active,\n            seqid : record.data.seqid,\n            display_name : record.data.display_name\n        }, \n        success : function(res) {\n            //Roo.log(data);\n            // update the ID if it's not set..\n            if (record.data.id * 1 < 1) {\n                record.set('id', res.data.id);\n            }\n        }\n    });\n    \n}",
197             "beforeload" : "function (_self, options)\n{\n\n    var s =     _this.egrid.getSelectionModel().getSelectedCell();\n    \n\n    if (!s) {\n        return false;\n    }\n    var d = _this.egrid.dataSource.getAt(s[0]);\n    \n    options.params.etype = d.data.name;\n    options.params['query[search]'] = _this.searchBox.getValue();\n    if (!options.params.etype.length) {\n        return false;\n    }\n}"
198            },
199            "xtype" : "Store",
200            "remoteSort" : true,
201            "$ sortInfo" : "{ field : 'etype', direction: 'ASC' }",
202            "$ xns" : "Roo.data",
203            "* prop" : "dataSource",
204            "items" : [
205             {
206              "$ url" : "baseURL + '/Roo/core_enum.php'",
207              "method" : "GET",
208              "xtype" : "HttpProxy",
209              "$ xns" : "Roo.data",
210              "* prop" : "proxy"
211             },
212             {
213              "id" : "id",
214              "root" : "data",
215              "xtype" : "JsonReader",
216              "$ xns" : "Roo.data",
217              "$ fields" : "[\n    {\n        'name': 'id',\n        'type': 'int'\n    },\n    {\n        'name': 'etype',\n        'type': 'string'\n    },\n    {\n        'name': 'name',\n        'type': 'string'\n    },\n    {\n        'name': 'active',\n        'type': 'int'\n    },\n    {\n        'name': 'seqid',\n        'type': 'int'\n    }\n]",
218              "* prop" : "reader",
219              "totalProperty" : "total"
220             }
221            ]
222           },
223           {
224            "pageSize" : 25,
225            "xtype" : "PagingToolbar",
226            "emptyMsg" : "No core_enum found",
227            "$ xns" : "Roo",
228            "displayInfo" : true,
229            "displayMsg" : "Displaying core_enum{0} - {1} of {2}",
230            "* prop" : "footer",
231            "items" : [
232             {
233              "listeners" : {
234               "click" : "function (_self, e)\n{\n    new Pman.Download({\n        grid : _this.grid\n    });\n    Roo.MessageBox.alert(\"Downloading\", \"File is downloading\");\n}"
235              },
236              "text" : "Download",
237              "xtype" : "Button",
238              "$ xns" : "Roo.Toolbar"
239             },
240             {
241              "listeners" : {
242               "click" : "function (_self, e)\n{\n\n  var s =     _this.egrid.getSelectionModel().getSelectedCell();\n    \n\n    if (!s) {\n        Roo.MessageBox.alert(\"Error\", \"Select a pulldown\");\n    }\n    \n    var d = _this.egrid.dataSource.getAt(s[0]);\n \n\n    var etype = d.data.name;\n    \n    if(!etype.length){\n        Roo.MessageBox.alert('Error', 'Please select a pulldown');\n        return;\n    }\n    \n    Pman.Dialog.Image.show(\n       {\n            _url : baseURL+'/Admin/Import/Enum?' + Roo.urlEncode({'etype' : etype})\n        \n       },\n       function () {\n            _this.grid.footer.onClick('first');\n       }\n   );\n}"
243              },
244              "text" : "Upload Values",
245              "xtype" : "Button",
246              "$ xns" : "Roo.Toolbar"
247             }
248            ]
249           },
250           {
251            "xtype" : "Toolbar",
252            "$ xns" : "Roo",
253            "* prop" : "toolbar",
254            "items" : [
255             {
256              "listeners" : {
257               "|click" : "function()\n{\n    \n    // if we do not have a selected type... - what should we show..?\n    \n    \n    var s =     _this.egrid.getSelectionModel().getSelectedCell();\n    \n\n    if (!s) {\n        Roo.MessageBox.alert(\"Error\", \"Select a pulldown\");\n    }\n    \n    var d = _this.egrid.dataSource.getAt(s[0]);\n \n\n    var ds = _this.grid.getDataSource();\n\n    var add = ds.reader.newRow({    \n             id: 0, \n             display_name : '', \n             name : '', \n             etype: d.data.name, \n             active: 1, \n             seqid: 0\n      });\n\n    ds.insert(0  , add);  \n    \n    _this.grid.startEditing(0, _this.grid.colModel.findColumnIndex('name')); // name... \n}\n"
258              },
259              "text" : "Add Value",
260              "xtype" : "Button",
261              "cls" : "x-btn-text-icon",
262              "$ icon" : "rootURL + '/Pman/templates/images/search.gif'",
263              "$ xns" : "Roo.Toolbar"
264             },
265             {
266              "listeners" : {
267               "|click" : "function()\n{\n    \n    // if we do not have a selected type... - what should we show..?\n    /*\n    var et = _this.etypeCombo.getValue();\n    \n    if (!et) {\n        Roo.MessageBox.alert(\"Error\", \"Select a pulldown\");\n        return;\n    }\n    */\n    \n    var sc = _this.egrid.getSelectionModel().getSelectedCell();\n    \n    if (!sc) {\n        Roo.MessageBox.alert(\"Error\", \"Select a pulldown\");\n        return;\n    }\n    \n    var ds = _this.egrid.ds.getAt(sc[0]);\n    \n    if (!ds) {\n        Roo.MessageBox.alert(\"Error\", \"Select enum\");\n        return;\n    }\n    \n    Roo.log(ds);\n    Pman.Dialog.AdminEnumImages.show({onid:ds.data.id}, function(){\n        _this.grid.footer.onClick('first');\n    });\n    \n}\n"
268              },
269              "text" : "Add Image",
270              "xtype" : "Button",
271              "cls" : "x-btn-text-icon",
272              "$ icon" : "Roo.rootURL + 'images/default/dd/drop-add.gif'",
273              "$ xns" : "Roo.Toolbar"
274             },
275             {
276              "listeners" : {
277               "render" : "function (_self)\n{\n    _this.searchBox = this;\n}"
278              },
279              "String name" : "search",
280              "xtype" : "TextField",
281              "String fieldLabel" : "Search",
282              "$ xns" : "Roo.form"
283             },
284             {
285              "listeners" : {
286               "click" : "function (_self, e)\n{\n    _this.grid.footer.onClick('first');\n}"
287              },
288              "String cls" : "x-btn-icon",
289              "xtype" : "Button",
290              "$ xns" : "Roo.Toolbar",
291              "$ icon" : "rootURL + '/Pman/templates/images/search.gif'"
292             },
293             {
294              "listeners" : {
295               "click" : "function (_self, e)\n{\n     _this.searchBox.setValue('');\n     _this.grid.footer.onClick('first');\n}"
296              },
297              "String cls" : "x-btn-icon",
298              "xtype" : "Button",
299              "$ icon" : "rootURL + '/Pman/templates/images/edit-clear.gif'",
300              "$ xns" : "Roo.Toolbar"
301             },
302             {
303              "xtype" : "Fill",
304              "$ xns" : "Roo.Toolbar"
305             },
306             {
307              "listeners" : {
308               "|click" : "function()\n{\n    var ids = [];\n    _this.grid.dataSource.each(function(rr) {\n        if (rr.selected) {\n            ids.push(rr.data.id);\n        }\n    });   \n    if (!ids.length) {\n        Roo.MessageBox.alert(\"Error\", \"Select rows by clicking on the Internal# column\");\n        return;\n    }\n    \n    Roo.MessageBox.confirm(\n        \"Confirm\", \n        \"Confirm Deletion of selected rows (some rows can not be deleted if they are referenced elsewhere\", \n        function(res) {\n            if(res != 'yes') {\n                return;\n            }\n            new Pman.Request({\n                method : 'POST',\n                url : baseURL + '/Roo/Core_enum',\n                params : {\n                    _delete  : ids.join(',')\n                },\n                success : function() {\n                    _this.grid.footer.onClick('refresh');\n                }\n            });\n        }\n    );\n    \n    \n}\n\n        "
309              },
310              "text" : "Delete",
311              "xtype" : "Button",
312              "cls" : "x-btn-text-icon",
313              "$ icon" : "rootURL + '/Pman/templates/images/trash.gif'",
314              "$ xns" : "Roo.Toolbar"
315             },
316             {
317              "xtype" : "Separator",
318              "$ xns" : "Roo.Toolbar"
319             },
320             {
321              "listeners" : {
322               "|click" : "function()\n{\n\n    var s = _this.grid.getSelectionModel().getSelectedCell();\n\n    if (!s.length)  {\n        Roo.MessageBox.alert(\"Error\", \"Select a Row\");\n        return;\n    }\n    \n    var d = _this.grid.ds.getAt(s[0]);\n    console.log(Pman.Dialog);\n    Pman.Dialog.AdminEnumMerge.show(d.data, function() {\n        _this.grid.footer.onClick('refresh');\n    }); \n    \n}\n"
323              },
324              "text" : "Merge Option",
325              "xtype" : "Button",
326              "cls" : "x-btn-text-icon",
327              "$ icon" : "Roo.rootURL + 'images/default/tree/leaf.gif'",
328              "$ xns" : "Roo.Toolbar"
329             }
330            ]
331           },
332           {
333            "xtype" : "ColumnModel",
334            "width" : 75,
335            "header" : "Internal #",
336            "$ renderer" : "function(v,x,r) { \n    var fmt = '{0}';\n    if (r.selected) {\n        fmt = '<span style=\"color:orange;font-weight:bold;\">{0}</span>';\n    }\n    return String.format(fmt, v); }",
337            "$ xns" : "Roo.grid",
338            "Boolean sortable" : true,
339            "* prop" : "colModel[]",
340            "dataIndex" : "id"
341           },
342           {
343            "xtype" : "ColumnModel",
344            "width" : 75,
345            "header" : "Image",
346            "$ renderer" : "function(v,x,r) { return String.format('<img src=\"{0}/Images/Thumb/25/{1}/{2}\" width=\"25\" height=\"25\">', baseURL, v, r.data.images_id_filename); }",
347            "$ xns" : "Roo.grid",
348            "* prop" : "colModel[]",
349            "dataIndex" : "images_id_id"
350           },
351           {
352            "xtype" : "ColumnModel",
353            "header" : "Name",
354            "width" : 200,
355            "$ renderer" : "function(v) { return String.format('{0}', v); }",
356            "$ xns" : "Roo.grid",
357            "Boolean sortable" : true,
358            "* prop" : "colModel[]",
359            "dataIndex" : "name",
360            "items" : [
361             {
362              "xtype" : "GridEditor",
363              "$ xns" : "Roo.grid",
364              "* prop" : "editor",
365              "items" : [
366               {
367                "xtype" : "TextField",
368                "$ xns" : "Roo.form",
369                "* prop" : "field"
370               }
371              ]
372             }
373            ]
374           },
375           {
376            "xtype" : "ColumnModel",
377            "width" : 200,
378            "header" : "Display Name",
379            "$ renderer" : "function(v) { return String.format('{0}', v); }",
380            "$ xns" : "Roo.grid",
381            "Boolean sortable" : true,
382            "* prop" : "colModel[]",
383            "dataIndex" : "display_name",
384            "items" : [
385             {
386              "xtype" : "GridEditor",
387              "$ xns" : "Roo.grid",
388              "* prop" : "editor",
389              "items" : [
390               {
391                "xtype" : "TextField",
392                "$ xns" : "Roo.form",
393                "* prop" : "field"
394               }
395              ]
396             }
397            ]
398           },
399           {
400            "xtype" : "ColumnModel",
401            "width" : 75,
402            "header" : "Active",
403            "$ renderer" : "function(v) {  \n    var state = v> 0 ?  '-checked' : '';\n\n    return '<img class=\"x-grid-check-icon' + state + '\" src=\"' + Roo.BLANK_IMAGE_URL + '\"/>';\n                \n }",
404            "$ xns" : "Roo.grid",
405            "Boolean sortable" : true,
406            "* prop" : "colModel[]",
407            "dataIndex" : "active"
408           },
409           {
410            "xtype" : "ColumnModel",
411            "sortable" : true,
412            "header" : "Order #",
413            "width" : 75,
414            "$ renderer" : "function(v) { return String.format('{0}', v); }",
415            "$ xns" : "Roo.grid",
416            "Boolean sortable" : true,
417            "* prop" : "colModel[]",
418            "dataIndex" : "seqid",
419            "items" : [
420             {
421              "xtype" : "GridEditor",
422              "$ xns" : "Roo.grid",
423              "* prop" : "editor",
424              "items" : [
425               {
426                "allowNegative" : true,
427                "xtype" : "NumberField",
428                "allowDecimals" : false,
429                "decimalPrecision" : 0,
430                "$ xns" : "Roo.form",
431                "* prop" : "field"
432               }
433              ]
434             }
435            ]
436           }
437          ]
438         }
439        ]
440       }
441      ]
442     }
443    ]
444   }
445  ]
446 }