diff --git a/SmartAquaViewer/Model/FileModel.cs b/SmartAquaViewer/Model/FileModel.cs index 1cef82a..c6cef1a 100644 --- a/SmartAquaViewer/Model/FileModel.cs +++ b/SmartAquaViewer/Model/FileModel.cs @@ -8,7 +8,8 @@ namespace SmartAquaViewer.Model { public class FileModel { - public string Name { get; set; } - public string Content { get; set; } + public string? Name { get; set; } + public DateTime RecordedDate { get; set; } + public string? Content { get; set; } } } diff --git a/SmartAquaViewer/ViewModel/FileListViewModel.cs b/SmartAquaViewer/ViewModel/FileListViewModel.cs index 6ddb383..c08ee60 100644 --- a/SmartAquaViewer/ViewModel/FileListViewModel.cs +++ b/SmartAquaViewer/ViewModel/FileListViewModel.cs @@ -55,20 +55,22 @@ namespace SmartAquaViewer.ViewModel if (openFileDialog.ShowDialog() == true) { - FileList.Clear(); - foreach (var filePath in openFileDialog.FileNames) { - var fileName = System.IO.Path.GetFileName(filePath); + var fileName = Path.GetFileName(filePath).Replace(".json", ""); + var year = int.Parse(fileName.Split("-")[0]); + var month = int.Parse(fileName.Split("-")[1]); + var day = int.Parse(fileName.Split("-")[2]); + var date = new DateTime(year, month, day); - var fileModel = new FileModel { Name = fileName }; + var fileModel = new FileModel { Name = fileName, RecordedDate = date }; var fileContent = File.ReadAllText(filePath); fileModel.Content = fileContent; - if (!FileList.Any(f => f.Name == fileModel.Name)) - { - FileList.Add(fileModel); - } + if (FileList.Any(f => f.Name == fileModel.Name)) continue; + + FileList.Add(fileModel); + OrderFileListByDate(); } } } @@ -92,6 +94,16 @@ namespace SmartAquaViewer.ViewModel } } + private void OrderFileListByDate() + { + var orderedList = FileList.OrderBy(f => f.RecordedDate).ToList(); + FileList.Clear(); + foreach (var file in orderedList) + { + FileList.Add(file); + } + } + public event PropertyChangedEventHandler? PropertyChanged; private void OnPropertyChanged([CallerMemberName] string? name = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));