Skip to content

Commit

Permalink
Reworked UI update handling to fix issues on refreshing data #22
Browse files Browse the repository at this point in the history
  • Loading branch information
TheAxelander committed Jun 24, 2021
1 parent a512840 commit a9d7671
Show file tree
Hide file tree
Showing 17 changed files with 125 additions and 227 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* [Changed] File Preview on Import Page now read-only
* [Changed] Misc small visual updates and fixes on Import Page
* [Changed] Consistent Chart Header styles on Report Page
* [Fixed] Reworked UI update handling to fix issues on refreshing data #22

### 1.3 (2020-12-15)

Expand Down
15 changes: 7 additions & 8 deletions OpenBudgeteer.Blazor/Pages/Account.razor
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,7 @@
protected override void OnInitialized()
{
_dataContext = new AccountViewModel(DbContextOptions);
_dataContext.LoadData();
_dataContext.ViewModelReloadRequired += (sender, args) =>
{
_dataContext.LoadData();
StateHasChanged();
};
HandleResult(new ViewModelOperationResult(true));
HandleResult(_dataContext.LoadData());
}

private void CreateNewAccount()
Expand All @@ -102,7 +96,7 @@
private void CancelChanges()
{
_isEditAccountModalDialogVisible = false;
_dataContext.CancelEditMode();
HandleResult(_dataContext.LoadData());
}

private void CloseAccount(AccountViewModelItem account)
Expand All @@ -117,6 +111,11 @@
_errorModalDialogMessage = result.Message;
_isErrorModalDialogVisible = true;
}
if (result.ViewModelReloadRequired)
{
_dataContext.LoadData();
StateHasChanged();
}
}

async void DisplayAccountTransactions(AccountViewModelItem account)
Expand Down
52 changes: 26 additions & 26 deletions OpenBudgeteer.Blazor/Pages/Bucket.razor
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,8 @@
Title="Edit Bucket"
DataContext="@_editBucketDialogDataContext"
IsDialogVisible="@_isEditBucketModalDialogVisible"
OnCancelClickCallback="@(() => CancelEditBucketDialog())"
OnSaveClickCallback="@(() => SaveAndCloseEditBucketDialog())"/>
OnCancelClickCallback="@(CancelEditBucketDialog)"
OnSaveClickCallback="@(SaveAndCloseEditBucketDialog)"/>

<TransactionDialog
Title="Bucket Transactions"
Expand Down Expand Up @@ -337,28 +337,23 @@
{
_dataContext = new BucketViewModel(DbContextOptions, YearMonthDataContext);

HandleResult(await _dataContext.LoadDataAsync());
_dataContext.ViewModelReloadRequired += async (sender, args) =>
{
HandleResult(await _dataContext.LoadDataAsync());
StateHasChanged();
};

await HandleResult(await _dataContext.LoadDataAsync());

YearMonthDataContext.SelectedYearMonthChanged += async (sender, args) =>
{
HandleResult(await _dataContext.LoadDataAsync());
await HandleResult(await _dataContext.LoadDataAsync());
StateHasChanged();
};
}

void CreateGroup()
async void CreateGroup()
{
HandleResult(_dataContext.CreateGroup());
await HandleResult(_dataContext.CreateGroup());
}

void DistributeBudget()
async void DistributeBudget()
{
HandleResult(_dataContext.DistributeBudget());
await HandleResult(_dataContext.DistributeBudget());
}

void CreateBucket(BucketGroupViewModelItem bucketGroup)
Expand All @@ -373,51 +368,56 @@
_isEditBucketModalDialogVisible = true;
}

void SaveAndCloseEditBucketDialog()
async void SaveAndCloseEditBucketDialog()
{
_isEditBucketModalDialogVisible = false;
SaveChanges(_editBucketDialogDataContext);
await SaveChanges(_editBucketDialogDataContext);
}

async void CancelEditBucketDialog()
{
_isEditBucketModalDialogVisible = false;
HandleResult(await _dataContext.LoadDataAsync());
await HandleResult(await _dataContext.LoadDataAsync());
StateHasChanged();
}

void SaveChanges(BucketViewModelItem bucket)
async Task SaveChanges(BucketViewModelItem bucket)
{
HandleResult(_dataContext.SaveChanges(bucket));
await HandleResult(_dataContext.SaveChanges(bucket));
StateHasChanged();
}

