コード例 #1
0
        public async Task <ActionResult> Index(ParamViewModel coefficient)
        {
            if (ModelState.IsValid)
            {
                ParamDTO       _coefficient = coefficient.ReplaceType(coefficient);
                PointsParabola pointPar     = new PointsParabola(coefficient.ReplaceType(coefficient));
                int            paramId      = await service.FindParamsIdAsync(_coefficient);

                List <CacheDataDTO>    cacheData = new List <CacheDataDTO>();
                List <PointsViewModel> points    = new List <PointsViewModel>();
                if (paramId == -1)
                {
                    cacheData = pointPar.GetCacheDatas(_coefficient);
                    await service.AddParamsAndCacheDataAsync(_coefficient, cacheData);
                }
                else
                {
                    cacheData = await service.GetCacheDataAsync(paramId);
                }
                foreach (var c in cacheData)
                {
                    points.Add(new PointsViewModel(c.PointX, c.PointY));
                }
                ViewBag.Result    = points;
                ViewBag.IsRotated = coefficient.A < 0;
                return(View("Index"));
            }
            return(View("Index"));
        }
コード例 #2
0
        public void Changing_the_value_of_param_will_trigger_callback()
        {
            var  p         = new ParamViewModel(GetParam());
            bool triggered = false;

            p.PropertyChanged += (s, arg) => { triggered = true; };
            p.Value            = "val";
            Assert.That(triggered);
        }
コード例 #3
0
        private void SliderChanged(object sender, ValueChangedEventArgs e)
        {
            ParamViewModel from = (ParamViewModel)sender;

            for (int q = 0; q < 5; q++)
            {
                if (entries[q].Label == from.Name)
                {
                    int val = Convert.ToInt32(e);
                    entries[q] = new Entry(val)
                    {
                        Label      = entries[q].Label,
                        ValueLabel = entries[q].ValueLabel.ToString(),
                        Color      = entries[q].Color
                    };
                }
            }
        }
コード例 #4
0
        public async Task <ActionResult> UpdateValue([FromBody] ParamViewModel newParam)
        {
            Param param = _dbContext.Params?.FirstOrDefault();

            if (param != null)
            {
                //TODO: se puede mejorar usando automapper
                param.Color    = newParam.Color;
                param.Diameter = newParam.Diameter;

                _dbContext.Update(param);
                _dbContext.SaveChanges();
            }

            await _hubContext.Clients.All.SendCoreAsync("circleUpdated", new object[] { newParam });

            return(Ok());
        }
コード例 #5
0
        public ActionResult GetData(ParamViewModel model)
        {
            if (ModelState.IsValid)
            {
                ICollection <CacheDataView> data = null;

                if (ParabolicFunctionService.CheckIfStored(model, out data))
                {
                    return(Json(new { data, IsError = false }));
                }
                data = ParabolicFunctionService.CalculateChartParallel(model);
                return(Json(new { data, IsError = false }));
            }

            else
            {
                var errors = ModelState.Values.Select(v => v.Errors.Select(e => e.ErrorMessage));
                return(Json(new { errors, IsError = true }));
            }
        }
コード例 #6
0
        public ICollection <CacheDataView> CalculateChartParallel(ParamViewModel paramModel)
        {
            if (paramModel == null)
            {
                throw new ArgumentNullException("param");
            }

            //TODO: add automapper
            Param param = new Param
            {
                CoefficientA = paramModel.CoefficientA,
                CoefficientB = paramModel.CoefficientB,
                CoefficientC = paramModel.CoefficientC,
                Step         = paramModel.Step,
                RangeFrom    = paramModel.RangeFrom,
                RangeTo      = paramModel.RangeTo
            };

            int elementsCount = (int)((param.RangeTo - param.RangeFrom) / param.Step) + 1;

            var elements = new CacheData[elementsCount];

            Parallel.For(0, elementsCount, i => {
                var x       = param.RangeFrom + param.Step * i;
                var y       = CalculatePointY(param.CoefficientA, param.CoefficientB, param.CoefficientC, x);
                elements[i] = new CacheData {
                    PointX = x, PointY = y
                };
            });

            using (var paramRepository = Factory.GetParamRepository())
            {
                param.Points = elements;
                paramRepository.AddOrUpdate(param);
                paramRepository.SaveChanges();
            }

            return(elements.Select(cd => new CacheDataView {
                x = cd.PointX, y = cd.PointY
            })?.ToList());
        }
コード例 #7
0
        public ICollection <CacheDataView> CalculateChart(ParamViewModel paramModel)
        {
            if (paramModel == null)
            {
                throw new ArgumentNullException("param");
            }

            //TODO: add automapper
            Param param = new Param
            {
                CoefficientA = paramModel.CoefficientA,
                CoefficientB = paramModel.CoefficientB,
                CoefficientC = paramModel.CoefficientC,
                Step         = paramModel.Step,
                RangeFrom    = paramModel.RangeFrom,
                RangeTo      = paramModel.RangeTo
            };

            using (var paramRepository = Factory.GetParamRepository())
            {
                param.Points = new List <CacheData>();
                for (double i = param.RangeFrom; i <= param.RangeTo; i += param.Step)
                {
                    param.Points.Add(new CacheData
                    {
                        PointX = i,
                        PointY = CalculatePointY(param.CoefficientA, param.CoefficientB, param.CoefficientC, i)
                    });
                }

                paramRepository.AddOrUpdate(param);
                paramRepository.SaveChanges();
            }

            return(param.Points?.Select(cd => new CacheDataView {
                x = cd.PointX, y = cd.PointY
            })?.ToList());
        }
コード例 #8
0
        public bool CheckIfStored(ParamViewModel paramModel, out ICollection <CacheDataView> data)
        {
            if (paramModel == null)
            {
                throw new ArgumentNullException("param");
            }

            using (var paramRepository = Factory.GetParamRepository())
            {
                var storedParam = paramRepository.GetAll(p =>
                                                         p.CoefficientA == paramModel.CoefficientA &&
                                                         p.CoefficientB == paramModel.CoefficientB &&
                                                         p.CoefficientC == paramModel.CoefficientC &&
                                                         p.Step == paramModel.Step &&
                                                         p.RangeFrom == paramModel.RangeFrom &&
                                                         p.RangeTo == paramModel.RangeTo

                                                         )
                                  .FirstOrDefault();
                if (storedParam == null)
                {
                    data = null;
                    return(false);
                }
                else
                {
                    using (var cacheDataRepository = Factory.GetCacheDataRepository())
                    {
                        data = cacheDataRepository.GetAll(cd => cd.ParamId == storedParam.Id)?.Select(cd => new CacheDataView {
                            x = cd.PointX, y = cd.PointY
                        })?.ToList();
                    }

                    return(true);
                }
            }
        }
コード例 #9
0
        public void Changing_the_value_of_param_without_callback()
        {
            var p = new ParamViewModel(GetParam());

            p.Value = "val";
        }