public bool FilterCommitBefore(CFilter filter) { if (api.Request[api.AddPluginPrefix("HoursFilterType")] != null) { var pluginField = filter.GetPluginField(Statics.PluginId, "HoursFilterType"); PreCommitHoursSelection = pluginField == null ? "Unset" : pluginField.ToString(); var newValue = api.Request[api.AddPluginPrefix("HoursFilterType")].ToLower(); FilterType type = FilterType.Unset; switch (newValue) { case "yes": type = FilterType.Yes; break; case "no": type = FilterType.No; break; } filter.SetPluginField(Statics.PluginId, "HoursFilterType", type.ToString()); } if (api.Request[api.AddPluginPrefix("SplitFilterType")] != null) { var pluginField = filter.GetPluginField(Statics.PluginId, "SplitFilterType"); PreCommitSplitSelection = pluginField == null ? "Unset" : pluginField.ToString(); var newValue = api.Request[api.AddPluginPrefix("SplitFilterType")].ToLower(); FilterType type = FilterType.Unset; switch (newValue) { case "yes": type = FilterType.Yes; break; case "no": type = FilterType.No; break; } filter.SetPluginField(Statics.PluginId, "SplitFilterType", type.ToString()); } return true; }
public void FilterCommitRollback(CFilter Filter) { /* if the filter commit was aborted, reset the awesomeness * level to the pre-commit value */ Filter.SetPluginField(PLUGIN_ID, "ixAwesomness", preCommitAwesomenessLevel); }
public CDialogItem[] FilterDisplayEdit(CFilter filter) { return null; }
public bool FilterBugEntryCanCreate(CFilter filter) { return false; }
protected virtual FilterType GetSplitFilterType(CFilter filter) { if (filter.GetPluginField(Statics.PluginId, "SplitFilterType") != null) { return (FilterType)Enum.Parse(typeof(FilterType), Convert.ToString(filter.GetPluginField(Statics.PluginId, "SplitFilterType"))); } return FilterType.Unset; }
public CFilterOption[] FilterOptions(CFilter filter) { var hasHoursOption = api.Filter.NewFilterOption(); hasHoursOption.fShowDialogItem = true; hasHoursOption.SetSelectOne(new[]{"Yes", "No"}); hasHoursOption.SetDefault(string.Empty); hasHoursOption.sQueryParam = api.PluginPrefix + "HoursFilterType"; hasHoursOption.sHeader = "Has Hours?"; hasHoursOption.sName = "hasHours"; var hasSplitOption = api.Filter.NewFilterOption(); hasSplitOption.fShowDialogItem = true; hasSplitOption.SetSelectOne(new[] {"Yes", "No"}); hasSplitOption.SetDefault(string.Empty); hasSplitOption.sQueryParam = api.PluginPrefix + "SplitFilterType"; hasSplitOption.sHeader = "Has Split?"; hasSplitOption.sName = "hasSplit"; return new[] { hasHoursOption, hasSplitOption }; }
public CFilterStringList FilterOptionsString(CFilter filter) { var filterList = new CFilterStringList(); switch(GetHoursFilterType(filter)) { case FilterType.Yes: filterList.Add("Has Hours", "HoursFilterType"); break; case FilterType.No: filterList.Add("Has No Hours", "HoursFilterType"); break; case FilterType.Unset: filterList.Add(string.Empty, "HoursFilterType"); break; } switch(GetSplitFilterType(filter)) { case FilterType.Yes: filterList.Add("Has Split", "SplitFilterType"); break; case FilterType.No: filterList.Add("Has No Split", "SplitFilterType"); break; case FilterType.Unset: filterList.Add(string.Empty, "SplitFilterType"); break; } return filterList; }
public string FilterOptionsUrlParams(CFilter filter) { /* To make the filter saveable, we need to assign a querystring * parameter to this filter setting. */ int ixAwesomeness = Convert.ToInt32( filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")); if (ixAwesomeness < 1) return ""; else return api.PluginPrefix + "ixAwesomeness=" + Convert.ToString(ixAwesomeness); }
protected string GetAwesomenessSelect(CFilter Filter) { List<string> rgsAwesomenessLevels; List<string> rgsAwesomenessIxs; int ixSelectedIndex = 0; CSelectQuery sq = api.Database.NewSelectQuery(sAwesomenessTableName); sq.AddSelect("*"); /* Iterate through the data set and populate the drop-down */ DataSet ds = sq.GetDataSet(); if (ds.Tables[0] == null || ds.Tables[0].Rows.Count == 0) return string.Empty; int numOptions = ds.Tables[0].Rows.Count; rgsAwesomenessLevels = new List<string>(); rgsAwesomenessIxs = new List<string>(); for (int i = 0; i < numOptions; i++) { rgsAwesomenessLevels.Add(ds.Tables[0].Rows[i]["sAwesomenessLevel"].ToString()); rgsAwesomenessIxs.Add(ds.Tables[0].Rows[i]["ixAwesomeness"].ToString()); } /* If there's already an "Awesomeness" value, set the selected index of the drop-down * to the proper non-zero value */ if (Convert.ToInt32(Filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")) != 0) ixSelectedIndex = Convert.ToInt32( Filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")) - 1; return Forms.SelectInput(api.PluginPrefix + "ixAwesomeness", rgsAwesomenessLevels.ToArray(), rgsAwesomenessIxs[ixSelectedIndex], rgsAwesomenessIxs.ToArray()); }
public CSelectQuery FilterOptionsQuery(CFilter filter) { /* Specify a query for the list of cases to be returned when the * filter is imposed. */ int ixAwesomeness = ToAwesomenessSelectRange( Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, "ixAwesomeness"))); CSelectQuery query = api.Database.NewSelectQuery("Bug"); if (ixAwesomeness == 0) return query; query.AddLeftJoin(sBugAwesomenessTableName, "Bug.ixBug = joinedBug.ixBug", "joinedBug"); query.SetParamInt("ixAwesomeness", ixAwesomeness); if (ixAwesomeness == 1) { query.AddWhere( @"joinedBug.ixAwesomeness IS NULL OR joinedBug.ixAwesomeness = @ixAwesomeness"); } else { query.AddWhere("joinedBug.ixAwesomeness = @ixAwesomeness"); } return query; }
public CFilterStringList FilterOptionsString(CFilter filter) { int ixAwesomeness = Convert.ToInt32( filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")); CFilterStringList list = new CFilterStringList(); /* Return a string for the "Filter:" message at the top of the case list * so that the the user can clearly interpret current filter settings. * ixAwesomeness = 0 will correspond to "any level of awesomeness," so * no message is shown at all in that case. */ string sFilterString; /* if there is an awesomeness in the range of possible values, * generate the filter string */ if (ixAwesomeness > 0 && ixAwesomeness <= rgsAwesomenessIxs.Length) { if (ixAwesomeness == 1) { sFilterString = "with no level of awesomeness specified"; } else { sFilterString = String.Format(@"with awesomeness level ""{0}""", GetAwesomenessString(ixAwesomeness)); } /* the second parameter to CFilterStringList.Add specifies the * CFilterOption by name to display when the text is clicked */ list.Add(sFilterString, "awesomeness"); } return list; }
public CFilterOption[] FilterOptions(CFilter filter) { /* Create a new filter option to be included in the list of options * available in the "Filter:" drop-down at the top of the case * list. */ int ixAwesomeness = ToAwesomenessSelectRange( Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, "ixAwesomeness"))); CFilterOption fo = api.Filter.NewFilterOption(); /* Specify a single-select drop-down, and add a default value of "any" */ fo.SetSelectOne(rgsAwesomenessLevels, Convert.ToString(ixAwesomeness), rgsAwesomenessIxs); fo.SetDefault("0", "Any"); fo.sQueryParam = api.PluginPrefix + "ixAwesomeness"; fo.fShowDialogItem = true; fo.sHeader = "Level of Awesomeness"; fo.sName = "awesomeness"; return new CFilterOption[] { fo }; }
public string[] FilterDisplayListFields(CFilter Filter) { int ixAwesomeness = Convert.ToInt32( Filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")); /* including dashes to match those automatically added on the * edit filter page, so the user knows it's not the literal * awesomeness value "Any" */ string s = (ixAwesomeness < 2) ? "-- Any --" : GetAwesomenessString(ixAwesomeness); return new string[] { s }; }
public CDialogItem[] FilterDisplayEdit(CFilter Filter) { /* if you specify one or more CFilterOptions, they will appear * on the edit filter page automatically. You don't need to * explicitly add dialog items here. */ return null; }
/// <summary> /// Read the filter's ixPersonOriginallyOpenedBy. If it's invalid, fix it (set it to "any") /// </summary> /// <param name="filter">Filter to check (and possibly update)</param> /// <returns>The validated ixPersonOriginallyOpenedBy</returns> protected int GetFieldValueFromFilter(CFilter filter) { filter.IgnorePermissions = true; int ixPersonFromFilter = Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME)); if (!IsValidPerson(ixPersonFromFilter)) { ixPersonFromFilter = IXPERSON_ANY; filter.SetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME, ixPersonFromFilter); } return ixPersonFromFilter; }
public string FilterBugEntryUrlParams(CFilter filter) { return ""; }
public bool FilterBugEntryCanCreate(CFilter filter) { // you cannot set an opener on a new case, so don't allow quick-adding if the filter // includes an original opener return (GetFieldValueFromFilter(filter) < IXPERSON_MIN); }
public bool FilterCommitBefore(CFilter Filter) { if (api.Request[sPluginFieldNamePrefixed] != null) { ixPersonOriginallyOpenedByPreCommit = Convert.ToInt32(Filter.GetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME)); int ixPersonOriginallyOpenedBy = IXPERSON_INVALID; /* use tryparse in case the URL querystring value isn't a valid integer */ if (Int32.TryParse(api.Request[sPluginFieldNamePrefixed].ToString(), out ixPersonOriginallyOpenedBy)) { // if the requested value isn't an actual CPerson, set the plugin field to "any" if (!IsValidPerson(ixPersonOriginallyOpenedBy)) ixPersonOriginallyOpenedBy = IXPERSON_ANY; Filter.SetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME, ixPersonOriginallyOpenedBy); } } return true; }
public CSelectQuery FilterOptionsQuery(CFilter filter) { var select = api.Database.NewSelectQuery("Bug"); var pluginTableName = GetPluginTableName(Tables.HOURS_TABLE); switch(GetHoursFilterType(filter)) { case FilterType.Yes: select.AddLeftJoin(pluginTableName, string.Format("Bug.ixBug = {0}.ixBug", pluginTableName)); select.AddWhere(string.Format("{0}.ixBug IS NOT NULL", pluginTableName)); break; case FilterType.No: select.AddLeftJoin(pluginTableName, string.Format("Bug.ixBug = {0}.ixBug", pluginTableName)); select.AddWhere(string.Format("{0}.ixBug IS NULL", pluginTableName)); break; } pluginTableName = GetPluginTableName(Tables.SPLIT_TABLE); switch (GetSplitFilterType(filter)) { case FilterType.Yes: select.AddLeftJoin(pluginTableName, string.Format("Bug.ixBug = {0}.ixBug", pluginTableName)); select.AddWhere(string.Format("{0}.ixBug IS NOT NULL", pluginTableName)); break; case FilterType.No: select.AddLeftJoin(pluginTableName, string.Format("Bug.ixBug = {0}.ixBug", pluginTableName)); select.AddWhere(string.Format("{0}.ixBug IS NULL", pluginTableName)); break; } return select; }
public void FilterCommitRollback(CFilter Filter) { Filter.SetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME, ixPersonOriginallyOpenedByPreCommit); }
public string FilterOptionsUrlParams(CFilter filter) { var hours = string.Empty; switch (GetHoursFilterType(filter)) { case FilterType.Yes: hours = api.PluginPrefix + "HoursFilterType=Yes"; break; case FilterType.No: hours = api.PluginPrefix + "HoursFilterType=No"; break; } var split = string.Empty; switch (GetSplitFilterType(filter)) { case FilterType.Yes: split = api.PluginPrefix + "SplitFilterType=Yes"; break; case FilterType.No: split = api.PluginPrefix + "SplitFilterType=No"; break; } if (hours == string.Empty) { return split; } if (split == string.Empty) { return hours; } return hours + "&" + split; }
public CFilterOption[] FilterOptions(CFilter filter) { /* Create a new filter option to be included in the list of options * available in the "Filter:" drop-down at the top of the case * list. */ int ixPersonOriginallyOpenedBy = GetFieldValueFromFilter(filter); CFilterOption filterOption = api.Filter.NewFilterOption(); /* Specify a single person select drop-down */ filterOption.SetSelectOnePerson(ixPersonOriginallyOpenedBy); filterOption.sQueryParam = sPluginFieldNamePrefixed; filterOption.fShowDialogItem = true; filterOption.sHeader = FILTER_HEADING; filterOption.sName = PLUGIN_FIELD_NAME; filterOption.SetDefault(IXPERSON_ANY.ToString(), FILTER_OPTION_ANY); return new CFilterOption[] { filterOption }; }
public string FilterBugEntryUrlParams(CFilter filter) { return api.PluginPrefix + "HoursFilterType=" + filter.GetPluginField(Statics.PluginId, "HoursFilterType") + "&SplitFilterType=" + filter.GetPluginField(Statics.PluginId, "SplitFilterType"); }
public CSelectQuery FilterOptionsQuery(CFilter filter) { int ixPersonOriginallyOpenedBy = GetFieldValueFromFilter(filter); CSelectQuery query = api.Database.NewSelectQuery("Bug"); if (ixPersonOriginallyOpenedBy < IXPERSON_MIN) return query; query.AddLeftJoin("BugEvent", GetBugOpenedEventLeftJoinClause(), BUGEVENT_TABLE_ALIAS); query.AddWhere(string.Format("{0}.ixPerson = @ixPersonOriginallyOpenedBy", BUGEVENT_TABLE_ALIAS)); query.SetParamInt("@ixPersonOriginallyOpenedBy", ixPersonOriginallyOpenedBy); return query; }
public void FilterCommitAfter(CFilter filter) { }
public CFilterStringList FilterOptionsString(CFilter filter) { int ixPersonOriginallyOpenedBy = GetFieldValueFromFilter(filter); CFilterStringList list = new CFilterStringList(); /* Return a string for the "Filter:" message at the top of the case list * so that the the user can clearly interpret current filter settings. */ string sFilterString; if (ixPersonOriginallyOpenedBy >= IXPERSON_MIN) { sFilterString = string.Format("{0} {1}", FILTER_STRING, api.Person.GetPerson(ixPersonOriginallyOpenedBy).sFullName); /* the second parameter to CFilterStringList.Add specifies the * CFilterOption by name to display when the text is clicked */ list.Add(sFilterString, PLUGIN_FIELD_NAME); } return list; }
public void FilterCommitRollback(CFilter filter) { filter.SetPluginField(Statics.PluginId, "HoursFilterType", PreCommitHoursSelection); filter.SetPluginField(Statics.PluginId, "SplitFilterType", PreCommitSplitSelection); }
public string FilterOptionsUrlParams(CFilter filter) { /* To make the filter saveable, we need to assign a querystring * parameter to this filter setting. */ int ixPersonOriginallyOpenedBy = GetFieldValueFromFilter(filter); if (ixPersonOriginallyOpenedBy < IXPERSON_MIN) return ""; else return string.Format("{0}={1}", sPluginFieldNamePrefixed, ixPersonOriginallyOpenedBy); }
public string[] FilterDisplayListFields(CFilter filter) { return new[] {"Has Hours?", "Has Split?"}; }
public bool FilterCommitBefore(CFilter Filter) { /* Set the preCommitAwesomenessLevel member variable */ if (api.Request[api.AddPluginPrefix("ixAwesomeness")] != null) { int ixAwesomenessNew = -1; preCommitAwesomenessLevel = Convert.ToInt32(Filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")); /* use tryparse in case the URL querystring value isn't a valid integer */ if (Int32.TryParse(api.Request[api.AddPluginPrefix("ixAwesomeness")].ToString(), out ixAwesomenessNew) && (ixAwesomenessNew > -1) ) Filter.SetPluginField(PLUGIN_ID, "ixAwesomeness", ixAwesomenessNew); } return true; }