Beispiel #1
0
        public void JsTree_CreatesEmpty()
        {
            JsTree actual = new JsTree();

            Assert.Empty(actual.Nodes);
            Assert.Empty(actual.SelectedIds);
        }
Beispiel #2
0
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            JsTree tree = For.Model as JsTree;

            output.Attributes.SetAttribute("class", (output.Attributes["class"]?.Value + " js-tree").Trim());
            output.Content.AppendHtml(HiddenIdsFor(tree));
            output.Content.AppendHtml(JsTreeFor(tree));
        }
Beispiel #3
0
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            JsTree tree = ExpressionMetadataProvider.FromStringExpression(For.Name, ViewContext.ViewData, Html.MetadataProvider).Model as JsTree;

            output.Attributes["class"] = (output.Attributes["class"]?.Value + " js-tree").Trim();

            output.Content.Append(HiddenIdsFor(tree));
            output.Content.Append(JsTreeFor(tree));
        }
Beispiel #4
0
        private TagBuilder JsTreeFor(JsTree jsTree)
        {
            String     name = For.Name + ".SelectedIds";
            TagBuilder tree = new TagBuilder("div");

            tree.MergeAttribute("for", name);
            tree.AddCssClass("js-tree-view");
            AddNodes(tree, jsTree.Nodes);

            return(tree);
        }
        private JsTreeModel ConvertToModel(JsTree jsTree)
        {
            var tempJsTreeModel = GetJsTreeNode(jsTree);
            tempJsTreeModel.children = new List<JsTreeModel>();
            
            foreach (var item in jsTree.children) {
                tempJsTreeModel.children.Add(GetJsTreeNode(item));
            }

            return tempJsTreeModel;
        }
Beispiel #6
0
        private TagBuilder JsTreeFor(JsTree model)
        {
            var name = For.Name + ".SelectedIds";
            var tree = new TagBuilder("div");

            tree.AddCssClass("js-tree-view");
            tree.Attributes["for"] = name;

            Add(tree, model.Nodes);

            return(tree);
        }
Beispiel #7
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;
        }
        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);
        }
Beispiel #9
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);
        }
        private JsTreeModel GetJsTreeNode(JsTree jsTree)
        {
            var jsTreeNodeModel = new JsTreeModel();
            jsTreeNodeModel.data = jsTree.data;
            jsTreeNodeModel.state = jsTree.state;

            jsTreeNodeModel.attr = new JsTreeAttributeModel() {
                FolderPath = jsTree.attr.FolderPath,
                LibraryName = jsTree.attr.LibraryName,
                Name = jsTree.attr.Name,
                isLast = jsTree.attr.isLast,
                id = jsTree.attr.id
            };

            return jsTreeNodeModel;
        }
Beispiel #11
0
        public JsTreeTagHelperTests()
        {
            JsTree tree = new JsTree();

            tree.SelectedIds.Add(4567);
            tree.SelectedIds.Add(12345);
            tree.Nodes.Add(new JsTreeNode("Test"));
            tree.Nodes[0].Nodes.Add(new JsTreeNode(12345, "Test1"));
            tree.Nodes[0].Nodes.Add(new JsTreeNode(23456, "Test2"));

            EmptyModelMetadataProvider provider = new EmptyModelMetadataProvider();
            ModelExplorer explorer = new ModelExplorer(provider, provider.GetMetadataForProperty(typeof(JsTreeView), "JsTree"), tree);

            helper     = new JsTreeTagHelper();
            helper.For = new ModelExpression("JsTree", explorer);
            output     = new TagHelperOutput("div", new TagHelperAttributeList(), (useCachedResult, encoder) => null);
        }
Beispiel #12
0
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "div";
            output.Content.Clear();
            string id = "tree";

            if (Id.IsPresent())
            {
                id = $"tree-{Id}";
            }
            JsTree tree = new JsTree(_dataAccessor, _rbacService, _applicationContext, id);

            tree.SetAsync(IsAsync);
            if (IsOrgdept)
            {
                tree.IsOrgDept();
            }
            if (GetUrl.IsPresent())
            {
                tree.SetUrl(GetUrl);
            }
            if (EditUrl.IsPresent())
            {
                tree.SetEditUrl(EditUrl);
            }
            if (JsonData.IsPresent())
            {
                tree.SetJsonData(JsonData);
            }
            if (TreeMode != null)
            {
                tree.SetTreeModel(TreeMode);
            }
            if (OnOpenNoded.IsPresent())
            {
                tree.OnOpenNodedEvent(OnOpenNoded);
            }
            if (OnLoaded.IsPresent())
            {
                tree.OnLoadedEvent(OnLoaded);
            }
            tree.SetPluginDnd(PluginDnd);
            tree.SetPluginCheckBox(PluginCheckbox);
            output.Content.AppendHtml(tree.ToString());
        }
Beispiel #13
0
        private TagBuilder HiddenIdsFor(JsTree model)
        {
            String     name = For.Name + ".SelectedIds";
            TagBuilder ids  = new TagBuilder("div");

            ids.AddCssClass("js-tree-view-ids");

            foreach (Int32 id in model.SelectedIds)
            {
                TagBuilder input = new TagBuilder("input");
                input.TagRenderMode       = TagRenderMode.SelfClosing;
                input.Attributes["value"] = id.ToString();
                input.Attributes["type"]  = "hidden";
                input.Attributes["name"]  = name;

                ids.InnerHtml.AppendHtml(input);
            }

            return(ids);
        }
