public void Generate()
        {
            var sw = Stopwatch.StartNew();
            SimpleAssemblySource assemblySource = GenerateSource();


            assemblySource.GeneratedCode  = Regex.Replace(assemblySource.GeneratedCode, detectLineTag, "\n");
            assemblySource.GeneratedCode  = Regex.Replace(assemblySource.GeneratedCode, detectTag, "");
            assemblySource.GeneratedCode  = Regex.Replace(assemblySource.GeneratedCode, detectLastComma, "}\r\n    ];\r\n\r\n");
            assemblySource.GeneratedCode  = Regex.Replace(assemblySource.GeneratedCode, detectLastComma2, "}\r\n            ],\r\n");
            assemblySource.GeneratedCode  = Regex.Replace(assemblySource.GeneratedCode, detectLastComma3, "]\r\n        };\r\n");
            assemblySource.GeneratedCode  = Regex.Replace(assemblySource.GeneratedCode, detectLastComma4, "}\r\n        ];");
            assemblySource.GeneratedCode += AppEntityProviderCodeGenerator.GenerateAppEntityProvider();
            assemblySource.GeneratedCode += AppMenuItemCodeGenerator.GenerateMenuItemProvider();

            string sourceFile = Path.Combine(Paths.ResourcesFolder + "/AdminGuiCompile/scripts/models/", AssemblyName + ".ts");

            File.WriteAllText(sourceFile, assemblySource.GeneratedCode);
            CompileFileTS();
            CopyCompiledFile();
            //File.WriteAllText("D:\\resultList.txt", AppEntityProviderRepository.GetAllEntityProviders()[0]);
            _performanceLogger.Write(sw, "Angular2ModelGenerator.Generate");
        }
Ejemplo n.º 2
0
        private static string ImplementationCodeSnippet(DataStructureInfo info)
        {
            string result = string.Format(@"
export class {0}{1} extends BaseEntity implements BaseEntityWithFilters
{{
    {2}
    public ID : string;

    getInstance(): IEmptyConstruct {{ return  {0}{1}; }}
    getNewInstance(): IDataStructure {{ return new {0}{1}(); }}
    getModuleName(): string {{ return ""{0}""; }}
    getEntityName(): string {{ return ""{1}""; }}
    
    public browseFields: Array<IFieldDefinition> = [
        {3}
    ];
    
    public setModelData(modelData: {0}{1}) {{
        if (modelData) {{
            this.ID = modelData.ID;
            {4}
        }}
    }}
    
    getValidators(): {{ [propName: string]: ValidatorDefinition[]; }} {{
        return {{ 
            {6} 
        }};
    }}

    getInvalidDataDefinitions():Array<IInvalidDataFilter> {{
        return [
            {7}
        ];
    }}

    getFilterDefinitions():Array<IFilterDefinition> {{
        return [
            {8}
        ];
    }}

    getParentName(): string {{
        return {9};
    }}
    {10}
}}
",
                                          info.Module.Name,
                                          info.Name,
                                          PropertiesTag.Evaluate(info),
                                          BrowseFieldsTag.Evaluate(info),
                                          SetModelDataTag.Evaluate(info),
                                          _urlPath,
                                          ValidatorTag.Evaluate(info),
                                          InvalidDataTag.Evaluate(info),
                                          FiltersTag.Evaluate(info),
                                          getParentInstanceOfBrowse(info),
                                          AdditionalFunctionsTag.Evaluate(info)
                                          );

            // Added as entityProvider only that its Model can be used for form creating.
            AppEntityProviderCodeGenerator.AddEntityProvider(info.Module.Name, info.Name);

            if (IsEntityType(info))
            {
                string InfoMenuItem = string.Format(@"
                    {{
                        Name: ""{0} {1}"",
                        Link: ""{2}/{0}.{1}"",
                        Tooltip: ""{0}{1}"",
                        Icon: ""fa fa-star-o"",
                        ClaimResource: ""{0}.{1}"",
                        Parent: ""Tables/{0}"",
                        ClaimRight: ""Read"",
                        Children: []
                    }},
",
                                                    info.Module.Name,
                                                    info.Name,
                                                    _urlPath);

                AppMenuItemCodeGenerator.AddOrUpdate(info.Module.Name, InfoMenuItem, false);
            }
            return(result);
        }