public void AddRange(IGeneratorConfiguration generatorConfiguration, IModuleAssembly moduleAssembly, List <IModuleOrAssembly> modulesOrAssemblies, ModuleAddType moduleAddType, Func <IModuleOrAssembly, bool> filter) { var generatorModules = (IEnumerable <ESModule>)generatorConfiguration.KeyValuePairs["Providers"]; var addModules = generatorModules.Where(m => m is Validator && filter(m)); modulesOrAssemblies.AddRange(addModules); }
public void HandleModuleAssembly(IModuleAssembly moduleAssembly, Folder folder) { var config = this.GeneratorConfiguration; var angularModule = (AngularModule)moduleAssembly; config.HandleModuleKind(moduleAssembly, folder, ModuleKind.AngularModule); }
public void UpdateModuleAssembly(IModuleAssembly moduleAssembly) { var angularModule = (AngularModule)moduleAssembly; var count = 0; if (this.BaseObject == null) { DebugUtils.Break(); } angularModule.BaseObject = this.BaseObject; ObjectExtensions.MultiAct <IList>(l => { count += l.Count; }, this.Exports, this.Providers, this.Declarations); if (count == 0) { DebugUtils.Break(); } foreach (var export in this.Exports) { angularModule.AddBaseExport(this.BaseObject, export); } foreach (var provider in this.Providers) { List <Provider> providers = null; provider.BaseObject = this.BaseObject; if (this.Configuration.KeyValuePairs.ContainsKey("Providers")) { providers = (List <Provider>) this.Configuration.KeyValuePairs["Providers"]; } else { providers = new List <Provider>(); this.Configuration.KeyValuePairs.Add("Providers", providers); } if (!providers.Contains(provider)) { providers.Add(provider); } } angularModule.Declarations.AddRange(this.Declarations); angularModule.Exports.AddRange(this.Exports); }
public void AddAssembly(IModuleAssembly moduleAssembly) { if (!this.moduleAssemblies.Any(a => a.Name == moduleAssembly.Name)) { var folders = folderHierarchy.GetAllFolders().Where(f => f.ModuleAssemblies.Any(a => a == moduleAssembly)); if (folders.Count() > 0) { var folder = folders.First(); DebugUtils.Break(); } this.moduleAssemblies.Add(moduleAssembly); } }
public static void GeneratePage(IBase baseObject, string pagesFolderPath, string pageName, IGeneratorConfiguration generatorConfiguration, IModuleAssembly module, IEnumerable <ModuleImportDeclaration> imports, IModuleAssembly angularModule, List <ManagedList> managedLists, List <GridColumn> gridColumns, bool isComponent) { var host = new TemplateEngineHost(); var pass = generatorConfiguration.CurrentPass; var moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject, imports); var parentElement = (IParentBase)baseObject; var childElement = parentElement.ChildElements.Single(); Dictionary <string, object> sessionVariables; FileInfo fileInfo; string fileLocation; string filePath; string output; try { // grid page sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); sessionVariables.Add("EntityName", childElement.Name); sessionVariables.Add("IsComponent", isComponent); fileLocation = PathCombine(pagesFolderPath, childElement.Name.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".html"); fileInfo = new FileInfo(filePath); output = host.Generate <NavigationGridPageTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Navigation Grid Page")); // grid class sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); sessionVariables.Add("Authorize", generatorConfiguration.AuthorizedRoles); sessionVariables.Add("EntityName", childElement.Name); sessionVariables.Add("ParentEntityName", parentElement.Name); sessionVariables.Add("IsComponent", isComponent); if (baseObject is IRelationProperty) { var navigationProperty = (IRelationProperty)baseObject; var thisPropertyRef = navigationProperty.ThisPropertyRef; var parentPropertyRef = navigationProperty.ParentPropertyRef; var thisPropertyType = thisPropertyRef.GetScriptTypeName(); var thisShortType = thisPropertyRef.GetShortType().ToLower(); switch (navigationProperty.ThisMultiplicity) { case "*": sessionVariables.Add("EntityParentRefName", baseObject.Parent.Name); sessionVariables.Add("EntityPropertyRefName", thisPropertyRef.Name); break; case "0..1": case "1": DebugUtils.Break(); break; default: DebugUtils.Break(); break; } } sessionVariables.Add("ManagedLists", managedLists); sessionVariables.Add("GridColumns", gridColumns); if (generatorConfiguration.CustomQueries.ContainsKey(baseObject)) { var queriesList = generatorConfiguration.CustomQueries[baseObject]; sessionVariables.Add("CustomQueries", queriesList); } sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); filePath = PathCombine(fileLocation, pageName.ToLower() + ".ts"); fileInfo = new FileInfo(filePath); output = host.Generate <NavigationGridClassTemplate>(sessionVariables, false); module.ExportedComponents = sessionVariables.GetExportedComponents(); module.ForChildFile = generatorConfiguration.CreateFile(moduleAssemblyProperties, fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Navigation Grid Class")); // sass sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); filePath = PathCombine(fileLocation, pageName.ToLower() + ".scss"); fileInfo = new FileInfo(filePath); output = host.Generate <SassStyleSheetTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "page \r\n{\r\n}")); } catch (Exception e) { generatorConfiguration.AppGeneratorEngine.WriteError(e.ToString()); } }
public void AddRange(IGeneratorConfiguration generatorConfiguration, IModuleAssembly moduleAssembly, List <IModuleOrAssembly> modulesOrAssemblies, IEnumerable <IModuleOrAssembly> addModulesOrAssemblies, ModuleAddType moduleAddType) { modulesOrAssemblies.AddRange(addModulesOrAssemblies); }
public static void GeneratePage(IBase baseObject, string pagesFolderPath, string pageName, IGeneratorConfiguration generatorConfiguration, IModuleAssembly module, IDictionary <string, IEnumerable <ModuleImportDeclaration> > importGroups, List <IdentityField> identityFields, string loginTitleTranslationKey, string loginButtonTranslationKey) { var host = new TemplateEngineHost(); var pass = generatorConfiguration.CurrentPass; var moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject); var resourcesHandler = generatorConfiguration.ResourcesHandler; IEnumerable <ModuleImportDeclaration> importDeclarations; Dictionary <string, object> sessionVariables; FileInfo fileInfo; string fileLocation; string filePath; string output; try { // Login page sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("IdentityFields", identityFields); sessionVariables.Add("PageName", pageName); sessionVariables.Add("EntityName", baseObject.Name); sessionVariables.Add("LoginTitleTranslationKey", loginTitleTranslationKey); sessionVariables.Add("LoginButtonTranslationKey", loginButtonTranslationKey); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".html"); fileInfo = new FileInfo(filePath); output = host.Generate <LoginPageTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Login Page")); // Login class sessionVariables = new Dictionary <string, object>(); importDeclarations = importGroups["Page"]; moduleAssemblyProperties.Imports = importDeclarations.Exclude(pageName + "Page"); sessionVariables.Add("IdentityFields", identityFields); sessionVariables.Add("PageName", pageName); sessionVariables.Add("Authorize", generatorConfiguration.AuthorizedRoles); sessionVariables.Add("EntityName", baseObject.Name); sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); filePath = PathCombine(fileLocation, pageName.ToLower() + ".ts"); fileInfo = new FileInfo(filePath); output = host.Generate <LoginClassTemplate>(sessionVariables, false); module.ExportedComponents = sessionVariables.GetExportedComponents(); module.ForChildFile = generatorConfiguration.CreateFile(moduleAssemblyProperties, fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Login Page Class")); // Validator class sessionVariables = new Dictionary <string, object>(); importDeclarations = importGroups["Validator"]; moduleAssemblyProperties.Clear(); moduleAssemblyProperties.Imports = importDeclarations.Exclude(pageName + "Validator"); sessionVariables.Add("FormFields", identityFields.Cast <FormField>().ToList()); sessionVariables.Add("PageName", pageName); sessionVariables.Add("Authorize", generatorConfiguration.AuthorizedRoles); sessionVariables.Add("EntityName", baseObject.Name); sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); filePath = PathCombine(fileLocation, pageName.ToLower() + "-validator.ts"); fileInfo = new FileInfo(filePath); output = host.Generate <ValidatorClassTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(moduleAssemblyProperties, fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Login Validator Class")); // sass sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); filePath = PathCombine(fileLocation, pageName.ToLower() + ".scss"); fileInfo = new FileInfo(filePath); output = host.Generate <SassStyleSheetTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "page \r\n{\r\n}")); } catch (Exception e) { generatorConfiguration.AppGeneratorEngine.WriteError(e.ToString()); } }
public static void GeneratePage(IBase baseObject, string pagesFolderPath, string pageName, IGeneratorConfiguration generatorConfiguration, IModuleAssembly module, IEnumerable <ModuleImportDeclaration> imports, List <object> inputObjects) { var host = new TemplateEngineHost(); var pass = generatorConfiguration.CurrentPass; var moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject, imports); Dictionary <string, object> sessionVariables; FileInfo fileInfo; string fileLocation; string filePath; string output; try { // $basename$ page sessionVariables = new Dictionary <string, object>(); // TODO - change this and the input variable inputObjects, preferably typed, to match your needs sessionVariables.Add("Input", inputObjects); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".html"); fileInfo = new FileInfo(filePath); output = host.Generate <$basename$PageTemplate> (sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "$basename$ Page")); // $basename$ class sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("Input", inputObjects); sessionVariables.Add("PageName", pageName); sessionVariables.Add("Authorize", generatorConfiguration.AuthorizedRoles); sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".ts"); fileInfo = new FileInfo(filePath); output = host.Generate <$basename$ClassTemplate> (sessionVariables, false); module.ExportedComponents = sessionVariables.GetExportedComponents(); module.ForChildFile = generatorConfiguration.CreateFile(moduleAssemblyProperties, fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "$basename$ Page Class")); // sass sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".scss"); fileInfo = new FileInfo(filePath); output = host.Generate <SassStyleSheetTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "page \r\n{\r\n}")); } catch (Exception e) { generatorConfiguration.Engine.WriteError(e.ToString()); } }
public static void GeneratePage(IBase baseObject, string pagesFolderPath, string pageName, IGeneratorConfiguration generatorConfiguration, IModuleAssembly module, IEnumerable <ModuleImportDeclaration> imports, View view, RazorSemanticVisitor visitor) { var host = new TemplateEngineHost(); var pass = generatorConfiguration.CurrentPass; var moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject, imports); Dictionary <string, object> sessionVariables; FileInfo fileInfo; string fileLocation; string filePath; string output; try { // repeater page sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("RazorSemanticVisitor", visitor); sessionVariables.Add("View", view); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".html"); fileInfo = new FileInfo(filePath); output = host.Generate <RepeaterPageTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Repeater Page")); // repeater class sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("RazorSemanticVisitor", visitor); sessionVariables.Add("PageName", pageName); sessionVariables.Add("Authorize", generatorConfiguration.AuthorizedRoles); sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".ts"); fileInfo = new FileInfo(filePath); output = host.Generate <RepeaterClassTemplate>(sessionVariables, false); module.ExportedComponents = sessionVariables.GetExportedComponents(); module.ForChildFile = generatorConfiguration.CreateFile(moduleAssemblyProperties, fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Repeater Page Class")); // sass sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".scss"); fileInfo = new FileInfo(filePath); output = host.Generate <SassStyleSheetTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "page \r\n{\r\n}")); } catch (Exception e) { generatorConfiguration.AppGeneratorEngine.WriteError(e.ToString()); } }