built v.0.7
This commit is contained in:
parent
f4ba3ef83b
commit
f05548a075
13 changed files with 147 additions and 79 deletions
|
@ -1,15 +1,13 @@
|
|||
@if (Enabled == 1)
|
||||
{
|
||||
<a type="button" class="btn btn-success" href="/company/@CompanyId/activity">Opret Besøg</a>
|
||||
<a type="button" class="btn btn-success" href="/company/@CompanyId/activity">Besøg</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a type="button" class="btn btn-outline-secondary disabled" aria-disabled="true">Opret Besøg</a>
|
||||
<a type="button" class="btn btn-outline-secondary disabled" aria-disabled="true">Besøg</a>
|
||||
}
|
||||
|
||||
@code {
|
||||
|
||||
[Parameter] public string CompanyId { get; set; } = "";
|
||||
[Parameter]public int Enabled { get; set; }
|
||||
|
||||
}
|
|
@ -53,6 +53,7 @@ public partial class Home : IDisposable
|
|||
|
||||
private async Task FetchActivities(string workDate)
|
||||
{
|
||||
_workDate = workDate;
|
||||
Activities = new List<ReportActivityDto>();
|
||||
Activities = await ActivityRepo.GetActivities(workDate);
|
||||
}
|
||||
|
|
|
@ -15,5 +15,9 @@
|
|||
//
|
||||
*@
|
||||
|
||||
<input id="search-input" type="text" class="form-control" placeholder="Søg ..."
|
||||
@bind-value="@SearchTerm" @bind-value:event="oninput" @onkeyup="OnSearchChanged"/>
|
||||
<div class="input-group">
|
||||
<input id="search-input" type="text" class="form-control" placeholder="Søg ..." aria-described-by="search-addon"
|
||||
@bind-value="@SearchTerm" @bind-value:event="oninput" @onkeyup="OnSearchChanged"/>
|
||||
<span class="input-group-text" id="search-addon"><i class="oi oi-delete" @onclick="ClearSearch"></i></span>
|
||||
</div>
|
||||
|
|
@ -19,24 +19,34 @@ using Timer = System.Timers.Timer;
|
|||
|
||||
namespace Wonky.Client.Components
|
||||
{
|
||||
public partial class SearchComponent
|
||||
public partial class SearchPhrase
|
||||
{
|
||||
private Timer _timer = new();
|
||||
private string? SearchTerm { get; set; }
|
||||
[Parameter] public EventCallback<string?> OnChanged { get; set; }
|
||||
[Parameter] public string? SavedSearch { get; set; }
|
||||
private string SearchTerm { get; set; } = "";
|
||||
[Parameter] public EventCallback<string> OnChanged { get; set; }
|
||||
[Parameter] public string SavedSearch { get; set; } = "";
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(SavedSearch))
|
||||
SearchTerm = SavedSearch;
|
||||
}
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(SavedSearch)) return;
|
||||
SearchTerm = SavedSearch;
|
||||
OnChanged.InvokeAsync(SearchTerm);
|
||||
//SearchChanged();
|
||||
if(!string.IsNullOrWhiteSpace(SavedSearch))
|
||||
OnSearchChanged();
|
||||
}
|
||||
|
||||
private void ClearSearch()
|
||||
{
|
||||
SavedSearch = "";
|
||||
SearchTerm = "";
|
||||
OnChanged.InvokeAsync(SearchTerm);
|
||||
}
|
||||
private void OnSearchChanged()
|
||||
{
|
||||
_timer = new Timer(500);
|
||||
_timer = new Timer(750);
|
||||
_timer.Elapsed += OnTimerElapsed;
|
||||
_timer.AutoReset = false;
|
||||
_timer.Enabled = true;
|
|
@ -26,8 +26,8 @@ public partial class WorkDateComponent : IDisposable
|
|||
private async Task OnDateChanged(ChangeEventArgs e)
|
||||
{
|
||||
var val = $"{DateOnly.Parse(e.Value?.ToString()!):yyyy-MM-dd}";
|
||||
await OnChanged.InvokeAsync(val);
|
||||
await UserPrefs.SetWorkDate(DateTime.Parse(val));
|
||||
await OnChanged.InvokeAsync(val);
|
||||
}
|
||||
|
||||
private void ProfileServiceOnOnChange(Preferences newPreferences)
|
||||
|
|
|
@ -23,27 +23,29 @@
|
|||
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col">
|
||||
<div class="col-md-3">
|
||||
<CompanySearchDropdown OnChanged="SetSearchCol"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<SearchPhrase OnChanged="SetSearchPhrase"/>
|
||||
<div class="col-md-3">
|
||||
<SearchPhrase SavedSearch="@_savedSearch" OnChanged="SetSearchPhrase"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="col-md-3">
|
||||
<CompanySortDropdown OnChanged="SetSortCol"/>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div class="col-md-3">
|
||||
<PageSizeDropdown OnChanged="SetPageSize"></PageSizeDropdown>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a class="btn btn-success mb-1" href="/company/create">Opret kunde</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col">
|
||||
<div class="col-md-6">
|
||||
<Pagination MetaData="MetaData" Spread="2" SelectedPage="SelectedPage"></Pagination>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<a class="btn btn-success" href="/company/create">Opret kunde</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<CompanyTable Companies="Companies" OnDelete="DeleteCompany"></CompanyTable>
|
||||
|
|
|
@ -36,6 +36,7 @@ namespace Wonky.Client.Pages
|
|||
public MetaData? MetaData { get; set; } = new();
|
||||
private CompanyPagingParams _paging = new();
|
||||
private Preferences _preferences { get; set; } = new();
|
||||
private string _savedSearch { get; set; } = "";
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
@ -45,7 +46,10 @@ namespace Wonky.Client.Pages
|
|||
_paging.SearchColumn = _preferences.CompanySearch;
|
||||
_paging.PageSize = Convert.ToInt32(_preferences.PageSize);
|
||||
|
||||
//
|
||||
_savedSearch = string.IsNullOrWhiteSpace(_preferences.CompanyFilterPhrase)
|
||||
? "" : _preferences.CompanyFilterPhrase;
|
||||
_paging.SearchTerm = _savedSearch;
|
||||
|
||||
Interceptor.RegisterEvent();
|
||||
Interceptor.RegisterBeforeSendEvent();
|
||||
// get companies
|
||||
|
@ -76,6 +80,8 @@ namespace Wonky.Client.Pages
|
|||
|
||||
private async Task SetSearchPhrase(string searchTerm)
|
||||
{
|
||||
if(string.IsNullOrWhiteSpace(searchTerm))
|
||||
await UserPrefService.SetCompanyFilterPhrase("");
|
||||
Companies = new List<CompanyDto>();
|
||||
_paging.PageNumber = 1;
|
||||
_paging.SearchTerm = searchTerm;
|
||||
|
|
|
@ -162,13 +162,16 @@
|
|||
<div class="card-footer">
|
||||
<div class="row">
|
||||
<div class="col col-md-2">
|
||||
<button type="button" class="btn btn-warning">SKJUL</button>
|
||||
<button type="button" class="btn btn-warning">Fjern</button>
|
||||
</div>
|
||||
<div class="col col-md-2">
|
||||
<button type="button" class="btn btn-danger">SLET</button>
|
||||
<button type="button" class="btn btn-danger">Slet</button>
|
||||
</div>
|
||||
<div class="col col-md-2">
|
||||
<button type="submit" class="btn btn-success">GEM</button>
|
||||
<button type="submit" class="btn btn-success">Gem</button>
|
||||
</div>
|
||||
<div class="col col-md-2">
|
||||
<a class="btn btn-primary" href="/company/@CompanyId">Til Oversigt</a>
|
||||
</div>
|
||||
<div class="col col-md-2">
|
||||
<a class="btn btn-primary" href="/company/@CompanyId">Tilbage</a>
|
||||
|
|
|
@ -139,7 +139,7 @@
|
|||
<ItemSearchDropdown OnChanged="SetSearchCol"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<SearchComponent OnChanged="SetSearchPhrase"/>
|
||||
<SearchPhrase OnChanged="SetSearchPhrase"/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<ItemSortDropdown OnChanged="SetSortCol"/>
|
||||
|
@ -361,13 +361,15 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="row mt-2 mb-2">
|
||||
<div class="col-md-6"></div>
|
||||
<div class="col-md-2">
|
||||
<a class="btn btn-primary" href="/companies">Til Oversigt</a>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<a class="btn btn-primary" href="/company/@NgCompany.CompanyId">Tilbage</a>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
@* <button type="submit" class="btn btn-success" disabled="@InvalidActivity">Gem</button> *@
|
||||
<button type="button" class="btn btn-success" @onclick="CreateActivity">OK</button>
|
||||
<button type="button" class="btn btn-success" @onclick="CreateActivity">Opret besøg</button>
|
||||
</div>
|
||||
</div>
|
||||
</EditForm>
|
||||
|
|
|
@ -89,44 +89,57 @@
|
|||
</table>
|
||||
@if (!_reportDto.DayTypeEnum.ToLower().Contains("leave"))
|
||||
{
|
||||
<div class="form-group row mb-1">
|
||||
<label for="supervisedBy" class="col-form-label col-md-2">Supervisor</label>
|
||||
<div class="col-md-4">
|
||||
<InputText id="supervisedBy" class="form-control" @bind-Value="_reportDto.SupervisedBy"/>
|
||||
<ValidationMessage For="@(() => _reportDto.SupervisedBy)" />
|
||||
</div>
|
||||
<label for="description" class="col-form-label col-md-2">Beskrivelse</label>
|
||||
<div class="col-md-4">
|
||||
<InputTextArea id="description" class="form-control" @bind-Value="_reportDto.Description"/>
|
||||
<ValidationMessage For="@(() => _reportDto.Description)" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Km Morgen</th>
|
||||
<th scope="col">Km Aften</th>
|
||||
<th scope="col">Km Kørt</th>
|
||||
<th scope="col">Km Privat</th>
|
||||
<th scope="col" style="width:60%">Tekst</th>
|
||||
<th scope="col">Medkørende Supervisor</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<InputTextArea id="description" class="form-control" @bind-Value="_reportDto.Description"/>
|
||||
<ValidationMessage For="@(() => _reportDto.Description)" />
|
||||
</td>
|
||||
<td>
|
||||
<InputText id="supervisedBy" class="form-control" @bind-Value="_reportDto.SupervisedBy"/>
|
||||
<ValidationMessage For="@(() => _reportDto.SupervisedBy)" />
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Km morgen</th>
|
||||
<th scope="col">Km aften</th>
|
||||
<th scope="col">Km kørt</th>
|
||||
<th scope="col">Km privat</th>
|
||||
<th scope="col">Md privat</th>
|
||||
<th scope="col">Md total</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<InputNumber class="form-control" @bind-Value="_reportDto.Figures.KmMorning" disabled="@_noFigures" />
|
||||
<ValidationMessage For="@(() => _reportDto.Figures.KmMorning)" />
|
||||
</td>
|
||||
<td>
|
||||
<InputNumber class="form-control" @bind-Value="_reportDto.Figures.KmEvening" disabled="@_noFigures" />
|
||||
<ValidationMessage For="@(() => _reportDto.Figures.KmEvening)" />
|
||||
</td>
|
||||
<td>
|
||||
<InputNumber class="form-control" @bind-Value="_reportDto.Figures.Distance" readonly="" />
|
||||
<InputNumber class="form-control" @bind-Value="_reportDto.Figures.Distance" readonly />
|
||||
</td>
|
||||
<td>
|
||||
<InputNumber class="form-control" @bind-Value="_reportDto.Figures.DistancePrivate" disabled="@_noFigures"/>
|
||||
<ValidationMessage For="@(() => _reportDto.Figures.DistancePrivate)" />
|
||||
</td>
|
||||
<td>
|
||||
<InputNumber class="form-control" @bind-Value="_reportDto.Figures.DistancePrivateMonth" readonly/>
|
||||
</td>
|
||||
<td>
|
||||
<InputNumber class="form-control" @bind-Value="_reportDto.Figures.DistanceMonth" readonly/>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -150,14 +163,14 @@
|
|||
<td>@activity.Company.Name - @activity.Company.ZipCity</td>
|
||||
<td>@activity.Demo</td>
|
||||
<td>@activity.SalesResume</td>
|
||||
<td>@activity.OrderAmount</td>
|
||||
<td class="align-content-end">@activity.OrderAmount</td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>Total</td>
|
||||
<td>@_reportDto.Figures.TotalTurnover</td>
|
||||
<td class="align-content-end">@_reportDto.Figures.TotalTurnover</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -173,7 +186,7 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>*</td>
|
||||
<td></td>
|
||||
<th scope="col">Besøg</th>
|
||||
<th scope="col">Demo</th>
|
||||
<th scope="col">Salg</th>
|
||||
|
@ -184,7 +197,7 @@
|
|||
<th scope="col">Beløb</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"></th>
|
||||
<th scope="row">N</th>
|
||||
<td>@_reportDto.Figures.NewVisitCount</td>
|
||||
<td>@_reportDto.Figures.NewDemoCount</td>
|
||||
<td>@_reportDto.Figures.NewSaleCount</td>
|
||||
|
@ -192,19 +205,46 @@
|
|||
<td>@_reportDto.Figures.NewVisitCountMonth</td>
|
||||
<td>@_reportDto.Figures.NewDemoCountMonth</td>
|
||||
<td>@_reportDto.Figures.NewSaleCountMonth</td>
|
||||
<td></td>
|
||||
<td>@_reportDto.Figures.NewTurnoverMonth</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">R</th>
|
||||
<td>@_reportDto.Figures.RecallVisitCount</td>
|
||||
<td>@_reportDto.Figures.RecallDemoCount</td>
|
||||
<td>@_reportDto.Figures.RecallSaleCount</td>
|
||||
<td>@_reportDto.Figures.RecallTurnover</td>
|
||||
<td>@_reportDto.Figures.RecallVisitCountMonth</td>
|
||||
<td>@_reportDto.Figures.RecallDemoCountMonth</td>
|
||||
<td>@_reportDto.Figures.RecallSaleCountMonth</td>
|
||||
<td>@_reportDto.Figures.RecallTurnoverMonth</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">SAS</th>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>@_reportDto.Figures.SasCount</td>
|
||||
<td>@_reportDto.Figures.SasTurnover</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>@_reportDto.Figures.SasCountMonth</td>
|
||||
<td>@_reportDto.Figures.SasTurnoverMonth</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">TOTAL</th>
|
||||
<td>@(_reportDto.Figures.NewVisitCount + _reportDto.Figures.RecallVisitCount)</td>
|
||||
<td>@(_reportDto.Figures.NewDemoCount + _reportDto.Figures.RecallDemoCount)</td>
|
||||
<td>@(_reportDto.Figures.NewSaleCount + _reportDto.Figures.RecallSaleCount + _reportDto.Figures. SasCount)</td>
|
||||
<td>@(_reportDto.Figures.NewTurnover + _reportDto.Figures.RecallTurnover + _reportDto.Figures.SasTurnover)</td>
|
||||
<td>@(_reportDto.Figures.NewVisitCountMonth + _reportDto.Figures.RecallVisitCountMonth)</td>
|
||||
<td>@(_reportDto.Figures.NewDemoCountMonth + _reportDto.Figures.RecallDemoCountMonth)</td>
|
||||
<td>@(_reportDto.Figures.NewSaleCountMonth + _reportDto.Figures.RecallSaleCountMonth + _reportDto.Figures. SasCountMonth)</td>
|
||||
<td>@(_reportDto.Figures.NewTurnoverMonth + _reportDto.Figures.RecallTurnoverMonth + _reportDto.Figures.SasTurnoverMonth)</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</EditForm>
|
||||
|
||||
<div>workDate: @_workDate</div>
|
||||
<div>tsIn: @_timestampIn</div>
|
||||
<div>tsOut: @_timestampOut</div>
|
||||
<div>checkIn: @_reportDto.CheckIn</div>
|
||||
<div>checkOut: @_reportDto.CheckOut</div>
|
||||
<div>leaveBegin: @_leaveBegin</div>
|
||||
<div>leaveEnd: @_leaveEnd</div>
|
||||
|
|
|
@ -18,12 +18,12 @@
|
|||
},
|
||||
"appInfo": {
|
||||
"name": "Wonky Client",
|
||||
"version": "0.6.2",
|
||||
"version": "0.7",
|
||||
"isBeta": true,
|
||||
"image": "grumpy-coder.png"
|
||||
},
|
||||
"apiConfig": {
|
||||
"baseAddress": "https://dev.innotec.dk",
|
||||
"baseAddress": "https://staging.innotec.dk",
|
||||
"tokenPath": "token",
|
||||
"userInfo": "api/auth/userinfo",
|
||||
"customerEndpoint": "api/v2/crm/companies",
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
|
||||
<link rel="manifest" href="site.webmanifest" crossorigin="use-credentials">
|
||||
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#5bbad5">
|
||||
<meta name="msapplication-TileColor" content="#ffaa00">
|
||||
<meta name="theme-color" content="#000">
|
||||
<title>Wonky Online</title>
|
||||
<base href="/" />
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
{
|
||||
"name": "",
|
||||
"short_name": "",
|
||||
"$schema": "https://json.schemastore.org/web-manifest-combined.json",
|
||||
"name": "Innotec Webapp",
|
||||
"short_name": "Innotec Webapp",
|
||||
"description": "Innotec Web CRM",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/android-chrome-192x192.png",
|
||||
|
@ -13,7 +15,7 @@
|
|||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"theme_color": "#ffaa00",
|
||||
"background_color": "#000",
|
||||
"display": "standalone"
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue