From 254d07e096747c6cca2f9c13ebcb8cb0ae257805 Mon Sep 17 00:00:00 2001 From: britto Date: Mon, 11 Dec 2023 13:08:34 -0500 Subject: [PATCH 1/9] Always choose max id + 1 as the next id --- NickvisionMoney.Shared/Models/Account.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/NickvisionMoney.Shared/Models/Account.cs b/NickvisionMoney.Shared/Models/Account.cs index 55df4df45..8f551c651 100644 --- a/NickvisionMoney.Shared/Models/Account.cs +++ b/NickvisionMoney.Shared/Models/Account.cs @@ -1012,7 +1012,10 @@ public async Task DeleteTransactionAsync(uint id) Transactions.Remove(id); if (id + 1 == NextAvailableTransactionId) { - NextAvailableTransactionId--; + if(Transactions.Count == 0) + NextAvailableTransactionId = 1; + else + NextAvailableTransactionId = Transactions.Max(x => x.Key) + 1; } BackupAccountToCSV(); return true; From 3ede87189d012c47a48458660857ee5d34c5696f Mon Sep 17 00:00:00 2001 From: britto Date: Mon, 11 Dec 2023 13:48:44 -0500 Subject: [PATCH 2/9] Sort now tries to be consistent If sort by is set to amount, try sorting by date if amounts are same. For sorting by date, if dates are equal sort by id. This should hopefully make the transactions order consistent. This also means that SortTransactions will almost never return zero which is a good thing I believe. --- .../Controllers/AccountViewController.cs | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/NickvisionMoney.Shared/Controllers/AccountViewController.cs b/NickvisionMoney.Shared/Controllers/AccountViewController.cs index fe3f2181a..3575af80c 100644 --- a/NickvisionMoney.Shared/Controllers/AccountViewController.cs +++ b/NickvisionMoney.Shared/Controllers/AccountViewController.cs @@ -410,19 +410,31 @@ private int SortTransactions(uint a, uint b) } else if (SortTransactionsBy == SortBy.Date) { - compareTo = _account.Transactions[a].Date.CompareTo(_account.Transactions[b].Date); + compareTo = GetCompareToByDate(); } else if (SortTransactionsBy == SortBy.Amount) { - var aAmount = _account.Transactions[a].Amount * (_account.Transactions[a].Type == TransactionType.Income ? 1m : -1m); - var bAmount = _account.Transactions[b].Amount * (_account.Transactions[b].Type == TransactionType.Income ? 1m : -1m); - compareTo = aAmount.CompareTo(bAmount); + compareTo = GetCompareToByAmount(); } if (!SortFirstToLast) { compareTo *= -1; } return compareTo; + + int GetCompareToByDate() + { + var result = _account.Transactions[a].Date.CompareTo(_account.Transactions[b].Date); + return result == 0 ? a.CompareTo(b) : result; // If dates are equal, sort by id + } + + int GetCompareToByAmount() + { + var aAmount = _account.Transactions[a].Amount * (_account.Transactions[a].Type == TransactionType.Income ? 1m : -1m); + var bAmount = _account.Transactions[b].Amount * (_account.Transactions[b].Type == TransactionType.Income ? 1m : -1m); + var result = aAmount.CompareTo(bAmount); + return result == 0 ? GetCompareToByDate() : result; // If amounts are equal, sort by date + } } /// @@ -628,15 +640,7 @@ public async Task AddTransactionAsync(Transaction transaction) if (res.Successful) { var transactions = _account.Transactions.Keys.ToList(); - transactions.Sort((a, b) => - { - var compareTo = SortTransactionsBy == SortBy.Date ? _account.Transactions[a].Date.CompareTo(_account.Transactions[b].Date) : a.CompareTo(b); - if (!SortFirstToLast) - { - compareTo *= -1; - } - return compareTo; - }); + transactions.Sort(SortTransactions); for (var i = 0; i < transactions.Count; i++) { if (transactions[i] == transaction.Id) From b4faaf71e1f17fe6a42ba5bcb1e7bd78403e3d9c Mon Sep 17 00:00:00 2001 From: britto Date: Mon, 11 Dec 2023 17:20:50 -0500 Subject: [PATCH 3/9] Fix code styling issues --- .../Controllers/AccountViewController.cs | 12 ++++++++++-- NickvisionMoney.Shared/Models/Account.cs | 4 ++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/NickvisionMoney.Shared/Controllers/AccountViewController.cs b/NickvisionMoney.Shared/Controllers/AccountViewController.cs index 3575af80c..2af3e0023 100644 --- a/NickvisionMoney.Shared/Controllers/AccountViewController.cs +++ b/NickvisionMoney.Shared/Controllers/AccountViewController.cs @@ -410,11 +410,19 @@ private int SortTransactions(uint a, uint b) } else if (SortTransactionsBy == SortBy.Date) { - compareTo = GetCompareToByDate(); + compareTo = _account.Transactions[a].Date.CompareTo(_account.Transactions[b].Date); + compareTo = compareTo == 0 ? a.CompareTo(b) : compareTo; } else if (SortTransactionsBy == SortBy.Amount) { - compareTo = GetCompareToByAmount(); + var aAmount = _account.Transactions[a].Amount * (_account.Transactions[a].Type == TransactionType.Income ? 1m : -1m); + var bAmount = _account.Transactions[b].Amount * (_account.Transactions[b].Type == TransactionType.Income ? 1m : -1m); + compareTo = aAmount.CompareTo(bAmount); + if (compareTo == 0) + { + compareTo = _account.Transactions[a].Date.CompareTo(_account.Transactions[b].Date); + compareTo = compareTo == 0 ? a.CompareTo(b) : compareTo; + } } if (!SortFirstToLast) { diff --git a/NickvisionMoney.Shared/Models/Account.cs b/NickvisionMoney.Shared/Models/Account.cs index 8f551c651..83a7825b3 100644 --- a/NickvisionMoney.Shared/Models/Account.cs +++ b/NickvisionMoney.Shared/Models/Account.cs @@ -1013,9 +1013,13 @@ public async Task DeleteTransactionAsync(uint id) if (id + 1 == NextAvailableTransactionId) { if(Transactions.Count == 0) + { NextAvailableTransactionId = 1; + } else + { NextAvailableTransactionId = Transactions.Max(x => x.Key) + 1; + } } BackupAccountToCSV(); return true; From a89915edf839410b6af9235de269e6369cbfd457 Mon Sep 17 00:00:00 2001 From: britto Date: Mon, 11 Dec 2023 17:25:33 -0500 Subject: [PATCH 4/9] Trigger OnCalendarMonthYearChanged when pressing today button. Currently there when pressing "Today" button the marks disappear. This commit fixes that --- NickvisionMoney.GNOME/Views/AccountView.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/NickvisionMoney.GNOME/Views/AccountView.cs b/NickvisionMoney.GNOME/Views/AccountView.cs index 2b94bd12f..9ee7c3bfc 100644 --- a/NickvisionMoney.GNOME/Views/AccountView.cs +++ b/NickvisionMoney.GNOME/Views/AccountView.cs @@ -1241,6 +1241,7 @@ private void OnSelectCurrentMonth(Gtk.Button sender, EventArgs e) private void OnResetCalendarFilter(Gtk.Button sender, EventArgs e) { gtk_calendar_select_day(_calendar.Handle, ref g_date_time_new_now_local()); + OnCalendarMonthYearChanged(null, e); _rangeExpander.SetEnableExpansion(false); } From d43fb541d4c217dd22a8599aecdd7c352b6cb380 Mon Sep 17 00:00:00 2001 From: britto Date: Mon, 11 Dec 2023 17:36:10 -0500 Subject: [PATCH 5/9] All - Update changelog --- NickvisionMoney.GNOME/Program.cs | 10 +++------- .../Linux/org.nickvision.money.metainfo.xml.in | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/NickvisionMoney.GNOME/Program.cs b/NickvisionMoney.GNOME/Program.cs index 2b9af08a4..8cd8a3887 100644 --- a/NickvisionMoney.GNOME/Program.cs +++ b/NickvisionMoney.GNOME/Program.cs @@ -42,13 +42,9 @@ public Program(string[] args) _mainWindow = null; _mainWindowController = new MainWindowController(args); _mainWindowController.AppInfo.Changelog = - @"* Disallowed whitespace-only group and account names - * Fixed an issue where exported PDF values were incorrect - * Fixed an issue where some system cultures were not read properly - * Fixed an issue where scrolling the sidebar with the mouse over the calendar would scroll the calendar instead - * Fixed an issue where leading or trailing spaces in group/account names aren't discarded - * Updated to GNOME 45 runtime with latest libadwaita design - * Updated to .NET 8.0 + @"* Fixed an issue where the generated ids of new transactions were incorrect. + * Fixed an issue that causes sort to behave inconsistently. + * Fixed calendar not showing marks for transactions after pressing the ""Today"" button. * Updated and added translations (Thanks to everyone on Weblate)!"; _application.OnActivate += OnActivate; if (File.Exists(Path.GetFullPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)) + "/org.nickvision.money.gresource")) diff --git a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in b/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in index 431694773..4c27f26fe 100644 --- a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in +++ b/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in @@ -49,13 +49,9 @@ -

- Disallowed whitespace-only group and account names

-

- Fixed an issue where exported PDF values were incorrect

-

- Fixed an issue where some system cultures were not read properly

-

- Fixed an issue where scrolling the sidebar with the mouse over the calendar would scroll the calendar instead

-

- Fixed an issue where leading or trailing spaces in group/account names aren't discarded

-

- Updated to GNOME 45 runtime with latest libadwaita design

-

- Updated to .NET 8.0

+

- Fixed an issue where the generated ids of new transactions were incorrect.

+

- Fixed an issue that causes sort to behave inconsistently.

+

- Fixed calendar not showing marks for transactions after pressing the "Today" button.

- Updated translations (Thanks to everyone on Weblate)!

From 6f6e27f8f547f16b57733c5b53a0f336b7b9a535 Mon Sep 17 00:00:00 2001 From: britto Date: Mon, 11 Dec 2023 17:51:17 -0500 Subject: [PATCH 6/9] Update Version --- NickvisionMoney.Shared/Controllers/MainWindowController.cs | 2 +- .../Linux/org.nickvision.money.metainfo.xml.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/NickvisionMoney.Shared/Controllers/MainWindowController.cs b/NickvisionMoney.Shared/Controllers/MainWindowController.cs index fb865e4a1..094a8a2e4 100644 --- a/NickvisionMoney.Shared/Controllers/MainWindowController.cs +++ b/NickvisionMoney.Shared/Controllers/MainWindowController.cs @@ -86,7 +86,7 @@ public MainWindowController(string[] args) Directory.Delete($"{UserDirectories.Config}{Path.DirectorySeparatorChar}Nickvision{Path.DirectorySeparatorChar}{AppInfo.Name}", true); } Aura.Active.SetConfig("config"); - AppInfo.Version = "2023.11.0"; + AppInfo.Version = "2023.12.0-next"; AppInfo.ShortName = _("Denaro"); AppInfo.Description = _("Manage your personal finances"); AppInfo.SourceRepo = new Uri("https://github.com/NickvisionApps/Denaro"); diff --git a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in b/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in index 4c27f26fe..cfa96da9b 100644 --- a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in +++ b/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in @@ -47,7 +47,7 @@ application/x-nmoney - +

