public LogStatisticsPresenter(
     LogStatisticsUi ui,
     MethodRunner runner)
     : base(ui)
 {
     this.ui     = ui;
     this.runner = runner;
 }
示例#2
0
        public virtual void Display(
            LogStatisticsUi ui,
            LogStatistics stats,
            bool reset)
        {
            var r = this.runner;

            r?.Run <SettingsHolder, Labels>(
                (settings, labels) =>
            {
                var defaultInfo = reset
                        ? string.Empty
                        : labels.NoEntriesInRange;

                var tf    = settings.TimestampFormat;
                var total = reset
                        ? defaultInfo
                        : stats.TotalEntryCount.ToString();
                var oldest       = stats.OldestTimestamp;
                var newest       = stats.NewestTimestamp;
                var earliest     = stats.EarliestTimestamp;
                var latest       = stats.LatestTimestamp;
                var oldestString = oldest == default
                        ? defaultInfo
                        : oldest.ToString(tf);
                var newestString = newest == default
                        ? defaultInfo
                        : newest.ToString(tf);
                var earliestString = earliest == default
                        ? defaultInfo
                        : earliest.ToString(tf);
                var latestString = latest == default
                        ? defaultInfo
                        : latest.ToString(tf);
                var avgPerDay = reset
                        ? string.Empty
                        : Math.Round(stats.AvgEntriesPerDay, 4)
                                .ToString(CultureInfo.CurrentUICulture);
                r.Run <UiReaderWriter>(uiRW =>
                {
                    uiRW.WriteSync(
                        ui,
                        () =>
                    {
                        ui.TotalEntryCount   = total;
                        ui.OldestTimestamp   = oldestString;
                        ui.NewestTimestamp   = newestString;
                        ui.EarliestTimestamp = earliestString;
                        ui.LatestTimestamp   = latestString;
                        ui.AvgEntriesPerDay  = avgPerDay;
                    });
                });
            },
                stats.LogDependencyName);
        }
示例#3
0
        public virtual void Display(
            LogStatisticsUi ui,
            string name,
            bool reset)
        {
            var r = this.runner;

            r?.Run <LogStatistics>(stats =>
            {
                this.Display(ui, stats, reset);
            },
                                   name);
        }
示例#4
0
 public SetupLogCommand(
     LogUi ui,
     ShellUi shell,
     LogStatisticsUi statsUi,
     SettingsHolder settings,
     MethodWeb web)
 {
     this.ui    = ui;
     this.shell = shell;
     settings   = settings
                  ?? new SettingsHolder();
     settings.StatisticsEnabled = truth;
     this.settings = settings;
     this.statsUi  = statsUi;
     this.web      = web;
 }
示例#5
0
        public virtual void Handle(
            LogStatisticsUi ui,
            string name)
        {
            var r = this.runner;

            r?.Run <LogStatistics>(stats =>
            {
                r.Run <FilterSetter>(
                    setter =>
                {
                    setter.Set(
                        ui,
                        name);
                });

                stats.ComputeOverall();

                r.Run <UiReaderWriter, Labels>(
                    (uiRW, labels) =>
                {
                    uiRW.Write(
                        ui,
                        () =>
                    {
                        if (ui == null)
                        {
                            return;
                        }

                        ui.Title = labels.Overall;
                    });
                });

                r.Run <StatsDisplayer>(sd =>
                {
                    const bool falsity = false;
                    sd.Display(
                        ui,
                        stats,
                        falsity);
                });
            },
                                   name);
        }
示例#6
0
        public virtual void Set(
            LogStatisticsUi ui,
            string name)
        {
            var r = this.runner;

            r?.Run <LogStatistics, UiReaderWriter>(
                (stats, uiRW) =>
            {
                stats.FilterContent = uiRW.Read(
                    ui,
                    () => ui?.FilterContent);
                stats.FilterType = uiRW.Read(
                    ui,
                    () => ui?.FilterType);
            },
                name);
        }
