UserPreference for list views

This commit is contained in:
Frede Hundewadt 2022-03-17 19:08:36 +01:00
parent afe2dd024e
commit e690ab7383
26 changed files with 216 additions and 170 deletions

View file

@ -14,8 +14,7 @@
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
//
*@
<select class="form-control" @bind-value="@SearchColumn" @bind-value:event="oninput" @onchange="OnSearchColumnChange">
<select class="form-control" @bind-value="@Selection" @bind-value:event="oninput" @onchange="OnSelectionChanged">
@foreach (var (key, value) in Items)
{
<option value="@key">@value</option>

View file

@ -18,30 +18,42 @@
using System.Security.AccessControl;
using Blazored.LocalStorage;
using Microsoft.AspNetCore.Components;
using Wonky.Client.Services;
namespace Wonky.Client.Components;
public partial class CompanySearchColumn
public partial class CompanySearchDropdown : IDisposable
{
[Inject] private ILocalStorageService LocalStorage { get; set; }
[Parameter] public EventCallback<string> OnColumnChanged { get; set; }
private string SearchColumn { get; set; }
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; }
private Dictionary<string, string> Items { get; set; } = new();
private Preferences _preferences = new();
private string? Selection { get; set; }
protected override async Task OnInitializedAsync()
{
var value = await LocalStorage.GetItemAsStringAsync("UserCompanySearch");
var y = string.IsNullOrWhiteSpace(value) ? "name" : value.Replace("\"", "");
UserPreferenceService.OnChange += ProfileServiceOnOnChange;
_preferences = await UserPreferenceService.GetPreferences();
Items.Add("name", "Firmanavn");
Items.Add("account", "Konto");
Items.Add("city", "Bynavn");
Items.Add("zipCode", "Postnr");
Items.Add("phone", "Telefon");
SearchColumn = (from x in Items where x.Key == y select x.Value).First();
Selection = (from x in Items where x.Key == _preferences.CompanySearch select x.Key).First();
}
private async Task OnSearchColumnChange(ChangeEventArgs eventArgs)
private async Task OnSelectionChanged(ChangeEventArgs e)
{
await OnColumnChanged.InvokeAsync(SearchColumn);
var val = e.Value.ToString();
await OnChanged.InvokeAsync(val);
await UserPreferenceService.SetCompanySearch(val);
}
}
private void ProfileServiceOnOnChange(Preferences newPreferences)
{
_preferences = newPreferences;
StateHasChanged();
}
public void Dispose()
{
UserPreferenceService.OnChange -= ProfileServiceOnOnChange;
} }

View file

@ -1,40 +0,0 @@
// Copyright (C) 2022 FCS Frede's Computer Services.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the Affero GNU General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// Affero GNU General Public License for more details.
//
// You should have received a copy of the Affero GNU General Public License
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
//
using Blazored.LocalStorage;
using Microsoft.AspNetCore.Components;
namespace Wonky.Client.Components
{
public partial class CompanySortColumn
{
[Parameter] public EventCallback<string> OnSortChanged { get; set; }
private string SortColumn { get; set; } = "name";
private Dictionary<string, string> Items { get; set; } = new();
protected override void OnInitialized()
{
Items.Add("name", "Firmanavn");
Items.Add("account", "Konto");
Items.Add("city", "Bynavn");
}
private async Task OnSortColumnChange(ChangeEventArgs eventArgs)
{
await OnSortChanged.InvokeAsync(SortColumn);
}
}
}

View file

