| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | <?js    var data = obj;    var props = data.subprops || data.properties;    /* sort subprops under their parent props (like opts.classname) */    var parentProp = null;    props.forEach(function(prop, i) {        if (!prop) { return; }        if ( parentProp && prop.name && prop.name.indexOf(parentProp.name + '.') === 0 ) {            prop.name = prop.name.substr(parentProp.name.length+1);            parentProp.subprops = parentProp.subprops || [];            parentProp.subprops.push(prop);            props[i] = null;        }        else {            parentProp = prop;        }    });    /* determine if we need extra columns, "attributes" and "default" */    props.hasAttributes = false;    props.hasDefault = false;    props.hasName = false;    props.forEach(function(prop) {        if (!prop) { return; }        if (prop.optional || prop.nullable) {            props.hasAttributes = true;        }        if (prop.name) {            props.hasName = true;        }        if (typeof prop.defaultvalue !== 'undefined' && !data.isEnum) {            props.hasDefault = true;        }    });?><table class="props">    <thead>    <tr>        <?js if (props.hasName) {?>        <th>Name</th>        <?js } ?>        <th>Type</th>        <?js if (props.hasAttributes) {?>        <th>Attributes</th>        <?js } ?>        <?js if (props.hasDefault) {?>        <th>Default</th>        <?js } ?>        <th class="last">Description</th>    </tr>    </thead>    <tbody>    <?js        var self = this;        props.forEach(function(prop) {            if (!prop) { return; }    ?>        <tr>            <?js if (props.hasName) {?>                <td class="name"><code><?js= prop.name ?></code></td>            <?js } ?>            <td class="type">            <?js if (prop.type && prop.type.names) {?>                <?js= self.partial('type.tmpl', prop.type.names) ?>            <?js } ?>            </td>            <?js if (props.hasAttributes) {?>                <td class="attributes">                <?js if (prop.optional) { ?>                    <optional><br>                <?js } ?>                <?js if (prop.nullable) { ?>                    <nullable><br>                <?js } ?>                </td>            <?js } ?>            <?js if (props.hasDefault) {?>                <td class="default">                <?js if (typeof prop.defaultvalue !== 'undefined') { ?>                    <?js= self.htmlsafe(prop.defaultvalue) ?>                <?js } ?>                </td>            <?js } ?>            <td class="description last"><?js= prop.description ?><?js if (prop.subprops) { ?>                <h6>Properties</h6><?js= self.partial('properties.tmpl', prop) ?>            <?js } ?></td>        </tr>    <?js }); ?>    </tbody></table>
 |