]>
git.proxmox.com Git - pve-docs.git/blob - api-viewer/PVEAPI.js
1 // avoid errors when running without development tools
2 if (!Ext
.isDefined(Ext
.global
.console
)) {
9 Ext
.onReady(function() {
11 Ext
.define('pve-param-schema', {
12 extend
: 'Ext.data.Model',
14 'name', 'type', 'typetext', 'description', 'enum',
15 'minimum', 'maximum', 'minLength', 'maxLength',
16 'pattern', 'title', 'requires', 'format', 'default',
17 'disallow', 'extends', 'links',
25 var store
= Ext
.create('Ext.data.TreeStore', {
26 model
: Ext
.define('pve-api-doc', {
27 extend
: 'Ext.data.Model',
29 'path', 'info', 'text',
45 var render_text = function(value
, metaData
, record
) {
46 var pdef
= record
.data
;
48 metaData
.style
= 'white-space:pre-wrap;'
50 return Ext
.htmlEncode(value
);
53 var render_type = function(value
, metaData
, record
) {
54 var pdef
= record
.data
;
56 return pdef
['enum'] ? 'enum' : (pdef
.type
|| 'string');
59 var render_format = function(value
, metaData
, record
) {
60 var pdef
= record
.data
;
62 metaData
.style
= 'white-space:normal;'
68 return pdef
['enum'].join(' | ');
79 var render_docu = function(data
) {
93 Ext
.Array
.each(['GET', 'POST', 'PUT', 'DELETE'], function(method
) {
94 var info
= md
[method
];
99 usage
+= "<table><tr><td>HTTP: </td><td>" + method
+ " /api2/json" + data
.path
+ "</td></tr><tr><td> </td></tr>";
100 usage
+= "<tr><td>CLI:</td><td>pvesh " + clicmdhash
[method
] + " " + data
.path
+ "</td></tr></table>";
104 title
: 'Description',
105 html
: Ext
.htmlEncode(info
.description
),
115 if (info
.parameters
&& info
.parameters
.properties
) {
117 var pstore
= Ext
.create('Ext.data.Store', {
118 model
: 'pve-param-schema',
122 groupField
: 'optional',
131 Ext
.Object
.each(info
.parameters
.properties
, function(name
, pdef
) {
138 var groupingFeature
= Ext
.create('Ext.grid.feature.Grouping',{
139 enableGroupingMenu
: false,
140 groupHeaderTpl
: '<tpl if="groupValue">Optional</tpl><tpl if="!groupValue">Required</tpl>'
146 features
: [groupingFeature
],
160 renderer
: render_type
,
165 renderer
: render_format
,
169 header
: 'Description',
170 dataIndex
: 'description',
171 renderer
: render_text
,
181 var rtype
= info
.returns
.type
;
182 if (!rtype
&& info
.returns
.items
)
188 title
: 'Returns: ' + rtype
193 if (!info
.permissions
) {
194 permhtml
= "Root only.";
196 if (info
.permissions
.description
) {
197 permhtml
+= "<div style='white-space:pre-wrap;padding-bottom:10px;'>" +
198 Ext
.htmlEncode(info
.permissions
.description
) + "</div>";
201 if (info
.permissions
.user
) {
202 if (!info
.permissions
.description
) {
203 if (info
.permissions
.user
=== 'world') {
204 permhtml
+= "Accessible without any authententification.";
205 } else if (info
.permissions
.user
=== 'all') {
206 permhtml
+= "Accessible by all authententicated users.";
208 permhtml
+= 'Onyl accessible by user "' +
209 info
.permissions
.user
+ '"';
212 } else if (info
.permissions
.check
) {
213 permhtml
+= "<pre>Check: " +
214 Ext
.htmlEncode(Ext
.JSON
.encode(info
.permissions
.check
)) + "</pre>";
216 permhtml
+= "Unknown systax!";
221 title
: 'Required permissions',
238 var ct
= Ext
.getCmp('docview');
239 ct
.setTitle("Path: " + data
.path
);
245 var tree
= Ext
.create('Ext.tree.Panel', {
246 title
: 'Resource Tree',
254 selectionchange: function(v
, selections
) {
257 var rec
= selections
[0];
258 render_docu(rec
.data
);
263 Ext
.create('Ext.container.Viewport', {
265 renderTo
: Ext
.getBody(),
270 title
: 'Documentation',