- Fixed an issue where the generated ids of new transactions were incorrect.

- Fixed an issue that causes sort to behave inconsistently.

From 741e22e43d7f73abd91bdf7f62ba28d924d23eab Mon Sep 17 00:00:00 2001 From: britto Date: Mon, 11 Dec 2023 18:29:41 -0500 Subject: [PATCH 7/9] Bump release date --- .../Linux/org.nickvision.money.metainfo.xml.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in b/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in index cfa96da9b..f6ebc139b 100644 --- a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in +++ b/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in @@ -47,7 +47,7 @@ application/x-nmoney - +

- Fixed an issue where the generated ids of new transactions were incorrect.

- Fixed an issue that causes sort to behave inconsistently.

From bc80e60717d4fa7700223ee19536a0dbfaacfa39 Mon Sep 17 00:00:00 2001 From: britto Date: Mon, 11 Dec 2023 19:05:51 -0500 Subject: [PATCH 8/9] Changelog - Fix grammar --- NickvisionMoney.GNOME/Program.cs | 2 +- .../Linux/org.nickvision.money.metainfo.xml.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/NickvisionMoney.GNOME/Program.cs b/NickvisionMoney.GNOME/Program.cs index 8cd8a3887..d345e4730 100644 --- a/NickvisionMoney.GNOME/Program.cs +++ b/NickvisionMoney.GNOME/Program.cs @@ -43,7 +43,7 @@ public Program(string[] args) _mainWindowController = new MainWindowController(args); _mainWindowController.AppInfo.Changelog = @"* Fixed an issue where the generated ids of new transactions were incorrect. - * Fixed an issue that causes sort to behave inconsistently. + * Fixed an issue that caused sort to behave inconsistently. * Fixed calendar not showing marks for transactions after pressing the ""Today"" button. * Updated and added translations (Thanks to everyone on Weblate)!"; _application.OnActivate += OnActivate; diff --git a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in b/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in index f6ebc139b..7ea1881d1 100644 --- a/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in +++ b/NickvisionMoney.Shared/Linux/org.nickvision.money.metainfo.xml.in @@ -50,7 +50,7 @@

