public StandardFunctionParameterProfile(
     string name, Type type, bool isRequired, BaseValueProvider fallbackValueProvider,
     WidgetFunctionProvider widgetFunctionProvider, string customResourceHandleNamespace)
     : this(name, type, isRequired, fallbackValueProvider, widgetFunctionProvider)
 {
     this.CustomResourceHandleNamespace = customResourceHandleNamespace;
 }
 public StandardFunctionParameterProfile(
     string name, Type type, bool isRequired, BaseValueProvider fallbackValueProvider,
     WidgetFunctionProvider widgetFunctionProvider, string customResourceHandleNamespace)
     : this(name,type,isRequired,fallbackValueProvider, widgetFunctionProvider)
 {
     this.CustomResourceHandleNamespace = customResourceHandleNamespace;
 }
Пример #3
0
 /// <exclude />
 public ParameterProfile(
     string name, Type type, bool isRequired, BaseValueProvider fallbackValueProvider, WidgetFunctionProvider widgetFunctionProvider,
     Dictionary<string,object> widgetFunctionRuntimeParameters, string label, HelpDefinition helpDefinition)
     : this(name, type, isRequired, fallbackValueProvider, widgetFunctionProvider, label, helpDefinition)
 {
     _widgetFunctionRuntimeParameters = widgetFunctionRuntimeParameters;
 }
Пример #4
0
        /// <exclude />
        public ParameterProfile(
            string name,
            Type type,
            bool isRequired,
            BaseValueProvider fallbackValueProvider,
            WidgetFunctionProvider widgetFunctionProvider,
            string label,
            HelpDefinition helpDefinition,
            bool hideInSimpleView)
        {
            Verify.ArgumentNotNull(name, "name");
            Verify.ArgumentNotNull(type, "type");
            Verify.ArgumentNotNull(fallbackValueProvider, "fallbackValueProvider");
            Verify.ArgumentCondition(!label.IsNullOrEmpty(), "label", "label may not be null or an empty string");
            Verify.ArgumentNotNull(helpDefinition, "helpDefinition");

            this.Name = name;
            this.Type = type;
            this.IsRequired = isRequired && (!type.IsGenericType || type.GetGenericTypeDefinition() != typeof(NullableDataReference<>));
            this.FallbackValueProvider = fallbackValueProvider;
            _widgetFunctionProvider = widgetFunctionProvider;
            this.Label = label;
            this.HelpDefinition = helpDefinition;
            this.HideInSimpleView = hideInSimpleView;
        }
 public StandardFunctionParameterProfile(
     string name, Type type, bool isRequired, BaseValueProvider fallbackValueProvider,
     WidgetFunctionProvider widgetFunctionProvider)
 {
     this.Name = name;
     this.Type = type;
     this.IsRequired = isRequired;
     this.FallbackValueProvider = fallbackValueProvider;
     this.WidgetFunctionProvider = widgetFunctionProvider;
 }
 public StandardFunctionParameterProfile(
     string name, Type type, bool isRequired, BaseValueProvider fallbackValueProvider,
     WidgetFunctionProvider widgetFunctionProvider)
 {
     this.Name                   = name;
     this.Type                   = type;
     this.IsRequired             = isRequired;
     this.FallbackValueProvider  = fallbackValueProvider;
     this.WidgetFunctionProvider = widgetFunctionProvider;
 }
            protected override async Task <IValueProvider> BuildAsync(TAttribute attrResolved, ValueBindingContext context)
            {
                // set FileAccess beofre calling into the converter. Don't want converters to need to deal with a null FileAccess.
                SetFileAccessFromAttribute(attrResolved, _targetFileAccess);

                var builder = this._parent._builder;
                Func <Task <Stream> > buildStream = async() => (Stream) await builder(attrResolved, null, context);

                BaseValueProvider valueProvider = (BaseValueProvider)Activator.CreateInstance(_typeValueProvider, _converter);
                var invokeString = this.Cloner.GetInvokeString(attrResolved);
                await valueProvider.InitAsync(buildStream, _userType, _parent, invokeString);

                return(valueProvider);
            }
        public MvcFunctionBuilder AddParameter(string name, Type type = null, bool?isRequired = null, BaseValueProvider defaultValueProvider = null, string label = null, string helpText = null, WidgetFunctionProvider widgetFunctionProvider = null, bool hideInSimpleView = false)
        {
            Verify.ArgumentNotNullOrEmpty(name, "name");

            var info          = _function.GetParameterInformation().FirstOrDefault(p => string.Equals(p.Name, name, StringComparison.OrdinalIgnoreCase));
            var reflectedInfo = info != null?GetParameterDefaults(info) : null;


            if (type == null)
            {
                Verify.IsNotNull(reflectedInfo, "Failed to find the type of the parameter '{0}' through reflection", name);

                type = reflectedInfo.Type;
            }

            if (label == null)
            {
                label = name;
            }

            if (helpText == null)
            {
                helpText = String.Empty;
            }

            bool isRequired2 = isRequired ?? reflectedInfo?.IsRequired ?? false;

            if (defaultValueProvider == null)
            {
                defaultValueProvider = reflectedInfo != null
                    ? (BaseValueProvider) new ConstantValueProvider(reflectedInfo.DefaultValue)
                    : new NoValueValueProvider();
            }

            widgetFunctionProvider = widgetFunctionProvider ?? StandardWidgetFunctions.GetDefaultWidgetFunctionProviderByType(type, isRequired2);

            _function.AddParameter(new ParameterProfile(name, type, isRequired2, defaultValueProvider, widgetFunctionProvider,
                                                        label, new HelpDefinition(helpText), hideInSimpleView));
            return(this);
        }
