Exemplo n.º 1
0
        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, 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());
            }
        }
Exemplo n.º 3
0
        public static void GenerateModel(IBase baseObject, string modelsFolderPath, string modelName, IGeneratorConfiguration generatorConfiguration, IEnumerable <ModuleImportDeclaration> imports, List <FormField> formFields)
        {
            var                         host = new TemplateEngineHost();
            var                         pass = generatorConfiguration.CurrentPass;
            var                         moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject, imports);
            var                         newModules       = new List <ESModule>();
            var                         isIdentityEntity = generatorConfiguration.IsIdentityEntity(baseObject);
            List <ESModule>             modules          = null;
            Dictionary <string, object> sessionVariables;
            FileInfo                    fileInfo;
            string                      fileLocation;
            string                      filePath;
            string                      output;

            try
            {
                // Client Model class

                sessionVariables = new Dictionary <string, object>();

                sessionVariables.Add("FormFields", formFields);
                sessionVariables.Add("ModelName", modelName);
                sessionVariables.Add("EntityName", baseObject.Name);
                sessionVariables.Add("IsIdentityEntity", isIdentityEntity);
                sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties);

                fileLocation = modelsFolderPath;
                filePath     = Path.Combine(fileLocation, modelName.ToLower() + ".model.ts");
                fileInfo     = new FileInfo(filePath);

                output = host.Generate <ClientModelClassTemplate>(sessionVariables, false);

                if (generatorConfiguration.KeyValuePairs.ContainsKey("Modules"))
                {
                    modules = (List <ESModule>)generatorConfiguration.KeyValuePairs["Modules"];
                }
                else
                {
                    modules = new List <ESModule>();

                    generatorConfiguration.KeyValuePairs.Add("Modules", modules);
                }

                foreach (var module in moduleAssemblyProperties.Modules)
                {
                    module.BaseObject = baseObject;

                    if (!modules.Contains(module))
                    {
                        modules.Add(module);
                    }

                    newModules.Add(module);
                }

                generatorConfiguration.CreateFile(fileInfo, newModules.Cast <Module>(), output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Client Model Class"));
            }
            catch (Exception e)
            {
                generatorConfiguration.AppGeneratorEngine.WriteError(e.ToString());
            }
        }
Exemplo n.º 4
0
        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());
            }
        }
Exemplo n.º 5
0
        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());
            }
        }
Exemplo n.º 6
0
 public static void AddModuleAssemblyProperties(this Dictionary <string, object> sessionVariables, AngularModuleAssemblyProperties moduleAssemblyProperties)
 {
     sessionVariables.Add("Imports", moduleAssemblyProperties.Imports);
     sessionVariables.Add("Exports", moduleAssemblyProperties.Exports);
     sessionVariables.Add("Declarations", moduleAssemblyProperties.Declarations);
     sessionVariables.Add("Providers", moduleAssemblyProperties.Providers);
     sessionVariables.Add("Modules", moduleAssemblyProperties.Modules);
 }
Exemplo n.º 7
0
        public static void GenerateProvider(IBase baseObject, string providersFolderPath, string providerName, IGeneratorConfiguration generatorConfiguration, IEnumerable <ModuleImportDeclaration> imports, List <RelatedEntity> relatedEntities)
        {
            var                         host = new TemplateEngineHost();
            var                         pass = generatorConfiguration.CurrentPass;
            var                         moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject, imports);
            var                         newProviders             = new List <Provider>();
            var                         isIdentityEntity         = generatorConfiguration.IsIdentityEntity(baseObject);
            List <Provider>             providers = null;
            Dictionary <string, object> sessionVariables;
            FileInfo                    fileInfo;
            string                      fileLocation;
            string                      filePath;
            string                      output;

            try
            {
                // Entity provider

                sessionVariables = new Dictionary <string, object>();

                sessionVariables.Add("ProviderName", providerName);
                sessionVariables.Add("EntityName", baseObject.Name);
                sessionVariables.Add("RelatedEntities", relatedEntities);
                sessionVariables.Add("IsIdentityEntity", isIdentityEntity);
                sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties);

                if (isIdentityEntity)
                {
                    var className = providerName + "Provider";

                    sessionVariables.Add("ClientId", generatorConfiguration.ClientId);
                    sessionVariables.Add("ClientSecret", generatorConfiguration.ClientSecret);

                    generatorConfiguration.IdentityProvider = className;
                }

                if (generatorConfiguration.CustomQueries.ContainsKey(baseObject))
                {
                    var queriesList = generatorConfiguration.CustomQueries[baseObject];

                    sessionVariables.Add("CustomQueries", queriesList);
                }
                else if (generatorConfiguration.CustomQueries.ContainsNavigationKey(baseObject))
                {
                    var queriesList = generatorConfiguration.CustomQueries.GetNavigationValue(baseObject);

                    sessionVariables.Add("CustomQueries", queriesList);
                }

                fileLocation = providersFolderPath;
                filePath     = PathCombine(fileLocation, providerName.ToLower() + ".provider.ts");
                fileInfo     = new FileInfo(filePath);

                output = host.Generate <EntityProviderClassTemplate>(sessionVariables, false);

                if (generatorConfiguration.KeyValuePairs.ContainsKey("Providers"))
                {
                    providers = (List <Provider>)generatorConfiguration.KeyValuePairs["Providers"];
                }
                else
                {
                    providers = new List <Provider>();

                    generatorConfiguration.KeyValuePairs.Add("Providers", providers);
                }

                foreach (var provider in moduleAssemblyProperties.Providers)
                {
                    provider.BaseObject = baseObject;

                    if (!providers.Contains(provider))
                    {
                        providers.Add(provider);
                    }

                    newProviders.Add(provider);
                }

                generatorConfiguration.CreateFile(fileInfo, newProviders.Cast <Module>(), output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Entity Provider Class"));
            }
            catch (Exception e)
            {
                generatorConfiguration.AppGeneratorEngine.WriteError(e.ToString());
            }
        }