Bläddra i källkod

Adding convenience functions

Richard Knight 6 år sedan
förälder
incheckning
8eed7af62c

+ 1 - 1
src/app/_mock/testfields.v1.ts

@@ -1,4 +1,4 @@
-// TESTS: Generation of Modeled MetaData using field models
+// TESTS: Generation of Modeled MetaData using form field models
 
 import { ValueTransformer } from './../dynaform/interfaces';
 import * as fmd from './../dynaform/models'; // fmd = Form Meta Data

+ 2 - 2
src/app/_mock/testfields.v3.ts

@@ -1,5 +1,5 @@
 // TESTS: Generation of Automatic MetaData from model using autoMeta library function
-// All fields will defatlt to type 'text'
+// All fields will default to type 'text'
 
 import { buildModeledMeta, autoMeta } from './../dynaform/libs';
 
@@ -27,4 +27,4 @@ const model2 = {
 
 export const formMetaDataObj = buildModeledMeta(autoMeta(model2));
 
-console.log(formMetaDataObj);
+console.log(formMetaDataObj);

+ 1 - 1
src/app/_mock/testfields.v4.ts

@@ -1,4 +1,4 @@
-// TESTS: Lazy combination of Automatic MetaData with extra MetaData
+// TESTS: Lazy combination of Automatic MetaData with Extra MetaData
 
 import { buildModeledMeta, autoMeta, combineExtraMeta } from './../dynaform/libs';
 

+ 16 - 1
src/app/dynaform/libs/index.ts

@@ -10,6 +10,7 @@ import { Container } from '@angular/compiler/src/i18n/i18n_ast';
  * -------
  * autoMeta(model) - generate basic metadata from a raw or mapped model, recursively if necessary
  * combineExtraMeta(metadata, extraMeta) - combine extra metadata into metatdata, lazyly and recursively
+ * combineModelWithMeta(model, extraMeta) - automatically generated metadata for model then combines extra metadata
  * buildModedMeta(metadata) - use field metadta models to fill out metadata
  * buildFormGroup(metadata) - builds FormGroups from modelled metdata, recursively if necessary
  *
@@ -84,6 +85,11 @@ const combineExtraMeta = (metaG, metaExtra) => {
 	return { ...metaG, ...combinedMeta };
 };
 
+// ---------------------------------------------------------------------------------------------------------------------
+// Combine model with overrides
+
+const combineModelWithMeta = (model, metaExtra) => combineExtraMeta(autoMeta(model), metaExtra);
+
 // ---------------------------------------------------------------------------------------------------------------------
 // Build Modelled Metadata - Form Metadata Factory
 
@@ -139,7 +145,16 @@ const buildFormGroupReducerIteree = (res, metaFoG) => Object.assign(res, { [meta
 const _buildFormGroup = metaG => fb.group(reduce(buildFormGroupReducerIteree, {}, metaG));
 const buildFormGroup = metaG => _buildFormGroup(addMissingNames(metaG));
 
+// ---------------------------------------------------------------------------------------------------------------------
+// Convenience Functions combining several steps
+
+const autoBuildModeledMeta = (model, metaExtra = {}) => buildModeledMeta(combineModelWithMeta(model, metaExtra));
+const autoBuildFormGroup = (model, metaExtra = {}) => buildFormGroup(autoBuildModeledMeta(model, metaExtra));
+
 // ---------------------------------------------------------------------------------------------------------------------
 // Exports
 
-export { autoMeta, combineExtraMeta, buildModeledMeta, buildFormGroup };
+export {
+	autoMeta, combineModelWithMeta, combineExtraMeta, buildModeledMeta, buildFormGroup,
+	autoBuildModeledMeta, autoBuildFormGroup
+};