Пример #9
0
 /// <summary>Construct an instance.</summary>
 /// <param name="type">The condition type.</param>
 /// <param name="value">Get the current value.</param>
 /// <param name="saveReader">Handles reading info from the current save.</param>
 /// <param name="mayReturnMultipleValues">Whether the root may contain multiple values.</param>
 /// <param name="allowedValues">The allowed values (or <c>null</c> if any value is allowed).</param>
 public PerPlayerValueProvider(ConditionType type, Func <Farmer, string?> value, TokenSaveReader saveReader, bool mayReturnMultipleValues = false, IEnumerable <string>?allowedValues = null)
     : this(type, player => BaseValueProvider.WrapOptionalValue(value(player)), saveReader, mayReturnMultipleValues, allowedValues)
 {
 }
        //public CacheLevel Cacheability
        //{
        //	get { return CacheLevel.notCacheable; }
        //}

        /// <summary>
        /// Get Property out of NameValueCollection
        /// </summary>
        /// <param name="strPropertyName"></param>
        /// <param name="strFormat"></param>
        /// <param name="formatProvider"></param>
        /// <param name="AccessingUser"></param>
        /// <param name="AccessLevel"></param>
        /// <param name="PropertyNotFound"></param>
        /// <returns></returns>
        public string GetProperty(string strPropertyName, string strFormat, CultureInfo formatProvider, /*UserInfo AccessingUser,*/ /*Scope AccessLevel,*/ ref bool PropertyNotFound)
        {
            // Return empty string if Entity is null
            if (_entity == null)
            {
                return(string.Empty);
            }


            // 2015-04-25 - 2dm - must discuss w/2rm
            // Looks like very duplicate code! Try this instead
            // return _entity.GetEntityValue(strPropertyName);

            var outputFormat = strFormat == string.Empty ? "g" : strFormat;

            bool propertyNotFound = false;

            // 2015-05-04 2dm added functionality for repeater-infos
            string repeaterHelper = null;

            if (RepeaterIndex > -1 && strPropertyName.StartsWith(RepeaterSubToken + ":", StringComparison.OrdinalIgnoreCase))
            {
                switch (strPropertyName.Substring(RepeaterSubToken.Length + 1).ToLower())
                {
                case "index":
                    repeaterHelper = (RepeaterIndex).ToString();
                    break;

                case "index1":
                    repeaterHelper = (RepeaterIndex + 1).ToString();
                    break;

                case "alternator2":
                    repeaterHelper = (RepeaterIndex % 2).ToString();
                    break;

                case "alternator3":
                    repeaterHelper = (RepeaterIndex % 3).ToString();
                    break;

                case "alternator4":
                    repeaterHelper = (RepeaterIndex % 4).ToString();
                    break;

                case "alternator5":
                    repeaterHelper = (RepeaterIndex % 5).ToString();
                    break;

                case "isfirst":
                    repeaterHelper = (RepeaterIndex == 0) ? "First" : "";
                    break;

                case "islast":
                    repeaterHelper = (RepeaterIndex == RepeaterTotal - 1) ? "Last" : "";
                    break;

                case "count":
                    repeaterHelper = RepeaterTotal.ToString();
                    break;
                }
            }

            var valueObject = repeaterHelper ?? _entity.GetEntityValue(strPropertyName, out propertyNotFound);

            if (!propertyNotFound && valueObject != null)
            {
                switch (valueObject.GetType().Name)
                {
                case "String":
                    return(BaseValueProvider.FormatString((string)valueObject, strFormat));

                case "Boolean":
                    return(((bool)valueObject).ToString(formatProvider).ToLower());

                case "DateTime":
                case "Double":
                case "Single":
                case "Int32":
                case "Int64":
                case "Decimal":
                    return(((IFormattable)valueObject).ToString(outputFormat, formatProvider));

                default:
                    return(BaseValueProvider.FormatString(valueObject.ToString(), strFormat));
                }
            }

            #region Check for Navigation-Property (e.g. Manager:Name)
            if (strPropertyName.Contains(':'))
            {
                var propertyMatch = Regex.Match(strPropertyName, "([a-z]+):([a-z]+)", RegexOptions.IgnoreCase);
                if (propertyMatch.Success)
                {
                    valueObject = _entity.GetEntityValue(propertyMatch.Groups[1].Value, out propertyNotFound);
                    if (!propertyNotFound && valueObject != null)
                    {
                        #region Handle Entity-Field (List of DynamicEntity)
                        var list = valueObject as List <DynamicEntity>;

                        var entity = list != null?list.FirstOrDefault() : null;

                        if (entity == null)
                        {
                            entity = valueObject as DynamicEntity;
                        }

                        if (entity != null)
                        {
                            return(new DynamicEntityPropertyAccess(null, entity).GetProperty(propertyMatch.Groups[2].Value, string.Empty, formatProvider, /*AccessingUser,*/ /*AccessLevel,*/ ref propertyNotFound));
                        }

                        #endregion

                        return(string.Empty);
                    }
                }
            }
            #endregion

            PropertyNotFound = true;
            return(string.Empty);
        }
Пример #11
0
 /// <exclude />
 public ParameterProfile(string name, Type type, bool isRequired, BaseValueProvider fallbackValueProvider, WidgetFunctionProvider widgetFunctionProvider, string label, HelpDefinition helpDefinition)
     : this(name, type, isRequired, fallbackValueProvider, widgetFunctionProvider, label, helpDefinition, false)
 {
 }