protected override MobileObservableCollection<SampleUnit> ConvertPrimitivesToSamples(List<List<SamplePrimitive>> primitives) { var newSource = new MobileObservableCollection<SampleUnit>(); for (var i = 0; i < primitives.Count; i++) { var data = primitives[i].Select(x => Convert.ToDouble(!((bool)x.SampleValue))); var commonItemId = (from s in primitives[i] group s by s.ItemId into gr orderby gr.Count() descending select gr).First().First().ItemId; var sampleValue = ProcessSubgroup(data); var subgroupSample = SpcManager.CreateSample(sampleValue, commonItemId, i); subgroupSample.SetXLabelValue(i, LabelValueDataTypes.Number); subgroupSample.SetSampleSize(data.Count()); newSource.Add(subgroupSample); } UpdateLevelsValues(primitives, newSource); YStep = Math.Round(1 / (3 * ParentPanel.HeightMultiplier), 1); return newSource; }
protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples) { var dataList = primitives.SelectMany(x => x.Select(y => !((bool)y.SampleValue))); var dataSum = dataList.Sum(x => Convert.ToInt32(x)); var dataCount = dataList.Count(); var p = 0.0; var np = 0.0; var delta = 0.0; if (samples.Any()) { p = (double) dataSum/dataCount; np = ParentPanel.SubgroupSize * p; delta = 3 * Math.Sqrt(np * (1 - p)); Mean = Math.Round(np, 2); UCL = Math.Round(Mean + delta, 2); LCL = Math.Round(Math.Max(Mean - delta, 0), 2); } foreach (var sample in samples) { sample.SetUCL(UCL); sample.SetMean(Mean); sample.SetLCL(LCL); sample.SetUCL(ParentPanel.CustomUCL, true); sample.SetLCL(ParentPanel.CustomLCL, true); sample.SetUSL(ParentPanel.USL); sample.SetLSL(ParentPanel.LSL); } }
public void ConstructorWithParamsTest() { var mb = new MobileObservableCollection<string>(); var item = new DownloadCriteria(mb); Assert.AreEqual((new MobileList<string>(mb)).ToString(), item.DownloadList.ToString()); }
protected override MobileObservableCollection<SampleUnit> ConvertPrimitivesToSamples(List<List<SamplePrimitive>> primitives) { var newSource = new MobileObservableCollection<SampleUnit>(); var list = primitives.SelectMany(x => x.Select(y => y.SampleValue)).Cast<double>().ToList(); for (var i = 0; i < list.Count; i++) { if (i >= ParentPanel.SubgroupSize - 1) { var data = list.GetRange(i - (ParentPanel.SubgroupSize - 1), ParentPanel.SubgroupSize); var sampleValue = ProcessSubgroup(data); var subgroupSample = SpcManager.CreateSample(sampleValue, primitives[i].Select(x => x.ItemId).First(), i); subgroupSample.SetXLabelValue(i, LabelValueDataTypes.Number); subgroupSample.SetSampleSize(1); newSource.Add(subgroupSample); } else { var sample = SpcManager.CreateSample(null, primitives[i].Select(x => x.ItemId).First(), i); sample.SetXLabelValue(i, LabelValueDataTypes.Number); sample.SetSampleSize(1); newSource.Add(sample); } } UpdateLevelsValues(primitives, newSource); YStep = (double)primitives.Where(x => x[0].SampleValue != null).Max(x => x[0].SampleValue) / (3 * ParentPanel.HeightMultiplier); return newSource; }
/// <summary> /// Gets the result list. /// </summary> /// <param name="choiceXml">The choice XML.</param> /// <returns>MobileObservableCollection{ChoiceInfo}.</returns> /// <exception cref="VeyronException">Failed to parse Result choices</exception> public MobileObservableCollection<ChoiceInfo> GetResultList(string choiceXml) { if (string.IsNullOrEmpty(choiceXml)) return null; var list = new MobileObservableCollection<ChoiceInfo>(); try { var root = XElement.Parse(choiceXml); var isGlobalChoice = bool.Parse(root.Attribute("IsGlobalChoice").Value); if (isGlobalChoice) { var globalChoiceId = int.Parse(root.Attribute("GlobalChoiceId").Value, CultureInfo.InvariantCulture); if (globalChoiceId == 0) return list; // AddedBy: R. Lunev // Data: 06.12.2012 // Reason: If no global choice selected then Id = 0 will be passed to this method and exception will be thrown. // Todo: Should be another logic implemented or "if (globalChoiceId > 0)" enough? //only re-load if list is empty if (globalChoiceId > 0 && !root.HasElements) { var globalChoiceItem = TypeManager.GetEditableRoot<IEditableRoot>(Constants.GlobalChoiceProcessName, globalChoiceId); root = XElement.Parse(globalChoiceItem.ReadValueByPropertyName<string>("ChoiceDetails")); } } foreach (var element in root.Descendants("Choice")) { ChoiceInfo.AcceptanceCriterias criteria; if (Enum.TryParse(element.Attribute("AcceptanceCriteria").Value, false, out criteria)) list.Add( new ChoiceInfo { AcceptanceCriteria = criteria, Choice = element.Attribute("Choice").Value, Score = double.Parse(element.Attribute("Score").Value, CultureInfo.InvariantCulture), IsCommentRequired = bool.Parse(element.Attribute("IsCommentRequired").Value), IsNewItemRequired = bool.Parse(element.Attribute("IsNewItemRequired").Value), NewItemProcessName = element.Attribute("NewItemProcessName").Value, NewItemProcessId = element.Attributes().Any(a => a.Name == "NewItemProcessId") ? int.Parse(element.Attribute("NewItemProcessId").Value, CultureInfo.InvariantCulture) : 0 }); } } catch (Exception ex) { Log4NetLogger.Instance.Log(LogSeverity.Error, typeof(ResultFieldHelper).ToString(), ex); throw new VeyronException("Failed to parse Result choices", ex); } return list; }
protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples) { ResolveLimitsCalculationMethod(primitives, samples); foreach (var sample in samples) { sample.SetUCL(UCL); sample.SetMean(Mean); sample.SetLCL(LCL); sample.SetUCL(ParentPanel.CustomUCL, true); sample.SetLCL(ParentPanel.CustomLCL, true); sample.SetUSL(ParentPanel.USL); sample.SetLSL(ParentPanel.LSL); } }
protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples) { Mean = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0; foreach (var sample in samples) { sample.SetUCL(UCL); sample.SetMean(Mean); sample.SetLCL(LCL); sample.SetUCL(ParentPanel.CustomUCL, true); sample.SetLCL(ParentPanel.CustomLCL, true); sample.SetUSL(ParentPanel.USL); sample.SetLSL(ParentPanel.LSL); } }
protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples) { Mean = samples.Any(x => x.SampleValue != null) ? Math.Round(samples.Where(x => x.SampleValue != null).Average(x => (double)x.SampleValue), 2) : 0; UCL = Math.Round(Mean * StatisticConstants.D4(ParentPanel.SubgroupSize), 2); LCL = Math.Round(Math.Max(Mean * StatisticConstants.D3(ParentPanel.SubgroupSize), 0), 2); foreach (var sample in samples) { sample.SetUCL(UCL); sample.SetMean(Mean); sample.SetLCL(LCL); sample.SetUCL(ParentPanel.CustomUCL, true); sample.SetLCL(ParentPanel.CustomLCL, true); sample.SetUSL(ParentPanel.USL); sample.SetLSL(ParentPanel.LSL); } }
public static List<LimitData> BuildUclLimits(MobileObservableCollection<SampleUnit> dataSource) { var list = new List<LimitData>(); var category = 1; for (var i = 0; i < dataSource.Count - 1; i++ ) { list.Add(new LimitData(category, dataSource[i].UCL)); category++; list.Add(new LimitData(category, dataSource[i].UCL)); list.Add(new LimitData(category, dataSource[i + 1].UCL)); category++; list.Add(new LimitData(category, dataSource[i + 1].UCL)); } if (dataSource.Count > 0 && list.Count == 0) list.Add(new LimitData(1, 0)); return list; }
protected override MobileObservableCollection<SampleUnit> ConvertPrimitivesToSamples(List<List<SamplePrimitive>> primitives) { var newSource = new MobileObservableCollection<SampleUnit>(); var list = primitives.SelectMany(x => x.Select(y => y)).ToList(); for (var i = 0; i < list.Count; i++) { var sampleValue = list[i].SampleValue; var subgroupSample = SpcManager.CreateSample(sampleValue, list[i].ItemId, i + 1); subgroupSample.SetXLabelValue(i + 1, LabelValueDataTypes.Number); subgroupSample.SetSampleSize(1); newSource.Add(subgroupSample); } UpdateLevelsValues(primitives, newSource); YStep = (int)Math.Abs(primitives.SelectMany(l1 => l1.Select(l2 => l2.SampleValue)).Cast<double>().Range() / (3 * ParentPanel.HeightMultiplier)); return newSource; }
protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples) { var stdDevAv = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0; Mean = Math.Round(stdDevAv, 3); UCL = Math.Round(StatisticConstants.B4(ParentPanel.SubgroupSize) * Mean, 2); LCL = Math.Round(StatisticConstants.B3(ParentPanel.SubgroupSize) * Mean, 2); foreach (var sample in samples) { sample.SetUCL(UCL); sample.SetMean(Mean); sample.SetLCL(LCL); sample.SetUCL(ParentPanel.CustomUCL, true); sample.SetLCL(ParentPanel.CustomLCL, true); sample.SetUSL(ParentPanel.USL); sample.SetLSL(ParentPanel.LSL); } }
protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples) { var rValues = primitives.Select(t => t.Select(x => (double)x.SampleValue).Range()).ToList(); Mean = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0; var rBar = rValues.Any() ? rValues.Average() : 0; UCL = Math.Round(rBar * StatisticConstants.D4(ParentPanel.SubgroupSize), 2); LCL = Math.Round(rBar * StatisticConstants.D3(ParentPanel.SubgroupSize), 2); foreach (var sample in samples) { sample.SetUCL(UCL); sample.SetMean(Mean); sample.SetLCL(LCL); sample.SetUCL(ParentPanel.CustomUCL, true); sample.SetLCL(ParentPanel.CustomLCL, true); sample.SetUSL(ParentPanel.USL); sample.SetLSL(ParentPanel.LSL); } }
public async void CalculateFailedPercentAsync_PChartTest() { var editableRootMock = Mock.Create<IEditableRoot>(); var privateAccessor = PrivateAccessor.ForType(typeof(SpcExpressionHelperModule)); var parameters = new object[] { "FailedPercent_f", "SPC_f", null, 10, 39, "PChart" }; var arrange = Mock.NonPublic.Arrange<Task<ChartPanel>>(typeof(SpcExpressionHelperModule), "GetChartDescriptorAsync", ArgExpr.IsAny<IEditableRoot>(), ArgExpr.IsAny<string>(), ArgExpr.IsAny<string>(), ArgExpr.IsAny<ChartTypesEnum>(), ArgExpr.IsAny<int>(), ArgExpr.IsAny<int>()); //prepare chart descriptor var dataSourceMock = new MobileObservableCollection<SampleUnit> { CreateSample(0.4, 0.8648, 0.4, 0.0, 10) }; var chartMock = Mock.Create<PChart>(Constructor.Mocked, Behavior.Loose); Mock.Arrange(() => chartMock.DataSource).Returns(dataSourceMock); Mock.Arrange(() => chartMock.IsChild).Returns(true); var charts = new ChartCollection { chartMock }; var chartDescriptor = Mock.Create<ChartPanel>(Constructor.Mocked, Behavior.Loose); chartDescriptor.ChartType = ChartTypesEnum.PChart; chartDescriptor.Charts = charts; //test true arrange.Returns(TaskHelper.FromResult(chartDescriptor)); var task = privateAccessor.CallMethod("CalculateFailedPercentExpressionAsync", editableRootMock, parameters) as Task<bool?>; Assert.IsNotNull(task); Assert.IsTrue((bool) await task); //test false parameters[4] = 41; task = privateAccessor.CallMethod("CalculateFailedPercentExpressionAsync", editableRootMock, parameters) as Task<bool?>; Assert.IsNotNull(task); Assert.IsFalse((bool) await task); }
/// <summary> /// Initializes a new instance of the <see cref="UniqueIndexViolationException"/> class. /// </summary> /// <param name="error">The error.</param> public UniqueIndexViolationException(MobileObservableCollection<UniqueIndexViolationError> error) { ErrorContext = error; }
protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples) { var dataList = primitives.SelectMany(x => x.Select(y => !((bool) y.SampleValue))); var dataSum = dataList.Sum(x => Convert.ToInt32(x)); var dataCount = dataList.Count(); var averageSampleSize = primitives.Select(x => x.Count).Average(); Mean = samples.Any() ? Math.Round((double) dataSum / dataCount, 4) : 0; var delta = 3 * Math.Sqrt((Mean * (1 - Mean)) / averageSampleSize); UCL = Math.Round(Math.Min(Mean + delta, 1), 4); LCL = Math.Round(Math.Max(Mean - delta, 0), 4); foreach (var sample in samples) { if (AverageLimits) { sample.SetUCL(UCL); sample.SetMean(Mean); sample.SetLCL(LCL); } else { delta = 3 * Math.Sqrt((Mean * (1 - Mean)) / sample.SampleSize); sample.SetUCL(Math.Round(Math.Min(Mean + delta, 1), 4)); sample.SetMean(Mean); sample.SetLCL(Math.Round(Math.Max(Mean - delta, 0), 4)); } sample.SetUCL(ParentPanel.CustomUCL, true); sample.SetLCL(ParentPanel.CustomLCL, true); sample.SetUSL(ParentPanel.USL); sample.SetLSL(ParentPanel.LSL); } }
private void RefreshInternal() { IsBusy = true; var filterList = new MobileObservableCollection<IFilterDescriptor>(); filterList.AddRange(Filters); var filterText = (FilterString ?? string.Empty).Trim(); if (!string.IsNullOrEmpty(filterText)) { var quickSearchFilters = new MobileObservableCollection<IFilterDescriptor>(); foreach (var column in Columns) { quickSearchFilters.Add(new FilterDescriptor(column.Property.Name, FilterOperator.Contains, filterText)); } filterList.Add(new FilterDescriptor(LogicalOperators.Or, quickSearchFilters)); } if (ColumnFilter != null) filterList.Add(ColumnFilter); DynamicTypeManager.BeginGetCrossReferenceList( ProcessName, FieldName, OnItemsLoaded, SortDescriptors, string.Empty, PageSize, CurrentPageNumber, FilterDescriptor.GetFilterExpression(filterList)); }
public void UpdateLevelValues(MobileObservableCollection<SampleUnit> samples, bool recalculateSamples = false) { if (recalculateSamples) { var sampleList = OriginalData.Select(item => new SamplePrimitive(item.YValue, 0, "Number")).ToList(); samples.Clear(); foreach (var computeSubgroup in ComputeSubgroups(sampleList, 0, 0)) samples.Add(computeSubgroup); return; } var minX = 0.0; var maxx = 0.0; var standardStepCount = GetStepCount(OriginalData.Count); _minimum = OriginalData.Count > 0 ? Math.Floor(OriginalData.Min(x => (double)x.YValue)) : 0; var max = OriginalData.Count > 0 ? OriginalData.Max(x => (double)x.YValue) : 0; var integerMax = Math.Ceiling(max); if ((max % integerMax).Equals(0.0)) integerMax++; _maximum = integerMax; _stepWidth = Math.Abs(_maximum - _minimum) / ParentPanel.RangeSteps; if (_stepWidth > 1 && ParentPanel.RangeSteps == standardStepCount) { _stepWidth = Convert.ToInt32(_stepWidth); ParentPanel.SetSilently(ChartPanel.ExponentProperty, 0); } else { var e = ParentPanel.Exponent == 0 ? (int) Math.Ceiling(Math.Log10(1/_stepWidth)) : ParentPanel.Exponent; if (ParentPanel.Exponent < e) ParentPanel.SetSilently(ChartPanel.ExponentProperty, e); else e = ParentPanel.Exponent; _stepWidth = Math.Round(_stepWidth, e); } if (samples.Any()) _maximum = Convert.ToDouble(samples.Last().CategoryValue.LabelValue, CultureInfo.InvariantCulture); var list = new List<double>(); if (ShowLSL) list.Add(ParentPanel.LSL); list.Add(UseCustomCLs ? ParentPanel.CustomLCL : LCL); list.Add(_minimum); minX = list.Min(); list = new List<double>(); if (ShowUSL) list.Add(ParentPanel.USL); list.Add(UseCustomCLs ? ParentPanel.CustomUCL : UCL); list.Add(_maximum); maxx = list.Max(); var deltaMin = _minimum - minX; if (deltaMin > 0) { var newDelta = deltaMin + (_stepWidth - (deltaMin % _stepWidth)); var deltaLength = newDelta / _stepWidth; var startValue = _minimum - _stepWidth; for (var i = 0; i < deltaLength; i++) { var subgroupSample = SpcManager.CreateSample(null, 0, i); subgroupSample.SetXLabelValue(startValue, LabelValueDataTypes.Number); subgroupSample.SetSampleSize(0); samples.Insert(0, subgroupSample); startValue -= _stepWidth; } _minimum = startValue + _stepWidth; } else { var sample = SpcManager.CreateSample(null, 0, 0); sample.SetXLabelValue(_minimum - _stepWidth, LabelValueDataTypes.Number); sample.SetSampleSize(0); samples.Insert(0, sample); } var deltaMax = maxx - _maximum; if (deltaMax > 0) { var newDelta = deltaMax + (_stepWidth - (deltaMax % _stepWidth)); var deltaLength = newDelta / _stepWidth; var startValue = _maximum + _stepWidth; for (var i = 0; i < deltaLength; i++) { var subgroupSample = SpcManager.CreateSample(null, 0, i); subgroupSample.SetXLabelValue(startValue, LabelValueDataTypes.Number); subgroupSample.SetSampleSize(0); samples.Add(subgroupSample); startValue += _stepWidth; } _maximum = startValue - _stepWidth; } else { var sample = SpcManager.CreateSample(null, 0, 0); sample.SetXLabelValue(_maximum + _stepWidth, LabelValueDataTypes.Number); sample.SetSampleSize(0); samples.Add(sample); } for (var i = 0; i < samples.Count; i++) { samples[i].SetIndex(i); samples[i].CategoryValue.Index = i; } MinXValue = _minimum = deltaMin > 0 ? _minimum : _minimum - _stepWidth; MaxXValue = _maximum = deltaMax > 0 ? _maximum + _stepWidth : _maximum + _stepWidth * 2; XStep = _stepWidth; BellCurveData = new MobileObservableCollection<ElementarySampleInfo>(); var nh = 0.0; if (OriginalData != null) nh = (OriginalData.Count * XStep); //needed to bring bell curve to the scale of histogram var floatingSigma = Mean - 4 * Sigma; for (var i = 0; i < 49; i++) { var value = (1 / (Sigma * Math.Sqrt(2 * Math.PI))) * Math.Pow(Math.E, -0.5 * Math.Pow((floatingSigma - Mean) / Sigma, 2)) * nh; BellCurveData.Add(DataPortal.Fetch<ElementarySampleInfo>(new LimitData(floatingSigma, value))); floatingSigma += 1 / 6.0 * Sigma; } }
public IHttpActionResult GetMultiCrossRefValues(CrossRefLoadModel requestModel) { if (requestModel == null) { throw new ArgumentNullException("requestModel"); } try { DetailsModelContainer detailsModel = ExtractModelFromRequest(requestModel); if (detailsModel.Model == null) { return this.Json(new DetailsSaveResult { Success = false, Message = "Item not found. Was it deleted while you were editing it?" }); } string fullName = string.Join(".", detailsModel.Model.GetFullPropertyPath(requestModel.FieldName)); PropertyInfo property = detailsModel.Model.GetPropertyByFullName(fullName); IEditableRoot model = detailsModel.Model.GetAncestor(property); MobileObservableCollection<IFilterDescriptor> filterList = new MobileObservableCollection<IFilterDescriptor>(); IEnumerable<IFilterDescriptor> crossRefFilters = DynamicTypeManager.GetCrossRefFilter(model, requestModel.FieldName); if (crossRefFilters != null) { filterList.AddRange(crossRefFilters); } //string filterText = string.Empty; // (FilterString ?? string.Empty).Trim(); //if (!string.IsNullOrEmpty(filterText)) //{ // var quickSearchFilters = new MobileObservableCollection<IFilterDescriptor>(); // //foreach (var column in Columns) // //{ // // quickSearchFilters.Add(new FilterDescriptor(column.Property.Name, FilterOperator.Contains, filterText)); // //} // filterList.Add(new FilterDescriptor(LogicalOperators.Or, quickSearchFilters)); //} var items = DynamicTypeManager.GetCrossReferenceList( model.ProcessName, requestModel.FieldName, null, // SortDescriptors, string.Empty, 1000, // PageSize 0, //CurrentPageNumber, FilterDescriptor.GetFilterExpression(filterList) ); CrossRefFieldAttribute mcrAttribute = property.GetCustomAttribute<CrossRefFieldAttribute>(); IList<IdValues> values = new List<IdValues>(); foreach (var l in items) { var id = (int)l.GetType().GetProperty(Constants.IdColumnName).GetValue(l); var value = SafeTypeConverter.Convert<string>(l.GetType().GetProperty(mcrAttribute.RefFieldName).GetValue(l)); values.Add(new IdValues(id, value)); } return this.Ok(values); } catch (Exception ex) { Logger.Log(LogSeverity.Error, "ProcessController", ex); throw; } }
public void ApplyingSortingPreserveFilteringGottenFrom_MCR_ShowSearchReferenced() { var vm = GetNewSearchListVm(); Mock.Arrange(() => vm.ProcessSystemName).Returns("processName"); Mock.Arrange(() => vm.FilterString).Returns("filterString"); Mock.Arrange(() => vm.SortDescriptors).Returns(new SortList()); Mock.Arrange(() => vm.GroupColumn).Returns("groupColumn"); Mock.Arrange(() => vm.Columns).Returns(new ColumnCollection()); var quickFilterToolbarViewModel = new QuickFilterToolbarViewModel(); vm.QuickFilterToolbarVM = new Lazy<QuickFilterToolbarViewModel>(); Mock.Arrange(() => quickFilterToolbarViewModel.RefreshQuickFilters()).Returns(TaskHelper.GetEmptyTask); Mock.Arrange(() => vm.QuickFilterToolbarVM.Value).Returns(quickFilterToolbarViewModel); var filterListVM = new FilterListViewModel(); Mock.Arrange(() => vm.FilterListVM).Returns(filterListVM); var filterDescriptor = new FilterDescriptor(); Mock.Arrange(() => filterDescriptor.ToJSON()).Returns("expected"); var filterList = new MobileObservableCollection<IFilterDescriptor> { filterDescriptor }; Mock.NonPublic.Arrange(vm, "AddMandatoryFilter", ArgExpr.IsAny<MobileObservableCollection<IFilterDescriptor>>()).DoNothing(); Mock.Arrange(() => vm.TheFetchSearchListService.Refresh( Arg.AnyString, Arg.AnyInt, Arg.AnyInt, Arg.IsAny<SortList>(), Arg.AnyString, Arg.IsAny<ColumnCollection>(), Arg.IsAny<MobileObservableCollection<IFilterDescriptor>>(), Arg.AnyString, Arg.IsAny<Action<DataPortalResult<IInfoList>>>())).DoNothing(); vm.RefreshSearchList(filterList); Assert.AreEqual("expected", vm.AppliedFilter.TempFilterDefinitions); }
protected override MobileObservableCollection<SampleUnit> ConvertPrimitivesToSamples(List<List<SamplePrimitive>> primitives) { var newSource = new MobileObservableCollection<SampleUnit>(); var startValue = _minimum; for (var i = 0; i < primitives.Count; i++) { var data = primitives[i].Select(x => (double)x.SampleValue); var sampleValue = ProcessSubgroup(data); var subgroupSample = SpcManager.CreateSample(sampleValue, 0, i); subgroupSample.SetXLabelValue(startValue, LabelValueDataTypes.Number); subgroupSample.SetSampleSize(data.Count()); newSource.Add(subgroupSample); startValue += _stepWidth; } UpdateLevelsValues(primitives, newSource); return newSource; }
public IHttpActionResult GetSingleCrossRefValues(CrossRefLoadModel requestModel) { if (requestModel == null) { throw new ArgumentNullException("requestModel"); } try { DetailsModelContainer detailModel = ExtractModelFromRequest(requestModel); if (detailModel.Model == null) { return Json(new DetailsSaveResult { Success = false, Message = "Item not found. Was it deleted while you were editing it?" }); } string fullName = string.Join(".", detailModel.Model.GetFullPropertyPath(requestModel.FieldName)); PropertyInfo property = detailModel.Model.GetPropertyByFullName(fullName); IEditableRoot entity = detailModel.Model.GetAncestor(property); var filterList = new MobileObservableCollection<IFilterDescriptor>(); var crossRefFilters = DynamicTypeManager.GetCrossRefFilter(entity, requestModel.FieldName); if (crossRefFilters != null) { filterList.AddRange(crossRefFilters); } var items = DynamicTypeManager.GetCrossReferenceListPage(entity.ProcessName, requestModel.FieldName, entity.Id, null, 1000, filterExpression: FilterDescriptor.GetFilterExpression(filterList)); CrossRefFieldAttribute customAttribute = property.GetCustomAttribute<CrossRefFieldAttribute>(); IList<IdValues> values = new List<IdValues>(); foreach (var item in items) { var id = (int)item.GetType().GetProperty(Constants.IdColumnName).GetValue(item); var value = SafeTypeConverter.Convert<string>(item.GetType().GetProperty(customAttribute.RefFieldName).GetValue(item)); values.Add(new IdValues(id, value)); } return Ok(values); } catch (Exception ex) { Logger.Log(LogSeverity.Error, "ProcessController", ex); throw; } }
public IHttpActionResult GetCrossReferenceList(string process, int id, string field, int pageIndex, string filterString) { if (string.IsNullOrEmpty(process)) { return BadRequest("Process name is required."); } if (filterString.Contains(CReffFilterTemplate)) { filterString = filterString.Replace(CReffFilterTemplate, ""); } var totalRowCount = 0; int pageNumber = 0; try { var details = DynamicTypeManager.GetEditableRoot<IEditableRoot>(process, id); string fullName = string.Join(".", details.GetFullPropertyPath(field)); var property = details.GetPropertyByFullName(fullName); var entity = details.GetAncestor(property); var filterList = new MobileObservableCollection<IFilterDescriptor>(); var crossRefFilters = DynamicTypeManager.GetCrossRefFilter(entity, field); if (crossRefFilters != null) { filterList.AddRange(crossRefFilters); } var itemList = SearchUtils.GetCrossReferenceList(process, field, id, filterList, pageIndex, filterString); totalRowCount = (int)itemList.GetType().GetProperty("TotalRowCount").GetValue(itemList); pageNumber = (int)itemList.GetType().GetProperty("PageNumber").GetValue(itemList); var result = SingleCrossRefResult.Create(totalRowCount, pageNumber, itemList, property); return Ok(result); } catch (ProcessNotFoundException) { return NotFound(); } catch (Exception ex) { Logger.Log(LogSeverity.Error, LoggerSource, ex); return InternalServerError(); } }
public IHttpActionResult GetMultiCrossRefValues(string process, int id, string field, int pageIndex, bool isSkipFilter, string filterString, Filter filter) { if (string.IsNullOrEmpty(process)) { return BadRequest("Process name is required."); } if (filterString.Contains(CReffFilterTemplate)) { filterString = filterString.Replace(CReffFilterTemplate, ""); } var totalRowCount = 0; int pageNumber = 0; try { var details = DynamicTypeManager.GetEditableRoot<IEditableRoot>(process, id); string fullName = string.Join(".", details.GetFullPropertyPath(field)); PropertyInfo property = details.GetPropertyByFullName(fullName); var model = details.GetAncestor(property); MobileObservableCollection<IFilterDescriptor> filterList = new MobileObservableCollection<IFilterDescriptor>(); //if (!string.IsNullOrWhiteSpace(skipItemList) && skipItemList != "0") //{ // var skipItemFilter = new FilterDescriptor(Constants.IdColumnName, FilterOperator.NotIn, skipItemList.Split('|')); // filterList.Add(skipItemFilter); //} if (filter != null && !string.IsNullOrWhiteSpace(filter.FilterDefinition)) { filterList.Add(FilterDescriptor.FromJSON(filter.FilterDefinition)); } if (!isSkipFilter) { IEnumerable<IFilterDescriptor> crossRefFilters = DynamicTypeManager.GetCrossRefFilter(model, field); if (crossRefFilters != null) { filterList.AddRange(crossRefFilters); } } var itemList = DynamicTypeManager.GetCrossReferenceList(process, field, null, filterString, 10, pageIndex, FilterDescriptor.GetFilterExpression(filterList) ); totalRowCount = (int)itemList.GetType().GetProperty("TotalRowCount").GetValue(itemList); pageNumber = (int)itemList.GetType().GetProperty("PageNumber").GetValue(itemList); var result = MultiCrossRefResult.Create(itemList, property, totalRowCount, pageNumber); return this.Ok(result); } catch (Exception ex) { Logger.Log(LogSeverity.Error, "ProcessController", ex); throw; } }
public override MobileObservableCollection<SampleUnit> ComputeSubgroups(List<SamplePrimitive> data, int size, int points) { var result = new List<List<SamplePrimitive>>(); if (data != null && data.Any()) { if (!CanExecute(data[0].SampleType)) return new MobileObservableCollection<SampleUnit>(); } else return new MobileObservableCollection<SampleUnit>(); var standardStepCount = GetStepCount(data.Count); if (ParentPanel.RangeSteps == 0) ParentPanel.SetSilently(ChartPanel.RangeStepsProperty, standardStepCount); MinXValue = _minimum = Math.Floor(data.Min(x => (double)x.SampleValue)); var max = data.Max(x => (double) x.SampleValue); var integerMax = Math.Ceiling(max); if ((max % integerMax).Equals(0.0)) integerMax++; MaxXValue = _maximum = integerMax; XStep = _stepWidth = Math.Abs(_maximum - _minimum) / ParentPanel.RangeSteps; if (_stepWidth > 1 && ParentPanel.RangeSteps == standardStepCount) { _stepWidth = Convert.ToInt32(_stepWidth); ParentPanel.SetSilently(ChartPanel.ExponentProperty, 0); } else { var e = (int) Math.Ceiling(Math.Log10(1/_stepWidth)); if (ParentPanel.Exponent < e) ParentPanel.SetSilently(ChartPanel.ExponentProperty, e); else e = ParentPanel.Exponent; _stepWidth = Math.Round(_stepWidth, e); } var subgroup = new List<SamplePrimitive>(); var startValue = _minimum; var stopValue = _minimum + _stepWidth; foreach (var item in data.OrderBy(x => x.SampleValue)) { if ((double)item.SampleValue >= startValue & (double)item.SampleValue < stopValue) subgroup.Add(item); else { while ((double)item.SampleValue >= stopValue) { result.Add(subgroup.ToList()); subgroup = new List<SamplePrimitive>(); startValue = stopValue; stopValue += _stepWidth; } subgroup.Add(item); } } result.Add(subgroup.ToList()); OriginalData = new MobileObservableCollection<ElementarySampleInfo>(); foreach (var samplePrimitive in data) { OriginalData.Add(DataPortal.Fetch<ElementarySampleInfo>(samplePrimitive)); } return ConvertPrimitivesToSamples(result); }
private IFilterDescriptor PrepareFilter() { var list = new MobileObservableCollection<IFilterDescriptor>(); foreach (var filter in _filterValues) { list.Add(new FilterDescriptor(filter.Key, FilterOperator.Contains, filter.Value)); } return list.Any() ? new FilterDescriptor(LogicalOperators.And, list) : null; }
protected MobileObservableCollection<IFilterDescriptor> GetFilter() { var mobileList = new MobileObservableCollection<IFilterDescriptor>(); if (SelectedProcess != Constants.BasePersonProcessName) { mobileList.Add(new FilterDescriptor(LogicalOperators.And, new MobileObservableCollection<IFilterDescriptor> { new FilterDescriptor(Constants.DerivedProcessColumnName, FilterOperator.StartsWith, SelectedProcess + "|") })); } if (!string.IsNullOrEmpty(FilterString)) { mobileList.Add(new FilterDescriptor(LogicalOperators.Or, new MobileObservableCollection<IFilterDescriptor> { new FilterDescriptor("FirstName", FilterOperator.Contains, FilterString), new FilterDescriptor("LastName", FilterOperator.Contains, FilterString), new FilterDescriptor("Email", FilterOperator.Contains, FilterString), })); } return mobileList; }
private void RefreshAvailableItems() { IsBusy = true; var mbList = new MobileObservableCollection<IFilterDescriptor>(); if (ItemsFilter != null) mbList.Add(ItemsFilter); if (!string.IsNullOrEmpty(FilterString) && DisplayFields.Count > 0) { var containsFilters = new MobileObservableCollection<IFilterDescriptor>(); foreach (var fields in DisplayFields.Select(prop => new FilterDescriptor(prop, FilterOperator.Contains, FilterString))) containsFilters.Add(fields); if (containsFilters.Count > 0) mbList.Add(new FilterDescriptor(LogicalOperators.Or, containsFilters)); } var filter = mbList.Count > 0 ? FilterDescriptor.GetFilterExpression(mbList) : string.Empty; DynamicTypeManager.BeginGetCrossReferenceList( ProcessName, FieldName, (o, r) => { IsBusy = false; if (r.Error != null) { PopupFactory.NotifyFailure(r.Error); return; } AvailableItems = r.Object; UpdateSelectedItems(); var itemCount = AvailableItems.GetType().GetProperty(Constants.TotalRowCountPropertyName); if (itemCount != null) ItemCount = (int)itemCount.GetValue(AvailableItems, BindingFlags.Instance, null, null, null); var pageIndexProperty = AvailableItems.GetType().GetProperty(Constants.PageNumberPropertyName); if (pageIndexProperty != null) _currentPageNumber = (int)pageIndexProperty.GetValue(AvailableItems, BindingFlags.Instance, null, null, null); }, pageNumber: CurrentPageNumber, filterExpression: filter, sortDescriptors: SortDescriptors); }
private void ResolveLimitsCalculationMethod(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples) { var allRenderedCharts = ParentPanel.Charts.Select(x => x.ChartType); if (allRenderedCharts.Contains(ChartTypesEnum.RChart)) { var rValues = new List<double>(); for (var i = 0; i < primitives.Count; i++) rValues.Add(primitives[i].Select(x => (double)x.SampleValue).Range()); var rBar = rValues.Any() ? rValues.Average() : 0; Mean = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0; var a2 = StatisticConstants.A2(ParentPanel.SubgroupSize); UCL = Math.Round(Mean + rBar * a2, 2); LCL = Math.Round(Mean - rBar * a2, 2); } else if (allRenderedCharts.Contains(ChartTypesEnum.StDevChart)) { var stDevList = new List<double>(); for (var i = 0; i < primitives.Count; i++) { var data = primitives[i].Select(x => x.SampleValue).Cast<double>(); var calculatedValue = data != null && data.Any() ? Math.Round(data.StdDev(), 3) : 0; stDevList.Add(calculatedValue); } var stdDevAv = stDevList.Any() ? stDevList.Average() : 0; Mean = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0; var a3 = StatisticConstants.A3(ParentPanel.SubgroupSize); UCL = Math.Round(Mean + stdDevAv * a3, 2); LCL = Math.Round(Mean - stdDevAv * a3, 2); } else if (allRenderedCharts.Contains(ChartTypesEnum.XMRChart)) { var mrList = new List<double>(); var list = primitives.SelectMany(x => x.Select(y => y.SampleValue)).Cast<double>().ToList(); for (var i = 0; i < list.Count; i++) { if (i >= ParentPanel.SubgroupSize - 1) { var data = list.GetRange(i - (ParentPanel.SubgroupSize - 1), ParentPanel.SubgroupSize); var sampleValue = data != null && data.Any() ? (double?)Math.Abs(data.Max() - data.Min()) : null; if (sampleValue.HasValue) mrList.Add(sampleValue.Value); } } var mrAv = mrList.Any() ? mrList.Average() : 0; Mean = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0; var d2 = StatisticConstants.d2(ParentPanel.SubgroupSize); UCL = Math.Round(Mean + 3 * (mrAv / d2), 2); LCL = Math.Round(Mean - 3 * (mrAv / d2), 2); } }
private void AddMandatoryFilter(MobileObservableCollection<IFilterDescriptor> filterList, string processSystemName) { var filterInfoType = DynamicTypeManager.GetFilterInfoType(processSystemName); if (filterInfoType != null) { IFilter[] filters = (IFilter[])filterInfoType.GetProperty("FilterList", BindingFlags.Static | BindingFlags.Public).GetValue(null, null); if (filters != null) { IList<int> identityRoles = ((Library.Security.MQ1Identity)ApplicationContext.User.Identity).RolesId; if (identityRoles == null || identityRoles.Count == 0) return; var mandatoryFilters = filters.Where(x => !string.IsNullOrEmpty(x.RoleIds)); foreach (IFilter filter in mandatoryFilters) { var filterRoles = filter.RoleIds.Split(',').Select(int.Parse).ToList(); if (filterRoles.Contains(Constants.AllRolesId) || identityRoles.Intersect(filterRoles).Any()) { IFilterDescriptor filterDescriptor = (FilterDescriptor)FilterDescriptor.FromJSON(filter.Definition); var filterValue = filterDescriptor.Value as FilterValue; if (filterValue != null && filterValue.Type == FilterValueType.Udp) filterValue.ProvidedValue = filterValue.DefaultValue; filterDescriptor.ReplacePredefinedValues(null); if (!filterList.Any(f => f.FilterGuid.Equals(filterDescriptor.FilterGuid))) filterList.Add(filterDescriptor); } } } } }
protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples) { var mrList = new List<double>(); var list = OriginalData.Select(x => Convert.ToDouble(x.YValue)).ToList(); const int subgroupSize = 2; for (var i = 0; i < list.Count; i++) { if (i >= subgroupSize - 1) { var data = list.GetRange(i - (subgroupSize - 1), subgroupSize); var sampleValue = data.Any() ? Math.Abs(data.Max() - data.Min()) : 0.0; mrList.Add(sampleValue); } } var mrAv = mrList.Any() ? mrList.Average() : 0.0; Mean = list.Any() ? Math.Round(list.Average(), 3) : 0.0; var d2 = StatisticConstants.d2(subgroupSize); UCL = Math.Round(Mean + 3 * (mrAv / d2), 3); LCL = Math.Round(Mean - 3 * (mrAv / d2), 3); Sigma = Math.Round(mrAv / d2, 3); UpdateLevelValues(samples); }