From 1fcb1ba079959df5a50055f35f601651514f8cda Mon Sep 17 00:00:00 2001 From: Erfan Date: Tue, 2 Aug 2016 16:01:19 +0200 Subject: [PATCH 1/3] form '*' generate only remain keys from schema - it is now possible to add costum keys to the form and add '*' for the remain keys --- src/services/schema-form.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/services/schema-form.js b/src/services/schema-form.js index a3f531e54..14571c598 100644 --- a/src/services/schema-form.js +++ b/src/services/schema-form.js @@ -313,8 +313,25 @@ angular.module('schemaForm').provider('schemaForm', //simple case, we have a "*", just put the stdForm there var idx = form.indexOf('*'); if (idx !== -1) { - form = form.slice(0, idx) - .concat(stdForm.form) + var formKeys = form.map(function(obj) { + if (obj.key) { + return obj.key; + } + }).filter(function(element) { + return element !== undefined; + }); + + var stdFormRemains = stdForm.form.map(function(obj) { + isInside = formKeys.indexOf(obj.key[0]) !== -1; + if (!isInside) { + return obj; + } + }).filter(function(element) { + return element !== undefined; + }); + + form = form.slice(0, idx) + .concat(stdFormRemains) .concat(form.slice(idx + 1)); } From 99b523cff783e232a63f939cac30f15346b3ce86 Mon Sep 17 00:00:00 2001 From: Erfan Date: Tue, 27 Sep 2016 17:21:17 +0200 Subject: [PATCH 2/3] replaced "*" with "..." for remaining attributes --- src/services/schema-form.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/services/schema-form.js b/src/services/schema-form.js index 14571c598..718877169 100644 --- a/src/services/schema-form.js +++ b/src/services/schema-form.js @@ -310,9 +310,9 @@ angular.module('schemaForm').provider('schemaForm', var stdForm = service.defaults(schema, ignore, options); - //simple case, we have a "*", just put the stdForm there - var idx = form.indexOf('*'); - if (idx !== -1) { + //simple case, we have a "...", just put the stdFormRemains there + var idRest = form.indexOf('...'); + if (idRest !== -1) { var formKeys = form.map(function(obj) { if (obj.key) { return obj.key; @@ -330,8 +330,16 @@ angular.module('schemaForm').provider('schemaForm', return element !== undefined; }); - form = form.slice(0, idx) + form = form.slice(0, idRest) .concat(stdFormRemains) + .concat(form.slice(idRest + 1)); + } + + //simple case, we have a "*", just put the stdForm there + var idx = form.indexOf('*'); + if (idx !== -1) { + form = form.slice(0, idx) + .concat(stdForm.form) .concat(form.slice(idx + 1)); } From 5bc269fd581b78752e899375927ca97b767d1480 Mon Sep 17 00:00:00 2001 From: Erfan Date: Mon, 3 Oct 2016 11:21:08 +0200 Subject: [PATCH 3/3] fixed bug with ignoring string typed objects --- src/services/schema-form.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/services/schema-form.js b/src/services/schema-form.js index 718877169..e0ce35e7c 100644 --- a/src/services/schema-form.js +++ b/src/services/schema-form.js @@ -314,7 +314,9 @@ angular.module('schemaForm').provider('schemaForm', var idRest = form.indexOf('...'); if (idRest !== -1) { var formKeys = form.map(function(obj) { - if (obj.key) { + if (typeof obj === 'string'){ + return obj; + } else if (obj.key) { return obj.key; } }).filter(function(element) {