예제 #1
0
        public void Add(IList <Site> sites)
        {
            foreach (var site in sites)
            {
                var st = new JsTreeNode()
                {
                    id     = site.Id.ToString(),
                    a_attr = new JsTreeNodeAAttributes()
                    {
                        href = site.SiteUrl
                    },
                    text = site.SiteName,
                    icon = site.SiteUrl + "/favicon.ico"
                };

                foreach (var channel in site.Channels.ToList())
                {
                    var text = channel.Title + (channel.Items == null ? "" : "(" + channel.Items.Count + ")");
                    var ch   = new JsTreeNode()
                    {
                        id     = channel.Id.ToString() + "c",
                        a_attr = new JsTreeNodeAAttributes()
                        {
                            href = channel.Id.ToString()
                        },
                        text = text,
                        icon = ""
                    };
                    st.children.Add(ch);
                }
                JsTreeNodesList.Add(st);
            }
        }
예제 #2
0
        public List <JsTreeNode> GetTreeModel(IEnumerable <ITmNode> treeModelList)
        {
            rawNodeList = treeModelList;

            var jsTreeNodeList = new List <JsTreeNode>();

            var rootNode   = rawNodeList.FirstOrDefault(r => r.ParentId == null);
            var children   = rawNodeList.Where(c => c.ParentId == rootNode.Id).ToList();
            var jsRootNode = new JsTreeNode
            {
                id             = rootNode.Id.ToString(),
                text           = rootNode.Name,
                icon           = "",
                a_attr         = { href = "#" },
                additionalData = rootNode.AdditionalData
            };

            jsRootNode.state.opened = true;

            GenereateTreeModel(jsRootNode, children);

            jsTreeNodeList.Add(jsRootNode);

            return(jsTreeNodeList);
        }
        public async Task <List <JsTreeNode> > GetUserOrgazinationForUserAsync(User user, Guid userId)
        {
            var UserOrgId = (await _context.Users.FindAsync(userId))?.OrganizationId;

            var organizations = new List <Organization>();

            if (user.IsAdmin())
            {
                organizations = await _context.Organizations.ToListAsync();
            }
            else
            {
                organizations = await _context.Organizations.Where(x => x.ParentId == user.OrganizationId).SelectMany(x => x.Children).ToListAsync();
            }
            var organizationnodes = new List <JsTreeNode>();

            organizations.ForEach(or =>
            {
                if (or.ParentId == null)
                {
                    JsTreeNode parentNode = new JsTreeNode();
                    parentNode.id         = or.Id.ToString();
                    parentNode.text       = or.OrganizationName;
                    if (UserOrgId.HasValue && or.Id == UserOrgId.Value)
                    {
                        parentNode.state.selected = true;
                    }
                    parentNode = FillChild(organizations, parentNode, or.Id, UserOrgId);
                    organizationnodes.Add(parentNode);
                }
            });
            return(organizationnodes);
        }
예제 #4
0
        public void SeedPrivilegesTree_SeedsBranchesWithoutId()
        {
            JsTreeNode rootNode = service.GetView(role.Id).PrivilegesTree.Nodes.Single();
            IEnumerable <JsTreeNode> branches = GetAllBranchNodes(rootNode);

            Assert.IsFalse(branches.Any(branch => branch.Id != null));
        }
예제 #5
0
        public void SeedPrivilegesTree_SeedsLeafsWithId()
        {
            JsTreeNode rootNode            = service.GetView(role.Id).PrivilegesTree.Nodes.Single();
            IEnumerable <JsTreeNode> leafs = GetAllLeafNodes(rootNode);

            Assert.IsFalse(leafs.Any(leaf => leaf.Id == null));
        }
예제 #6
0
        public ActionResult GetChildren(string id)
        {
            List <MenuViewModel> items = dbLMenu.GetMenuNode(id);

            List <JsTreeNode> JsTrees = new List <JsTreeNode>();

            foreach (var node in items)
            {
                JsTreeNode jNode = new JsTreeNode();

                jNode.id   = node.MenuId;
                jNode.text = node.MenuName;

                if (node.ChildCnt > 0)
                {
                    jNode.children = true;
                }
                else
                {
                    jNode.children = false;
                    jNode.icons    = "file";
                }

                jNode.state = "closed";
                jNode.attr  = new JsTreeAttribute {
                    id = node.MenuId, selected = false
                };
                JsTrees.Add(jNode);
            }

            return(Json(JsTrees, JsonRequestBehavior.AllowGet));
        }
