private static INode CreateNodeForFilterGroup(this TreeContext context, IFilterGroup filterGroup) { var groupDependencies = GroupFiltersService.GetGroupDependencies(context, filterGroup); var provider = new GroupProvider(groupDependencies, filterGroup, context.Store, filterGroup.DiagInfo); return(Node.CreateNode(filterGroup.NodeToken, provider, true, context)); }
public static void CreateNonEqualFilter(this TreeContext context, INode node1, INode node2, IFilterGroup parentGroup, IDiagInfo diagInfo) { if (node1.Token.Type != node2.Token.Type) { return; } var tuple = new Tuple <IToken, IToken>(node1.Token, node2.Token); var reverseTuple = new Tuple <IToken, IToken>(node2.Token, node1.Token); if (context.NonEqualFilters.Contains(tuple) || context.NonEqualFilters.Contains(reverseTuple)) { return; } context.NonEqualFilters.Add(tuple); var dep1 = new SingleDependency(node1.Token); var dep2 = new SingleDependency(node2.Token); var newInfo = new FilterInfo(context.Store.NextId, diagInfo, parentGroup?.FilterInfo.FilterToken); var filter = new Filter2 <IResolutionContext, IResolutionContext>(dep1, dep2, (x, y) => !x.Equals(y), newInfo); context.Filters.Add(filter); }
public static void CreateNonEqualFilter(this TreeContext context, INode node1, INode node2, IFilterGroup parentGroup, IDiagInfo diagInfo) { if (node1.Token.Type != node2.Token.Type) { return; } var tuple = new Tuple<IToken, IToken>(node1.Token, node2.Token); var reverseTuple = new Tuple<IToken, IToken>(node2.Token, node1.Token); if (context.NonEqualFilters.Contains(tuple) || context.NonEqualFilters.Contains(reverseTuple)) { return; } context.NonEqualFilters.Add(tuple); var dep1 = new SingleDependency(node1.Token); var dep2 = new SingleDependency(node2.Token); var newInfo = new FilterInfo(context.Store.NextId, diagInfo, parentGroup?.FilterInfo.FilterToken); var filter = new Filter2<IResolutionContext, IResolutionContext>(dep1, dep2, (x, y) => !x.Equals(y), newInfo); context.Filters.Add(filter); }
private static List<IFilter> CollectInGroupFilters(this TreeContext context, IFilterGroup filterGroup) { var filters = context.FiltersInGroup .SafeGet(filterGroup.FilterInfo.FilterToken, () => new List<IFilter>()) .ToList(); filters.AddRange(filters.OfType<IFilterGroup>().SelectMany(context.GetInGroupFilters).ToList()); return filters; }
public ListViewManager( ILogger logger, ListView view, IViewHelper viewHelper, ISelecter <TData> dataSelecter, IFilterGroup filterGroup, IComparer <TData> sortComparer, IDataHelper <TData> dataHelper) { if (logger == null) { throw new ArgumentNullException("logger"); } if (view == null) { throw new ArgumentNullException("view"); } if (viewHelper == null) { throw new ArgumentNullException("viewHelper"); } if (dataHelper == null) { throw new ArgumentNullException("dataHelper"); } _Logger = logger; _View = view; _DataSelecter = dataSelecter; _FilterGroup = filterGroup; _SortComparer = sortComparer; _ViewHelper = viewHelper; _DataHelper = dataHelper; _ReceiveRequestHandler = new WinFormsEventDispatcher(Exec_Receive_Request, false); _CollateRequestHandler = new WinFormsEventDispatcher(Exec_Collate_Request, true); _DisplayRequestHandler = new WinFormsEventDispatcher(Exec_Display_Request, true); // configure view _View.VirtualMode = true; _View.FullRowSelect = true; _View.CheckBoxes = false; _View.View = View.Details; _View.Columns.Clear(); for (int column = 0; column < viewHelper.ColumnCount; column++) { ColumnHeader hdr = new ColumnHeader(); hdr.Text = _ViewHelper.GetColumnTitle(column); hdr.TextAlign = _ViewHelper.GetColumnAlignment(column); _View.Columns.Add(hdr); } _View.RetrieveVirtualItem += new RetrieveVirtualItemEventHandler(_View_RetrieveVirtualItem); _View.CacheVirtualItems += new CacheVirtualItemsEventHandler(_View_CacheVirtualItems); _View.ColumnWidthChanged += new ColumnWidthChangedEventHandler(_View_ColumnWidthChanged); // init filter group column positions _View_ColumnWidthChanged(null, null); }
/// <summary> /// /// </summary> /// <param name="filterValues"></param> /// <param name="viewHelper"></param> /// <param name="dataHelper"></param> public BaseSelecter( IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <TData> dataHelper) { FilterValues = filterValues ?? throw new ArgumentNullException(nameof(filterValues)); ViewHelper = viewHelper ?? throw new ArgumentNullException(nameof(viewHelper)); DataHelper = dataHelper ?? throw new ArgumentNullException(nameof(dataHelper)); }
public static INode GetGroupNode(this TreeContext context, IFilterGroup group) { var token = group?.NodeToken; if (token == null) { return null; } INode node; return context.Tree.Nodes.TryGetValue(token, out node) ? node : null; }
public GroupProvider(IEnumerable <IDependency> dependencies, IFilterGroup group, TokenStore store, IDiagInfo diagInfo) { Dependencies = dependencies; DiagInfo = diagInfo; this.group = group; this.store = store; }
public GroupProvider(IEnumerable<IDependency> dependencies, IFilterGroup group, TokenStore store, IDiagInfo diagInfo) { Dependencies = dependencies; DiagInfo = diagInfo; this.group = group; this.store = store; }
public static bool IsFilterAbsorbed(this TreeContext context, IFilter filter, IFilterGroup group) { var node = context.GetGroupNode(group); if (node == null) { return false; } return node.Children.Any(x => context.FilterIsAbsorbedBy(filter, x)); }
private static List<IToken> CollectInGroupTokens(this TreeContext context, IFilterGroup filterGroup) { var tokens = context.ProviderTokensInGroup .SafeGet(filterGroup.FilterInfo.FilterToken, () => new List<IToken>()) .ToList(); foreach (var @group in context.FiltersInGroup.SafeGet(filterGroup.FilterInfo.FilterToken, () => new List<IFilter>()).OfType<IFilterGroup>()) { ((Action<IFilterGroup>)(grp => tokens.AddRange(context.GetInGroupTokens(grp))))(@group); } return tokens; }
public static IEnumerable<IDependency> GetGroupDependencies(TreeContext context, IFilterGroup filterGroup) { var inGroupTokens = context.GetInGroupTokens(filterGroup); var groupDependencies = inGroupTokens .SelectMany(x => context.Store.Providers[x].Dependencies) .Concat(context.GetInGroupFilters(filterGroup).SelectMany(x => x.Dependencies)) .Concat(filterGroup.GroupDependencies) .Where(dependency => !inGroupTokens.Contains(dependency.Token)) .DistinctDependencies() .ToList(); return groupDependencies; }
public static INode GetGroupNode(this TreeContext context, IFilterGroup group) { var token = group?.NodeToken; if (token == null) { return(null); } INode node; return(context.Tree.Nodes.TryGetValue(token, out node) ? node : null); }
private static List <IToken> CollectInGroupTokens(this TreeContext context, IFilterGroup filterGroup) { var tokens = context.ProviderTokensInGroup .SafeGet(filterGroup.FilterInfo.FilterToken, () => new List <IToken>()) .ToList(); foreach (var @group in context.FiltersInGroup.SafeGet(filterGroup.FilterInfo.FilterToken, () => new List <IFilter>()).OfType <IFilterGroup>()) { ((Action <IFilterGroup>)(grp => tokens.AddRange(context.GetInGroupTokens(grp))))(@group); } return(tokens); }
/// <summary> /// /// </summary> /// <param name="logger"></param> /// <param name="view"></param> /// <param name="viewHelper"></param> /// <param name="dataSelecter"></param> /// <param name="filterGroup"></param> /// <param name="sortComparer"></param> /// <param name="dataHelper"></param> /// <param name="gridlines"></param> /// <param name="color"></param> public ListViewManager( ILogger logger, ListView view, IViewHelper viewHelper, ISelecter <TData> dataSelecter, IFilterGroup filterGroup, IComparer <TData> sortComparer, IDataHelper <TData> dataHelper, bool gridlines, Color color) : this(logger, view, viewHelper, dataSelecter, filterGroup, sortComparer, dataHelper) { _view.GridLines = gridlines; _view.BackColor = color; }
/// <summary> /// /// </summary> /// <param name="logger"></param> /// <param name="view"></param> /// <param name="viewHelper"></param> /// <param name="dataSelecter"></param> /// <param name="filterGroup"></param> /// <param name="sortComparer"></param> /// <param name="dataHelper"></param> public ListViewManager( ILogger logger, ListView view, IViewHelper viewHelper, ISelecter <TData> dataSelecter, IFilterGroup filterGroup, IComparer <TData> sortComparer, IDataHelper <TData> dataHelper) { Logger = logger ?? throw new ArgumentNullException(nameof(logger)); _view = view ?? throw new ArgumentNullException(nameof(view)); // //Set the properties. _dataSelecter = dataSelecter; _filterGroup = filterGroup; _sortComparer = sortComparer; _viewHelper = viewHelper ?? throw new ArgumentNullException(nameof(viewHelper)); _dataHelper = dataHelper ?? throw new ArgumentNullException(nameof(dataHelper)); // //Updating _receiveRequestHandler = new WinFormsEventDispatcher(ExecReceiveRequest, false); _collateRequestHandler = new WinFormsEventDispatcher(ExecCollateRequest, true); _displayRequestHandler = new WinFormsEventDispatcher(ExecDisplayRequest, true); // // configure view _view.VirtualMode = true; _view.FullRowSelect = true; _view.CheckBoxes = false; _view.View = View.Details; _view.Columns.Clear(); for (int column = 0; column < viewHelper.ColumnCount; column++) { var hdr = new ColumnHeader { Text = _viewHelper.GetColumnTitle(column), TextAlign = _viewHelper.GetColumnAlignment(column) }; _view.Columns.Add(hdr); } _view.RetrieveVirtualItem += ViewRetrieveVirtualItem; _view.CacheVirtualItems += ViewCacheVirtualItems; _view.ColumnWidthChanged += ViewColumnWidthChanged; // // init filter group column positions ViewColumnWidthChanged(null, null); }
public BaseSelecter( IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <TData> dataHelper) { if (filterValues == null) { throw new ArgumentNullException("filterControls"); } if (viewHelper == null) { throw new ArgumentNullException("viewHelper"); } if (dataHelper == null) { throw new ArgumentNullException("dataHelper"); } _FilterValues = filterValues; _ViewHelper = viewHelper; _DataHelper = dataHelper; }
private void StartUp() { try { var factory = new CoreClientFactory(_loggerRef) .SetEnv("Dev") .SetApplication(Assembly.GetExecutingAssembly()) .SetProtocols(WcfConst.AllProtocolsStr) .SetServers("localhost"); var client = factory.Create(); _clientRef = Reference <ICoreClient> .Create(client); _cache = _clientRef.Target.CreateCache(); // init controls // - form title EnvId env = _clientRef.Target.ClientInfo.ConfigEnv; Text += String.Format(" ({0})", EnvHelper.EnvName(env)); // - server port int defaultPort = EnvHelper.SvcPort(env, SvcId.GridSwitch); _qasDefViewHelper = new QASDefViewHelper(); _qasDefDataHelper = new QASDefDataHelper(); _qasDefFilters = new ComboxBoxFilterGroup(panelQASDef, _qasDefViewHelper, QASDefSelectionChanged); _qasDefSelecter = new QASDefSelecter( _qasDefFilters, _qasDefViewHelper, _qasDefDataHelper); _qasDefView = new ListViewManager <RatesObj>( _loggerRef.Target, lvQASDef, _qasDefViewHelper, _qasDefSelecter, _qasDefFilters, new QASDefSorter(), _qasDefDataHelper); //Get the starting configuration // chkChangePort.Text = String.Format("Change server port from default ({0}) to:", defaultPort); //Set up the timer and the random number generator. // _timer = new System.Timers.Timer(10000); _rand = new Random(); } catch (Exception excp) { _loggerRef.Target.Log(excp); } }
// this class is currently is a placeholder for future selection rules public AlertRuleSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <AlertRule> dataHelper) : base(filterValues, viewHelper, dataHelper) { }
// this class is currently is a placeholder for future selection rules public LogEventSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <DebugLogEvent> dataHelper) : base(filterValues, viewHelper, dataHelper) { }
// this class is currently is a placeholder for future selection rules public CacheStatsSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <CacheStatsObj> dataHelper) : base(filterValues, viewHelper, dataHelper) { }
private void Form1Load(object sender, EventArgs e) { // create loggers _loggerRef = Reference <ILogger> .Create(new TextBoxLogger(txtMainLog)); // create client factory and client _clientFactory = new CoreClientFactory(_loggerRef); _clientFactory.SetEnv(BuildConst.BuildEnv); _clientFactory.SetApplication(Assembly.GetExecutingAssembly()); _client = _clientFactory.Create(); // - form title WinFormHelper.SetAppFormTitle(this, EnvHelper.EnvName(BuildEnv)); // setup the AlertRule view _alertRuleViewHelper = new AlertRuleViewHelper(); _alertRuleDataHelper = new AlertRuleDataHelper(); _alertRuleFilters = new ComboxBoxFilterGroup( panelAlertRule, _alertRuleViewHelper, AlertRuleSelectionChanged); _alertRuleSelecter = new AlertRuleSelecter( _alertRuleFilters, _alertRuleViewHelper, _alertRuleDataHelper); _alertRuleView = new ListViewManager <AlertRule>( _loggerRef.Target, lvAlertRule, _alertRuleViewHelper, _alertRuleSelecter, _alertRuleFilters, new AlertRuleSorter(), _alertRuleDataHelper); ICoreCache alertRuleCache = _client.CreateCache( update => _alertRuleView.UpdateData(new ViewChangeNotification <AlertRule> { Change = update.Change, OldData = (AlertRule)update.OldItem?.Data, NewData = (AlertRule)update.NewItem?.Data }), SynchronizationContext.Current); alertRuleCache.SubscribeNoWait <AlertRule>(Expr.ALL, null, null); // setup the AlertSignal view _alertSignalViewHelper = new AlertSignalViewHelper(); _alertSignalDataHelper = new AlertSignalDataHelper(); _alertSignalFilters = new ComboxBoxFilterGroup( panelAlertSignal, _alertSignalViewHelper, AlertSignalSelectionChanged); _alertSignalSelecter = new AlertSignalSelecter( _alertSignalFilters, _alertSignalViewHelper, _alertSignalDataHelper); _alertSignalView = new ListViewManager <AlertSignal>( _loggerRef.Target, lvAlertSignal, _alertSignalViewHelper, _alertSignalSelecter, _alertSignalFilters, new AlertSignalSorter(), _alertSignalDataHelper); ICoreCache alertSignalCache = _client.CreateCache( update => _alertSignalView.UpdateData(new ViewChangeNotification <AlertSignal> { Change = update.Change, OldData = (AlertSignal)update.OldItem?.Data, NewData = (AlertSignal)update.NewItem?.Data }), SynchronizationContext.Current); alertSignalCache.SubscribeNoWait <AlertSignal>(Expr.ALL, null, null); // setup the LogEvent view _logEventViewHelper = new LogEventViewHelper(); _logEventDataHelper = new LogEventDataHelper(); _logEventFilters = new ComboxBoxFilterGroup( panelLogEvent, _logEventViewHelper, LogEventSelectionChanged); _logEventSelecter = new LogEventSelecter( _logEventFilters, _logEventViewHelper, _logEventDataHelper); _logEventView = new ListViewManager <DebugLogEvent>( _loggerRef.Target, lvLogEvent, _logEventViewHelper, _logEventSelecter, _logEventFilters, new LogEventSorter(), _logEventDataHelper); ICoreCache logEventCache = _client.CreateCache( update => _logEventView.UpdateData(new ViewChangeNotification <DebugLogEvent> { Change = update.Change, OldData = (DebugLogEvent)update.OldItem?.Data, NewData = (DebugLogEvent)update.NewItem?.Data }), SynchronizationContext.Current); logEventCache.SubscribeNoWait <DebugLogEvent>(Expr.ALL, null, null); // init controls // server 0 _serverAddress[0] = txtServer0Address; _ping[0] = chkServer0Ping; _lastChecked[0] = txtServer0LastChecked; _lastReplied[0] = txtServer0LastReplied; _serverStatus[0] = txtServer0Status; _serverReason[0] = txtServer0OtherInfo; // server 1 _serverAddress[1] = txtServer1Address; _ping[1] = chkServer1Ping; _lastChecked[1] = txtServer1LastChecked; _lastReplied[1] = txtServer1LastReplied; _serverStatus[1] = txtServer1Status; _serverReason[1] = txtServer1OtherInfo; // server 2 _serverAddress[2] = txtServer2Address; _ping[2] = chkServer2Ping; _lastChecked[2] = txtServer2LastChecked; _lastReplied[2] = txtServer2LastReplied; _serverStatus[2] = txtServer2Status; _serverReason[2] = txtServer2OtherInfo; // server 3 _serverAddress[3] = txtServer3Address; _ping[3] = chkServer3Ping; _lastChecked[3] = txtServer3LastChecked; _lastReplied[3] = txtServer3LastReplied; _serverStatus[3] = txtServer3Status; _serverReason[3] = txtServer3OtherInfo; // server 4 _serverAddress[4] = txtServer4Address; _ping[4] = chkServer4Ping; _lastChecked[4] = txtServer4LastChecked; _lastReplied[4] = txtServer4LastReplied; _serverStatus[4] = txtServer4Status; _serverReason[4] = txtServer4OtherInfo; // server 5 _serverAddress[5] = txtServer5Address; _ping[5] = chkServer5Ping; _lastChecked[5] = txtServer5LastChecked; _lastReplied[5] = txtServer5LastReplied; _serverStatus[5] = txtServer5Status; _serverReason[5] = txtServer5OtherInfo; for (int i = 0; i < NServers; i++) { _lastChecked[i].BackColor = Color.FromKnownColor(KnownColor.Window); _lastReplied[i].BackColor = Color.FromKnownColor(KnownColor.Window); _serverStatus[i].BackColor = Color.FromKnownColor(KnownColor.Window); _serverReason[i].BackColor = Color.FromKnownColor(KnownColor.Window); } }
// this class is currently is a placeholder for future selection rules public AllEventSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <AllEventObj> dataHelper) : base(filterValues, viewHelper, dataHelper) { }
public static List<IToken> GetInGroupTokens(this TreeContext context, IFilterGroup filterGroup) { return context.AllProviderTokensInGroup .GetOrAdd(filterGroup.FilterInfo.FilterToken, () => context.CollectInGroupTokens(filterGroup)); }
public static List <IToken> GetInGroupTokens(this TreeContext context, IFilterGroup filterGroup) { return(context.AllProviderTokensInGroup .GetOrAdd(filterGroup.FilterInfo.FilterToken, () => context.CollectInGroupTokens(filterGroup))); }
public static bool IsFilterAbsorbed(this TreeContext context, IFilter filter, IFilterGroup group) { var node = context.GetGroupNode(group); if (node == null) { return(false); } return(node.Children.Any(x => context.FilterIsAbsorbedBy(filter, x))); }
/// <summary> /// Add a new <see cref="IFilterGroup"></see> to the <see cref="IFilterGroup"></see>. /// </summary> /// <param name="filterGroup"> /// A <see cref="IFilterGroup"></see> to modify. /// </param> /// <param name="group">An <see cref="IFilterGroup"></see> to add.</param> /// <returns> /// A reference to the <paramref name="filterGroup"/> after the /// operation has completed. /// </returns> public static IFilterGroup AddGroup(this IFilterGroup filterGroup, IFilterGroup group) { filterGroup.Filters.Add(group); return(filterGroup); }
private static void AddGroupDependency(this IFilterGroup parentGroup, TreeContext context, List <INode> dependencies) { dependencies.Add(context.Tree.GetNode(parentGroup.NodeToken)); }
// this class is currently is a placeholder for future selection rules public QASDefSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <RatesObj> dataHelper) : base(filterValues, viewHelper, dataHelper) { }
public static IEnumerable <IDependency> GetGroupDependencies(TreeContext context, IFilterGroup filterGroup) { var inGroupTokens = context.GetInGroupTokens(filterGroup); var groupDependencies = inGroupTokens .SelectMany(x => context.Store.Providers[x].Dependencies) .Concat(context.GetInGroupFilters(filterGroup).SelectMany(x => x.Dependencies)) .Concat(filterGroup.GroupDependencies) .Where(dependency => !inGroupTokens.Contains(dependency.Token)) .DistinctDependencies() .ToList(); return(groupDependencies); }
/// <summary> /// Add a new <see cref="IFilterExpression"></see> to the <see cref="IFilterGroup"></see>. /// </summary> /// <param name="filterGroup"> /// A <see cref="IFilterGroup"></see> to modify. /// </param> /// <param name="filter"> /// An <see cref="IFilterExpression"></see> to add. /// </param> /// <returns> /// A reference to the <paramref name="filterGroup"/> after the /// operation has completed. /// </returns> public static IFilterGroup AddExpression(this IFilterGroup filterGroup, IFilterExpression filter) { filterGroup.Filters.Add(filter); return(filterGroup); }
private void Form1_Load(object sender, EventArgs e) { _MainLog = new TextBoxLogger(txtLog); _WorkerALog = new TextBoxLogger(txtWorkerALog); _WorkerBLog = new TextBoxLogger(txtWorkerBLog); _ManagerLog = new TextBoxLogger(txtManagerLog); _ClientRef = Reference <ICoreClient> .Create(new CoreClientFactory(_MainLog).Create()); // init controls txtWorkerComputer.Text = Environment.MachineName; txtWorkerInstance.Text = "A"; // - form title WinFormHelper.SetAppFormTitle(this, BuildConst.BuildEnv); cbMarketName.Items.Add(CurveConst.QR_EOD); cbMarketName.Items.Add(CurveConst.NAB_EOD); cbMarketName.SelectedIndex = 0; cbCounterParty.Items.Add("14859,Woolworths"); cbCounterParty.Items.Add("13142,Barclays"); cbCounterParty.SelectedIndex = 0; // setup the request progress view _ProgressViewHelper = new ProgressViewHelper(); _ProgressDataHelper = new ProgressDataHelper(); _ProgressFilters = new ComboxBoxFilterGroup( panelProgress, _ProgressViewHelper, new EventHandler(ProgressSelectionChanged)); _ProgressSelecter = new ProgressSelecter( _ProgressFilters, _ProgressViewHelper, _ProgressDataHelper); _ProgressView = new ListViewManager <ProgressObj>( _MainLog, lvProgress, _ProgressViewHelper, _ProgressSelecter, _ProgressFilters, new ProgressSorter(), _ProgressDataHelper); _ClientRef.Target.SubscribeNoWait <PortfolioValuationRequest>(Expr.ALL, ProgressCallback, null); _ClientRef.Target.SubscribeNoWait <TradeValuationRequest>(Expr.ALL, ProgressCallback, null); _ClientRef.Target.SubscribeNoWait <OrdinaryCurveGenRequest>(Expr.ALL, ProgressCallback, null); _ClientRef.Target.SubscribeNoWait <StressedCurveGenRequest>(Expr.ALL, ProgressCallback, null); _ClientRef.Target.SubscribeNoWait <UnassignedWorkflowRequest>(Expr.ALL, ProgressCallback, null); _ClientRef.Target.SubscribeNoWait <AssignedWorkflowRequest>(Expr.ALL, ProgressCallback, null); _ClientRef.Target.SubscribeNoWait <HandlerResponse>(Expr.ALL, ProgressCallback, null); _ClientRef.Target.SubscribeNoWait <WorkerResponse>(Expr.ALL, ProgressCallback, null); _ClientRef.Target.SubscribeNoWait <ManagerResponse>(Expr.ALL, ProgressCallback, null); // setup the worker availability view _AvailabilityViewHelper = new AvailabilityViewHelper(); _AvailabilityDataHelper = new AvailabilityDataHelper(); _AvailabilityFilters = new ComboxBoxFilterGroup( panelAvailability, _AvailabilityViewHelper, new EventHandler(AvailabilitySelectionChanged)); _AvailabilitySelecter = new AvailabilitySelecter( _AvailabilityFilters, _AvailabilityViewHelper, _AvailabilityDataHelper); _AvailabilityView = new ListViewManager <WorkerAvailability>( _MainLog, lvAvailability, _AvailabilityViewHelper, _AvailabilitySelecter, _AvailabilityFilters, new AvailabilitySorter(), _AvailabilityDataHelper); ICoreCache _AvailabilityCache = _ClientRef.Target.CreateCache( delegate(CacheChangeData update) { _AvailabilityView.UpdateData(new ViewChangeNotification <WorkerAvailability>() { Change = update.Change, OldData = (update.OldItem != null) ? (WorkerAvailability)update.OldItem.Data : null, NewData = (update.NewItem != null) ? (WorkerAvailability)update.NewItem.Data : null }); }, WindowsFormsSynchronizationContext.Current); _AvailabilityCache.SubscribeNoWait <WorkerAvailability>(Expr.ALL, null, null); }
// this class is currently is a placeholder for future selection rules public AvailabilitySelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <WorkerAvailability> dataHelper) : base(filterValues, viewHelper, dataHelper) { }
private static List <IFilter> CollectInGroupFilters(this TreeContext context, IFilterGroup filterGroup) { var filters = context.FiltersInGroup .SafeGet(filterGroup.FilterInfo.FilterToken, () => new List <IFilter>()) .ToList(); filters.AddRange(filters.OfType <IFilterGroup>().SelectMany(context.GetInGroupFilters).ToList()); return(filters); }
// this class is currently is a placeholder for future selection rules public ProgressSelecter(IFilterGroup filterValues, IViewHelper viewHelper, IDataHelper <ProgressObj> dataHelper) : base(filterValues, viewHelper, dataHelper) { }
private static IFilter CreateExistsFilter(INode node, IFilterGroup filterGroup) { var dependency = new CollectionDependency(node.Token); return new ExistsFilter(dependency, filterGroup.FilterInfo); }
private static INode CreateNodeForFilterGroup(this TreeContext context, IFilterGroup filterGroup) { var groupDependencies = GroupFiltersService.GetGroupDependencies(context, filterGroup); var provider = new GroupProvider(groupDependencies, filterGroup, context.Store, filterGroup.DiagInfo); return Node.CreateNode(filterGroup.NodeToken, provider, true, context); }
/// <summary> /// Filter a collection of ruminants by the parameters defined in the filter group /// </summary> public static IEnumerable <Ruminant> FilterRuminants(this IEnumerable <Ruminant> individuals, IFilterGroup group) { var filters = group.FindAllChildren <RuminantFilter>(); string TestGender(RuminantFilter filter, string gender) { /* CONDITIONAL LOGIC IS ORDER DEPENDENT, DO NOT REARRANGE */ // Gender is already determined if (gender == "Both") { return(gender); } // If gender is undetermined, use the filter gender if (gender == "Either") { return(filter.Gender); } // No need to change gender if parameter is genderless if (filter.Gender == "Either") { return(gender); } // If the genders do not match, return both if (filter.Gender != gender) { return("Both"); } // If the genders match, return the current gender else { return(gender); } } // Which gender do the parameters belong to string genders = filters.Aggregate("Either", (s, f) => TestGender(f, s)); group.CombinedRules = filters.Select(f => f.ToRule()); // There will be no ruminants with parameters belonging to both genders IEnumerable <Ruminant> result = new List <Ruminant>(); if (genders == "Either") { result = individuals; } else if (genders == "Female") { result = individuals.OfType <RuminantFemale>(); } else if (genders == "Male") { result = individuals.OfType <RuminantMale>(); } else { return(result); } double proportion = group.Proportion <= 0 ? 1 : group.Proportion; int number = Convert.ToInt32(Math.Ceiling(proportion * individuals.Count())); var sorts = group.FindAllChildren <ISort>(); return(result.Filter(group).Sort(sorts).Take(number)); }
private static IFilter CreateExistsFilter(INode node, IFilterGroup filterGroup) { var dependency = new CollectionDependency(node.Token); return(new ExistsFilter(dependency, filterGroup.FilterInfo)); }