コード例 #1
0
            /// <summary>
            /// Генерация нового ID для следующего в строке элемента
            /// </summary>
            /// <param name="model">Модель элемента</param>
            /// <returns>Возвращает следующий порядковый ID для текущей строки</returns>
            public int GenerateID(LeasingElementModel model)
            {
                if (model == null)
                {
                    throw new ArgumentNullException("Попытка генерации ID по пустой ссылке на элемент Canvas'а");
                }

                var a = model.RowIndex + 1; //прибавляем единицу, т.к. при индексации с 0 будут наложения индекса в строках
                var b = 0;

                //получаем порядковый номер элемента в строке
                if (m_rowsCounters.ContainsKey(a))
                {
                    b = ++m_rowsCounters[a];
                }
                else
                {
                    m_rowsCounters.Add(a, ++b);
                }

                int pow = 1;

                while (pow < b)
                {
                    pow = ((pow << 2) + pow) << 1;
                    a   = ((a << 2) + a) << 1;
                }

                return(a + b);
            }
コード例 #2
0
ファイル: LeasingSet.cs プロジェクト: AlexKub/CarLeasing
        void SetSorted(IEnumerable <Controls.LeasingChartManagers.RowManager.Row> rows)
        {
            var cars     = new List <CarModel>();
            var leasings = new List <LeasingElementModel>();
            var comments = new List <CarCommentModel>();

            //ставим флаг, что используются сортированные данные
            // (базовый набор НЕ используется)
            m_baseSetted = false;

            CarModel            car     = null;
            CarCommentModel     comment = null;
            LeasingElementModel leasing = null;

            if (rows != null && rows.Count() > 0)
            {
                var rowIndex = 0;
                foreach (var row in rows)
                {
                    if (row.Car != null)
                    {
                        car          = row.Car.Clone();
                        car.RowIndex = rowIndex;
                        cars.Add(car);
                    }

                    if (row.Comment != null)
                    {
                        comment          = row.Comment.Clone();
                        comment.RowIndex = rowIndex;
                        comments.Add(comment);
                    }

                    if (row.Bars.Count > 0)
                    {
                        foreach (var bar in row.Bars)
                        {
                            if (bar.Model != null)
                            {
                                leasing          = bar.Model.Clone();
                                leasing.RowIndex = rowIndex;
                                leasings.Add(leasing);
                            }
                        }
                    }

                    rowIndex++;
                }
            }

            Chart.ClearManagers();

            CarModels = cars;
            Comments  = comments;
            Leasings  = leasings;

            Chart.Draw();
        }
コード例 #3
0
ファイル: LeasingSet.cs プロジェクト: AlexKub/CarLeasing
        List <LeasingElementModel> GetLeasingModels(IEnumerable <MonthBusiness> monthBuisnesses)
        {
            var leasingBarModels = new List <LeasingElementModel>();

            var index = 0;

            foreach (var business in monthBuisnesses)
            {
                foreach (var item in business.CarBusiness)
                {
                    var car      = m_CarModels.FirstOrDefault(c => c.Text.Equals(item.Name));
                    var rowIndex = 0;
                    leasingBarModels.AddRange(item.Business.Select(
                                                  b =>
                    {
                        rowIndex  = car == null ? 0 : car.RowIndex;
                        var model = new LeasingElementModel()
                        {
                            CarName        = m_CarModels.Count > 0 ? m_CarModels[rowIndex].Text : b.CarName,
                            Leasing        = b,
                            RowIndex       = rowIndex,
                            DayColumnWidth = 21d
                        };

                        if (b.CurrentMonth != null)
                        {
                            model.Monthes = new MonthHeaderModel[] { new MonthHeaderModel(this)
                                                                     {
                                                                         Month = b.CurrentMonth
                                                                     } }
                        }
                        ;
                        else
                        {
                            model.Monthes = this.Monthes.Where(m => b.Monthes.Any(bm => bm.Equals(m.Month))).ToArray();
                        }

                        return(model);
                    }));
                }
                index++;
            }

            return(leasingBarModels);
        }