Exemple #1
0
        private void WeightModulesByDependants(ModuleDependencyViewModel model)
        {
            // process sizes of the modules
            var incomingDeps = model.Links.GroupBy(_ => _.To)
                               .Select(group => new
            {
                Name  = group.Key,
                Count = group.Count()
            });

            foreach (var incomingDep in incomingDeps)
            {
                var m = model.Nodes.First(_ => _.Id == incomingDep.Name);
                m.Size = m.Size + incomingDep.Count * 2;
            }
        }
Exemple #2
0
        public ActionResult Index(bool showAll = false)
        {
            var sortedModules = GetSortedModules();

            var modules = from module in sortedModules
                          let asmName = module.Type.Assembly.GetName().Name + ".dll"
                                        select new ModuleInfo
            {
                Id         = module.Type.FullName,
                ModuleType = module.Type,
                Label      = module.Type.Name,
                Title      = $"Name: {module.Type.Name}<br>Type: {(typeof(IConfigurableModule).IsAssignableFrom(module.Type) ? "Configurable" : "Initializable")}<br>Namespace: {module.Type.Namespace}<br>Assembly: {asmName}",
                Group      = GetAssemblyGroup(asmName)
            };

            var dependencies = sortedModules.Where(_ => _.Dependencies.Count > 0).SelectMany(_ => _.Dependencies,
                                                                                             (from, to) => new ModuleDependency
            {
                From = from.Type.FullName,
                To   = to.FullName
            });

            if (!showAll)
            {
                dependencies = dependencies.Where(_ => !_.From.StartsWith("EPiServer"));
                modules      = modules.Where(m => !m.ModuleType.FullName.StartsWith("EPiServer"))
                               .Union(modules.Where(m => dependencies.Any(d => d.To == m.ModuleType.FullName)))
                               .DistinctBy(_ => _.Id).ToList();
            }

            var model = new ModuleDependencyViewModel
            {
                Nodes   = modules.ToList(),
                Links   = dependencies.ToList(),
                ShowAll = showAll
            };

            WeightModulesByDependants(model);

            return(View(model));
        }