/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }