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"); }
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); }