示例#7
0
        public virtual void Handle(
            LogStatisticsUi ui,
            Gen <LogUi> readLogUi,
            string name)
        {
            var r = this.runner;

            r?.Run <Log.SettingsHolder>(settings =>
            {
                if (settings.ResetOnStart)
                {
                    r.Run <DateResetter>(dr =>
                    {
                        dr.Reset(ui, name);
                    });
                }
            },
                                        name);

            r?.Run <UiReaderWriter>(uiRW =>
            {
                var contentFilter = uiRW.Read(
                    ui,
                    () => ui?.FilterContent);
                if (string.IsNullOrEmpty(contentFilter))
                {
                    var logUi = readLogUi?.Invoke();
                    if (logUi == null)
                    {
                        return;
                    }

                    contentFilter = uiRW.Read(
                        logUi,
                        () => logUi?.FilterContent);
                    uiRW.WriteSync(
                        ui,
                        () =>
                    {
                        ui.FilterContent = contentFilter;
                    });
                }
            });
        }
示例#8
0
        public virtual void Reset(
            LogStatisticsUi ui,
            string name)
        {
            var r = this.runner;

            r?.Run <LogStatistics, UiReaderWriter>(
                (stats, uiRW) =>
            {
                var today = DateTime.Today;
                r.Run <Framework.Log.TimeProvider>(provider =>
                {
                    today = provider.Now().Date;
                });

                const byte six = 6;
                var lastWeek   = today.Subtract(
                    TimeSpan.FromDays(six));
                uiRW.WriteSync(
                    ui,
                    () =>
                {
                    if (ui == null)
                    {
                        return;
                    }

                    ui.StartDate = lastWeek;
                    ui.EndDate   = today;
                });

                stats.Reset();

                r.Run <StatsDisplayer>(displayer =>
                {
                    const bool truth = true;
                    displayer.Display(
                        ui,
                        stats,
                        truth);
                });
            },
                name);
        }
示例#9
0
        public virtual void Handle(
            LogStatisticsUi ui,
            string name)
        {
            var r = this.runner;

            r?.Run <DateResetter>(dr =>
            {
                dr.Reset(ui, name);
            });

            if (ui is LogStatisticsUiV2 v2)
            {
                r?.Run <LabelApplier>(applier =>
                {
                    applier.Apply(v2);
                });
            }
        }
        public virtual void Handle(
            LogStatisticsUi ui)
        {
            var r = this.runner;

            r?.Run <UiReaderWriter>(uiRW =>
            {
                uiRW.Write(
                    ui,
                    () =>
                {
                    if (ui == null)
                    {
                        return;
                    }

                    ui.FilterType = null;
                });
            });
        }
示例#11
0
        public virtual void Handle(
            LogStatisticsUi ui,
            string name)
        {
            var r = this.runner;

            r?.Run <UiReaderWriter>(uiRW =>
            {
                r.Run <FilterSetter>(fs =>
                {
                    fs.Set(ui, name);
                });

                r.Run <
                    LogStatistics,
                    SettingsHolder,
                    Labels>(
                    (stats, settings, labels) =>
                {
                    var startNullable = uiRW.Read(
                        ui,
                        () => ui?.StartDate);
                    var endNullable = uiRW.Read(
                        ui,
                        () => ui?.EndDate);
                    if (startNullable == null || endNullable == null)
                    {
                        return;
                    }

                    var start = startNullable.Value;
                    var end   = endNullable.Value;
                    stats.ComputeRange(
                        start, end);

                    var df       = settings.DateFormat;
                    var typeInfo = labels.Range(
                        start,
                        end,
                        df);
                    uiRW.Write(
                        ui,
                        () =>
                    {
                        if (ui == null)
                        {
                            return;
                        }

                        ui.Title = typeInfo;
                    });

                    r.Run <StatsDisplayer>(sd =>
                    {
                        sd.Display(ui, stats, false);
                    });
                },
                    name,
                    name);
            });
        }