@ -15,7 +15,7 @@
//
*@
<select class="form-control" @bind-value="@SortColumn" @bind-value:event="oninput" @onchange="OnSortColumnChange">
<select class="form-control" @bind-value="@Selection" @bind-value:event="oninput" @onchange="OnSelectionChanged">
@foreach (var (key, value) in Items)
{
<option value="@key">@value</option>

View file

@ -0,0 +1,59 @@
// Copyright (C) 2022 FCS Frede's Computer Services.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the Affero GNU General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// Affero GNU General Public License for more details.
//
// You should have received a copy of the Affero GNU General Public License
// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
//
using Blazored.LocalStorage;
using Microsoft.AspNetCore.Components;
using Wonky.Client.Services;
namespace Wonky.Client.Components
{
public partial class CompanySortDropdown : IDisposable
{
[Inject] private ILocalStorageService LocalStorage { get; set; }
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; }
private Dictionary<string, string> Items { get; set; } = new();
private Preferences _preferences = new();
private string? Selection { get; set; }
protected override async Task OnInitializedAsync()
{
UserPreferenceService.OnChange += ProfileServiceOnOnChange;
_preferences = await UserPreferenceService.GetPreferences();
Items.Add("name", "Firmanavn");
Items.Add("account", "Konto");
Items.Add("city", "Bynavn");
Selection = (from x in Items where x.Key == _preferences.CompanySort select x.Key).First();
}
private async Task OnSelectionChanged(ChangeEventArgs e)
{
var val = e.Value.ToString();
await OnChanged.InvokeAsync(val);
await UserPreferenceService.SetCompanySort(val);
}
private void ProfileServiceOnOnChange(Preferences newPreferences)
{
_preferences = newPreferences;
StateHasChanged();
}
public void Dispose()
{
UserPreferenceService.OnChange -= ProfileServiceOnOnChange;
}
}
}

View file

@ -20,26 +20,32 @@ using Wonky.Client.Services;
namespace Wonky.Client.Components;
public partial class ItemGroupFilter
public partial class ItemGroupDropdown : IDisposable
{
[Inject] private ILocalStorageService LocalStorage { get; set; }
[Inject] private ProfileService ProfileService { get; set; }
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; }
private Dictionary<string, string> Items { get; set; } = new();
private Preferences _preferences = new();
private string Selection { get; set; } = "all";
private string Selection { get; set; }
protected override async Task OnInitializedAsync()
{
ProfileService.OnChange += ProfileServiceOnOnChange;
_preferences = await ProfileService.GetPreferences();
UserPreferenceService.OnChange += ProfileServiceOnOnChange;
_preferences = await UserPreferenceService.GetPreferences();
Items.Add("name", "Varenavn");
Items.Add("sku", "Varenr");
Selection = (from x in Items where x.Key == _preferences.ItemGroup select x.Value).First();
Items.Add("0", "Alle");
Items.Add("1", "Lim Sealer Reparation");
Items.Add("2", "Grunder Maling");
Items.Add("3", "Smøremidler");
Items.Add("4", "Rens Polish");
Items.Add("5", "Tape Selvklæbende");
Items.Add("6", "Tilbehør Diverse");
}
private async Task OnColumnChanged(ChangeEventArgs args)
private async Task OnSelectionChanged(ChangeEventArgs e)
{
await ProfileService.SetItemSort(args.Value.ToString());
var val = e.Value.ToString();
await OnChanged.InvokeAsync(val);
}
private void ProfileServiceOnOnChange(Preferences newPreferences)
{
@ -48,6 +54,6 @@ public partial class ItemGroupFilter
}
public void Dispose()
{
ProfileService.OnChange -= ProfileServiceOnOnChange;
UserPreferenceService.OnChange -= ProfileServiceOnOnChange;
}
}

View file

@ -19,25 +19,28 @@ using Wonky.Client.Services;
namespace Wonky.Client.Components;
public partial class ItemSearchColumn
public partial class ItemSearchDropdown : IDisposable
{
[Inject] private ILocalStorageService LocalStorage { get; set; }
[Inject] private ProfileService ProfileService { get; set; }
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; }
private Dictionary<string, string> Items { get; set; } = new();
private Preferences _preferences = new();
private string Selection { get; set; } = "name";
protected override async Task OnInitializedAsync()
{
ProfileService.OnChange += ProfileServiceOnOnChange;
_preferences = await ProfileService.GetPreferences();
UserPreferenceService.OnChange += ProfileServiceOnOnChange;
_preferences = await UserPreferenceService.GetPreferences();
Items.Add("name", "Varenavn");
Items.Add("sku", "Varenr");
Items.Add("shortName", "Forkortelse");
Selection = (from x in Items where x.Key == _preferences.ItemSearch select x.Value).First();
Selection = (from x in Items where x.Key == _preferences.ItemSearch select x.Key).First();
}
private async Task OnSelectChanged(ChangeEventArgs e)
{
await ProfileService.SetItemSort(e.Value.ToString());
var val = e.Value.ToString();
await OnChanged.InvokeAsync(val);
await UserPreferenceService.SetItemSearch(val);
}
private void ProfileServiceOnOnChange(Preferences newPreferences)
{
@ -46,6 +49,6 @@ public partial class ItemSearchColumn
}
public void Dispose()
{
ProfileService.OnChange -= ProfileServiceOnOnChange;
UserPreferenceService.OnChange -= ProfileServiceOnOnChange;
}
}

