Esempio n. 1
0
            //

            /// <summary>
            /// 자기 자신 혹은 하위 레벨에 데이터를 삽입한다.
            /// </summary>
            /// <returns>null이 아닐 경우, 해당 데이터를 포함한 노드. NULL일 경우 데이터 삽입 실패.</returns>
            public Node InsertData(DataT data)
            {
                if (!isLeaf)                    // Leaf 노드가 아닐 경우, Leaf 노드쪽으로 Insert를 시도한다.
                {
                    return(m_child[0].InsertData(data) ?? m_child[1].InsertData(data));
                }
                else
                {                                                                      // Leaf 노드일 경우
                    if (m_data != null || !m_rect.CanContain(data.width, data.height)) // 이미 데이터가 할당되었거나 데이터 사이즈에 맞지 않는 경우, null 리턴
                    {
                        return(null);
                    }
                    else if (m_rect.FitsCorrectly(data.width, data.height))                                 // 딱 맞는 빈 공간일 경우엔 데이터 삽입 후 리턴
                    {
                        m_data = data;
                        return(this);
                    }
                    else
                    {
                        RectSpace divRect, remainRect;

                        // 사각형을 배치하고 나눴을 때, 어느쪽을 크게 잘라야할지 계산한다. (좀더 큰 공간이 남는 편이 유리하다)
                        int remainw = m_rect.width - data.width;
                        int remainh = m_rect.height - data.height;
                        if (remainw > remainh)                                                                  // 가로방향을 나눠야함
                        {
                            m_rect.DivideHorizontally(data.width + m_rect.padding, out divRect, out remainRect);
                        }
                        else
                        {                                                                   // 세로방향을 나눠야함
                            m_rect.DivideVertically(data.height + m_rect.padding, out divRect, out remainRect);
                        }
                        m_child[0] = new Node(divRect);
                        m_child[1] = new Node(remainRect);

                        return(m_child[0].InsertData(data));                                            // 나눈 방향에 대해서 데이터 크기와 맞춘 노드 쪽에 insert 시도
                    }
                }
            }
Esempio n. 2
0
        public void Total(List <DataTable> AgentDatalist)
        {
            foreach (DataTable DataT in AgentDataList)
            {
                DataRow total             = DataT.NewRow();
                Decimal TotalMatchAmount1 = 0;

                decimal TotalCommisionAmount = 0;


                decimal TotalSessionAmount1  = 0;
                decimal TotalPlusMinusAmount = 0;
                decimal Match1Amount         = 0;
                decimal Session1Amount       = 0;
                decimal TotalNetAmount1      = 0;
                decimal TotalHalfAmount1     = 0;
                decimal TotalAppAmount1      = 0;
                decimal TotalSAAmount1       = 0;
                decimal TotalFinalAmount1    = 0;
                for (int l = 0; l < DataT.Rows.Count; l++)
                {
                    decimal MatchAmount = Convert.ToDecimal(DataT.Rows[l]["MatchAmount"]);
                    TotalMatchAmount1 = TotalMatchAmount1 + MatchAmount;
                    decimal SessionAmount = Convert.ToDecimal(DataT.Rows[l]["SessionAmount"]);
                    TotalSessionAmount1 = TotalSessionAmount1 + SessionAmount;

                    decimal TotalAmount = Convert.ToDecimal(DataT.Rows[l]["TotalAmount"]);
                    TotalPlusMinusAmount = TotalPlusMinusAmount + TotalAmount;

                    decimal MatchCommisionAmount = Convert.ToDecimal(DataT.Rows[l]["MatchCommision"]);
                    Match1Amount = Match1Amount + MatchCommisionAmount;

                    decimal MatchSessionAmount = Convert.ToDecimal(DataT.Rows[l]["SessionCommision"]);
                    Session1Amount = Session1Amount + MatchSessionAmount;

                    decimal ToComAmount = Convert.ToDecimal(DataT.Rows[l]["TotalCommisionAmount"]);
                    TotalCommisionAmount = TotalCommisionAmount + ToComAmount;

                    decimal ToNetAmount = Convert.ToDecimal(DataT.Rows[l]["TotalNetAmount"]);
                    TotalNetAmount1 = TotalNetAmount1 + ToNetAmount;

                    decimal ToHalfAmount = Convert.ToDecimal(DataT.Rows[l]["TotalHalfAmount"]);
                    TotalHalfAmount1 = TotalHalfAmount1 + ToHalfAmount;

                    decimal ToAppAmount = Convert.ToDecimal(DataT.Rows[l]["MOBAppAmount"]);
                    TotalAppAmount1 = TotalAppAmount1 + ToAppAmount;


                    decimal ToSAAgentAmount = Convert.ToDecimal(DataT.Rows[l]["SAAgentShare"]);
                    TotalSAAmount1 = TotalSAAmount1 + ToSAAgentAmount;

                    decimal ToFinalAmount = Convert.ToDecimal(DataT.Rows[l]["FinalAmount"]);
                    TotalFinalAmount1 = TotalFinalAmount1 + ToFinalAmount;
                }

                total["MatchAmount"]          = TotalMatchAmount1;
                total["SessionAmount"]        = TotalSessionAmount1;
                total["TotalAmount"]          = TotalPlusMinusAmount;
                total["MatchCommision"]       = Match1Amount;
                total["SessionCommision"]     = Session1Amount;
                total["TotalCommisionAmount"] = TotalCommisionAmount;
                total["TotalNetAmount"]       = TotalNetAmount1;
                total["TotalHalfAmount"]      = TotalHalfAmount1;
                total["MOBAppAmount"]         = TotalAppAmount1;
                total["SAAgentShare"]         = TotalSAAmount1;
                total["FinalAmount"]          = TotalFinalAmount1;

                DataT.Rows.Add(total.ItemArray);
            }
        }
Esempio n. 3
0
 /// <summary>
 /// 정렬 기준값을 계산한다.
 /// </summary>
 /// <param name="data"></param>
 /// <returns></returns>
 public static int GetWeight(DataT data)
 {
     return(Mathf.Max(data.width, data.height));                 // 가로/세로 중 큰 축을 정렬 기준으로 삼는다.
 }
Esempio n. 4
0
 public DataListItem(DataT data)
 {
     this.data = data;
     weight    = GetWeight(data);
 }