public static DIC_MySecondDictionaryFilter CreateDefault(MainPageUrlBuilder url, DBDataContext db, bool showHistory) { var filter = new DIC_MySecondDictionaryFilter(); var newUrl = url != null?url.Clone() : new MainPageUrlBuilder(); newUrl.ShowHistory = showHistory; newUrl.SelectMode = "none"; newUrl.ViewMode = "none"; filter.SetUrl(newUrl); filter.SetDB(db); filter.ShowHistory = showHistory; return(filter); }
public static DIC_MySecondDictionaryFilter CreateDefault(MainPageUrlBuilder url, DBDataContext db, bool showHistory, List <MainPageUrlBuilder.FilterParameter> controlFilterParameters) { var filter = new DIC_MySecondDictionaryFilter(); var newUrl = url != null?url.Clone() : new MainPageUrlBuilder(); newUrl.ShowHistory = showHistory; newUrl.SelectMode = "none"; newUrl.ViewMode = "none"; foreach (var item in controlFilterParameters) { newUrl.ControlFilterParameters.Add(item.Clone()); } filter.SetUrl(newUrl); filter.SetDB(db); filter.ShowHistory = showHistory; return(filter); }
/// <summary> /// Обход по дочерним для определения ссылок на журналы /// </summary> /// <param name="urlBuilder"></param> /// <param name="detectedMenu"></param> /// <returns></returns> protected MainPageUrlBuilder InitMenuByChilds(MainPageUrlBuilder urlBuilder, bool detectedMenu) { if (!detectedMenu) { //если урл не определен, то обходим по дочкам и смотрим более подходящий var list = new List <MainPageUrlBuilder>(); foreach (var item in Childs) { item.Parent = this; var itemUrl = item.InitMenu(urlBuilder.Clone(), false); if (itemUrl != null) { list.Add(itemUrl); } } MainPageUrlBuilder resultUrl = null; if (list.Count == 1) { resultUrl = list[0]; } else if (list.Count > 0) { #region определение более подходящего меню MainPageUrlBuilder maxUrl = null; var maxValue = 0; foreach (var itemUrl in list) { var countData = itemUrl.QueryParameters.Keys. Where(key => key.EndsWith(".id")); if (countData.FirstOrDefault() == null) { continue; } var maxInner = countData. Select(key => key.Count(c => c == '.')). Max(); if (maxInner > maxValue) { maxValue = maxInner; maxUrl = itemUrl; } } resultUrl = maxUrl ?? list[0]; #endregion } if (resultUrl == null) { return(null); } //если определяется нормальная ссылка, то обходим дочек еще раз foreach (var item in Childs) { if (item.DetectedUrlBuilder != resultUrl)//пропускаем тот журнал что вернул урл { var url = resultUrl.Clone(); MoveReferenceToChilds(item, GetMenuItem(), url); item.InitMenu(url, true); } } return(resultUrl); } //если урл определено, то обходим по дочкам и отдаем им урл, изменяя параметры родительских таблиц (учитываем референс) foreach (var item in Childs) { item.Parent = this; var url = urlBuilder.Clone(); MoveReferenceToChilds(item, GetMenuItem(), url); item.InitMenu(url, true); } return(null); }