Signed-off-by: Tim Marx <t.m...@proxmox.com>
---
 api-viewer/PVEAPI.js | 112 ++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 100 insertions(+), 12 deletions(-)

diff --git a/api-viewer/PVEAPI.js b/api-viewer/PVEAPI.js
index 550f548..dadc45b 100644
--- a/api-viewer/PVEAPI.js
+++ b/api-viewer/PVEAPI.js
@@ -196,21 +196,109 @@ Ext.onReady(function() {
                    if (!rtype)
                        rtype = 'object';
 
-                       var returnhtml;
-                       if (retinf.items) {
-                           returnhtml = '<pre>items: ' + 
Ext.htmlEncode(JSON.stringify(retinf.items, null, 4)) + '</pre>';
-                       }
+                   var rpstore = Ext.create('Ext.data.Store', {
+                       model: 'pve-param-schema',
+                       proxy: {
+                           type: 'memory'
+                       },
+                       groupField: 'optional',
+                       sorters: [
+                           {
+                               property: 'name',
+                               direction: 'ASC'
+                          }
+                       ]
+                   });
 
-                       if (retinf.properties) {
-                           returnhtml = returnhtml || '';
-                           returnhtml += '<pre>properties:' + 
Ext.htmlEncode(JSON.stringify(retinf.properties, null, 4)) + '</pre>';
-                       }
+                   var properties;
+                   if (rtype === 'array' && retinf.items.properties) {
+                       properties = retinf.items.properties;
+                   }
 
-                       sections.push({
-                       title: 'Returns: ' + rtype,
+                   if (rtype === 'object' && retinf.properties) {
+                       properties = retinf.properties;
+                   }
+
+                   Ext.Object.each(properties, function(name, pdef) {
+                       pdef.name = name;
+                       rpstore.add(pdef);
+                   });
+
+                   rpstore.sort();
+
+                   var groupingFeature = 
Ext.create('Ext.grid.feature.Grouping',{
+                       enableGroupingMenu: false,
+                       groupHeaderTpl: '<tpl 
if="groupValue">Optional</tpl><tpl if="!groupValue">Obligatory</tpl>'
+                   });
+                   var returnhtml;
+                   if (retinf.items) {
+                       returnhtml = '<pre>items: ' + 
Ext.htmlEncode(JSON.stringify(retinf.items, null, 4)) + '</pre>';
+                   }
+
+                   if (retinf.properties) {
+                       returnhtml = returnhtml || '';
+                       returnhtml += '<pre>properties:' + 
Ext.htmlEncode(JSON.stringify(retinf.properties, null, 4)) + '</pre>';
+                   }
+
+                   var rawSection = Ext.create('Ext.panel.Panel', {
+                       title: 'RAW ' + rtype,
                        bodyPadding: 10,
-                       html: returnhtml
-                       });
+                       html: returnhtml,
+                       hidden: true
+                   });
+
+                   sections.push({
+                       xtype: 'gridpanel',
+                       title: 'Returns: ' + rtype,
+                       features: [groupingFeature],
+                       store: rpstore,
+                       viewConfig: {
+                           trackOver: false,
+                           stripeRows: true
+                       },
+                   columns: [
+                       {
+                           header: 'Name',
+                           dataIndex: 'name',
+                           flex: 1
+                       },
+                       {
+                           header: 'Type',
+                           dataIndex: 'type',
+                           renderer: render_type,
+                           flex: 1
+                       },
+                       {
+                           header: 'Default',
+                           dataIndex: 'default',
+                           flex: 1
+                       },
+                       {
+                           header: 'Format',
+                           dataIndex: 'type',
+                           renderer: render_format,
+                           flex: 2
+                       },
+                       {
+                           header: 'Description',
+                           dataIndex: 'description',
+                           renderer: render_description,
+                           flex: 6
+                       }
+                   ],
+                   tbar: [
+                       {
+                           xtype: 'button',
+                           text: 'Toggle RAW',
+                           handler: function() {
+                               rawSection.setVisible(!rawSection.isVisible());
+                           }}
+                   ]
+               });
+
+               sections.push(rawSection);
+
+
                }
 
                var permhtml = '';
-- 
2.20.1

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to