Esempio n. 1
0
        public StringBuilder GetProperties(IDataMetadata meta)
        {
            var sb = new StringBuilder();

            foreach (var fd in meta.Fields)
            {
                var    fm      = fd.Value;
                String propObj = fm.GetObjectType($"{meta.Name}.{fd.Key}");
                if (propObj == "String")
                {
                    if (fm.IsJson)
                    {
                        propObj = $"{{type:String, len:{fm.Length}, json:true}}";
                    }
                    else
                    {
                        propObj = $"{{type:String, len:{fm.Length}}}";
                    }
                }
                else if (propObj == "TPeriod")
                {
                    propObj = $"{{type: uPeriod.constructor}}";
                }
                sb.Append($"'{fd.Key}'")
                .Append(':')
                .Append(propObj)
                .Append(",");
            }
            if (sb.Length == 0)
            {
                return(sb);
            }
            sb.RemoveTailComma();
            return(sb);
        }
        String GetSpecialProperties(IDataMetadata meta)
        {
            StringBuilder sb = new StringBuilder();

            if (!String.IsNullOrEmpty(meta.Id))
            {
                sb.Append($"$id: '{meta.Id}',");
            }
            if (!String.IsNullOrEmpty(meta.Name))
            {
                sb.Append($"$name: '{meta.Name}',");
            }
            if (!String.IsNullOrEmpty(meta.RowNumber))
            {
                sb.Append($"$rowNo: '{meta.RowNumber}',");
            }
            if (!String.IsNullOrEmpty(meta.HasChildren))
            {
                sb.Append($"$hasChildren: '{meta.HasChildren}',");
            }
            if (!String.IsNullOrEmpty(meta.MapItemType))
            {
                sb.Append($"$itemType: {meta.MapItemType},");
            }
            if (!String.IsNullOrEmpty(meta.Permissions))
            {
                sb.Append($"$permissions: '{meta.Permissions}',");
            }
            if (!String.IsNullOrEmpty(meta.Items))
            {
                sb.Append($"$items: '{meta.Items}',");
            }
            if (meta.IsGroup)
            {
                sb.Append($"$group: true,");
            }
            StringBuilder lazyFields = new StringBuilder();

            foreach (var f in meta.Fields)
            {
                if (f.Value.IsLazy)
                {
                    lazyFields.Append($"'{f.Key}',");
                }
            }
            if (lazyFields.Length != 0)
            {
                lazyFields.RemoveTailComma();
                sb.Append($"$lazy: [{lazyFields.ToString()}]");
            }
            if (sb.Length == 0)
            {
                return(null);
            }
            sb.RemoveTailComma();
            return(",\n" + sb.ToString());
        }
Esempio n. 3
0
        static String GetCrossProperties(IDataMetadata meta)
        {
            var sb = new StringBuilder("{");

            foreach (var c in meta.Cross)
            {
                sb.Append($"{c.Key}: [");
                if (c.Value != null)
                {
                    sb.Append(String.Join(",", c.Value.Select(s => $"'{s}'")));
                }
                sb.Append("]");
            }
            sb.AppendLine("}");
            return(sb.ToString());
        }
Esempio n. 4
0
        String GetCrossProperties(IDataMetadata meta)
        {
            var sb = new StringBuilder("{");

            foreach (var c in meta.Cross)
            {
                sb.Append($"{c.Key}: [");
                foreach (var s in c.Value)
                {
                    sb.Append($"'{s}',");
                }
                sb.RemoveTailComma();
                sb.Append("]");
            }
            sb.AppendLine("}");
            return(sb.ToString());
        }
Esempio n. 5
0
 void CheckFields(String typeName, IDataMetadata data, TypeMetadata typeMeta)
 {
     foreach (var fv in data.Fields)
     {
         if (!typeMeta.ContainsKey(fv.Key))
         {
             throw new TypeCheckerException($"Type '{typeName}'. Field '{fv.Key}' is in the model but not found in the description file");
         }
         var dfm = typeMeta[fv.Key];
         CheckType(typeName, dfm, fv.Value);
     }
     foreach (var fm in typeMeta.Where(x => !x.Key.StartsWith("$")))
     {
         if (!data.Fields.ContainsKey(fm.Key))
         {
             throw new TypeCheckerException($"Type '{typeName}'. Field '{fm.Key}' is in the description file but not found in the model");
         }
     }
 }
Esempio n. 6
0
        StringBuilder GetOneConstructor(String name, IDataMetadata ctor)
        {
            var    sb      = new StringBuilder();
            String arrItem = ctor.IsArrayType ? "true" : "false";

            sb.AppendLine($"function {name}(source, path, parent) {{")
            .AppendLine("cmn.createObject(this, source, path, parent);")
            .AppendLine("}")
            // metadata
            .Append($"cmn.defineObject({name}, {{props: {{")
            .Append(GetProperties(ctor))
            .Append("}")
            .Append(GetSpecialProperties(ctor))
            .AppendLine($"}}, {arrItem});");

            if (ctor.IsArrayType)
            {
                sb.AppendLine($"function {name}Array(source, path, parent) {{")
                .AppendLine($"return cmn.createArray(source, path, {name}, {name}Array, parent);")
                .AppendLine("}");
            }
            return(sb);
        }