Beispiel #14
0
        private TagBuilder HiddenIdsFor(JsTree jsTree)
        {
            String     name = For.Name + ".SelectedIds";
            TagBuilder ids  = new TagBuilder("div");

            ids.AddCssClass("js-tree-view-ids");

            foreach (String id in jsTree.SelectedIds)
            {
                TagBuilder input = new TagBuilder("input");

                input.TagRenderMode = TagRenderMode.SelfClosing;
                input.MergeAttribute("type", "hidden");
                input.MergeAttribute("name", name);
                input.MergeAttribute("value", id);

                ids.InnerHtml.Append(input);
            }

            return(ids);
        }
        public JsTree JsTreeWithFoldersAndGuidanceItems()
        {
            var jsTree = new JsTree();
            Func <Guid, List <Folder_V3>, JsTreeNode, List <Guid> >  mapFolders = null;
            Func <Guid, Guid, List <Guid>, JsTreeNode, List <Guid> > mapViews   = null;

            //precalculate for performance reasons
            var allViews = new Dictionary <Guid, View_V3>();

            foreach (var view in javascriptProxy.GetViews())
            {
                allViews.Add(view.viewId, view);
            }

            mapViews = (libraryId, folderId, viewIds, targetNode) =>
            {
                var viewsId = new List <Guid>();
                foreach (var viewId in viewIds)
                {
                    var view = allViews[viewId];                            //GetViewById(viewId.str());

                    var viewNodeText = view.viewId.str();
                    var viewNode     = targetNode.add_Node(view.caption, viewNodeText);
                    //viewNode.state = "closed";   // views don't need this
                    viewNode.data.icon = "/Images/ViewIcon.png";
                    viewsId.add(view.viewId);
                }
                return(viewsId);
            };

            mapFolders = (libraryId, folders, targetNode) =>
            {
                var folderViewsId = new List <Guid>();
                foreach (var folder in folders)
                {
                    var subFolderViewsId = new List <Guid>();
                    var folderId         = folder.folderId;
                    var folderNode       = targetNode.add_Node(folder.name);
                    folderNode.state     = "closed";
                    folderNode.data.icon = "/Images/FolderIcon.png";
                    subFolderViewsId.AddRange(mapFolders(libraryId, folder.subFolders, folderNode));
                    var viewIds = (from view in folder.views
                                   select view.viewId).toList();
                    subFolderViewsId.AddRange(mapViews(libraryId, folderId, viewIds, folderNode));

                    folderNode.attr.id = folderId.str();
                    folderViewsId.AddRange(subFolderViewsId);
                }
                return(folderViewsId);
            };
            var sessionLibraryID = GetCurrentSessionLibrary();

            var libraries = (sessionLibraryID == Guid.Empty)
                                ? javascriptProxy.GetLibraries()
                                : javascriptProxy.GetLibraryById(sessionLibraryID).wrapOnList();

            foreach (var library in libraries)
            {
                var libraryNode   = jsTree.add_Node(library.Caption);
                var mappedFolders = new Dictionary <string, List <Folder_V3> >();
                mapFolders(library.Id, javascriptProxy.GetFolders(library.Id), libraryNode);
                mapViews(library.Id, Guid.Empty, javascriptProxy.GetViewsInLibraryRoot(library.Id.str()).guids(), libraryNode);
                //libraryNode.state = "open";
                libraryNode.state     = "closed";
                libraryNode.data.icon = "/Images/SingleLibrary.png";

                var libraryNodeText = library.Id.str();

                libraryNode.attr.id = libraryNodeText;
            }
            return(jsTree);
        }
Beispiel #16
0
        /// <summary>
        /// 拉取分类树
        /// </summary>
        /// <param name="useType"></param>
        /// <param name="selectIds"></param>
        /// <param name="serviceProvider">依赖注入</param>
        /// <returns></returns>
        public static async Task <List <Dictionary <string, object> > > PullTree(
            this IServiceProvider serviceProvider,
            int useType,
            params string[] selectIds)
        {
            var parentKeyList      = new Dictionary <string, List <string> >();
            var resultForSelectIds = await Task.WhenAll(selectIds.Select(async T =>
            {
                List <string> outList = new List <string>();
                await FindParent(serviceProvider, T, outList);
                return(T, outList);
            }));

            foreach (var resultInfo in resultForSelectIds)
            {
                if (resultInfo.T.IsNullOrEmpty())
                {
                    continue;
                }
                if (parentKeyList.ContainsKey(resultInfo.T))
                {
                    continue;
                }
                parentKeyList.TryAdd(resultInfo.T, resultInfo.outList);
            }
            var classList = await ClassificationContext.GetListPageWithUseType_ParentID(
                serviceProvider,
                new NetCore.PageInfo(0, 10000),
                useType,
                ClassificationContext.EmptyContext(serviceProvider));

            List <Dictionary <string, object> > outTree = new List <Dictionary <string, object> >();
            await JsTree.LoadWithzTree(
                serviceProvider,
                classList,
                outTree,
                async (treeData, itree) =>
            {
                var treeId = await itree.TreeId();
                if (parentKeyList.ContainsKey(treeId))
                {
                    treeData["selected"] = true;
                    treeData["expanded"] = true;
                }
                else
                {
                    treeData["selected"] = false;
                    var result           = from KV in parentKeyList where KV.Value.Exists(V => V == treeId) select true;
                    if (result.Count() > 0)
                    {
                        treeData["expanded"] = true;
                    }
                    else
                    {
                        treeData["expanded"] = false;
                    }
                }
                treeData["title"] = await itree.TreeName();
                treeData["key"]   = await itree.TreeId();
            },
                true);

            return(outTree);
        }
Beispiel #17
0
 public JsTreeView()
 {
     JsTree = new JsTree();
 }
 public RoleView()
 {
     Permissions = new JsTree();
 }
Beispiel #19
0
 public RoleView()
 {
     PrivilegesTree = new JsTree();
 }