View file

@ -19,24 +19,27 @@ using Wonky.Client.Services;
namespace Wonky.Client.Components;
public partial class ItemSortColumn : IDisposable
public partial class ItemSortDropdown : IDisposable
{
[Inject] private ILocalStorageService LocalStorage { get; set; }
[Inject] private ProfileService ProfileService { get; set; }
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; }
private Dictionary<string, string> Items { get; set; } = new();
private Preferences _preferences = new();
private string Selection { get; set; } = "name";
protected override async Task OnInitializedAsync()
{
ProfileService.OnChange += ProfileServiceOnOnChange;
_preferences = await ProfileService.GetPreferences();
UserPreferenceService.OnChange += ProfileServiceOnOnChange;
_preferences = await UserPreferenceService.GetPreferences();
Items.Add("name", "Varenavn");
Items.Add("sku", "Varenr");
Selection = (from x in Items where x.Key == _preferences.ItemSort select x.Value).First();
Selection = (from x in Items where x.Key == _preferences.ItemSort select x.Key).First();
}
private async Task OnSelectChanged(ChangeEventArgs e)
{
await ProfileService.SetItemSort(e.Value.ToString());
var val = e.Value.ToString();
await OnChanged.InvokeAsync(val);
await UserPreferenceService.SetItemSort(val);
}
private void ProfileServiceOnOnChange(Preferences newPreferences)
{
@ -45,6 +48,6 @@ public partial class ItemSortColumn : IDisposable
}
public void Dispose()
{
ProfileService.OnChange -= ProfileServiceOnOnChange;
UserPreferenceService.OnChange -= ProfileServiceOnOnChange;
}
}

View file

@ -21,28 +21,31 @@ using Wonky.Client.Services;
namespace Wonky.Client.Components
{
public partial class PageSizeDropDown : IDisposable
public partial class PageSizeDropdown : IDisposable
{
[Inject] private ILocalStorageService LocalStorage { get; set; }
[Inject] private ProfileService ProfileService { get; set; }
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; }
private Dictionary<string, string> Items { get; set; } = new();
private Preferences _preferences = new();
private string? Selection { get; set; }
protected override async Task OnInitializedAsync()
{
ProfileService.OnChange += ProfileServiceOnOnChange;
_preferences = await ProfileService.GetPreferences();
UserPreferenceService.OnChange += ProfileServiceOnOnChange;
_preferences = await UserPreferenceService.GetPreferences();
Items.Add("5", "5");
Items.Add("10", "10");
Items.Add("15", "15");
Items.Add("30", "30");
Items.Add("50", "50");
Selection = (from x in Items where x.Key == _preferences.PageSize select x.Value).First();
Selection = (from x in Items where x.Key == _preferences.PageSize select x.Key).First();
}
private async Task OnSelectChanged(ChangeEventArgs e)
{
await ProfileService.SetPageSize(e.Value?.ToString());
var val = e.Value.ToString();
await OnChanged.InvokeAsync(val);
await UserPreferenceService.SetPageSize(val);
}
private void ProfileServiceOnOnChange(Preferences newPreferences)
{
@ -51,7 +54,7 @@ namespace Wonky.Client.Components
}
public void Dispose()
{
ProfileService.OnChange -= ProfileServiceOnOnChange;
UserPreferenceService.OnChange -= ProfileServiceOnOnChange;
}
}
}

View file

