Example #1
0
        public View Make(ViewDefinition definition, DAL.Models.DbSearchResponse ticketSet, View parentNode, Action<UI.View> viewAction)
        {
            var view = new UI.View()
            {
                ViewType = ViewType.TableBody,
                ParentNode = parentNode,
                Virtual = true
            };

            view.Props = new Dictionary<string, object>()
            {
                { "TemplateId", definition.TemplateId }
            };

            if (definition.LinkedFieldId.HasValue)
                view.Props.Add("LinkedFieldId", definition.LinkedFieldId);

            foreach (var ticket in ticketSet.Tickets)
            {
                var newTicketSet = ticketSet.ReduceToOneTicket(ticket);
                var childView = new TableRecordViewBehaviour(CurrentUser).Make(definition, newTicketSet, view, null);
                view.ChildViews.Add(childView);
            }

            return view;
        }
Example #2
0
        public UI.View Make(ViewDefinition definition, DbSearchResponse ticketSet, UI.View parentNode, Action <UI.View> viewAction)
        {
            var view = new UI.View()
            {
                ViewType   = UI.ViewType.SectionsSettings,
                Virtual    = true,
                ParentNode = parentNode
            };

            view.Props.Add("DisplayName", RC.SECTION_SETTINGS_DISP_NAME);

            viewAction(view);

            return(view);
        }
Example #3
0
        public View Make(ViewDefinition definition, DAL.Models.DbSearchResponse ticketSet, View parentNode, Action <UI.View> viewAction)
        {
            var view = new UI.View()
            {
                ViewType   = ViewType.TableHeader,
                ParentNode = parentNode,
                Virtual    = true
            };

            view.Controls = definition
                            .Controls.Where(c => c.GridIndex >= 0).GroupBy(c => c.GridIndex).OrderBy(c => c.Key)
                            .Select(c => new TableHeaderControlBehaviour(CurrentUser).Make(c.First(), ticketSet, view, null))
                            .ToList();

            return(view);
        }
Example #4
0
        private void GetFlatListOfControls(UI.View view, ref List <UI.Control> controls)
        {
            if (view.Controls != null)
            {
                foreach (var control in view.Controls.Where(c => c.Props.ContainsKey("FieldId") && c.Props["FieldId"] != null))
                {
                    controls.Add(control);
                }
            }

            if (view.ChildViews != null)
            {
                // Использовать только незалинкованные View
                var childViews = view.ChildViews.Where(cv => !cv.Props.ContainsKey("LinkedFieldId") || cv.Props["LinkedFieldId"] == null);
                foreach (var childView in childViews)
                {
                    GetFlatListOfControls(childView, ref controls);
                }
            }
        }
Example #5
0
        public View Make(ViewDefinition definition, DAL.Models.DbSearchResponse ticketSet, View parentNode, Action <UI.View> viewAction)
        {
            var view = new UI.View()
            {
                ViewType   = ViewType.TableRecord,
                ParentNode = parentNode,
                Virtual    = true
            };

            view.Props.Add("GridIndex", 0);

            foreach (var controlGroup in definition.Controls.Where(c => c.GridIndex >= 0).GroupBy(c => c.GridIndex).OrderBy(c => c.Key))
            {
                view.Props["GridIndex"] = controlGroup.Key;

                var childView = new TableCellViewBehaviour(CurrentUser).Make(definition, ticketSet, view, null);
                view.ChildViews.Add(childView);
            }

            view.Props.Remove("GridIndex");

            return(view);
        }
