wip - make user preferences available

This commit is contained in:
Frede Hundewadt 2022-03-16 18:32:02 +01:00
parent 8df1af22d2
commit b3cd44431e
21 changed files with 134 additions and 95 deletions

View file

@ -15,11 +15,9 @@
//
*@
<label for="search-column" class="form-label">Søge kolonne</label>
<select id="search-column" class="form-control" @bind-value="@SearchColumn" @bind-value:event="oninput" @onchange="ApplyFilter">
<option value="name">Navn</option>
<option value="zipCode">Postnr</option>
<option value="city">Bynavn</option>
<option value="account">Konto</option>
<option value="phone">Telefon</option>
</select>
<select class="form-control" @bind-value="@SearchColumn" @bind-value:event="oninput" @onchange="OnSearchColumnChange">
@foreach (var (key, value) in Items)
{
<option value="@key">@value</option>
}
</select>

View file

@ -15,18 +15,33 @@
//
using System.Security.AccessControl;
using Blazored.LocalStorage;
using Microsoft.AspNetCore.Components;
namespace Wonky.Client.Components;
public partial class CompanySearchColumn
{
[Parameter]
public EventCallback<string> OnColumnChanged { get; set; }
[Inject] private ILocalStorageService LocalStorage { get; set; }
[Parameter] public EventCallback<string> OnColumnChanged { get; set; }
private string SearchColumn { get; set; }
private Dictionary<string, string> Items { get; set; } = new();
protected override async Task OnInitializedAsync()
{
var value = await LocalStorage.GetItemAsStringAsync("UserCompanySearch");
var y = string.IsNullOrWhiteSpace(value) ? "name" : value.Replace("\"", "");
private string SearchColumn { get; set; } = "name";
private async Task ApplyFilter(ChangeEventArgs eventArgs)
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();
}
private async Task OnSearchColumnChange(ChangeEventArgs eventArgs)
{
await OnColumnChanged.InvokeAsync(SearchColumn);
}
}
}

View file

@ -15,9 +15,9 @@
//
*@
<label for="sort-column" class="form-label">Sortering</label>
<select id="sort-column" class="form-control" @bind-value="@SortColumn" @bind-value:event="oninput" @onchange="ApplySort">
<option value="name">Navn</option>
<option value="account">Konto</option>
<option value="city">Bynavn</option>
</select>
<select class="form-control" @bind-value="@SortColumn" @bind-value:event="oninput" @onchange="OnSortColumnChange">
@foreach (var (key, value) in Items)
{
<option value="@key">@value</option>
}
</select>

View file