예제 #7
0
        public List <JsTreeNode> GetTreeListCategories()
        {
            List <JsTreeNode> nodesList = new List <JsTreeNode>();

            try
            {
                List <Treeview> TreeViewList = _dynamicUIRepository.GetTreeListForCategories();
                if (TreeViewList != null)
                {
                    foreach (var i in TreeViewList)
                    {
                        if (i.level.ToString() == "0")
                        {
                            JsTreeNode rootNode = new JsTreeNode();
                            rootNode.id       = i.ID.ToString();
                            rootNode.text     = i.Name.ToString();
                            rootNode.icon     = "fa fa fa-list";
                            rootNode.children = new List <JsTreeNode>();
                            LookForChildNode(TreeViewList, rootNode, i);
                            nodesList.Add(rootNode);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(nodesList);
        }
예제 #8
0
        public virtual void SeedPermissions(RoleView view)
        {
            JsTreeNode root = new JsTreeNode(Titles.All);

            view.Permissions.Nodes.Add(root);

            foreach (IGrouping <String, Permission> area in GetAllPermissions().GroupBy(permission => permission.Area))
            {
                JsTreeNode areaNode = new JsTreeNode(area.Key);
                foreach (IGrouping <String, Permission> controller in area.GroupBy(permission => permission.Controller))
                {
                    JsTreeNode controllerNode = new JsTreeNode(controller.Key);
                    foreach (Permission permission in controller)
                    {
                        controllerNode.Nodes.Add(new JsTreeNode(permission.Id, permission.Action));
                    }

                    if (areaNode.Title == null)
                    {
                        root.Nodes.Add(controllerNode);
                    }
                    else
                    {
                        areaNode.Nodes.Add(controllerNode);
                    }
                }

                if (areaNode.Title != null)
                {
                    root.Nodes.Add(areaNode);
                }
            }
        }
예제 #9
0
        public string getTreeHtml(JsTreeNode nodeObj)
        {
            StringBuilder str = new StringBuilder();

            if (nodeObj != null && nodeObj.children != null)
            {
                str.Append("<ul id=\"red\" class=\"filetree\">");
                foreach (var o in nodeObj.children)
                {
                    if (o.children == null)
                    {
                        str.AppendFormat("<li><a class=\"file\" data-filetype=\"{2}\" data-path=\"{0}\" href=\"javascript:void(0)\">{1}</a></li>", o.attributes.FilePath, o.text, o.attributes.FileType);
                    }
                    else
                    {
                        str.AppendFormat("<li><span class=\"folder\">{0}</span><ul>", o.text);
                        str.Append(generateHtml(o));
                        str.Append("</ul></li>");
                    }
                }
                str.Append("</ul>");
            }

            return(str.ToString());
        }
        public async Task <List <JsTreeNode> > GetEquipmentByUserAsync(User user)
        {
            var equipments = new List <Equipment>();

            if (user.IsAdmin())
            {
                equipments = await _context.Equipments.ToListAsync();
            }
            else
            {
                equipments = await _context.EquipmentUserSubscriptions.Where(c => c.UserId == user.Id).Select(c => c.Equipment).ToListAsync();
            }
            var param          = equipments.Select(c => c.Id).ToList();
            var equipmentnodes = new List <JsTreeNode>();

            equipments.ForEach(or =>
            {
                if (or.ParentId == null || (or.ParentId.HasValue && !(param.Contains(or.ParentId.Value))))
                {
                    JsTreeNode parentNode = new JsTreeNode();
                    parentNode.id         = or.Id.ToString();
                    parentNode.text       = or.EquipmentName;
                    parentNode            = FillChild(or.Children.ToList(), parentNode, or.Id);
                    equipmentnodes.Add(parentNode);
                }
            });
            return(equipmentnodes);
        }
        public async Task <List <JsTreeNode> > GetUserEquipmentForUserAsync(User user, Guid userId)
        {
            var userEquipmentIds = (await _context.Users.Include(c => c.EquipmentUserSubscriptions).FirstOrDefaultAsync(c => c.Id == userId))?.EquipmentUserSubscriptions.Select(c => c.EquipmentId).ToList();
            var equipments       = new List <Equipment>();

            equipments = await _context.Equipments.ToListAsync();

            var equipmentUsers = equipments.Where(x => userEquipmentIds.Contains(x.Id)).ToList();

            var equipmentnodes = new List <JsTreeNode>();

            equipments.ForEach(eq =>
            {
                if (eq.ParentId == null)
                {
                    JsTreeNode parentNode = new JsTreeNode();
                    parentNode.id         = eq.Id.ToString();
                    parentNode.text       = eq.EquipmentName;
                    if (equipmentUsers.Contains(eq))
                    {
                        parentNode.state.selected = true;
                    }
                    parentNode = FillChild(equipments, parentNode, eq.Id, equipmentUsers);
                    equipmentnodes.Add(parentNode);
                }
            });
            return(equipmentnodes);
        }
예제 #12
0
        public virtual void SeedPrivilegesTree(RoleView view)
        {
            JsTreeNode rootNode = new JsTreeNode(Titles.All);

            view.PrivilegesTree.Nodes.Add(rootNode);

            IEnumerable <Privilege> privileges = GetAllPrivileges();

            foreach (IGrouping <String, Privilege> area in privileges.GroupBy(privilege => privilege.Area))
            {
                JsTreeNode areaNode = new JsTreeNode(area.Key);
                foreach (IGrouping <String, Privilege> controller in area.GroupBy(privilege => privilege.Controller).OrderBy(privilege => privilege.Key))
                {
                    JsTreeNode controllerNode = new JsTreeNode(controller.Key);
                    foreach (IGrouping <String, Privilege> action in controller.GroupBy(privilege => privilege.Action).OrderBy(privilege => privilege.Key))
                    {
                        controllerNode.Nodes.Add(new JsTreeNode(action.First().Id, action.Key));
                    }

                    if (areaNode.Title == null)
                    {
                        rootNode.Nodes.Add(controllerNode);
                    }
                    else
                    {
                        areaNode.Nodes.Add(controllerNode);
                    }
                }

                if (areaNode.Title != null)
                {
                    rootNode.Nodes.Add(areaNode);
                }
            }
        }
        public async Task <List <JsTreeNode> > GetOrganizationByUserAsync(User user)
        {
            var organizations = new List <Organization>();

            if (user.IsAdmin())
            {
                organizations = await _context.Organizations.ToListAsync();
            }
            else
            {
                organizations = await _context.Organizations.Where(x => x.ParentId == user.OrganizationId).SelectMany(x => x.Children).ToListAsync();
            }
            var organizationnodes = new List <JsTreeNode>();

            organizations.ForEach(or =>
            {
                if (or.ParentId == null)
                {
                    JsTreeNode parentNode = new JsTreeNode();
                    parentNode.id         = or.Id.ToString();
                    parentNode.text       = or.OrganizationName;
                    parentNode            = FillChild(organizations, parentNode, or.Id, null);
                    organizationnodes.Add(parentNode);
                }
            });
            return(organizationnodes);
        }
        //GetCategoriesMapTree
        private void GetCategoriesMapTreeChild(StringBuilder sb, JsTreeNode js, Event evnt, bool demo, CategoryChildLink objCategoryChildLink = null, CategoryChild objCategoryChild = null)
        {
            if (evnt.IsClickable || demo || evnt.IsAccessable)
            {
                objCategoryChildLink.ChildLinkUrl  = js.data.attributes.href;
                objCategoryChildLink.ChildLinkName = js.data.title.ToUpper();
                objCategoryChild.ChildLinkUrl      = js.data.attributes.href;
                objCategoryChild.ChildLinkName     = js.data.title.ToUpper();

                //sb.AppendFormat("<li ischild='{2}' ><a style='{4}' href='{0}'>{1}</a> {3}", js.data.attributes.href, (js.data.attributes.rel != "main") ? js.data.title : js.data.title.ToUpper(), js.data.attributes.rel != "main", (!String.IsNullOrEmpty(js.data.icon)) ? "(" + js.data.icon + ")" : String.Empty, (js.data.attributes.rel != "main") ? " font-weight:normal;color:#0072B0;" : "font-weight:bold;color:gray");
                sb.AppendFormat("<li ischild='{2}' ><a style='{4}' href='{0}'>{1}</a> {3}", js.data.attributes.href, (js.data.attributes.rel != "main") ? js.data.title : js.data.title.ToUpper(), js.data.attributes.rel != "main", (!String.IsNullOrEmpty(js.data.icon)) ? "(" + js.data.icon + ")" : String.Empty, (js.data.attributes.rel != "main") ? " color:gray" : "font-weight:bold;color:gray");
            }
            else
            {
                objCategoryChildLink.ChildLinkUrl  = js.data.attributes.rel;
                objCategoryChildLink.ChildLinkName = js.data.title.ToUpper();
                objCategoryChild.ChildLinkUrl      = js.data.attributes.rel;
                objCategoryChild.ChildLinkName     = js.data.title.ToUpper();
                // sb.AppendFormat("<li ischild='{1}' ><span style='{3}'>{0}</span> {2}", (js.data.attributes.rel != "main") ? js.data.title : js.data.title.ToUpper(), js.data.attributes.rel != "main", (!String.IsNullOrEmpty(js.data.icon)) ? "(" + js.data.icon + ")" : String.Empty, (js.data.attributes.rel != "main") ? " font-weight:normal;color:#0072B0;" : "font-weight:bold;color:gray");
                sb.AppendFormat("<li ischild='{1}' ><span style='{3}'>{0}</span> {2}", (js.data.attributes.rel != "main") ? js.data.title : js.data.title.ToUpper(), js.data.attributes.rel != "main", (!String.IsNullOrEmpty(js.data.icon)) ? "(" + js.data.icon + ")" : String.Empty, (js.data.attributes.rel != "main") ? " color:gray" : "font-weight:bold;color:gray");
            }

            if (js.children != null && js.children.Count() > 0)
            {
                sb.Append("<ul>");
                foreach (JsTreeNode j in js.children)
                {
                    GetCategoriesMapTreeChild(sb, j, evnt, demo);
                }
                sb.Append("</ul>");
            }
            sb.AppendFormat("</li>");
        }
예제 #15
0
        private void GetTreeEx(SqlWhereList where, JsTreeNode root)
        {
            List <Channel> list = channelBLL.GetAll(where);
            JsTreeNode     node = null;

            root.children = new List <JsTreeNode>();
            foreach (Channel item in list)
            {
                node            = new JsTreeNode();
                node.id         = item.ChannelId;
                node.text       = item.ChannelName;
                node.attributes = new JsTreeNodeCustAttr(node.id);
                SqlWhereList wherelist = new SqlWhereList();
                wherelist.Add("ParentID", node.id);
                if (item.TypeId == 1)
                {
                    wherelist.Add("TypeId", 1);
                }
                else if (item.TypeId == 2)
                {
                    wherelist.Add("TypeId", 2);
                }
                GetTreeEx(wherelist, node);
                root.children.Add(node);
            }
        }
예제 #16
0
        void GenereateTreeModel(JsTreeNode rootNode, List <ITmNode> children)
        {
            if (children.Count == 0)
            {
                return;
            }

            foreach (var node in children)
            {
                var jsNode = new JsTreeNode
                {
                    id             = node.Id.ToString(),
                    text           = node.Name,
                    icon           = "",
                    a_attr         = { href = "#" },
                    additionalData = node.AdditionalData
                };

                jsNode.state.opened = false;

                rootNode.children.Add(jsNode);

                GenereateTreeModel(jsNode, rawNodeList.Where(c => c.ParentId == node.Id).ToList());
            }
        }
예제 #17
0
        public void PopulateTree(DataRow dataRow, JsTreeNode jsTNode, DataTable tableNodes)
        {
            jsTNode.children = new List <JsTreeNode>();
            foreach (DataRow dr in tableNodes.Rows)
            {
                if (dr != null)
                {
                    if (Convert.ToInt32(dr["Parent_id"]) == Convert.ToInt32(dataRow["bsi_item_id"]))
                    {
                        JsTreeNode cnode = new JsTreeNode();
                        cnode.attributes     = new Attributes();
                        cnode.attributes.id  = Convert.ToString(dr["bsi_item_id"]);
                        cnode.attributes.rel = "folder" + Convert.ToString(dr["bsi_item_id"]);
                        cnode.data           = new Data();
                        cnode.data.title     = Convert.ToString(dr["bsi_title"]);

                        cnode.attributes.mdata = "{ draggable : true, max_children : 100, max_depth : 100 }";

                        jsTNode.children.Add(cnode);


                        PopulateTree(dr, cnode, tableNodes);
                    }
                }
            }
        }
예제 #18
0
        public void JsTreeNode_SetsTitle()
        {
            JsTreeNode actual = new JsTreeNode("Title");

            Assert.Equal("Title", actual.Title);
            Assert.Empty(actual.Nodes);
            Assert.Null(actual.Id);
        }
예제 #19
0
        public void JsTreeNode_SetsIdAndTitle()
        {
            JsTreeNode actual = new JsTreeNode(1, "Title");

            Assert.Equal("Title", actual.Title);
            Assert.Equal(1, actual.Id);
            Assert.Empty(actual.Nodes);
        }
예제 #20
0
        public IList <JsTreeNode> Insert(IList <Site> sites)
        {
            var newSites = new JsTreeNode[JsTreeNodesList.Count];

            JsTreeNodesList.CopyTo(newSites, JsTreeNodesList.Count);
            Add(sites);
            IEnumerable <JsTreeNode> jsTreeNodes = JsTreeNodesList.Except(newSites);

            return(jsTreeNodes.ToList());
        }
예제 #21
0
        public string getMenuTree(string rootPathconfig)
        {
            System.IO.DirectoryInfo topDir = System.IO.Directory.GetParent(HttpContext.Current.Request.MapPath("/"));
            string     rootPath            = topDir.Parent.FullName + rootPathconfig;// ConfigurationManager.AppSettings["rootPath"];
            JsTreeNode root = new JsTreeNode();

            RecursiveDirectory(rootPath, root);
            return(getTreeHtml(root));
            // return root.children.ToJson();
        }
예제 #22
0
        public object GetChannelNodes(int TypeId)
        {
            JsTreeNode root = new JsTreeNode();

            SqlWhereList where = new SqlWhereList();
            where.Add("ParentID", "0");
            where.Add("TypeId", TypeId);
            GetTreeEx(where, root);
            return(new JsonResult(root.children));
        }
        private void SetupNode(JsTreeNode node, INameableObject artefact, string defaultString, string format, string TwoLetterISOLanguageName)
        {
            string result = TextTypeHelper.GetText(artefact.Names, TwoLetterISOLanguageName);
            string title  = string.Format(format, result.Length == 0 ? TextTypeHelper.GetText(artefact.Descriptions, TwoLetterISOLanguageName) : result);

            if (string.IsNullOrEmpty(title))
            {
                title = defaultString;
            }
            node.text = title;
        }
예제 #24
0
        public object GetWebSiteFileNodes()
        {
            // 显示整个解决方案下的所有文件。
            string rootPath = this.WebRuntime.GetWebSitePath() + "..\\..\\";

            JsTreeNode rootNode = new JsTreeNode();

            RecursiveDirectory(rootPath, rootNode);

            return(new JsonResult(rootNode.children));
        }
예제 #25
0
        private void SeedPermissions(roleModel viewModel)
        {
            var root    = new JsTreeNode();
            var allList = GetAllPermissions();
            var tree    = new JsTree
            {
                SelectedIds = viewModel.Permissions.SelectedIds,
                Nodes       = ToTree(allList.ToList())
            };

            viewModel.Permissions = tree;
        }
        /// <summary>
        /// Create a CategoryScheme Node
        /// </summary>
        /// <param name="categoryScheme">
        /// The SDMX Model category scheme object
        /// </param>
        /// <returns>
        /// The CategoryScheme Node
        /// </returns>
        private JsTreeNode CreateCategorySchemeNode(ICategorySchemeObject categoryScheme, string TwoLetterISO)
        {
            var categorySchemeNode = new JsTreeNode();

            // categorySchemeNode.data.attributes["rel"] = MakeKey(categoryScheme);
            categorySchemeNode.SetId(Utils.MakeKey(categoryScheme).Replace('.', '_'));

            // categorySchemeNode.data.icon = "folder";
            categorySchemeNode.SetRel("category-scheme");
            categorySchemeNode.type = "category-scheme";
            categorySchemeNode.AddClass("category-scheme");
            SetupNode(categorySchemeNode, categoryScheme, TwoLetterISO);
            return(categorySchemeNode);
        }
예제 #27
0
        private JsTree CreatePrivilegesTree(Role role)
        {
            JsTree expectedTree = new JsTree();

            expectedTree.Nodes.Add(new JsTreeNode());
            JsTreeNode rootNode = expectedTree.Nodes[0];

            rootNode.Name            = Titles.All;
            expectedTree.SelectedIds = role.RolePrivileges.Select(rolePrivilege => rolePrivilege.PrivilegeId).ToList();

            IEnumerable <Privilege> allPrivileges = role
                                                    .RolePrivileges
                                                    .Select(rolePriv => rolePriv.Privilege)
                                                    .Select(privilege => new Privilege
            {
                Id         = privilege.Id,
                Area       = ResourceProvider.GetPrivilegeAreaTitle(privilege.Area),
                Controller = ResourceProvider.GetPrivilegeControllerTitle(privilege.Area, privilege.Controller),
                Action     = ResourceProvider.GetPrivilegeActionTitle(privilege.Area, privilege.Controller, privilege.Action)
            });

            foreach (IGrouping <String, Privilege> areaPrivilege in allPrivileges.GroupBy(privilege => privilege.Area).OrderBy(privilege => privilege.Key ?? privilege.FirstOrDefault().Controller))
            {
                JsTreeNode areaNode = new JsTreeNode(areaPrivilege.Key);
                foreach (IGrouping <String, Privilege> controllerPrivilege in areaPrivilege.GroupBy(privilege => privilege.Controller).OrderBy(privilege => privilege.Key))
                {
                    JsTreeNode controllerNode = new JsTreeNode(controllerPrivilege.Key);
                    foreach (IGrouping <String, Privilege> actionPrivilege in controllerPrivilege.GroupBy(privilege => privilege.Action).OrderBy(privilege => privilege.Key))
                    {
                        controllerNode.Nodes.Add(new JsTreeNode(actionPrivilege.First().Id, actionPrivilege.Key));
                    }

                    if (areaNode.Name == null)
                    {
                        rootNode.Nodes.Add(controllerNode);
                    }
                    else
                    {
                        areaNode.Nodes.Add(controllerNode);
                    }
                }

                if (areaNode.Name != null)
                {
                    rootNode.Nodes.Add(areaNode);
                }
            }

            return(expectedTree);
        }
예제 #28
0
        private JsTree CreatePermissions()
        {
            JsTreeNode root         = new JsTreeNode(Titles.All);
            JsTree     expectedTree = new JsTree();

            expectedTree.Nodes.Add(root);
            expectedTree.SelectedIds = role.Permissions.Select(rolePermission => rolePermission.PermissionId).ToList();

            IEnumerable <Permission> permissions = role
                                                   .Permissions
                                                   .Select(rolePermission => rolePermission.Permission)
                                                   .Select(permission => new Permission
            {
                Id         = permission.Id,
                Area       = ResourceProvider.GetPermissionAreaTitle(permission.Area),
                Controller = ResourceProvider.GetPermissionControllerTitle(permission.Area, permission.Controller),
                Action     = ResourceProvider.GetPermissionActionTitle(permission.Area, permission.Controller, permission.Action)
            });

            foreach (IGrouping <String, Permission> area in permissions.GroupBy(permission => permission.Area).OrderBy(permission => permission.Key ?? permission.FirstOrDefault().Controller))
            {
                JsTreeNode areaNode = new JsTreeNode(area.Key);
                foreach (IGrouping <String, Permission> controller in area.GroupBy(permission => permission.Controller).OrderBy(permission => permission.Key))
                {
                    JsTreeNode controllerNode = new JsTreeNode(controller.Key);
                    foreach (Permission permission in controller.OrderBy(permission => permission.Action))
                    {
                        controllerNode.Nodes.Add(new JsTreeNode(permission.Id, permission.Action));
                    }

                    if (areaNode.Title == null)
                    {
                        root.Nodes.Add(controllerNode);
                    }
                    else
                    {
                        areaNode.Nodes.Add(controllerNode);
                    }
                }

                if (areaNode.Title != null)
                {
                    root.Nodes.Add(areaNode);
                }
            }

            return(expectedTree);
        }
예제 #29
0
        private IEnumerable <JsTreeNode> GetAllBranchNodes(JsTreeNode root)
        {
            List <JsTreeNode> branches = root.Nodes.Where(node => node.Nodes.Count > 0).ToList();

            foreach (JsTreeNode branch in branches.ToList())
            {
                branches.AddRange(GetAllBranchNodes(branch));
            }

            if (root.Nodes.Count > 0)
            {
                branches.Add(root);
            }

            return(branches);
        }
예제 #30
0
        public void Add(IList <Group> feedEntity)
        {
            foreach (var group in feedEntity)
            {
                var gp = new JsTreeNode()
                {
                    id     = group.Id.ToString(),
                    a_attr = new JsTreeNodeAAttributes()
                    {
                        href = group.Id.ToString()
                    },
                    text = group.GroupName,
                    icon = ""
                };

                foreach (var site in group.Sites)
                {
                    var st = new JsTreeNode()
                    {
                        id     = site.Id.ToString() + group.Id.ToString(),
                        a_attr = new JsTreeNodeAAttributes()
                        {
                            href = site.SiteUrl
                        },
                        text = site.SiteName,
                        icon = ""
                    };
                    ;
                    foreach (var channel in site.Channels.ToList())
                    {
                        var ch = new JsTreeNode()
                        {
                            id     = channel.Id.ToString() + site.Id.ToString() + group.Id.ToString(),
                            a_attr = new JsTreeNodeAAttributes()
                            {
                                href = channel.Link
                            },
                            text = channel.Title,
                            icon = ""
                        };
                        st.children.Add(ch);
                    }
                    gp.children.Add(st);
                }
                JsTreeNodesList.Add(gp);
            }
        }
        /// <summary>
        /// Create a CategoryScheme Node
        /// </summary>
        /// <param name="categoryScheme">
        /// The SDMX Model category scheme object
        /// </param>
        /// <returns>
        /// The CategoryScheme Node
        /// </returns>
        private static JsTreeNode CreateCategorySchemeNode(ICategorySchemeObject categoryScheme)
        {
            var categorySchemeNode = new JsTreeNode();

            // categorySchemeNode.data.attributes["rel"] = MakeKey(categoryScheme);
            categorySchemeNode.SetId(Utils.MakeKey(categoryScheme).Replace('.', '_'));

            // categorySchemeNode.data.icon = "folder";
            categorySchemeNode.SetRel("category-scheme");
            SetupNode(categorySchemeNode, categoryScheme);
            return categorySchemeNode;
        }
예제 #32
0
        /// <summary>
        /// Build the  <see cref="_idNodeMap"/>
        /// </summary>
        private void BuildIdNodeMap()
        {
            this._idNodeMap.Clear();
            this._rootNodes.Clear();
            this._prevCulture = Thread.CurrentThread.CurrentUICulture;
            var needParent = new Queue<ICode>();
            foreach (ICode code in this._codeList.Items)
            {
                var node = new JsTreeNode();
                node.SetId(string.Format(CultureInfo.InvariantCulture, "{0}{1}", IDPrefix, code.Id));
                SetupNode(node, code);
                this._idNodeMap.Add(code, node);
                node.SetLeaf(true);
                if (!string.IsNullOrEmpty(code.ParentCode))
                {
                    needParent.Enqueue(code);
                }
                else
                {
                    this._rootNodes.Add(node);
                }
            }

            while (needParent.Count > 0)
            {
                ICode code = needParent.Dequeue();
                JsTreeNode child;
                if (this._idNodeMap.TryGetValue(code, out child))
                {
                    var parentCode = (ICode)this._codeList.GetCodeById(code.ParentCode);
                    JsTreeNode parent;
                    if (this._idNodeMap.TryGetValue(parentCode, out parent))
                    {
                        parent.state = JSTreeConstants.OpenState;
                        parent.SetLeaf(false);
                        parent.children.Add(child);
                    }
                }
            }
        }
        /// <summary>
        /// Create a Category Node
        /// </summary>
        /// <param name="category">
        /// The SDMX Model category  object
        /// </param>
        /// <param name="categoryCount">
        /// The caregory counter. This methods updates it
        /// </param>
        /// <returns>
        /// The Category Node
        /// </returns>
        private static JsTreeNode CreateCategoryNode(ICategoryObject category, ref int categoryCount)
        {
            var categoryNode = new JsTreeNode();

            // categoryNode.data.attributes["rel"] = category.Id;
            // categoryNode.SetId(category.Id);
            categoryNode.SetId(
                string.Format(
                    CultureInfo.InvariantCulture,
                    CategoryIdFormat,
                    categoryCount.ToString("x", CultureInfo.InvariantCulture)));
            categoryCount++;
            SetupNode(categoryNode, category);
            categoryNode.SetRel("category");
            return categoryNode;
        }
예제 #34
0
        /// <summary>
        /// Setup a <see cref="JsTreeNode"/> from a <c>IdentifiableArtefactBean</c>
        /// </summary>
        /// <param name="node">
        /// The <see cref="JsTreeNode"/>
        /// </param>
        /// <param name="artefact">
        /// The <c>IdentifiableArtefactBean</c>
        /// </param>
        /// <param name="defaultString">
        /// The text to use in case there is no name or description
        /// </param>
        /// <param name="format">
        /// The format that will be used with <see cref="System.String.Format(string,object)"/> and artefact name or description
        /// </param>
        protected static void SetupNode(
            JsTreeNode node, INameableObject artefact, string defaultString, string format)
        {
            string lang = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;
            /*string result = TextTypeHelper.GetText(artefact.Names, lang);
            string title = string.Format(CultureInfo.CurrentCulture, format, result.Length == 0 ? TextTypeHelper.GetText(artefact.Descriptions, lang) : result);
             * */
            string result;
            string title="";

            if (string.IsNullOrEmpty(title))
            {
                title = defaultString;
            }

            ////Data data = new Data { title = title };
            ////node.data.Add(data);
            node.data = title;
        }
예제 #35
0
 /// <summary>
 /// Setup a <see cref="JsTreeNode"/> from a <c>CodeBean</c>
 /// </summary>
 /// <param name="node">
 /// The <see cref="JsTreeNode"/>
 /// </param>
 /// <param name="artefact">
 /// The <c>CodeBean</c>
 /// </param>
 protected static void SetupNode(JsTreeNode node, ICode artefact)
 {
     string entitle = "[" + artefact.Id + "]";
     string format = string.Format(CultureInfo.InvariantCulture, ArtefactFormat, entitle);
     SetupNode(node, artefact, entitle, format);
 }
예제 #36
0
 /// <summary>
 /// Setup a <see cref="JsTreeNode"/> from a <c>DataflowBean</c>
 /// </summary>
 /// <param name="node">
 /// The <see cref="JsTreeNode"/>
 /// </param>
 /// <param name="artefact">
 /// The <c>DataflowBean</c>
 /// </param>
 protected static void SetupNode(JsTreeNode node, IDataflowObject artefact)
 {
     string entitle = artefact.Id;
     string format = string.Format(CultureInfo.InvariantCulture, ArtefactFormat, entitle);
     SetupNode(node, artefact, entitle, format);
 }
예제 #37
0
 /// <summary>
 /// Setup a <see cref="JsTreeNode"/> from a <c>IdentifiableArtefactBean</c>
 /// </summary>
 /// <param name="node">
 /// The <see cref="JsTreeNode"/>
 /// </param>
 /// <param name="artefact">
 /// The <c>IdentifiableArtefactBean</c>
 /// </param>
 protected static void SetupNode(JsTreeNode node, INameableObject artefact)
 {
     string entitle = artefact.Id;
     SetupNode(node, artefact, entitle, DefaultFormat1);
 }
        /// <summary>
        /// Build a JQuery plugin JSTree JSON_DATA json string. It uses the <see cref="_dataflows"/> and <see cref="_categories"/>
        /// </summary>
        /// <returns>
        /// A list of nodes
        /// </returns>
        private List<JsTreeNode> BuildJSTree()
        {
            this._prevCulture = Thread.CurrentThread.CurrentUICulture;
            var categorisedDataflowIndex = new Dictionary<string, IDataflowObject>();
            var uncategorisedDataflow = new List<IDataflowObject>();
            var nodeList = new List<JsTreeNode>();

            foreach (IDataflowObject d in this._dataflows)
            {

                if (GetCategorisations(d, _categorisations).Count == 0)
                {
                    uncategorisedDataflow.Add(d);
                }
                else
                {
                    string key = Utils.MakeKey(d);
                    categorisedDataflowIndex.Add(key, d);
                }
            }

            nodeList.AddRange(CreateCategorisedNodes(this._categories, categorisedDataflowIndex));
            var uncategorisedNode = new JsTreeNode();

            //////var data = new Data();
            uncategorisedNode.SetRel("category-scheme");
            uncategorisedNode.SetId("uncategorised");

            ////data.title = Messages.text_dataflows_uncategorized;
            ////uncategorisedNode.data.Add(data);
            uncategorisedNode.data = Messages.text_dataflows_uncategorized;
            foreach (IDataflowObject dataflow in uncategorisedDataflow)
            {
                uncategorisedNode.children.Add(CreateDataflowNode(dataflow));
            }

            if (uncategorisedNode.children.Count > 0)
            {
                nodeList.Add(uncategorisedNode);
            }

            return nodeList;
        }
        /// <summary>
        /// Create a Dataflow Node
        /// </summary>
        /// <param name="dataflow">
        /// The SDMX Model Dataflow object
        /// </param>
        /// <returns>
        /// The Dataflow Node
        /// </returns>
        private JsTreeNode CreateDataflowNode(IDataflowObject dataflow)
        {
            var dataflowNode = new JsTreeNode();

            // dataflowNode.data.attributes.rel = MakeKey(dataflow);
            dataflowNode.SetId(Utils.MakeKey(dataflow).Replace('.', '_').Replace('+', '-'));
            SetupNode(dataflowNode, dataflow);
            IDataStructureObject dsd = NsiClientHelper.GetDsdFromDataflow(dataflow, _dataStructure);
            if (dsd != null && NsiClientHelper.DataflowDsdIsCrossSectional(dsd))
            {
                dataflowNode.SetRel("xs-dataflow");
            }
            else
            {
                dataflowNode.SetRel("dataflow");
            }
            dataflowNode.AddClass("dataflow-item");
            dataflowNode.SetLeaf(true);

            // dataflowNode.state = "closed";
            dataflowNode.metadata = new JSTreeMetadata
            {
                DataflowID = dataflow.Id,
                DataflowVersion = dataflow.Version,
                DataflowAgency = dataflow.AgencyId
            };

            // dataflowNode.metadata.dataflow_name = dataflow.PrimaryName;
            return dataflowNode;
        }