Пример #1
0
        void addTeam_Click(object sender, EventArgs e)
        {
            var parentTeam = this.FindAncestor <OrgContainerShape>();
            var newTeam    = new OrgContainerShape(_context)
            {
                Name      = "New " + parentTeam.Tag.ToString() + " Team",
                BaseColor = parentTeam.BaseColor,
            };

            parentTeam.ShowCollapseButton = true;
            newTeam.ToggleCollapseButton.ImagePrimitive.Visibility = Telerik.WinControls.ElementVisibility.Hidden;
            newTeam.Text               = newTeam.Name;
            newTeam.Tag                = parentTeam.Tag.ToString();
            newTeam.Path               = string.Format("{0}|{1}", parentTeam.Path, newTeam.Name);
            newTeam.TeamMembers        = string.Format("0 Team Members");
            newTeam.ShowCollapseButton = false;
            OrganizationShemaForm.currentLayoutSettings.Roots.Add(newTeam);

            var diagramElement = this.FindAncestor <RadDiagramElement>();

            diagramElement.AddShape(newTeam);

            RadDiagramConnection connection = new RadDiagramConnection();

            connection.ConnectionType = Telerik.Windows.Diagrams.Core.ConnectionType.Polyline;
            connection.Source         = parentTeam;
            connection.Target         = newTeam;
            connection.Route          = true;
            diagramElement.AddConnection(connection);

            diagramElement.SetLayout(Telerik.Windows.Diagrams.Core.LayoutType.Tree, OrganizationShemaForm.currentLayoutSettings);
        }
Пример #2
0
 private void PopulateWithData()
 {
     _org = _userContext.Organization.ToList();
     foreach (var item in _org.Where(x => x.Parent == 0))
     {
         OrgContainerShape node = this.CreateNode(item, null);
         node.BaseColor = this.groupColor[0];
         this.radDiagram1.AddShape(node);
         currentLayoutSettings.Roots.Add(node);
         this.GetSubNodes(item, node, 2);
     }
     Program.IsStart = true;
 }
Пример #3
0
        private OrgContainerShape CreateNode(AlimexDAL.Entity.Organization element, OrgContainerShape parentNode)
        {
            OrgContainerShape orgTeam = new OrgContainerShape(_userContext)
            {
                Name = element.Name,
                Id   = element.Id
            };

            orgTeam.ToggleCollapseButton.ImagePrimitive.Visibility = Telerik.WinControls.ElementVisibility.Hidden;
            orgTeam.Text = orgTeam.Name;
            orgTeam.Tag  = element.Id.ToString();
            orgTeam.Path = parentNode == null ? orgTeam.Name : string.Format("{0}|{1}", parentNode.Path, orgTeam.Name);
            currentLayoutSettings.Roots.Add(orgTeam);
            if (parentNode != null)
            {
                RadDiagramConnection connection = new RadDiagramConnection();
                connection.ConnectionType = Telerik.Windows.Diagrams.Core.ConnectionType.Polyline;
                connection.Source         = parentNode;
                connection.Target         = orgTeam;
                connection.Route          = true;

                this.radDiagram1.AddConnection(connection);
            }
            var teamMembers = this.GetTeamMembers(element, orgTeam);
            var position    = new Telerik.Windows.Diagrams.Core.Point(10, 50);

            int memberCount = 0;

            foreach (var member in teamMembers)
            {
                this.radDiagram1.AddShape(member);
                orgTeam.Items.Add(member);
                member.Position = position;
                position.X     += member.Width + 20;
                if (++memberCount % 2 == 0)
                {
                    position = new Telerik.Windows.Diagrams.Core.Point(10, position.Y + member.Height + 10);
                }
            }

            orgTeam.IsCollapsedChanged += this.orgTeam_IsCollapsedChanged;
            return(orgTeam);
        }
Пример #4
0
        private RadDiagramShape CreateMemberShape(OrgContainerShape team, User xmlNodeMember)
        {
            RadDiagramShape member = new RadDiagramShape();

            member.IsConnectorsManipulationEnabled = false;
            member.ForeColor         = Color.White;
            member.IsRotationEnabled = false;
            member.IsResizingEnabled = false;
            member.Shape             = new Telerik.WinControls.RoundRectShape(0);
            member.BackColor         = Color.LightBlue;
            member.Width             = 190;
            member.Height            = 50;
            member.Tag  = team;
            member.Name = xmlNodeMember.Name;
            member.DiagramShapeElement.TextAlignment     = ContentAlignment.MiddleLeft;
            member.DiagramShapeElement.ImageLayout       = ImageLayout.None;
            member.DiagramShapeElement.Padding           = new System.Windows.Forms.Padding(5, 2, 2, 0);
            member.DiagramShapeElement.Image             = null;//this.GetImageFromResource(member.Name);
            member.DiagramShapeElement.ImageAlignment    = ContentAlignment.MiddleLeft;
            member.DiagramShapeElement.TextImageRelation = TextImageRelation.ImageBeforeText;
            member.DiagramShapeElement.TextWrap          = false;
            member.Text = string.Format(" {0}\n {1}", member.Name, xmlNodeMember.Roles.Select(x => x.Name).FirstOrDefault());
            return(member);
        }
Пример #5
0
        private ObservableCollection <OrgContainerShape> GetSubNodes(AlimexDAL.Entity.Organization element, OrgContainerShape parent, int level)
        {
            var nodes    = new ObservableCollection <OrgContainerShape>();
            var elements = _org.Where(x => x.Parent == element.Id).ToList();

            if (elements.Count == 0)
            {
                return(nodes);
            }

            Random rnd = new Random();

            foreach (var subElement in elements)
            {
                OrgContainerShape node = this.CreateNode(subElement, parent);
                node.ShowCollapseButton = level < 3;
                if (subElement.Parent == 1)
                {
                    node.BaseColor = Color.FromArgb(rnd.Next(150), rnd.Next(150), rnd.Next(150));
                }
                //if (node.Path.Contains("Production"))
                //{
                //    node.BaseColor = this.groupColor[2];
                //}else
                //if (node.Path.Contains("Accounting"))
                //{
                //    node.BaseColor = this.groupColor[1];
                //}
                this.radDiagram1.AddShape(node);

                this.GetSubNodes(subElement, node, level + 1);
                nodes.Add(node);
            }

            return(nodes);
        }
Пример #6
0
        private ObservableCollection <RadDiagramShape> GetTeamMembers(AlimexDAL.Entity.Organization element, OrgContainerShape orgTeam)
        {
            var members = new ObservableCollection <RadDiagramShape>();

            if (element.Users != null)
            {
                foreach (var xmlNodeMember in element.Users)
                {
                    RadDiagramShape member = this.CreateMemberShape(orgTeam, xmlNodeMember);
                    member.Tag = xmlNodeMember.Id;
                    members.Add(member);
                }
            }

            return(members);
        }