void CloseBucket(BucketViewModelItem bucket)
async Task CloseBucket(BucketViewModelItem bucket)
{
HandleResult(_dataContext.CloseBucket(bucket));
await HandleResult(_dataContext.CloseBucket(bucket));
StateHasChanged();
}

void HandleResult(ViewModelOperationResult result)
async Task HandleResult(ViewModelOperationResult result)
{
if (!result.IsSuccessful)
{
_errorModalDialogMessage = result.Message;
_isErrorModalDialogVisible = true;
}
if (result.ViewModelReloadRequired)
{
await _dataContext.LoadDataAsync();
StateHasChanged();
}
}

void InOut_Changed(BucketViewModelItem bucket, KeyboardEventArgs args)
async void InOut_Changed(BucketViewModelItem bucket, KeyboardEventArgs args)
{
var result = bucket.HandleInOutInput(args.Key);
if (result.IsSuccessful)
{
HandleResult(_dataContext.UpdateBalanceFigures());
await HandleResult(_dataContext.UpdateBalanceFigures());
StateHasChanged();
}
else
{
HandleResult(result);
await HandleResult(result);
}
}

Expand All @@ -428,7 +428,7 @@

_transactionModalDialogDataContext = new TransactionViewModel(DbContextOptions, YearMonthDataContext);
_transactionModalDialogBucket = bucket.Bucket;
HandleResult(await _transactionModalDialogDataContext.LoadDataAsync(bucket.Bucket, true));
await HandleResult(await _transactionModalDialogDataContext.LoadDataAsync(bucket.Bucket, true));

_isTransactionModalDialogDataContextLoading = false;
StateHasChanged();
Expand Down
28 changes: 14 additions & 14 deletions OpenBudgeteer.Blazor/Pages/Rules.razor
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@
}
</td>
<td class="col-buttons">
<button class="btn btn-sm btn-primary oi oi-check" @onclick="@(() => HandleResult(_dataContext.SaveRuleSetItem(ruleSet)))"></button>
<button class="btn btn-sm btn-primary oi oi-check" @onclick="@(async () => await HandleResult(_dataContext.SaveRuleSetItem(ruleSet)))"></button>
<button class="btn btn-sm btn-danger oi oi-x" @onclick="@(() => ruleSet.CancelModification())"></button>
</td>
</tr>
Expand Down Expand Up @@ -250,12 +250,7 @@
{
_dataContext = new RulesViewModel(DbContextOptions);

HandleResult(await _dataContext.LoadDataAsync());
_dataContext.ViewModelReloadRequired += async (sender, args) =>
{
HandleResult(await _dataContext.LoadDataAsync());
base.StateHasChanged();
};
await HandleResult(await _dataContext.LoadDataAsync());
}

void HandleTargetBucketSelectionChanged(RuleSetViewModelItem ruleSetViewModelItem, int selectedBucketId)
Expand All @@ -276,16 +271,16 @@
_dataContext.EditAllRules();
}

void SaveAllRules()
async void SaveAllRules()
{
_massEditEnabled = false;
HandleResult(_dataContext.SaveAllRules());
await HandleResult(_dataContext.SaveAllRules());
}

void CancelAllRules()
async void CancelAllRules()
{
_massEditEnabled = false;
_dataContext.CancelAllRules();
await HandleResult(await _dataContext.LoadDataAsync());
}

void HandleRuleSetDeletionRequest(RuleSetViewModelItem ruleSet)
Expand All @@ -300,18 +295,23 @@
_ruleSetToBeDeleted = null;
}

void DeleteRule()
async void DeleteRule()
{
_isDeleteRuleSetModalDialogVisible = false;
HandleResult(_dataContext.DeleteRuleSetItem(_ruleSetToBeDeleted));
await HandleResult(_dataContext.DeleteRuleSetItem(_ruleSetToBeDeleted));
}