Example #6
0
        public View Make(ViewDefinition definition, DAL.Models.DbSearchResponse ticketSet, View parentNode, Action <UI.View> viewAction)
        {
            var view = new UI.View()
            {
                ViewType   = ViewType.TableCell,
                ParentNode = parentNode,
                Virtual    = true
            };

            var gridIndex = Convert.ToInt32(parentNode.Props["GridIndex"]);

            view.Props = new Dictionary <string, object>()
            {
                { "TemplateId", definition.TemplateId },
                { "GridIndex", gridIndex }
            };

            view.Controls = definition
                            .Controls.Where(c => c.GridIndex >= 0 && c.GridIndex == gridIndex).OrderBy(c => c.OrderIndex)
                            .Select(c => BehaviourSelector.ControlBehaviours[Mapper.Map <UI.ControlType>(c.ControlType)](CurrentUser).Make(c, ticketSet, view, null))
                            .ToList();

            return(view);
        }
Example #7
0
        public UI.View Make(ViewDefinition definition, DAL.Models.DbSearchResponse ticketSet, View parentNode, Action <UI.View> viewAction)
        {
            var view = new UI.View()
            {
                ViewType   = UI.ViewType.TableFooter,
                ParentNode = parentNode,
                Virtual    = true
            };

            if (ticketSet != null && ticketSet.Total > 0)
            {
                var  nodeList    = new NodeList();
                Node specialNode = null;
                Node node        = null;

                for (var i = 1; i <= ticketSet.NumberOfPages; i++)
                {
                    var button = new ButtonPageNumberControlBehaviour(CurrentUser).Make(null, ticketSet, view,
                                                                                        (b) => {
                        b.Props.Add("DisplayName", i.ToString());
                        b.Props.Add("IsCurrent", i == ticketSet.PageNumber);
                    });

                    var newNode = new Node(button);

                    if (node == null)
                    {
                        node          = newNode;
                        nodeList.Head = node;
                        nodeList.Tail = node;
                    }
                    else
                    {
                        newNode.Prev  = node;
                        node.Next     = newNode;
                        node          = newNode;
                        nodeList.Tail = node;
                    }

                    nodeList.Count++;

                    if (i == ticketSet.PageNumber)
                    {
                        specialNode = node;
                    }
                }

                var pageNumberButtons = new List <Node>();

                node = nodeList.Head;

                var distanceToHead = 0;
                var distanceToTail = 0;

                while (node != null)
                {
                    if (node == specialNode)
                    {
                        if (distanceToHead > 0)
                        {
                            pageNumberButtons.Add(nodeList.Head);
                            if (distanceToHead > 1)
                            {
                                if (distanceToHead > 2)
                                {
                                    if (distanceToHead > 3)
                                    {
                                        if (distanceToHead > 4)
                                        {
                                            pageNumberButtons.Add(new Node(new Control()
                                            {
                                                ControlType = ControlType.Label, Value = ".."
                                            }));
                                        }
                                        pageNumberButtons.Add(node.Prev.Prev.Prev);
                                    }
                                    pageNumberButtons.Add(node.Prev.Prev);
                                }
                                pageNumberButtons.Add(node.Prev);
                            }
                        }
                        pageNumberButtons.Add(node);
                        distanceToTail = nodeList.Count - 1 - distanceToHead;
                        if (distanceToTail > 0)
                        {
                            pageNumberButtons.Add(node.Next);
                            if (distanceToTail > 1)
                            {
                                pageNumberButtons.Add(node.Next.Next);
                                if (distanceToTail > 2)
                                {
                                    pageNumberButtons.Add(node.Next.Next.Next);
                                    if (distanceToTail > 3)
                                    {
                                        pageNumberButtons.Add(nodeList.Tail);
                                        if (distanceToTail > 4)
                                        {
                                            pageNumberButtons.Insert(pageNumberButtons.Count - 1, new Node(new Control()
                                            {
                                                ControlType = ControlType.Label, Value = ".."
                                            }));
                                        }
                                    }
                                }
                            }
                        }
                    }
                    node = node.Next;
                    distanceToHead++;
                }

                view.Controls = pageNumberButtons.Count > 1 ? pageNumberButtons.Select(n => n.Control).ToList() : new List <Control>();
            }

            return(view);
        }