|
@@ -42,13 +42,18 @@ const keyValPairToMetaRecursive = ( [key, val] ) => {
|
|
|
return [key, metaVal];
|
|
|
};
|
|
|
|
|
|
-// Here, if array member is an object, generate autoMeta for the object members
|
|
|
-
|
|
|
+/*
|
|
|
const arrayMemberAutoName = (val, i) => {
|
|
|
isScalar(val) ? val : val.__typename || val.constructor.name;
|
|
|
}
|
|
|
+*/
|
|
|
const arrayToMeta = array => array.map((val, i) => {
|
|
|
- return { name: arrayMemberAutoName(val, i), 'value' : val };
|
|
|
+ const name = (i + 1).toString();
|
|
|
+ if (isScalar(val)) {
|
|
|
+ return { name, 'value' : val };
|
|
|
+ } else {
|
|
|
+ return { name, meta: autoMeta(val) };
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
const autoMeta = model => Object.entries(model)
|
|
@@ -63,10 +68,6 @@ const autoMeta = model => Object.entries(model)
|
|
|
|
|
|
// containerSeed = Metadata from container which seeds all contained fields
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
const combineMetaForField = (metaF, containerSeed, extraMetaF) => ({ ...metaF, ...containerSeed, ...extraMetaF });
|
|
|
const combineExtraMeta = (metaG, extraMeta, createFromExtra = false, containerSeed = {}) => {
|
|
|
const combinedMeta = {};
|
|
@@ -77,10 +78,8 @@ const combineExtraMeta = (metaG, extraMeta, createFromExtra = false, containerSe
|
|
|
const metaFoG = metaG[key] || {};
|
|
|
const seed = isCon ? {} : containerSeed; // Container's don't seed themselves, only their children
|
|
|
|
|
|
-
|
|
|
- // OK, so we need to... expand repeating containers here
|
|
|
+ // Have we got a repeating container?
|
|
|
if (isRepeating) {
|
|
|
-
|
|
|
const repeatInAutoMeta = Array.isArray(metaFoG.meta) ? metaFoG.meta.length : 0;
|
|
|
const repeatInExtraMeta = val['initialRepeat'] || val['minRepeat'];
|
|
|
const repeat = Math.max(repeatInAutoMeta, repeatInExtraMeta);
|
|
@@ -91,14 +90,11 @@ const combineExtraMeta = (metaG, extraMeta, createFromExtra = false, containerSe
|
|
|
[ ...metaFoG.meta, ...Array(repeat - repeatInAutoMeta).fill(metaFoG.meta[0]) ] // RETHING DEFAULT HERE - its first val from data repeated
|
|
|
:
|
|
|
Array(repeat).fill({});
|
|
|
- console.log('repeatingGroup is', repeatingGroup);
|
|
|
-
|
|
|
+ console.log('repeatingGroup is', repeatingGroup);
|
|
|
combinedMeta[key] = repeatingGroup.map(metaG => combineExtraMeta(metaG, val['meta'][0], createFromExtra, val['seed']));
|
|
|
console.log('combinedMeta is', combinedMeta[key]);
|
|
|
}
|
|
|
-
|
|
|
else
|
|
|
-
|
|
|
{
|
|
|
const extra = isCon ?
|
|
|
{
|
|
@@ -114,8 +110,6 @@ const combineExtraMeta = (metaG, extraMeta, createFromExtra = false, containerSe
|
|
|
val;
|
|
|
combinedMeta[key] = combineMetaForField(metaFoG, seed, extra);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
});
|
|
|
return { ...metaG, ...combinedMeta };
|