Exemplo n.º 1
0
        private List <MAttrType> GetComplimentaryAttrTypes(AttributeNameTokenBase token)
        {
            if (token is StringAttributeNameToken)
            {
                return new List <MAttrType> {
                           MAttrType.String, MAttrType.Numerator
                }
            }
            ;

            if (token is DateAttributeNameToken)
            {
                return new List <MAttrType> {
                           MAttrType.DateTime
                }
            }
            ;

            if (token is FloatNumberAttributeNameToken)
            {
                return new List <MAttrType> {
                           MAttrType.Double, MAttrType.Decimal
                }
            }
            ;

            if (token is IntegerNumberAttributeNameToken)
            {
                return new List <MAttrType> {
                           MAttrType.Integer
                }
            }
            ;

            if (token is UserStateAttributeNameToken)
            {
                return new List <MAttrType> {
                           MAttrType.UserState
                }
            }
            ;

            if (token is OrgUnitAttributeNameToken)
            {
                return new List <MAttrType> {
                           MAttrType.OrgUnit
                }
            }
            ;

            return(new List <MAttrType>());
        }
Exemplo n.º 2
0
        protected List <PresetItem> GetValidAttributesList(AttributeNameTokenBase target)
        {
            var specifiedTypesNames = target.Context[nameof(TypeArgumentToken)].Value as List <string> ?? new List <string>();

            specifiedTypesNames = specifiedTypesNames.Where(x => !string.IsNullOrEmpty(x)).ToList();

            var types = GetSearchBrowsableTypes()
                        .OrderBy(x => x.IsDeleted)
                        .ThenBy(x => x.Sort)
                        .Where(x => IsUserType(x) && (!specifiedTypesNames.Any() || specifiedTypesNames.Contains(x.Id.ToString())))
                        .ToList();

            var complimentaryTypes = GetComplimentaryAttrTypes(target);

            var validAttributesList = BuildItemsIntersection(
                sourceElements: types,
                intersect: specifiedTypesNames.Count > 1,
                buildItemsForElement: type =>
            {
                var currentTypePresetItems = new Dictionary <string, PresetItem>();

                var typeAttrs = type.Attributes.Where(x => complimentaryTypes.Contains(x.Type)).OrderBy(x => x.DisplaySortOrder);

                foreach (var nAttribute in typeAttrs)
                {
                    var key        = $"{nAttribute.Name}\\{nAttribute.Title}\\{AttrTypeToString(nAttribute.Type)}";
                    var hint       = AttrTypeToString(nAttribute.Type);
                    var tooltip    = specifiedTypesNames.Count == 1 ? null : GetTooltipEntryForType(type);
                    var presetItem = new PresetItem(nAttribute.Title, nAttribute.Title, nAttribute.Name, hint, true, type.IsDeleted)
                    {
                        Tooltip = tooltip != null ? $"Belongs to following types: {tooltip}" : null,
                        Sort    = nAttribute.DisplaySortOrder + type.Sort * 100 + (type.IsDeleted ? 10000 : 0)
                    };

                    currentTypePresetItems.Add(key, presetItem);
                }

                return(currentTypePresetItems);
            },
                onItemDuplicated: (presetItem, type) =>
            {
                presetItem.Tooltip += GetTooltipEntryForType(type);
            });

            return(validAttributesList);
        }