- Fixed an issue where the generated ids of new transactions were incorrect.

-

- Fixed an issue that causes sort to behave inconsistently.

+

- Fixed an issue that caused sort to behave inconsistently.

- Fixed calendar not showing marks for transactions after pressing the "Today" button.

- Updated translations (Thanks to everyone on Weblate)!

From e7922dcd880fb8f1d8dc3c77b8b10e2c5c03e21d Mon Sep 17 00:00:00 2001 From: britto Date: Mon, 11 Dec 2023 20:49:23 -0500 Subject: [PATCH 9/9] Gnome - Cleanup unused code --- .../Controllers/AccountViewController.cs | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/NickvisionMoney.Shared/Controllers/AccountViewController.cs b/NickvisionMoney.Shared/Controllers/AccountViewController.cs index 2af3e0023..253eaa577 100644 --- a/NickvisionMoney.Shared/Controllers/AccountViewController.cs +++ b/NickvisionMoney.Shared/Controllers/AccountViewController.cs @@ -429,20 +429,6 @@ private int SortTransactions(uint a, uint b) compareTo *= -1; } return compareTo; - - int GetCompareToByDate() - { - var result = _account.Transactions[a].Date.CompareTo(_account.Transactions[b].Date); - return result == 0 ? a.CompareTo(b) : result; // If dates are equal, sort by id - } - - int GetCompareToByAmount() - { - var aAmount = _account.Transactions[a].Amount * (_account.Transactions[a].Type == TransactionType.Income ? 1m : -1m); - var bAmount = _account.Transactions[b].Amount * (_account.Transactions[b].Type == TransactionType.Income ? 1m : -1m); - var result = aAmount.CompareTo(bAmount); - return result == 0 ? GetCompareToByDate() : result; // If amounts are equal, sort by date - } } ///