void HandleResult(ViewModelOperationResult result)
async Task HandleResult(ViewModelOperationResult result)
{
if (!result.IsSuccessful)
{
_errorModalDialogMessage = result.Message;
_isErrorModalDialogVisible = true;
}
if (result.ViewModelReloadRequired)
{
await _dataContext.LoadDataAsync();
StateHasChanged();
}
}
}
35 changes: 20 additions & 15 deletions OpenBudgeteer.Blazor/Pages/Transaction.razor
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@
</table>
</td>
<td class="col-buttons">
<button class="btn btn-sm btn-primary oi oi-check" @onclick="@(() => transaction.UpdateItem())"></button>
<button class="btn btn-sm btn-primary oi oi-check" @onclick="@(() => SaveTransaction(transaction))"></button>
<button class="btn btn-sm btn-danger oi oi-x" @onclick="@(() => transaction.CancelModification())"></button>
</td>
</tr>
Expand Down Expand Up @@ -231,16 +231,11 @@
{
_dataContext = new TransactionViewModel(DbContextOptions, YearMonthDataContext);

HandleResult(await _dataContext.LoadDataAsync());
_dataContext.ViewModelReloadRequired += async (sender, args) =>
{
HandleResult(await _dataContext.LoadDataAsync());
base.StateHasChanged();
};
await HandleResult(await _dataContext.LoadDataAsync());

YearMonthDataContext.SelectedYearMonthChanged += async (sender, args) =>
{
HandleResult(await _dataContext.LoadDataAsync());
await HandleResult(await _dataContext.LoadDataAsync());
base.StateHasChanged();
};
}
Expand All @@ -263,16 +258,21 @@
if (_dataContext.Transactions.Any(i => i.InModification)) _massEditEnabled = true;
}

void SaveAllTransaction()
async void SaveAllTransaction()
{
_massEditEnabled = false;
HandleResult(_dataContext.SaveAllTransaction());
await HandleResult(_dataContext.SaveAllTransaction());
}

void CancelAllTransaction()
async void CancelAllTransaction()
{
_massEditEnabled = false;
_dataContext.CancelAllTransaction();
await HandleResult(await _dataContext.LoadDataAsync());
}

async void SaveTransaction(TransactionViewModelItem transaction)
{
await HandleResult(transaction.UpdateItem());
}

void HandleTransactionDeletionRequest(TransactionViewModelItem transaction)
Expand All @@ -287,18 +287,23 @@
_transactionToBeDeleted = null;
}

void DeleteTransaction()
async void DeleteTransaction()
{
_isDeleteTransactionModalDialogVisible = false;
HandleResult(_transactionToBeDeleted.DeleteItem());
await HandleResult(_transactionToBeDeleted.DeleteItem());
}

void HandleResult(ViewModelOperationResult result)
async Task HandleResult(ViewModelOperationResult result)
{
if (!result.IsSuccessful)
{
_errorModalDialogMessage = result.Message;
_isErrorModalDialogVisible = true;
}
if (result.ViewModelReloadRequired)
{
await _dataContext.LoadDataAsync();
StateHasChanged();
}
}
}
2 changes: 1 addition & 1 deletion OpenBudgeteer.Blazor/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"Connection": {
"Provider" : "mysql",
"Database": "openbudgeteer-dev",
"Server": "cl4p-tp",
"Server": "192.168.178.93",
"Port": "3306",
"User": "openbudgeteer-dev",
"Password": "openbudgeteer-dev"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ public async Task DeleteGroup_CheckGroupDeletionAndPositions()
var result = viewModel.DeleteGroup(groupToDelete);

Assert.True(result.IsSuccessful);
Assert.True(result.ViewModelReloadInvoked);
Assert.True(result.ViewModelReloadRequired);

await viewModel.LoadDataAsync();

Expand Down
6 changes: 3 additions & 3 deletions OpenBudgeteer.Core/Common/ViewModelOperationResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ public class ViewModelOperationResult
{
public bool IsSuccessful { get; }
public string Message { get; }
public bool ViewModelReloadInvoked { get; }
public bool ViewModelReloadRequired { get; }

public ViewModelOperationResult(bool isSuccessful, string message, bool viewModelReloadInvoked = false)
public ViewModelOperationResult(bool isSuccessful, string message, bool viewModelReloadRequired = false)
{
IsSuccessful = isSuccessful;
Message = message;
ViewModelReloadInvoked = viewModelReloadInvoked;
ViewModelReloadRequired = viewModelReloadRequired;
}

public ViewModelOperationResult(bool isSuccessful, bool viewModelReloadInvoked = false)
Expand Down

0 comments on commit a9d7671

Please sign in to comment.