Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        public void HandleModuleAssembly(IModuleAssembly moduleAssembly, Folder folder)
        {
            var config        = this.GeneratorConfiguration;
            var angularModule = (AngularModule)moduleAssembly;

            config.HandleModuleKind(moduleAssembly, folder, ModuleKind.AngularModule);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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());
            }
        }
Esempio n. 6
0
 public void AddRange(IGeneratorConfiguration generatorConfiguration, IModuleAssembly moduleAssembly, List <IModuleOrAssembly> modulesOrAssemblies, IEnumerable <IModuleOrAssembly> addModulesOrAssemblies, ModuleAddType moduleAddType)
 {
     modulesOrAssemblies.AddRange(addModulesOrAssemblies);
 }
Esempio n. 7
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());
            }
        }
Esempio n. 8
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());
            }
        }
Esempio n. 9
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());
            }
        }