public DataFilterParameter(string name, string caption, Type type, string defaultValue, FilterConditionType conditionType) { this.name = name; this.caption = caption; this.type = type; this.defaultValue = defaultValue; this.conditionType = conditionType; }
public XPathTemplateParameter(string name, string caption, string type, string defaultValue, FilterConditionType conditionType) { this.name = name; this.caption = caption; this.type = type; this.defaultValue = defaultValue; this.conditionType = conditionType; }
public DataFilterCondition( DataFilterParameter parameter, FilterConditionType conditionType, string conditionOperator, string operand) : this(parameter, conditionType, conditionOperator, operand, null) { }
public DataFilterCondition( DataFilterParameter parameter, FilterConditionType conditionType, string conditionOperator, string leftOperand, string rightOperand) { this.parameter = parameter; this.conditionType = conditionType; this.conditionOperator = conditionOperator; this.leftOperand = leftOperand; this.rightOperand = rightOperand; }
public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is FilterConditionType) { FilterConditionType queryOperaterType = (FilterConditionType)value; if (queryOperaterType == FilterConditionType.Custom) { return("Custom (Regex)"); } return(queryOperaterType.ToString()); } else { return(Binding.DoNothing); } }
public FilterCondition(Int64 fieldId, String fieldName, DataType dataType, Object data, FilterConditionType conditionType, FilterSelector selector) { this.field_id = fieldId; this.field_name = fieldName; this.condition_type = conditionType; this.selector_type = selector; this.data_type = dataType; try { switch (this.data_type) { case Filters.DataType.DateTime: try { this.data = (DateTime)data; } catch { this.data = DateTime.Parse(data.ToString()); } break; case Filters.DataType.Numeric: try { this.data = (Int64)data; } catch { this.data = Int64.Parse(data.ToString()); } break; default: this.data = (String)data; break; } } catch (Exception ex) { throw new Exception("Invalid cast of data '" + data + "' to type '" + dataType.ToString() + "'", ex); } switch (this.data_type) { case Filters.DataType.DateTime: switch (this.condition_type) { case FilterConditionType.NotEqual: case FilterConditionType.Greater: case FilterConditionType.Less: case FilterConditionType.GreaterOrEqual: case FilterConditionType.LessOrEqual: case FilterConditionType.Equal: break; default: throw new Exception("Invalid condition (" + this.condition_type.ToString() + ") of data type (" + this.data_type.ToString() + ")"); break; } break; case Filters.DataType.Numeric: switch (condition_type) { case FilterConditionType.Equal: case FilterConditionType.NotEqual: case FilterConditionType.Greater: case FilterConditionType.Less: case FilterConditionType.GreaterOrEqual: case FilterConditionType.LessOrEqual: break; default: throw new Exception("Invalid condition (" + this.condition_type.ToString() + ") of data type (" + this.data_type.ToString() + ")"); break; } break; default: switch (condition_type) { case FilterConditionType.Contains: case FilterConditionType.EndWith: case FilterConditionType.NotContains: case FilterConditionType.NotEqual: case FilterConditionType.StartWith: case FilterConditionType.Equal: break; default: throw new Exception("Invalid condition (" + this.condition_type.ToString() + ") of data type (" + this.data_type.ToString() + ")"); break; } break; } }
public void AddFilter(Int64 fieldId, String fieldName, DataType dataType, String text, FilterConditionType conditionType, FilterSelector selector) { AddFilter(new FilterCondition(fieldId, fieldName, dataType, text, conditionType, selector)); }
public void AddCondition(String groupId, String groupSelector, Int64 fieldId, String fieldName, String dataType, String text, String conditionType, String selector) { FilterSelector gs = FilterSelector.OR; switch (groupSelector.ToLower()) { case "and": gs = FilterSelector.AND; break; case "or": gs = FilterSelector.OR; break; } FilterSelector s = FilterSelector.OR; switch (selector.ToLower()) { case "and": s = FilterSelector.AND; break; case "or": s = FilterSelector.OR; break; } FilterConditionType c = FilterConditionType.Equal; switch (conditionType.ToLower()) { case "contains": c = FilterConditionType.Contains; break; case "endwith": c = FilterConditionType.EndWith; break; case "equal": c = FilterConditionType.Equal; break; case "notcontains": c = FilterConditionType.NotContains; break; case "notequal": c = FilterConditionType.NotEqual; break; case "startwith": c = FilterConditionType.StartWith; break; case "greater": c = FilterConditionType.Greater; break; case "less": c = FilterConditionType.Less; break; case "greaterorequal": c = FilterConditionType.GreaterOrEqual; break; case "lessorequal": c = FilterConditionType.LessOrEqual; break; } DataType dt = DataType.Text; switch (dataType.ToLower()) { case "datetime": case "date": dt = DataType.DateTime; break; case "numeric": dt = DataType.Numeric; break; default: dt = DataType.Text; break; } AddCondition(groupId, gs, fieldId, fieldName, dt, text, c, s); }
public void AddCondition(String groupId, FilterSelector groupSelector, Int64 fieldId, String fieldName, DataType dataType, String text, FilterConditionType conditionType, FilterSelector selector) { FilterGroup g = filter_groups.Find(g1 => (g1.GroupId == groupId)); if (g == null) { g = new FilterGroup(groupId, groupSelector); filter_groups.Add(g); } g.AddFilter(fieldId, fieldName, dataType, text, conditionType, selector); }
private String GetFilterTemplate(List <FieldData> fieldList, Int64 fieldId, String fieldValue, String condition) { String defaultDataType = ""; String dtValue = MessageResource.FormatDate(DateTime.Now, true); String timeValue = "00:00:00"; String txtValue = ""; String numValue = ""; FilterConditionType dtCondition = FilterConditionType.Equal; FilterConditionType txtCondition = FilterConditionType.Equal; FilterConditionType numCondition = FilterConditionType.Equal; String filterTemplate = "<div id=\"{0}\"><input type=\"hidden\" name=\"filter_id\" value=\"{0}\" /><input type=\"hidden\" name=\"filter_{0}_group\" value=\"{1}\" /><div class=\"filter\" filter-id=\"{0}\"><table><tbody><tr><td class=\"col1\">"; filterTemplate += "<select class=\"filter-field\" id=\"filter_{0}_field_id\" name=\"filter_{0}_field_id\">"; foreach (FieldData fd in fieldList) { if ((defaultDataType == "") || (fd.field_id == fieldId)) { defaultDataType = fd.data_type; } if (fd.field_id == fieldId) { switch (fd.data_type.ToLower()) { case "datetime": try { if (fieldValue == "now") { dtValue = "now"; } else { DateTime tmp = DateTime.Parse(fieldValue); dtValue = MessageResource.FormatDate(tmp, true); timeValue = MessageResource.FormatTime(tmp); } } catch { } foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.DateTime)) { if (ft.ToString().ToLower() == condition.ToLower()) { dtCondition = ft; } } break; case "numeric": numValue = fieldValue; foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.Numeric)) { if (ft.ToString().ToLower() == condition.ToLower()) { numCondition = ft; } } break; default: txtValue = fieldValue; foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.Text)) { if (ft.ToString().ToLower() == condition.ToLower()) { txtCondition = ft; } } break; } } filterTemplate += "<option value=\"" + fd.field_id + "\" data-type=\"" + fd.data_type.ToLower() + "\" " + (fd.field_id == fieldId ? "selected" : "") + ">" + fd.name + "</option>"; } filterTemplate += "</select>"; filterTemplate += "</td><td class=\"col2\">"; filterTemplate += "<div class=\"dt-check dt-datetime " + (defaultDataType == "datetime" ? "" : "dt-off") + "\"><select name=\"filter_{0}_condition_datetime\">"; foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.DateTime)) { filterTemplate += "<option value=\"" + ft.ToString().ToLower() + "\" " + (dtCondition == ft ? "selected" : "") + ">" + MessageResource.GetMessage(ft.ToString().ToLower(), ft.ToString()) + "</option>"; } filterTemplate += "</select></div>"; filterTemplate += "<div class=\"dt-check dt-numeric " + (defaultDataType == "numeric" ? "" : "dt-off") + "\"><select name=\"filter_{0}_condition_numeric\">"; foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.Numeric)) { filterTemplate += "<option value=\"" + ft.ToString().ToLower() + "\" " + (numCondition == ft ? "selected" : "") + ">" + MessageResource.GetMessage(ft.ToString().ToLower(), ft.ToString()) + "</option>"; } filterTemplate += "</select></div>"; filterTemplate += "<div class=\"dt-check dt-string " + (defaultDataType == "string" ? "" : "dt-off") + "\"><select name=\"filter_{0}_condition_string\">"; foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.Text)) { filterTemplate += "<option value=\"" + ft.ToString().ToLower() + "\" " + (txtCondition == ft ? "selected" : "") + ">" + MessageResource.GetMessage(ft.ToString().ToLower(), ft.ToString()) + "</option>"; } filterTemplate += "</select></div>"; filterTemplate += "</td><td class=\"col3\">"; filterTemplate += "<div class=\"dt-check dt-datetime " + (defaultDataType == "datetime" ? "" : "dt-off") + "\"><div display=\"block\" class=\"filter-now\"><input name=\"filter_{0}_now\" type=\"checkbox\" " + (dtValue == "now" ? "checked" : "") + " state=\"false\" />" + MessageResource.GetMessage("use_now", "Use Now() function") + "</div><input class=\" " + (dtValue == "now" ? "dt-off date-mask-off" : "date-mask") + "\" name=\"filter_{0}_text_date\" type=\"text\" placeholder=\"Digite a data. Ex. dd/mm/yyyy\" value=\"" + dtValue + "\" /><input class=\"time-mask " + (dtValue == "now" ? "dt-off" : "") + "\" name=\"filter_{0}_text_time\" type=\"text\" placeholder=\"Digite a hora. Ex. hh:mm:ss\" value=\"" + timeValue + "\" /></div>"; filterTemplate += "<div class=\"dt-check dt-numeric " + (defaultDataType == "numeric" ? "" : "dt-off") + "\"><input name=\"filter_{0}_text_numeric\" type=\"text\" placeholder=\"Digite o valor numérico\" value=\"" + numValue + "\" /></div>"; filterTemplate += "<div class=\"dt-check dt-string " + (defaultDataType == "string" ? "" : "dt-off") + "\"><input name=\"filter_{0}_text_string\" type=\"text\" placeholder=\"Digite o texto\" value=\"" + txtValue + "\" /></div>"; filterTemplate += "</td><td class=\"col4\"><div class=\"ico icon-close floatright\"></div><div class=\"ico icon-plus floatright\"></div></td></tr></tbody></table><div class=\"clear-block\"></div></div><div class=\"filter-selector-wrapper\">{2}</div></div>"; return(filterTemplate); }
public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is FilterConditionViewModel) { FilterConditionViewModel matchCondition = (FilterConditionViewModel)value; FilterConditionType matchType = matchCondition.MatchType.Key; //string logical = "OR"; //if (matchCondition.Logical) //{ // logical = "AND"; //} if (matchType == FilterConditionType.DynamicLanguage) { return(matchCondition.MatchExpression); } else if (matchType == FilterConditionType.DateRange) { string fromDateString = "\"" + matchCondition.ColumnName + "\"" + ">=" + "\"" + matchCondition.FromDate.ToString() + "\""; string toDateString = "\"" + matchCondition.ColumnName + "\"" + "<=" + "\"" + matchCondition.ToDate.ToString() + "\""; string contractor = " and "; if (DateTime.Parse(matchCondition.FromDate).ToShortDateString().Equals(new DateTime(1900, 1, 1).ToShortDateString())) { fromDateString = string.Empty; contractor = string.Empty; } if (DateTime.Parse(matchCondition.ToDate).ToShortDateString().Equals(DateTime.MaxValue.ToShortDateString())) { toDateString = string.Empty; contractor = string.Empty; } return(string.Format(CultureInfo.InvariantCulture, "{0}{1}{2}", fromDateString, contractor, toDateString)); } else if (matchType == FilterConditionType.ValidFeature) { return("Features are " + (matchCondition.ValidStatus ? "valid" : "invalid")); } else { string matches = string.Empty; if (FilterHelper.FilterConditionNames.ContainsKey(matchType)) { matches = FilterHelper.FilterConditionNames[matchType]; } else { matches = "unknown match"; } if (matchType == FilterConditionType.IsNotEmpty || matchType == FilterConditionType.IsEmpty) { return(string.Format(CultureInfo.InvariantCulture, "\"{0}\" {1}" , matchCondition.ColumnName , matches)); } else if (matchCondition.FilterMode == FilterMode.Attributes) { return(string.Format(CultureInfo.InvariantCulture, "\"{0}\" {1} \"{2}\"" , matchCondition.ColumnName , matches , matchCondition.MatchExpression)); } else { return(string.Format(CultureInfo.InvariantCulture, "\"{0}\" {1} \"{2}\"" , "Caculated Area" , matches , matchCondition.MatchExpression)); } } } else { return(Binding.DoNothing); } }
private FilterRule GetFilterByForm(out WebJsonResponse contentRet) { contentRet = null; String name = Request.Form["filter_name"]; if (String.IsNullOrEmpty(name)) { contentRet = new WebJsonResponse("", MessageResource.GetMessage("invalid_name"), 3000, true); return(null); } String filters = Request.Form["filter_name"]; if (String.IsNullOrEmpty(name)) { contentRet = new WebJsonResponse("", MessageResource.GetMessage("invalid_name"), 3000, true); return(null); } //Verifica e trata as regras if (String.IsNullOrEmpty(Request.Form["filter_id"])) { contentRet = new WebJsonResponse("", MessageResource.GetMessage("conditions_is_empty"), 3000, true); return(null); } String rData = JSON.Serialize2(new { jsonrpc = "1.0", method = "field.list", parameters = new { page_size = Int32.MaxValue }, id = 1 }); //SqlConnection //conn = DB.GetConnection(); String jData = ""; try { using (IAMDatabase database = new IAMDatabase(IAMDatabase.GetWebConnectionString())) jData = WebPageAPI.ExecuteLocal(database, this, rData); } finally { } List <FieldData> fieldList = new List <FieldData>(); FieldListResult flR = JSON.Deserialize <FieldListResult>(jData); if ((flR != null) && (flR.error == null) && (flR.result != null)) { fieldList = flR.result; } if (fieldList.Count == 0) { contentRet = new WebJsonResponse("", MessageResource.GetMessage("field_not_found"), 3000, true); return(null); } FilterRule newItem = new FilterRule(name); String[] fIds = Request.Form["filter_id"].Split(",".ToCharArray()); foreach (String fid in fIds) { if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_group"])) { contentRet = new WebJsonResponse("", "Grupo não localizado na condição " + fid, 3000, true); break; } if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_field_id"])) { contentRet = new WebJsonResponse("", "ID do campo não localizado na condição " + fid, 3000, true); break; } String fGroup = Request.Form["filter_" + fid + "_group"].Split(",".ToCharArray())[0]; FieldData fieldData = null; try { Int64 tmp = Int64.Parse(Request.Form["filter_" + fid + "_field_id"].Split(",".ToCharArray())[0]); foreach (FieldData fd in fieldList) { if (fd.field_id == tmp) { fieldData = fd; } } if (fieldData == null) { throw new Exception(); } } catch { contentRet = new WebJsonResponse("", "ID do campo inválido na condição " + fid, 3000, true); break; } FilterSelector filterSelector = FilterSelector.AND; if (!String.IsNullOrEmpty(Request.Form["filter_" + fid + "_selector"])) { switch (Request.Form["filter_" + fid + "_selector"].Split(",".ToCharArray())[0].ToLower()) { case "or": filterSelector = FilterSelector.OR; break; default: filterSelector = FilterSelector.AND; break; } } FilterConditionType condition = FilterConditionType.Equal; switch (fieldData.data_type) { case "numeric": if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_condition_numeric"])) { contentRet = new WebJsonResponse("", "Condição de comparação não localizada na condição " + fid, 3000, true); break; } if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_text_numeric"])) { contentRet = new WebJsonResponse("", "Valor não localizado na condição " + fid, 3000, true); break; } Int64 nValue = 0; try { nValue = Int64.Parse(Request.Form["filter_" + fid + "_text_numeric"].Split(",".ToCharArray())[0]); } catch { contentRet = new WebJsonResponse("", "Valor inválido na condição " + fid, 3000, true); break; } String c1 = Request.Form["filter_" + fid + "_condition_numeric"].Split(",".ToCharArray())[0].ToLower(); foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.Numeric)) { if (c1 == ft.ToString().ToLower()) { condition = ft; } } newItem.AddCondition(fGroup, FilterSelector.AND, fieldData.field_id, "", DataType.Numeric, nValue.ToString(), condition, filterSelector); break; case "datetime": if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_condition_datetime"])) { contentRet = new WebJsonResponse("", "Condição de comparação não localizada na condição " + fid, 3000, true); break; } if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_text_date"])) { contentRet = new WebJsonResponse("", "Valor de data não localizado na condição " + fid, 3000, true); break; } if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_text_time"])) { contentRet = new WebJsonResponse("", "Valor de hora não localizado na condição " + fid, 3000, true); break; } String dtValue = ""; try { if (Request.Form["filter_" + fid + "_text_date"].Split(",".ToCharArray())[0].ToLower() == "now") { dtValue = "now"; } else { DateTime tmp = DateTime.Parse(Request.Form["filter_" + fid + "_text_date"].Split(",".ToCharArray())[0] + " " + Request.Form["filter_" + fid + "_text_time"].Split(",".ToCharArray())[0]); dtValue = tmp.ToString("o"); } } catch { contentRet = new WebJsonResponse("", "Valor de data e hora inválidos na condição " + fid, 3000, true); break; } String c2 = Request.Form["filter_" + fid + "_condition_datetime"].Split(",".ToCharArray())[0].ToLower(); foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.DateTime)) { if (c2 == ft.ToString().ToLower()) { condition = ft; } } newItem.AddCondition(fGroup, FilterSelector.AND, fieldData.field_id, "", DataType.DateTime, dtValue, condition, filterSelector); break; default: if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_condition_string"])) { contentRet = new WebJsonResponse("", "Condição de comparação não localizada na condição " + fid, 3000, true); break; } if (String.IsNullOrEmpty(Request.Form["filter_" + fid + "_text_string"])) { contentRet = new WebJsonResponse("", "Valor não localizado na condição " + fid, 3000, true); break; } String c3 = Request.Form["filter_" + fid + "_condition_string"].Split(",".ToCharArray())[0].ToLower(); foreach (FilterConditionType ft in IAM.Filters.FilterCondition.ConditionByDataType(DataType.Text)) { if (c3 == ft.ToString().ToLower()) { condition = ft; } } newItem.AddCondition(fGroup, FilterSelector.AND, fieldData.field_id, "", DataType.Text, Request.Form["filter_" + fid + "_text_string"].Split(",".ToCharArray())[0], condition, filterSelector); break; } } //Atualiza os seletores dos grupos caso haja mais de 1 grupo if (newItem.FilterGroups.Count > 1) { foreach (FilterGroup g in newItem.FilterGroups) { if (!String.IsNullOrEmpty(Request.Form["group_" + g.GroupId + "_selector"])) { switch (Request.Form["group_" + g.GroupId + "_selector"].Split(",".ToCharArray())[0].ToLower()) { case "and": g.Selector = FilterSelector.AND; break; default: g.Selector = FilterSelector.OR; break; } } } } return(newItem); }