Skip to content
This repository has been archived by the owner on Dec 27, 2022. It is now read-only.

Commit

Permalink
Dev.1.4.0 (#15)
Browse files Browse the repository at this point in the history
Release V.1.4.0
* Close #14
  • Loading branch information
jibedoubleve committed Mar 29, 2018
1 parent ce0189b commit 1384f60
Show file tree
Hide file tree
Showing 8 changed files with 132 additions and 16 deletions.
24 changes: 23 additions & 1 deletion Probel.JsonReader.Business/Data/LogFilterExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,16 @@ public static class LogFilterExtensions
{
#region Methods

public static IEnumerable<string> GetCategories(this IEnumerable<LogModel> models)
{
var result = (from m in models select m.Logger)
.OrderBy(e => e)
.Distinct()
.ToList();
return result;

}

public static IEnumerable<LogModel> Filter(this IEnumerable<LogModel> models, decimal minutes, IFilter filter)
{
var levels = new List<string>();
Expand Down Expand Up @@ -41,8 +51,20 @@ where levels.Contains(l.Level)
: result.OrderByDescending(e => e.Time);
}

public static IEnumerable<LogModel> Filter(this IEnumerable<LogModel> models, IEnumerable<string> categories, IFilter filter)
{
var result = (from m in models
where categories.Contains(m.Logger)
select m)
.ToList();

return (filter.IsSortAscending)
? result.OrderBy(e => e.Time)
: result.OrderByDescending(e => e.Time);
}

public static async Task<IEnumerable<LogModel>> FilterAsync(this IEnumerable<LogModel> models, decimal minutes, IFilter filter)
{
{
return await Task.Run(() => Filter(models, minutes, filter));
}

Expand Down
27 changes: 27 additions & 0 deletions Probel.JsonReader.Presentation/Properties/Messages.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions Probel.JsonReader.Presentation/Properties/Messages.resx
Original file line number Diff line number Diff line change
Expand Up @@ -210,4 +210,13 @@
<data name="Header_PlusSign" xml:space="preserve">
<value>(+)</value>
</data>
<data name="Menu_Categories" xml:space="preserve">
<value>C_ategories</value>
</data>
<data name="Menu_Category_All" xml:space="preserve">
<value>All</value>
</data>
<data name="Menu_Category_None" xml:space="preserve">
<value>None</value>
</data>
</root>
7 changes: 6 additions & 1 deletion Probel.JsonReader.Presentation/ViewModels/ShellViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ public decimal FilterMinutes
set => SetProperty(ref _filterMinutes, value, nameof(FilterMinutes));
}

internal void FilterCategories(IEnumerable<string> categories) => FillLogs(BufferLogs.Filter(categories, Settings));

public ObservableCollection<LogModel> Logs
{
get => _logs;
Expand All @@ -75,6 +77,8 @@ public ObservableCollection<LogModel> Logs

public ICommand OpenCommand { get; }

internal async Task OpenFileAsync(string path) => await Task.Run(() => Open(path));

[Dependency]
public SettingsViewModel Settings
{
Expand Down Expand Up @@ -126,6 +130,7 @@ public async Task Load()

}

internal IEnumerable<string> GetCategories() => BufferLogs.GetCategories();

private bool CanFilter(string arg)
{
Expand Down Expand Up @@ -205,7 +210,7 @@ private void AddFileInHistory(string filePath)
where f == filePath
select f).Count() > 0;

if (!doubloon) { Settings.FileHistory.Add(filePath);}
if (!doubloon) { Settings.FileHistory.Add(filePath); }
}

private void SetItemsCount() => StatusItemsCount = string.Format(Messages.Status_xxItems, Logs.Count);
Expand Down
3 changes: 2 additions & 1 deletion Probel.JsonReader.Presentation/Views/ShellView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<MenuItem x:Name="FileMenu" Header="{x:Static m:Messages.Menu_File}">
<MenuItem Click="OnFileMenuOpenMenu" Header="{x:Static m:Messages.Menu_File_Open}" />
<MenuItem
x:Name="_buttonHistory"
x:Name="_menuHistory"
Click="OnClickHistory"
Header="{x:Static m:Messages.Menu_File_History}" />
<Separator />
Expand Down Expand Up @@ -85,6 +85,7 @@
Header="{x:Static m:Messages.MenuItem_NoFilter}"
IsChecked="{Binding FilterMinutes, Converter={StaticResource MinutesFilterToBooleanConverter}, ConverterParameter=0}" />
</MenuItem>
<MenuItem x:Name="_menuCategories" Header="{x:Static m:Messages.Menu_Categories}" />
<MenuItem Header="{x:Static m:Messages.Menu_Order}">
<MenuItem
Click="OnShowColumn"
Expand Down
72 changes: 62 additions & 10 deletions Probel.JsonReader.Presentation/Views/ShellView.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@ namespace Probel.JsonReader.Presentation.Views
/// </summary>
public partial class ShellView : Window
{
#region Fields

private readonly ILogService _logger;

#endregion Fields

#region Constructors

public ShellView(ILogService logger)
Expand All @@ -34,7 +39,21 @@ public ShellView(ILogService logger)

#region Methods

private void OnClickHistory(object sender, RoutedEventArgs e) => RefreshFileHistory();
private void OnCategoryClick(object sender, RoutedEventArgs e)
{
if (sender is MenuItem mi)
{
mi.IsChecked = !mi.IsChecked;

var categories = (from m in _menuCategories.Items.Cast<MenuItem>()
where m.IsChecked == true
select (string)m.Header).ToList();

ViewModel.FilterCategories(categories);
}
}

private void OnClickHistory(object sender, RoutedEventArgs e) => Refresh();

private void OnFileMenuOpenMenu(object sender, RoutedEventArgs e)
{
Expand All @@ -61,19 +80,20 @@ private void OnShowColumn(object sender, RoutedEventArgs e)
mi.IsChecked = !mi.IsChecked;
}
}

private async void OnWindowLoad(object sender, RoutedEventArgs e)
{
await ViewModel.Load();
RefreshFileHistory();
Refresh();
}

private void OpenFile(string path)
private async void OpenFile(string path)
{
if (File.Exists(path))
{
ViewModel.Title = path;
ViewModel.OpenCommand.TryExecute(path);
RefreshFileHistory();
await ViewModel.OpenFileAsync(path);
Refresh();
}
else
{
Expand All @@ -87,25 +107,57 @@ private void OpenFile(string path)
if (toRemove != null)
{
ViewModel.Settings.FileHistory.Remove(toRemove);
RefreshFileHistory();
Refresh();
}
}
}

private void RefreshCategories()
{
_menuCategories.Items.Clear();
var categories = ViewModel.GetCategories();

for (var i = 0; i < categories.Count(); i++)
{
var btn = new MenuItem()
{
Header = categories.ElementAt(i),
IsChecked = true
};
btn.Click += OnCategoryClick;

_menuCategories.Items.Insert(i, btn);
}
}
private void Refresh()
{
RefreshFileHistory();
RefreshCategories();
}
private void RefreshFileHistory()
{
_buttonHistory.Items.Clear();
var history = ViewModel.Settings.FileHistory.OrderBy(i => i).ToList();
_menuHistory.Items.Clear();
var history = ViewModel.Settings.FileHistory.OrderBy(h => h).ToList();
var i = 0;

for (var i = 0; i < history.Count(); i++)
for (i = 0; i < history.Count(); i++)
{
var btn = new MenuItem() { Header = history[i] };
btn.Click += OnMenuClick;

_buttonHistory.Items.Insert(i, btn);
_menuHistory.Items.Insert(i, btn);
}

//var btn_all = new MenuItem() { Header = Messages.Menu_Category_All };

//var btn_none = new MenuItem() { Header = Messages.Menu_Category_None };

//_menuHistory.Items.Insert(++i, btn_all);
//_menuHistory.Items.Insert(++i, btn_none);

}

#endregion Methods

}
}
4 changes: 2 additions & 2 deletions Version.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@
// [assembly: AssemblyVersion("1.0.*")]
using System.Reflection;

[assembly: AssemblyVersion("1.3.0")]
[assembly: AssemblyFileVersion("1.3.0")]
[assembly: AssemblyVersion("1.4.0")]
[assembly: AssemblyFileVersion("1.4.0")]
2 changes: 1 addition & 1 deletion build/setup.iss
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Log Reader"
#define MyAppVersion "1.3.0"
#define MyAppVersion "1.4.0"
#define MyAppPublisher "Probel"
#define MyAppURL "http://www.probel.xyz"
#define MyAppExeName "Probel.JsonReader.Presentation.exe"
Expand Down

0 comments on commit 1384f60

Please sign in to comment.