@ -15,6 +15,7 @@
//
using Blazored.LocalStorage;
using Microsoft.AspNetCore.Components;
namespace Wonky.Client.Components
@ -22,9 +23,15 @@ namespace Wonky.Client.Components
public partial class CompanySortColumn
{
[Parameter] public EventCallback<string> OnSortChanged { get; set; }
private string SortColumn { get; set; } = "name";
private async Task ApplySort(ChangeEventArgs eventArgs)
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,15 +15,12 @@
//
*@
<section>
<label for="group-column" class="form-label">Varegruppe</label>
<select id="group-column" class="form-control" @bind-value="@GroupFilter" @bind-value:event="oninput" @onchange="ApplyGroupFilter">
<option value="all">Alle</option>
<option value="1">Lim / Sealer / Rep</option>
<option value="2">Maling / Primer</option>
<option value="3">Smøremidler</option>
<option value="4">Polish / Cleaner</option>
<option value="5">Tape</option>
<option value="6">Diverse</option>
</select>
</section>
<select class="form-control" @bind-value="GroupFilter" @bind-value:event="oninput" @onchange="OnGroupFilterChange">
<option value="all" selected>Alle</option>
<option value="1">Lim / Sealer / Rep</option>
<option value="2">Maling / Primer</option>
<option value="3">Smøremidler</option>
<option value="4">Polish / Cleaner</option>
<option value="5">Tape</option>
<option value="6">Diverse</option>
</select>

View file

@ -22,7 +22,7 @@ public partial class ItemGroupFilter
{
[Parameter] public EventCallback<string> OnGroupFilterChanged { get; set; }
private string GroupFilter { get; set; } = "all";
private async Task ApplyGroupFilter(ChangeEventArgs eventArgs)
private async Task OnGroupFilterChange(ChangeEventArgs eventArgs)
{
if (GroupFilter == "all")
GroupFilter = "";

View file

@ -15,12 +15,9 @@
//
*@
<label for="search-column" class="form-label">Søge kolonne</label>
<select id="search-column" class="form-control"
@bind-value="@SearchColumn"
@bind-value:event="oninput"
@onchange="ApplySearchColumn">
<option value="name">Navn</option>
<option value="sku">Varenr</option>
<option value="shortName">Fork</option>
</select>
<select id="search-column" class="form-control" @bind-value="@SearchColumn" @bind-value:event="oninput" @onchange="OnSearchColumnChange">
@foreach (var (key, value) in Items)
{
<option value="@key">@value</option>
}
</select>

View file

@ -13,16 +13,24 @@
// 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 ItemSearchColumn
{
[Parameter] public EventCallback<string> OnSearchColumnChanged { get; set; }
[Parameter] public EventCallback<string> OnColumnChanged { get; set; }
private string SearchColumn { get; set; } = "name";
private async Task ApplySearchColumn(ChangeEventArgs eventArgs)
private Dictionary<string, string> Items { get; set; } = new();
protected override void OnInitialized()
{
await OnSearchColumnChanged.InvokeAsync(SearchColumn);
Items.Add("name", "Varenavn");
Items.Add("sku", "Varenr");
Items.Add("shortName", "Forkortelse");
}
private async Task OnSearchColumnChange(ChangeEventArgs eventArgs)
{
await OnColumnChanged.InvokeAsync(SearchColumn);
}
}

View file

@ -15,8 +15,9 @@
//
*@
<label for="order-by" class="form-label">Sortering</label>
<select id="order-by" class="form-control" @bind-value="@SortColumn" @bind-value:event="oninput" @onchange="ApplySortColumn">
<option value="name">Varenavn</option>
<option value="sku">Varenr</option>
</select>
<select class="form-control" @bind-value="@SortColumn" @bind-value:event="oninput" @onchange="OnSortColumnChange">
@foreach (var (key, value) in Items)
{
<option value="@key">@value</option>
}
</select>

View file

@ -13,18 +13,26 @@
// 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 ItemSortColumn
{
[Parameter]
public EventCallback<string> OnSortColumnChanged { get; set; }
[Parameter] public EventCallback<string> OnColumnChanged { get; set; }
private string SortColumn { get; set; } = "name";
private async Task ApplySortColumn(ChangeEventArgs eventArgs)
private Dictionary<string, string> Items { get; set; } = new();
protected override void OnInitialized()
{
await OnSortColumnChanged.InvokeAsync(SortColumn);
Items.Add("name", "Varenavn");
Items.Add("sku", "Varenr");
}
private async Task OnSortColumnChange(ChangeEventArgs eventArgs)
{
await OnColumnChanged.InvokeAsync(SortColumn);
}
}

View file

@ -16,11 +16,11 @@
*@
<div class="form-group">
<select class="form-control" @onchange="OnPageSizeChange">
<option selected="selected">5</option>
<option>10</option>
<option>15</option>
<option>30</option>
<option>50</option>
<select class="form-control" @bind-value="@PageSize" @bind-value:event="oninput" @onchange="OnPageSizeChange">
<option value="5">5</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="30">30</option>
<option value="50">50</option>
</select>
</div>

View file

@ -15,18 +15,19 @@
//
using Blazored.LocalStorage;
using Microsoft.AspNetCore.Components;
namespace Wonky.Client.Components
{
public partial class PageSizeDropDown
{
[Parameter]
public EventCallback<int> SelectedPageSize { get; set; }
[Parameter] public EventCallback<string> OnPageSizeChanged { get; set; }
private string PageSize { get; set; } = "5";
private async Task OnPageSizeChange(ChangeEventArgs eventArgs)
{
await SelectedPageSize.InvokeAsync(int.Parse(eventArgs.Value?.ToString()!));
}
await OnPageSizeChanged.InvokeAsync(PageSize);
}
}
}

View file

@ -15,7 +15,6 @@
//
*@
<label for="search-input" class="form-label">Søgetekst</label>
<input id="search-input" type="text" class="form-control" placeholder="Søg ..."
@bind-value="@SearchTerm" @bind-value:event="oninput"
@onkeyup="SearchChanged"/>

View file

@ -1,6 +1,6 @@
using Wonky.Entity.DTO;
namespace Wonky.Entity.Models;
namespace Wonky.Client.Models;
public class DraftItem
{

View file

@ -22,15 +22,15 @@
@attribute [Authorize(Roles = "Adviser")]
<div class="row mb-3">
<div class="col">
<CompanySortColumn OnSortChanged="SortChanged"/>
</div>
<div class="col">
<CompanySearchColumn OnColumnChanged="ColumnChanged" />
</div>
<div class="col">
<SearchPhrase OnSearchPhraseChanged="SearchChanged"/>
</div>
<div class="col">
<CompanySortColumn OnSortChanged="SortChanged"/>
</div>
<div class="col">
<a class="btn btn-success mb-1" href="/company/create">Nyt firma</a>
</div>
@ -40,7 +40,7 @@
<Pagination MetaData="MetaData" Spread="2" SelectedPage="SelectedPage"></Pagination>
</div>
<div class="col-md-2">
<PageSizeDropDown SelectedPageSize="SetPageSize" />
<PageSizeDropDown OnPageSizeChanged="SetPageSize" />
</div>
<div class="col-md-2">
</div>

View file

@ -16,6 +16,7 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Blazored.LocalStorage;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Microsoft.AspNetCore.Components;
@ -28,14 +29,14 @@ 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; }
[Inject]
public HttpInterceptorService Interceptor { get; set; }
[Inject] public HttpInterceptorService Interceptor { get; set; }
[Inject] public ILocalStorageService LocalStorage { get; set; }
protected override async Task OnInitializedAsync()
{
@ -59,14 +60,13 @@ namespace Wonky.Client.Pages
private async Task ColumnChanged(string? searchColumn)
{
_paging.SearchTerm = "";
_paging.SearchColumn = searchColumn;
_paging.PageNumber = 1;
await GetCompanies();
}
private async Task SetPageSize(int pageSize)
private async Task SetPageSize(string pageSize)
{
_paging.PageSize = pageSize;
_paging.PageSize = Convert.ToInt32(pageSize);
_paging.PageNumber = 1;
await GetCompanies();
}

View file

@ -5,7 +5,7 @@
@* display product filter options *@
<div class="row mb-3">
<div class="col">
<ItemSearchColumn OnSearchColumnChanged="ProductColumnChanged"></ItemSearchColumn>
<ItemSearchColumn OnColumnChanged="ProductColumnChanged"></ItemSearchColumn>
</div>
<div class="col">
<SearchPhrase OnSearchPhraseChanged="ProductSearchChanged"></SearchPhrase>

View file

@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Wonky.Client.Models;
using Wonky.Client.Shared;
using Wonky.Entity.DTO;
using Wonky.Entity.Models;

View file

@ -15,7 +15,7 @@
//
*@
@page "/price-catalog"
@page "/Price-Catalog"
@using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization
@ -23,24 +23,24 @@
<div class="row mb-3">
<div class="col">
<ItemSearchColumn OnSearchColumnChanged="SearchColumnChanged" />
<ItemGroupFilter OnGroupFilterChanged="GroupFilterChanged" />
</div>
<div class="col">
<ItemSortColumn OnColumnChanged="SortColumnChanged"/>
</div>
<div class="col">
<ItemSearchColumn OnColumnChanged="SearchColumnChanged"/>
</div>
<div class="col">
<SearchPhrase OnSearchPhraseChanged="SearchPhraseChanged"/>
</div>
<div class="col">
<ItemSortColumn OnSortColumnChanged="SortColumnChanged"/>
</div>
<div class="col">
<ItemGroupFilter OnGroupFilterChanged="GroupFilterChanged" />
</div>
</div>
<div class="row">
<div class="col-md-8">
<Pagination MetaData="MetaData" Spread="2" SelectedPage="SelectedPage"></Pagination>
</div>
<div class="col-md-2">
<PageSizeDropDown SelectedPageSize="SetPageSize" />
<PageSizeDropDown OnPageSizeChanged="SetPageSize" />
</div>
<div class="col-md-2">
</div>

View file

@ -16,9 +16,11 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Blazored.LocalStorage;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Microsoft.AspNetCore.Components;
using Wonky.Client.Components;
using Wonky.Entity.DTO;
using Wonky.Entity.Requests;
@ -31,6 +33,7 @@ public partial class SalesItemCatalog : IDisposable
private PagingParams _paging = new();
[Inject] public ISalesItemHttpRepository SalesItemRepo { get; set; }
[Inject] public HttpInterceptorService Interceptor { get; set; }
[Inject] public ILocalStorageService LocalStorage { get; set; }
protected override async Task OnInitializedAsync()
{
@ -52,9 +55,9 @@ public partial class SalesItemCatalog : IDisposable
MetaData = pagingResponse.MetaData;
}
private async Task SetPageSize(int pageSize)
private async Task SetPageSize(string pageSize)
{
_paging.PageSize = pageSize;
_paging.PageSize = Convert.ToInt32(pageSize);
_paging.PageNumber = 1;
await GetSalesItems();
}
@ -68,7 +71,6 @@ public partial class SalesItemCatalog : IDisposable
private async Task SearchColumnChanged(string columnName)
{
_paging.PageNumber = 1;
_paging.SearchTerm = "";
_paging.SearchColumn = columnName;
await GetSalesItems();
}

View file

@ -50,10 +50,15 @@
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="price-catalog">
<NavLink class="nav-link" href="/Price-Catalog">
<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>