@ -23,7 +23,7 @@ namespace Wonky.Client.Components
{
private Timer _timer = new();
private string SearchTerm { get; set; } = "";
[Parameter] public EventCallback<string> OnSearchPhraseChanged { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; }
private void SearchChanged()
{
@ -35,7 +35,7 @@ namespace Wonky.Client.Components
private void OnTimerElapsed(object? sender, ElapsedEventArgs e)
{
OnSearchPhraseChanged.InvokeAsync(SearchTerm);
OnChanged.InvokeAsync(SearchTerm);
_timer.Enabled = false;
_timer.Dispose();
}

View file

@ -81,21 +81,21 @@ public class CompanyHttpRepository : ICompanyHttpRepository
public async Task<CompanyDto> GetCompanyByAccount(string accountNumber)
{
var company = await _client.GetFromJsonAsync<CompanyDto>(
$"{_apiConfig.CrmCompanies}/get/account/{accountNumber}");
$"{_apiConfig.CrmCompanies}/account/{accountNumber}");
return company ?? new CompanyDto();
}
public async Task<CompanyDto> GetCompanyById(string companyId)
{
var company = await _client.GetFromJsonAsync<CompanyDto>(
$"{_apiConfig.CrmCompanies}/get/id/{companyId}");
$"{_apiConfig.CrmCompanies}{companyId}");
return company ?? new CompanyDto();
}
public async Task<string> CreateCompany(CompanyDto companyDto)
{
var response = await _client.PostAsJsonAsync(
$"{_apiConfig.CrmCompanies}/post", companyDto);
$"{_apiConfig.CrmCompanies}", companyDto);
var content = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<CompanyDto>(content);
return result.CompanyId;
@ -104,12 +104,12 @@ public class CompanyHttpRepository : ICompanyHttpRepository
public async Task UpdateCompany(CompanyDto companyDto)
{
await _client.PutAsJsonAsync(
$"{_apiConfig.CrmCompanies}/put/id/{companyDto.CompanyId}", companyDto);
$"{_apiConfig.CrmCompanies}/{companyDto.CompanyId}", companyDto);
}
public async Task DeleteCompany(string companyId)
{
await _client.DeleteAsync(
$"{_apiConfig.CrmCompanies}/delete/id/{companyId}");
$"{_apiConfig.CrmCompanies}/{companyId}");
}
}

View file

@ -60,7 +60,7 @@ public class SalesItemHttpRepository : ISalesItemHttpRepository
["searchTerm"] = pagingParameters.SearchTerm,
["searchColumn"] = pagingParameters.SearchColumn,
["orderBy"] = pagingParameters.OrderBy,
["selectGroup"] = pagingParameters.SelectGroup
["selectGroup"] = pagingParameters.SelectGroup == "0" ? "" : pagingParameters.SelectGroup
};
var response = await _client
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.PriceCatalog}/page", queryString));

View file

@ -23,13 +23,22 @@
<div class="row mb-3">
<div class="col">
<CompanySortColumn OnSortChanged="SortChanged"/>
<div>
<label class="form-label">Rækkefølge</label>
<CompanySortDropdown OnChanged="SetSortCol"/>
</div>
</div>
<div class="col">
<CompanySearchColumn OnColumnChanged="ColumnChanged" />
<div>
<label class="form-label">Søgefelt</label>
<CompanySearchDropdown OnChanged="SetSearchCol"/>
</div>
</div>
<div class="col">
<SearchPhrase OnSearchPhraseChanged="SearchChanged"/>
<div>
<label class="form-label">Søgetekst</label>
<SearchPhrase OnChanged="SetSearchPhrase"/>
</div>
</div>
<div class="col">
<a class="btn btn-success mb-1" href="/company/create">Nyt firma</a>
@ -40,9 +49,7 @@
<Pagination MetaData="MetaData" Spread="2" SelectedPage="SelectedPage"></Pagination>
</div>
<div class="col-md-2">
<PageSizeDropDown OnPageSizeChanged="SetPageSize" />
</div>
<div class="col-md-2">
<PageSizeDropdown OnChanged="SetPageSize"></PageSizeDropdown>
</div>
</div>
<div class="row">

View file

