Exemplo n.º 1
0
 /// <summary>
 /// Sets the client population flag for a dropdown filter. The dropdown will be preprocessed on populated on the client
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public static FilterLeafNode SetClientDropdown(this FilterLeafNode node)
 {
     node.IsDropdownClientPopulated = true;
     return(node);
 }
Exemplo n.º 2
0
 /// <summary>
 /// If this filter node represents a dropdown input element this flag sets the filter node to be
 /// prepopulated on the server
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public static FilterLeafNode SetServerDropdown(this FilterLeafNode node)
 {
     node.IsDropdownClientPopulated = false;
     return(node);
 }
Exemplo n.º 3
0
 /// <summary>
 /// Set the boolean comparison merger to Or, and return the node to provide chainability
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public static FilterLeafNode SetOr(this FilterLeafNode node)
 {
     node.Operator = BooleanOperator.Or;
     return(node);
 }
Exemplo n.º 4
0
 /// <summary>
 /// Set the filter data type returning the node providing chainability during configuration
 /// </summary>
 /// <param name="node"></param>
 /// <param name="dataType"></param>
 /// <returns></returns>
 public static FilterLeafNode SetDataType(this FilterLeafNode node, FilterDataType dataType)
 {
     node.FilterDataType = dataType;
     return(node);
 }
Exemplo n.º 5
0
 /// <summary>
 /// Make the filter node checks case Insensitive returning the node to provide chainability
 /// during configuration
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public static FilterLeafNode SetCaseInsensitive(this FilterLeafNode node)
 {
     node.CaseSensitivity = FilterCaseSensitivity.CaseInsensitive;
     return(node);
 }
        /// <summary>
        /// Return a dynamic filter object from the Dropdown filter leaf node
        /// </summary>
        /// <param name="filterLeafNode"></param>
        /// <returns>Object of type T that wraps the Dynamic Filter</returns>
        public string GetDropdownDynamicFilter(FilterLeafNode filterLeafNode)
        {
            var dynamicFilter = "";

            // try and validate the filter leaf node value
            object dropdownValue;

            var innerDataType = InnerDataFilterType.String;

            // switch on the dropdown value type
            switch (filterLeafNode.DropdownValueType)
            {
            case DropdownValueDataType.String:
                dropdownValue = filterLeafNode.Value as string;
                break;

            case DropdownValueDataType.Integer:
                var parsedValue = GetIntegerFilterValue(filterLeafNode);
                innerDataType = InnerDataFilterType.Number;

                // for integer dropdowns if the value is -1 we are not going to continue
                // with the filtering

                if (parsedValue == -1)
                {
                    return(dynamicFilter);
                }

                dropdownValue = parsedValue;
                break;

            case DropdownValueDataType.Boolean:

                // as the boolean values are to be set as numbers on the dropdowns
                // we are first goiung to get the parsed value
                var parsedBooleanValue = GetIntegerFilterValue(filterLeafNode);

                if (parsedBooleanValue == -1)
                {
                    return(dynamicFilter);
                }

                // Set the dropdown boolean value
                dropdownValue = parsedBooleanValue == 1;

                break;

            case DropdownValueDataType.Guid:
                Guid parsedGuid;
                Guid.TryParse(filterLeafNode.Value.ToString(), out parsedGuid);

                dropdownValue = parsedGuid;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            // Build the actual dynamic filter string based on the filter node target
            var target = filterLeafNode.Target;

            dynamicFilter = string.Format("{0} {1} {2}", target, GetOperatorFromOperatorType(filterLeafNode.OperationType, innerDataType), dropdownValue);

            // return the dynamic filter
            return(dynamicFilter);
        }