Beispiel #1
0
        // possibly filter an event list by view or count
        public List<ZonelessEvent> Filter(string view, int count, DateTime from, DateTime to, string source, ZonelessEventStore es, Dictionary<string,object> args)
        {
            var events = es.events.CloneObject();

            var bare_events = args.HasValue("bare_events", true);
            var is_html_renderer = args.HasValue("html_renderer", true);

            if (!String.IsNullOrEmpty(source))
                events = SourceFilter(source, events);

            if (!String.IsNullOrEmpty(view))
                events = ViewFilter(view, events);

            if (from != DateTime.MinValue && to != DateTime.MinValue)
                events = TimeFilter(from, to, events);

            if (! bare_events)									// bracket the available range before (maybe) reducing to count
                es.RememberFirstAndLastAvailableDays(events);   // not required for non-html renderers but no reason to exclude them

            if (count != 0)                                      // includes case where bare_events is true
                events = CountFilter(count, events);

            if ( ! is_html_renderer )   // do nothing else for non-html views
                return events;
            else                                   // post-process result set to yield ~500 day-aligned events
            {
                var from_to = new Dictionary<string, DateTime>();

                if (bare_events)
                    from_to = HandleBareEvents(from);
                else
                    from_to = HandleClothedEvents(events);

                if (from_to == null)
                    return events;
                else
                    return TimeFilter((DateTime)from_to["from_date"], (DateTime)from_to["to_date"], events);
            }
        }