@ -20,6 +20,7 @@ using Blazored.LocalStorage;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Microsoft.AspNetCore.Components;
using Wonky.Client.Services;
using Wonky.Entity.DTO;
using Wonky.Entity.Requests;
@ -30,16 +31,19 @@ namespace Wonky.Client.Pages
public List<CompanyDto>? Companies { get; set; } = new();
public MetaData? MetaData { get; set; } = new();
private PagingParams _paging = new();
private string CompanySearch { get; set; } = "name";
private string CompanySort { get; set; } = "name";
private string PageSize { get; set; } = "5";
[Inject]
public ICompanyHttpRepository CompanyRepo { get; set; }
private Preferences _preferences { get; set; } = new();
[Inject] private UserPreferenceService UserPrefService { get; set; }
[Inject] public ICompanyHttpRepository CompanyRepo { get; set; }
[Inject] public HttpInterceptorService Interceptor { get; set; }
[Inject] public ILocalStorageService LocalStorage { get; set; }
protected override async Task OnInitializedAsync()
{
_preferences = await UserPrefService.GetPreferences();
_paging.OrderBy = _preferences.CompanySort;
_paging.SearchColumn = _preferences.CompanySearch;
_paging.PageSize = Convert.ToInt32(_preferences.PageSize);
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
await GetCompanies();
@ -58,7 +62,7 @@ namespace Wonky.Client.Pages
MetaData = pagingResponse.MetaData;
}
private async Task ColumnChanged(string? searchColumn)
private async Task SetSearchCol(string searchColumn)
{
_paging.SearchColumn = searchColumn;
_paging.PageNumber = 1;
@ -71,14 +75,14 @@ namespace Wonky.Client.Pages
await GetCompanies();
}
private async Task SearchChanged(string? searchTerm)
private async Task SetSearchPhrase(string searchTerm)
{
_paging.PageNumber = 1;
_paging.SearchTerm = searchTerm;
await GetCompanies();
}
private async Task SortChanged(string? orderBy)
private async Task SetSortCol(string orderBy)
{
_paging.OrderBy = orderBy;
await GetCompanies();

View file

@ -5,13 +5,13 @@
@* display product filter options *@
<div class="row mb-3">
<div class="col">
<ItemSearchColumn OnColumnChanged="ProductColumnChanged"></ItemSearchColumn>
<ItemGroupDropdown OnChanged="SetItemGroup" />
</div>
<div class="col">
<SearchPhrase OnSearchPhraseChanged="ProductSearchChanged"></SearchPhrase>
<ItemSearchDropdown OnChanged="SetSearchCol" />
</div>
<div class="col">
<ItemGroupFilter OnGroupFilterChanged="ProductGroupChanged"></ItemGroupFilter>
<SearchPhrase OnChanged="SetSortCol" />
</div>
<div class="col">

View file

@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Wonky.Client.Models;
using Wonky.Client.Services;
using Wonky.Client.Shared;
using Wonky.Entity.DTO;
using Wonky.Entity.Models;
@ -18,16 +19,18 @@ public partial class DraftDocument : IDisposable
private string Price = "0";
private SalesItemDto _selectedItem { get; set; } = new();
private List<SalesItemDto> SalesItems { get; set; } = new();
private List<CompanyDto> CompanyList { get; set; } = new();
// private SalesItemDto SelectedItem { get; set; } = new();
private MetaData _meta { get; set; } = new();
private PagingParams _paging { get; set; } = new();
private Preferences _prefs { get; set; } = new();
[Inject] private ISalesItemHttpRepository ItemRepo { get; set; }
[Inject] private ICompanyHttpRepository CompanyRepo { get; set; }
[Inject] private HttpInterceptorService Interceptor { get; set; }
[Inject] private UserPreferenceService UserPrefs { get; set; }
protected override async Task OnInitializedAsync()
{
_prefs = await UserPrefs.GetPreferences();
_paging.SearchColumn = _prefs.ItemSearch;
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
await GetSalesItems();
@ -76,20 +79,20 @@ public partial class DraftDocument : IDisposable
// save the remaining draft
await DraftStateProvider.SaveChangesAsync();
}
private async Task ProductGroupChanged(string groupFilter)
private async Task SetItemGroup(string groupFilter)
{
_paging.PageNumber = 1;
_paging.SelectGroup = groupFilter;
await GetSalesItems();
}
private async Task ProductColumnChanged(string columnName)
private async Task SetSearchCol(string columnName)
{
_paging.PageNumber = 1;
_paging.SearchTerm = "";
_paging.SearchColumn = columnName;
await GetSalesItems();
}
private async Task ProductSearchChanged(string searchTerm)
private async Task SetSortCol(string searchTerm)
{
_paging.PageNumber = 1;
_paging.SearchTerm = searchTerm;

View file

@ -23,16 +23,29 @@
<div class="row mb-3">
<div class="col">
<ItemGroupFilter OnGroupFilterChanged="GroupFilterChanged" />
<div>
<label class="form-label">Varegruppe</label>
<ItemGroupDropdown OnChanged="SetItemGroup"/>
</div>
</div>
<div class="col">
<ItemSortColumn OnColumnChanged="SortColumnChanged"/>
<div>
<label class="form-label">Rækkefølge</label>
<ItemSortDropdown OnChanged="SetSortCol"/>
</div>
</div>
<div class="col">
<ItemSearchColumn OnColumnChanged="SearchColumnChanged"/>
<div>
<label class="form-label">Søgefelt</label>
<ItemSearchDropdown OnChanged="SetSearchCol"/>
</div>
</div>
<div class="col">
<SearchPhrase OnSearchPhraseChanged="SearchPhraseChanged"/>
<div>
<label class="form-label">Søgetekst</label>
<SearchPhrase OnChanged="SetSearchPhrase"/>
</div>
</div>
</div>
<div class="row">
@ -40,9 +53,7 @@
<Pagination MetaData="MetaData" Spread="2" SelectedPage="SelectedPage"></Pagination>
</div>
<div class="col-md-2">
<PageSizeDropDown OnPageSizeChanged="SetPageSize" />
</div>
<div class="col-md-2">
<PageSizeDropdown OnChanged="SetPageSize"></PageSizeDropdown>
</div>
</div>
<div class="row">

View file

@ -21,6 +21,7 @@ using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Microsoft.AspNetCore.Components;
using Wonky.Client.Components;
using Wonky.Client.Services;
using Wonky.Entity.DTO;
using Wonky.Entity.Requests;
@ -28,15 +29,22 @@ namespace Wonky.Client.Pages;
public partial class SalesItemCatalog : IDisposable
{
[Inject] private UserPreferenceService UserPreferenceService { get; set; }
private List<SalesItemDto> SalesItemList { get; set; } = new();
private MetaData? MetaData { get; set; } = new();
private PagingParams _paging = new();
private Preferences _preferences = new();
[Inject] public ISalesItemHttpRepository SalesItemRepo { get; set; }
[Inject] public HttpInterceptorService Interceptor { get; set; }
[Inject] public ILocalStorageService LocalStorage { get; set; }
protected override async Task OnInitializedAsync()
{
_preferences = await UserPreferenceService.GetPreferences();
_paging.OrderBy = _preferences.ItemSort;
_paging.SearchColumn = _preferences.ItemSearch;
_paging.PageSize = Convert.ToInt32(_preferences.PageSize);
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
await GetSalesItems();
@ -62,26 +70,26 @@ public partial class SalesItemCatalog : IDisposable
await GetSalesItems();
}
private async Task GroupFilterChanged(string groupFilter)
private async Task SetItemGroup(string groupFilter)
{
_paging.PageNumber = 1;
_paging.SelectGroup = groupFilter;
await GetSalesItems();
}
private async Task SearchColumnChanged(string columnName)
private async Task SetSearchCol(string columnName)
{
_paging.PageNumber = 1;
_paging.SearchColumn = columnName;
await GetSalesItems();
}
private async Task SearchPhraseChanged(string searchTerm)
private async Task SetSearchPhrase(string searchTerm)
{
_paging.PageNumber = 1;
_paging.SearchTerm = searchTerm;
await GetSalesItems();
}
private async Task SortColumnChanged(string orderBy)
private async Task SetSortCol(string orderBy)
{
_paging.OrderBy = orderBy;
await GetSalesItems();

View file

@ -58,6 +58,7 @@ builder.Services.AddScoped<AuthenticationStateProvider, AuthStateProvider>();
builder.Services.AddScoped<IAuthenticationService, AuthenticationService>();
builder.Services.AddScoped<RefreshTokenService>();
builder.Services.AddScoped<VirkRegistryService>();
builder.Services.AddScoped<UserPreferenceService>();
// ---------------------------------------

View file

@ -4,75 +4,55 @@ namespace Wonky.Client.Services;
public record Preferences
{
public bool DisplayIgnored { get; set; } = false;
public bool DisplayAll { get; set; } = false;
public string CompanySearch { get; set; } = "name";
public string CompanySort { get; set; } = "name";
public string ItemSearch { get; set; } = "name";
public string ItemSort { get; set; } = "name";
public string PageSize { get; set; } = "5";
public string ItemGroup { get; set; } = "all";
}
public class ProfileService
public class UserPreferenceService
{
private readonly ILocalStorageService _localStorageService;
public event Action<Preferences>? OnChange;
public ProfileService(ILocalStorageService localStorageService)
public UserPreferenceService(ILocalStorageService localStorageService)
{
_localStorageService = localStorageService;
}
public async Task ToggleIgnored(bool toggle)
public async Task SetCompanySearch(string companySearch)
{
var preferences = await GetPreferences();
var newPreferences = preferences
with { DisplayIgnored = toggle };
await _localStorageService.SetItemAsync("preferences", newPreferences);
OnChange?.Invoke(newPreferences);
}
public async Task ToggleAll(bool toggle)
{
var preferences = await GetPreferences();
var newPreferences = preferences
with { DisplayAll = toggle };
await _localStorageService.SetItemAsync("preferences", newPreferences);
OnChange?.Invoke(newPreferences);
}
public async Task SetCompanySearch(string column)
{
var preferences = await GetPreferences();
var newPreferences = preferences
with { CompanySearch = column };
with { CompanySearch = companySearch };
await _localStorageService.SetItemAsync("preferences", newPreferences);
OnChange?.Invoke(newPreferences);
}
public async Task SetCompanySort(string column)
public async Task SetCompanySort(string companySort)
{
var preferences = await GetPreferences();
var newPreferences = preferences
with { CompanySort = column };
with { CompanySort = companySort };
await _localStorageService.SetItemAsync("preferences", newPreferences);
OnChange?.Invoke(newPreferences);
}
public async Task SetItemSearch(string column)
public async Task SetItemSearch(string itemSearch)
{
var preferences = await GetPreferences();
var newPreferences = preferences
with { ItemSearch = column };
with { ItemSearch = itemSearch };
await _localStorageService.SetItemAsync("preferences", newPreferences);
OnChange?.Invoke(newPreferences);
}
public async Task SetItemSort(string column)
public async Task SetItemSort(string itemSort)
{
var preferences = await GetPreferences();
var newPreferences = preferences
with { ItemSort = column };
with { ItemSort = itemSort };
await _localStorageService.SetItemAsync("preferences", newPreferences);
OnChange?.Invoke(newPreferences);
}
public async Task SetPageSize(string pageSize)
{
var preferences = await GetPreferences();
@ -81,14 +61,6 @@ public class ProfileService
await _localStorageService.SetItemAsync("preferences", newPreferences);
OnChange?.Invoke(newPreferences);
}
public async Task SetItemGroup(string group)
{
var preferences = await GetPreferences();
var newPreferences = preferences
with { ItemGroup = group };
await _localStorageService.SetItemAsync("preferences", newPreferences);
OnChange?.Invoke(newPreferences);
}
public async Task<Preferences> GetPreferences()
{
return await _localStorageService.GetItemAsync<Preferences>("preferences")

View file

@ -54,11 +54,6 @@
<span class="oi oi-list-rich" aria-hidden="true"></span> Priskatalog
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="/UserSettings">
<span class="oi oi-list-rich" aria-hidden="true"></span> Indstillinger
</NavLink>
</div>
</Authorized>
</AuthorizeView>
</nav>