Skip to content

Commit aab6df7

Browse files
committed
fixes #732 - support multiple data types with object and array
1 parent af4f651 commit aab6df7

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

src/components/schema-table.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,14 @@ export default class SchemaTable extends LitElement {
183183
if (dataType === 'array') {
184184
detailObjType = 'array of object'; // Array of Object
185185
} else {
186-
detailObjType = 'object';
186+
detailObjType = data['::dataTypeLabel'] || data['::type'];
187187
}
188188
} else if (data['::type'] === 'array') {
189189
if (dataType === 'array') {
190190
// detailObjType = 'array of array'; // Array of array
191191
detailObjType = `array of array ${arrayType !== 'object' ? `of ${arrayType}` : ''}`; // Array of array
192192
} else {
193-
detailObjType = 'array';
193+
detailObjType = data['::dataTypeLabel'] || data['::type'];
194194
}
195195
}
196196

@@ -244,7 +244,7 @@ export default class SchemaTable extends LitElement {
244244
? html`${this.generateTree(data[0], 'xxx-of-option', '', '::ARRAY~OF', '', newSchemaLevel, newIndentLevel, '')}`
245245
: html`
246246
${Object.keys(data).map((dataKey) => html`
247-
${['::title', '::description', '::type', '::props', '::deprecated', '::array-type', '::readwrite'].includes(dataKey)
247+
${['::title', '::description', '::type', '::props', '::deprecated', '::array-type', '::readwrite', '::dataTypeLabel'].includes(dataKey)
248248
? data[dataKey]['::type'] === 'array' || data[dataKey]['::type'] === 'object'
249249
? html`${this.generateTree(
250250
data[dataKey]['::type'] === 'array' ? data[dataKey]['::props'] : data[dataKey],

src/components/schema-tree.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ export default class SchemaTree extends LitElement {
246246
? html`${this.generateTree(data[0], 'xxx-of-option', '', '::ARRAY~OF', '', newSchemaLevel, newIndentLevel, data[0]['::readwrite'])}`
247247
: html`
248248
${Object.keys(data).map((dataKey) => html`
249-
${['::title', '::description', '::type', '::props', '::deprecated', '::array-type', '::readwrite'].includes(dataKey)
249+
${['::title', '::description', '::type', '::props', '::deprecated', '::array-type', '::readwrite', '::dataTypeLabel'].includes(dataKey)
250250
? data[dataKey]['::type'] === 'array' || data[dataKey]['::type'] === 'object'
251251
? html`${this.generateTree(
252252
data[dataKey]['::type'] === 'array' ? data[dataKey]['::props'] : data[dataKey],

src/utils/schema-utils.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,9 @@ export function schemaInObjectNotation(schema, obj, level = 0, suffix = '') {
685685
obj['::title'] = schema.title || '';
686686
obj['::description'] = generateMarkdownForArrayAndObjectDescription(schema, level);
687687
obj['::type'] = 'object';
688+
if ((Array.isArray(schema.type) && schema.type.includes('null')) || schema.nullable) {
689+
obj['::dataTypeLabel'] = 'object or null';
690+
}
688691
obj['::deprecated'] = schema.deprecated || false;
689692
obj['::readwrite'] = schema.readOnly ? 'readonly' : schema.writeOnly ? 'writeonly' : '';
690693
for (const key in schema.properties) {
@@ -701,6 +704,9 @@ export function schemaInObjectNotation(schema, obj, level = 0, suffix = '') {
701704
obj['::title'] = schema.title || '';
702705
obj['::description'] = generateMarkdownForArrayAndObjectDescription(schema, level);
703706
obj['::type'] = 'array';
707+
if ((Array.isArray(schema.type) && schema.type.includes('null')) || schema.nullable) {
708+
obj['::dataTypeLabel'] = 'array or null';
709+
}
704710
obj['::deprecated'] = schema.deprecated || false;
705711
obj['::readwrite'] = schema.readOnly ? 'readonly' : schema.writeOnly ? 'writeonly' : '';
706712
if (schema.items?.items) {

0 commit comments

Comments
 (0)