コード例 #1
0
ファイル: XMRChart.cs プロジェクト: mparsin/Elements
        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;
        }
コード例 #2
0
ファイル: NPChart.cs プロジェクト: mparsin/Elements
        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;
        }
コード例 #3
0
ファイル: RunChart.cs プロジェクト: mparsin/Elements
        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;
        }
コード例 #4
0
        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;
        }
コード例 #5
0
ファイル: ProcessController.cs プロジェクト: mparsin/Elements
        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);
                        }
                    }
                }
            }
        }
コード例 #6
0
ファイル: ProcessController.cs プロジェクト: mparsin/Elements
        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;
            }
        }
コード例 #7
0
ファイル: HistogramChart.cs プロジェクト: mparsin/Elements
        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);
        }
コード例 #8
0
ファイル: HistogramChart.cs プロジェクト: mparsin/Elements
        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;
            }
        }
コード例 #9
0
ファイル: RecentEntryList.cs プロジェクト: mparsin/Elements
        /// <summary>
        /// Updates recentEntries list sice last user login (remove deleted processes & update processes names if changed)
        /// </summary>
        private void UpdateProcessesStatus()
        {
            var idss = new MobileObservableCollection<IdCriteria>();
            foreach (var pin in PinnedList.Select(p => p.Id).Union(UnpinnedList.Select(u => u.Id)))
                idss.Add(new IdCriteria(pin));

            if (idss.Count != 0 && !string.IsNullOrEmpty(FileName))
            {
                ProcessesDisponibilityRetriver.GetProcessesDisponibility(
                    idss,
                    (sender, result) =>
                        {
                            if (result.Error != null)
                                return;

                            var processes = result.Object.ProcessDisponibilityList;

                            UpdateList(processes, PinnedList);
                            UpdateList(processes, UnpinnedList);
                            Save();
                        });
            }
        }
コード例 #10
0
        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;
        }
コード例 #11
0
ファイル: ResultFieldHelper.cs プロジェクト: mparsin/Elements
/// <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;
        }
コード例 #12
0
ファイル: FilterExtensions.cs プロジェクト: mparsin/Elements
        /// <summary>
        /// To the filter descriptor.
        /// </summary>
        /// <param name="filter">The filter.</param>
        /// <returns>Veyron.SharedTypes.IFilterDescriptor.</returns>
        /// <exception cref="System.ArgumentOutOfRangeException">Unsupported filter type:  + filter.GetType()</exception>
        public static Veyron.SharedTypes.IFilterDescriptor ToFilterDescriptor(this IFilterDescriptor filter)
        {
            var filterDescriptor = filter as FilterDescriptor;
            if (filterDescriptor != null)
            {
                // If FilterDescriptor.Member changes, clear system value because it can be invalid.
                if (DynamicDataFilterBehavior.GetSystemValueMember(filterDescriptor) != filterDescriptor.Member)
                    DynamicDataFilterBehavior.SetSystemValue(filterDescriptor, null);

                var value = DynamicDataFilterBehavior.GetSystemValue(filterDescriptor) ?? filterDescriptor.Value;

                if (value == OperatorValueFilterDescriptorBase.UnsetValue)
                    value = null;

                return new Veyron.SharedTypes.FilterDescriptor(filterDescriptor.Member, filterDescriptor.Operator.ToFilterOperator(), value, filterDescriptor.MemberType);
            }

            var compositeFilter = filter as CompositeFilterDescriptor;
            if (compositeFilter != null)
            {
                var descriptors = new MobileObservableCollection<Veyron.SharedTypes.IFilterDescriptor>();
                foreach (var descriptor in compositeFilter.FilterDescriptors.Select(subfilter => subfilter.ToFilterDescriptor()))
                    descriptors.Add(descriptor);

                return new Veyron.SharedTypes.FilterDescriptor(compositeFilter.LogicalOperator.ToLogicalOperator(), descriptors);
            }

            if (filter != null)
                throw new ArgumentOutOfRangeException("Unsupported filter type: " + filter.GetType());

            return null;
        }
コード例 #13
0
ファイル: FilterExtensions.cs プロジェクト: mparsin/Elements
        /// <summary>
        /// To the filter descriptor.
        /// </summary>
        /// <param name="filter">The filter.</param>
        /// <param name="filterGuid">The filter unique identifier.</param>
        /// <returns>Veyron.SharedTypes.IFilterDescriptor.</returns>
        public static Veyron.SharedTypes.IFilterDescriptor ToFilterDescriptor(this CompositeFilterDescriptorCollection filter, Guid filterGuid)
        {
            Veyron.SharedTypes.IFilterDescriptor result = null;

            if (filter != null && filter.Count > 1)
            {
                var descriptors = new MobileObservableCollection<Veyron.SharedTypes.IFilterDescriptor>();
                foreach (var descriptor in filter.Select(subfilter => ToFilterDescriptor((IFilterDescriptor)subfilter)))
                    descriptors.Add(descriptor);

                result = new Veyron.SharedTypes.FilterDescriptor(filter.LogicalOperator.ToLogicalOperator(), descriptors);
                result.FilterGuid = filterGuid == Guid.Empty ? Guid.NewGuid() : filterGuid;
            }
            else
            {
                if (filter != null && filter.Count == 1)
                {
                    result = filter[0].ToFilterDescriptor();
                    result.FilterGuid = filterGuid == Guid.Empty ? Guid.NewGuid() : filterGuid;
                }
            }

            return result;
        }
コード例 #14
0
ファイル: FilterExtensions.cs プロジェクト: mparsin/Elements
        /// <summary>
        /// To the filter descriptor.
        /// </summary>
        /// <param name="filter">The filter.</param>
        /// <returns>Veyron.SharedTypes.IFilterDescriptor.</returns>
        public static Veyron.SharedTypes.IFilterDescriptor ToFilterDescriptor(this CompositeFilterDescriptorCollection filter)
        {
            Veyron.SharedTypes.IFilterDescriptor result = null;

            if (filter != null && filter.Count > 1)
            {
                var descriptors = new MobileObservableCollection<Veyron.SharedTypes.IFilterDescriptor>();
                foreach (var descriptor in filter.Select(ToFilterDescriptor))
                    descriptors.Add(descriptor);

                result = new Veyron.SharedTypes.FilterDescriptor(filter.LogicalOperator.ToLogicalOperator(), descriptors);
            }
            else
            {
                if (filter != null && filter.Count == 1)
                    result = filter[0].ToFilterDescriptor();
            }

            return result;
        }
コード例 #15
0
        private MobileObservableCollection<IFilterDescriptor> GetFilter()
        {
            var mobileList = new MobileObservableCollection<IFilterDescriptor>();

            if (!string.IsNullOrEmpty(_contactSearchString))
            {
                var filterList = new MobileObservableCollection<IFilterDescriptor>();

                foreach (var column in _columns)
                {
                    filterList.Add(new FilterDescriptor(column.ColumnName, FilterOperator.Contains, _contactSearchString));
                }

                mobileList.Add(new FilterDescriptor(LogicalOperators.Or, filterList));
            }

            return mobileList;
        }
コード例 #16
0
        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);
        }
コード例 #17
0
        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));
        }
コード例 #18
0
ファイル: HistogramChart.cs プロジェクト: mparsin/Elements
        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;
        }