Skip to content

Commit

Permalink
Add additionalProperties to JSON
Browse files Browse the repository at this point in the history
  • Loading branch information
javalikescript committed Feb 1, 2025
1 parent e26fe6a commit 50c3a3d
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions extensions/web-base/www/app/json.js
Original file line number Diff line number Diff line change
Expand Up @@ -300,14 +300,15 @@ Vue.component('json-item', {
return this.name || 'Value';
},
propertyNames: function() {
if (!isObject(this.schema.properties)) {
var properties = this.schema.properties;
if (!isObject(properties)) {
return [];
}
var names = [];
var objectNames = [];
var arrayNames = [];
for (var name in this.schema.properties) {
var propertySchema = unrefSchema(this.rootSchema, this.schema.properties[name]);
for (var name in properties) {
var propertySchema = unrefSchema(this.rootSchema, properties[name]);
if (propertySchema.format === 'hidden') {
continue;
}
Expand All @@ -331,6 +332,16 @@ Vue.component('json-item', {
names.sort(strcasecmp);
return names.concat(objectNames).concat(arrayNames);
},
additionalPropertyNames: function() {
var names = [];
var properties = this.schema.properties;
for (var name in this.obj) {
if (!(properties && (name in properties))) {
names.push(name);
}
}
return names;
},
enumValues: function() {
if (Array.isArray(this.schema.enumValues)) {
return this.schema.enumValues;
Expand Down Expand Up @@ -413,7 +424,10 @@ Vue.component('json-item', {
},
isProperties: function() {
var schema = this.schema;
return (schema.type === 'object') && isObject(schema.properties);
return (schema.type === 'object') && (isObject(schema.properties) || isObject(schema.additionalProperties));
},
hasAdditionalProperties: function() {
return (this.schema.type === 'object') && isObject(this.schema.additionalProperties);
},
hasList: function() {
return (this.schema.type === 'array') && isObject(this.schema.items) && Array.isArray(this.obj);
Expand Down

0 comments on commit 50c3a3d

Please sign in to comment.