diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4237388..7a081e4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+### 1.6.2 (2023-01-11)
+
+* [Fixed] Due to implemented fix for [#114](https://github.com/TheAxelander/OpenBudgeteer/issues/114) Column mapping on Import Page was not working properly [#121](https://github.com/TheAxelander/OpenBudgeteer/issues/121) [#122](https://github.com/TheAxelander/OpenBudgeteer/issues/122)
+
### 1.6.1 (2022-12-31)
* [Changed] Slight visual changes for Mapping Rule modification
diff --git a/OpenBudgeteer.Blazor/Pages/Import.razor b/OpenBudgeteer.Blazor/Pages/Import.razor
index 8fcabae..86c0a6c 100644
--- a/OpenBudgeteer.Blazor/Pages/Import.razor
+++ b/OpenBudgeteer.Blazor/Pages/Import.razor
@@ -63,7 +63,7 @@
Target Account:
0)
- //{
- // _dataContext.SelectedImportProfile = _dataContext.AvailableImportProfiles.First();
- //}
var result = await _dataContext.LoadProfileAsync();
if (result.IsSuccessful)
{
diff --git a/OpenBudgeteer.Blazor/Shared/NavMenu.razor b/OpenBudgeteer.Blazor/Shared/NavMenu.razor
index 156533d..e235017 100644
--- a/OpenBudgeteer.Blazor/Shared/NavMenu.razor
+++ b/OpenBudgeteer.Blazor/Shared/NavMenu.razor
@@ -61,7 +61,7 @@
diff --git a/OpenBudgeteer.Blazor/Shared/Selector/BucketSelect.razor b/OpenBudgeteer.Blazor/Shared/Selector/BucketSelect.razor
index 53dd99c..a56e684 100644
--- a/OpenBudgeteer.Blazor/Shared/Selector/BucketSelect.razor
+++ b/OpenBudgeteer.Blazor/Shared/Selector/BucketSelect.razor
@@ -55,7 +55,6 @@
SelectedItemId = value.BucketId;
return;
}
- var oldValue = _selectedItem;
_selectedItem = value;
SelectedItemChanged.InvokeAsync(value);
OnSelectedItemChanged.InvokeAsync(new ChangeEventArgs() { Value = value });
diff --git a/OpenBudgeteer.Blazor/Shared/Selector/IntegerSelect.razor b/OpenBudgeteer.Blazor/Shared/Selector/IntegerSelect.razor
index f78aa0a..0072453 100644
--- a/OpenBudgeteer.Blazor/Shared/Selector/IntegerSelect.razor
+++ b/OpenBudgeteer.Blazor/Shared/Selector/IntegerSelect.razor
@@ -29,7 +29,6 @@
// Check if there is no real change
if (_selectedItem == value) return;
- var oldValue = _selectedItem;
_selectedItem = value;
SelectedItemChanged.InvokeAsync(value);
OnSelectedItemChanged.InvokeAsync(new ChangeEventArgs() { Value = value });
diff --git a/OpenBudgeteer.Blazor/Shared/Selector/ObjectSelect.razor b/OpenBudgeteer.Blazor/Shared/Selector/ObjectSelect.razor
index a911283..58e5e6b 100644
--- a/OpenBudgeteer.Blazor/Shared/Selector/ObjectSelect.razor
+++ b/OpenBudgeteer.Blazor/Shared/Selector/ObjectSelect.razor
@@ -59,7 +59,6 @@
SelectedItemId = GetSelectedItemIdHandler(value);
return;
}
- var oldValue = _selectedItem;
_selectedItem = value;
SelectedItemChanged.InvokeAsync(value);
OnSelectedItemChanged.InvokeAsync(new ChangeEventArgs() { Value = value });
diff --git a/OpenBudgeteer.Blazor/Shared/Selector/StringSelect.razor b/OpenBudgeteer.Blazor/Shared/Selector/StringSelect.razor
index eb0f1da..36f12a9 100644
--- a/OpenBudgeteer.Blazor/Shared/Selector/StringSelect.razor
+++ b/OpenBudgeteer.Blazor/Shared/Selector/StringSelect.razor
@@ -29,7 +29,6 @@
// Check if there is no real change
if (_selectedItem == value) return;
- var oldValue = _selectedItem;
_selectedItem = value;
SelectedItemChanged.InvokeAsync(value);
OnSelectedItemChanged.InvokeAsync(new ChangeEventArgs() { Value = value });
diff --git a/OpenBudgeteer.Core/ViewModels/ImportDataViewModel.cs b/OpenBudgeteer.Core/ViewModels/ImportDataViewModel.cs
index 8204aa8..8338da6 100644
--- a/OpenBudgeteer.Core/ViewModels/ImportDataViewModel.cs
+++ b/OpenBudgeteer.Core/ViewModels/ImportDataViewModel.cs
@@ -174,7 +174,13 @@ public Account SelectedAccount
public ImportProfile SelectedImportProfile
{
get => _selectedImportProfile;
- set => Set(ref _selectedImportProfile, value);
+ set
+ {
+ // Load Headers already to prevent hiccups with other SelectedItem properties from Column Mappings
+ // as they depend on SelectedImportProfile
+ if (value != null) LoadHeaders(value);
+ Set(ref _selectedImportProfile, value);
+ }
}
private int _totalRecords;
@@ -398,8 +404,8 @@ public async Task LoadProfileAsync()
SelectedAccount = AvailableAccounts.First(i => i.AccountId == SelectedImportProfile.AccountId);
}
- var result = LoadHeaders();
- if (!result.IsSuccessful) throw new Exception(result.Message);
+ // var result = LoadHeaders();
+ // if (!result.IsSuccessful) throw new Exception(result.Message);
//await ValidateDataAsync();
_isProfileValid = true;
@@ -416,19 +422,50 @@ public async Task LoadProfileAsync()
///
/// Reads column headers from the loaded file
///
+ ///
+ /// Uses settings from current
+ ///
/// Object which contains information and results of this method
public ViewModelOperationResult LoadHeaders()
+ {
+ var result = LoadHeaders(SelectedImportProfile);
+
+ // If possible and necessary make initial selections after loading headers
+ if (IdentifiedColumns.Count == 0) return result;
+ var firstSelection = IdentifiedColumns.First();
+ if (string.IsNullOrEmpty(SelectedImportProfile.TransactionDateColumnName))
+ SelectedImportProfile.TransactionDateColumnName = firstSelection;
+ if (string.IsNullOrEmpty(SelectedImportProfile.PayeeColumnName))
+ SelectedImportProfile.PayeeColumnName = firstSelection;
+ if (string.IsNullOrEmpty(SelectedImportProfile.MemoColumnName))
+ SelectedImportProfile.MemoColumnName = firstSelection;
+ if (string.IsNullOrEmpty(SelectedImportProfile.AmountColumnName))
+ SelectedImportProfile.AmountColumnName = firstSelection;
+ if (string.IsNullOrEmpty(SelectedImportProfile.CreditColumnName))
+ SelectedImportProfile.CreditColumnName = firstSelection;
+ if (string.IsNullOrEmpty(SelectedImportProfile.CreditColumnIdentifierColumnName))
+ SelectedImportProfile.CreditColumnIdentifierColumnName = firstSelection;
+
+ return result;
+ }
+
+ ///
+ /// Reads column headers from the loaded file
+ ///
+ /// containing the settings how to parse the headers
+ /// Object which contains information and results of this method
+ public ViewModelOperationResult LoadHeaders(ImportProfile importProfile)
{
try
{
// Set ComboBox selection for Column Mapping
IdentifiedColumns.Clear();
- var headerLine = _fileLines[SelectedImportProfile.HeaderRow - 1];
- var columns = headerLine.Split(SelectedImportProfile.Delimiter);
+ var headerLine = _fileLines[importProfile.HeaderRow - 1];
+ var columns = headerLine.Split(importProfile.Delimiter);
foreach (var column in columns)
{
if (column != string.Empty)
- IdentifiedColumns.Add(column.Trim(SelectedImportProfile.TextQualifier)); // Exclude TextQualifier
+ IdentifiedColumns.Add(column.Trim(importProfile.TextQualifier)); // Exclude TextQualifier
}
return new ViewModelOperationResult(true);