79 Commits

Author SHA1 Message Date
Samuele Emilio Locatelli 8526515dc6 Update Program.cs, x rimozione compression 2024-02-24 13:52:14 +00:00
Samuele Locatelli 20f21862fd Merge tag 'FixReloadPageAndTestChart' into develop
Fix pagina test chart.js + reload pagina
2024-02-24 11:56:19 +01:00
Samuele Locatelli d36cee95c5 Merge branch 'release/FixReloadPageAndTestChart' 2024-02-24 11:56:05 +01:00
Samuele Locatelli 574cb12997 Update test charting + reloading pagina 2024-02-24 11:54:34 +01:00
Samuele Locatelli 9d8c165bcc Merge tag 'AddCompoAndExtension02' into develop
update componenti + estensioni chartjs
2024-02-23 16:37:58 +01:00
Samuele Locatelli 71939ad45e Merge branch 'release/AddCompoAndExtension02' 2024-02-23 16:37:47 +01:00
Samuele Locatelli a42c62929e Update lib bootstrap 2024-02-23 16:37:29 +01:00
Samuele Locatelli 51b83161f5 Update pagine di testing 2024-02-23 16:11:16 +01:00
Samuele Locatelli d7ea10b267 Merge tag 'AddCompoAndExtension01' into develop
Rilascio in produzione conv ersione che presenta componenti + extension
(x QueryStrings)
2024-02-23 11:03:08 +01:00
Samuele Locatelli 42ff466dda Merge branch 'release/AddCompoAndExtension01' 2024-02-23 11:02:43 +01:00
Samuele Locatelli 15d5c7a669 Aggiunto helper estrazione querystring 2024-02-23 11:02:17 +01:00
Samuele Locatelli 52d0394022 Update altre pagine test 2024-02-23 10:20:59 +01:00
Samuele Locatelli 7fe560326f update altri test... 2024-02-23 09:03:17 +01:00
Samuele Locatelli 4ad8b8e2aa Continuo riorganizzaione grafica 2024-02-22 19:54:02 +01:00
Samuele Locatelli a472ce70a9 update e riorganizzazione DemoPages 2024-02-22 19:51:29 +01:00
Samuele Locatelli 5652061dfc Update test 2024-02-22 19:15:05 +01:00
Samuele Locatelli 4e533bff80 Test display pdf... 2024-02-22 18:48:53 +01:00
Samuele Locatelli 472fe4e0f2 Rename componente + testing 2024-02-22 18:24:41 +01:00
Samuele Locatelli 37cea525e4 deploy test 100% largh 2024-02-22 12:00:54 +01:00
Samuele Locatelli ee68ecc35f ancora test pdf x mobile 2024-02-22 11:57:35 +01:00
Samuele Locatelli d38d9687d5 Test display pdf 2024-02-22 11:38:51 +01:00
Samuele Locatelli e419c061d0 fix chiave IIS pwd globale 2024-02-22 11:02:40 +01:00
Samuele Locatelli 4a9ef1f120 update pagine 2024-02-22 10:49:20 +01:00
Samuele Locatelli 8bd2dd462e spostamento bootstrap lib 2024-02-22 10:49:16 +01:00
Samuele Locatelli fb45a6c2a9 pulizia vecchi componenti/demo 2024-02-22 10:48:59 +01:00
Samuele Locatelli 44bcbac184 Fix master pagina test con componenti base 2024-02-22 10:48:38 +01:00
Samuele Locatelli 8f97d49ef8 Modifica CiCd x pubblicazone test componenti su IIS01 2024-02-22 09:53:26 +01:00
Samuele Locatelli bbf51a6270 Bozza modifiche x ospitare PdfViewer 2024-02-22 09:53:12 +01:00
Samuele Locatelli f28a9efc48 Aggiunto pub profile x deploy test IIS01 2024-02-22 09:52:47 +01:00
Samuele Locatelli 19f46cb4e3 Merge branch 'main' into develop 2024-01-22 09:53:25 +01:00
Samuele Locatelli cd30aa602e Merge tag 'AddNumInput' into develop
Fix gestione ritorno decimale con bind
2024-01-22 09:53:11 +01:00
Samuele Locatelli 694f3110bc Fix data bind x report valore DecimalVal 2024-01-22 09:52:50 +01:00
Samuele Locatelli 667b42e9c8 Merge branch 'release/AddNumInput' 2024-01-19 11:04:28 +01:00
Samuele Locatelli 01e0e6e8eb Aggiunto componente NumInput:
- gestone formattazione input double
2024-01-19 11:03:55 +01:00
Samuele Locatelli e7c16518db Merge tag 'FixProgBarLimit01' into develop
Aggiunta fix ProgBar
2023-12-15 10:58:36 +01:00
Samuele Locatelli 02f7128884 Merge branch 'release/FixProgBarLimit01' 2023-12-15 10:58:09 +01:00
Samuele Locatelli 35ef4e8a47 Merge branch 'develop' of https://gitlab.steamware.net/egalware/egwcorelib into develop 2023-12-15 10:57:32 +01:00
Samuele Locatelli 2cf7e2236d ProgBar:
- update limiti yellow/red int --> double
2023-12-15 10:57:23 +01:00
zaccaria.majid 41e6ee23b9 Merge branch 'develop' 2023-11-16 12:25:06 +01:00
zaccaria.majid 9f87d54140 Merge branch 'develop' of https://gitlab.steamware.net/egalware/egwcorerazorcomp into develop 2023-11-16 10:01:17 +01:00
zaccaria.majid da56024b62 aggiunto zxing compo 2023-11-16 09:59:20 +01:00
Samuele Locatelli 90ce60adb7 Merge tag 'AddTitleOnLoading02' into develop
Fix errore display titolo su componenti loading
2023-10-24 17:26:41 +02:00
Samuele Locatelli 1d0721471a Merge branch 'release/AddTitleOnLoading02' 2023-10-24 17:26:29 +02:00
Samuele Locatelli eae8bac539 Update data loader x titolo da mostrare 2023-10-24 17:26:06 +02:00
Samuele Locatelli 9732a98861 Merge tag 'AddTitleOnLoading' into develop
Aggiunto titolo x componente loading
2023-10-24 09:09:38 +02:00
Samuele Locatelli 9fa9d02e79 Merge branch 'release/AddTitleOnLoading' 2023-10-24 09:09:29 +02:00
Samuele Locatelli 36be2d83f5 Update loader: parametro titolo 2023-10-24 08:11:32 +02:00
Samuele Locatelli 509f2ed0ae Merge tag 'AddMultiGauge01' into develop
Aggiunto multigauge (ex TAB)
2023-10-13 12:15:38 +02:00
Samuele Locatelli c38af98b5a Merge branch 'release/AddMultiGauge01' 2023-10-13 12:15:25 +02:00
Samuele Locatelli 605f155fac Aggiunta componente gaugeMulti 2023-10-13 12:15:04 +02:00
Samuele Locatelli 502e2bf22a Merge tag 'UpdateGaugeComp' into develop
Aggiornamento componente Gauge
2023-10-12 19:25:25 +02:00
Samuele Locatelli 42cbb964c7 Merge branch 'release/UpdateGaugeComp' 2023-10-12 19:25:14 +02:00
Samuele Locatelli 0d38635b40 Display cerchi:
- Aggiunta proprietà x colore esterno
- cambio nome con maiuscole
2023-10-12 19:24:48 +02:00
Samuele Locatelli 1eb7acca41 ix api key nexus gestita da variabili globali nexus 2023-09-21 10:13:27 +02:00
Samuele Locatelli 56f6156cef Merge tag 'UpdateLoadingDataComp03' into develop
Update componenti loading (in particolare LARGE)
2023-08-02 16:55:25 +02:00
Samuele Locatelli b275d9f15d Merge branch 'release/UpdateLoadingDataComp03' 2023-08-02 16:55:14 +02:00
Samuele Locatelli facc808368 Update loader BIG 2023-08-02 16:54:56 +02:00
Samuele Locatelli e20929fb7d Merge tag 'UpdateLoadingDataComp02' into develop
Update proprietà x calcolo anticipo display aggiornamento
2023-07-31 09:32:29 +02:00
Samuele Locatelli c034637757 Merge branch 'release/UpdateLoadingDataComp02' 2023-07-31 09:32:14 +02:00
Samuele Locatelli aec1e932d1 Update proprietà progressBar 2023-07-31 09:31:53 +02:00
Samuele Locatelli 429009c915 Merge tag 'UpdateLoadingDataComp01' into develop
Aggiunta componenti parametrici
2023-07-29 12:11:34 +02:00
Samuele Locatelli 608565c43b Merge branch 'release/UpdateLoadingDataComp01' 2023-07-29 12:05:56 +02:00
Samuele Locatelli 53618c605f Completata versione attuale componenti loading 2023-07-29 12:04:11 +02:00
Samuele Locatelli 99ce59f76f Update con aggiunta loader slide oltre a glow 2023-07-29 11:42:05 +02:00
Samuele Locatelli 7fd09155e0 Affinamento display update 2023-07-29 09:50:51 +02:00
Samuele Locatelli 90560b4024 Update componente loading con stima fake 2023-07-28 19:03:12 +02:00
Samuele Locatelli 9bc8473d64 Merge tag 'AddMultiLineChartJs01' into develop
Aggiunta componente x display Chart multi-line
2023-07-25 15:21:28 +02:00
Samuele Locatelli be8de10e07 Merge branch 'release/AddMultiLineChartJs01' 2023-07-25 15:21:09 +02:00
Samuele Locatelli 8e13de8d1e Aggiunta componente multiline x ChartJs + refresh 2023-07-25 15:18:38 +02:00
Samuele Locatelli 59c2ad7929 Merge tag 'PeriodoAddClona' into develop
Fix gestione periodo: aggiunto clona obj
2023-07-03 08:36:12 +02:00
Samuele Locatelli ef1d4c1654 Merge branch 'release/PeriodoAddClona' 2023-07-03 08:35:31 +02:00
Samuele Locatelli 0e3103d8b8 Aggiunto metodo clone x periodo 2023-07-03 08:16:34 +02:00
Samuele Locatelli e31e071889 Merge tag 'AddChartJsOnMaster02' into develop
Fix js script insert x charts vecchi
2023-06-29 17:57:04 +02:00
Samuele Locatelli bb73b26dcd Merge branch 'release/AddChartJsOnMaster02' 2023-06-29 17:56:25 +02:00
Samuele Locatelli add63946e1 code reorg 2023-06-29 17:56:03 +02:00
Samuele Locatelli cfe61aac1d Update ChartTS x jscript 2023-06-29 17:54:40 +02:00
Samuele Locatelli 5e71139543 Update componenti vecchi ChartJs:
- fix rispetto dimensione ext
- fix jscript
2023-06-29 17:53:57 +02:00
Samuele Locatelli abeae5ef1a Merge tag 'AddChartJsOnMaster' into develop
Add chart js + jscript vari su main
2023-06-29 17:04:25 +02:00
Samuele Locatelli d0f0c6e495 Merge branch 'release/AddChartJsOnMaster' 2023-06-29 17:04:11 +02:00
263 changed files with 14758 additions and 24101 deletions
+54 -17
View File
@@ -1,5 +1,5 @@
variables:
VERS_MAIN: '1.4'
VERS_MAIN: '1.5'
NEW_REL: ''
NUM_REL: '0.1.2.3'
NUM_DEB: '0.1.2-beta.3'
@@ -89,21 +89,10 @@ variables:
stages:
- build
- deploy
- release
# ---------- BUILD ----------
EgwCoreLib.Razor:build:
stage: build
tags:
- win
variables:
APP_NAME: EgwCoreLib.Razor
SOL_NAME: EgwCoreLib
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
EgwCoreLib.Utils:build:
stage: build
@@ -115,9 +104,57 @@ EgwCoreLib.Utils:build:
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
- *version-fix
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
EgwCoreLib.Razor:build:
stage: build
tags:
- win
variables:
APP_NAME: EgwCoreLib.Razor
SOL_NAME: EgwCoreLib
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
- *version-fix
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
EgwCoreLib.BlazorTest:build:
stage: build
tags:
- win
variables:
APP_NAME: EgwCoreLib.BlazorTest
SOL_NAME: EgwCoreLib
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
- *version-fix
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
# ----- Start DEPLOY develop (IIS01) -----
EgwCoreLib.BlazorTest:IIS01:deploy:
stage: deploy
tags:
- win
variables:
APP_NAME: EgwCoreLib.BlazorTest
SOL_NAME: EgwCoreLib
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
- *version-fix
rules:
- if: $CI_COMMIT_BRANCH == 'develop'
needs: ["EgwCoreLib.BlazorTest:build"]
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
# ---------- Upload Debug/Unstable ----------
EgwCoreLib.Razor:release-dev:
stage: release
@@ -138,7 +175,7 @@ EgwCoreLib.Razor:release-dev:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet pack -p:Configuration=Debug -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
# - *renameDeb
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" setapikey $NUGET_API_KEY -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push $env:APP_NAME/bin/Debug/$env:APP_NAME.$env:NUM_DEB.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
EgwCoreLib.Utils:release-dev:
@@ -160,7 +197,7 @@ EgwCoreLib.Utils:release-dev:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet pack -p:Configuration=Debug -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
# - *renameDeb
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" setapikey $NUGET_API_KEY -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push $env:APP_NAME/bin/Debug/$env:APP_NAME.$env:NUM_DEB.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
# ---------- RELEASE ----------
@@ -183,7 +220,7 @@ EgwCoreLib.Razor:release-rel:
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet pack -p:Configuration=Debug -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" setapikey $NUGET_API_KEY -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push $env:APP_NAME/bin/Debug/$env:APP_NAME.$env:NUM_REL.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
EgwCoreLib.Utils:release-rel:
@@ -205,6 +242,6 @@ EgwCoreLib.Utils:release-rel:
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet pack -p:Configuration=Debug -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" setapikey $NUGET_API_KEY -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push $env:APP_NAME/bin/Debug/$env:APP_NAME.$env:NUM_REL.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
@@ -0,0 +1,5 @@
{
"version": 1,
"isRoot": true,
"tools": {}
}
@@ -0,0 +1,16 @@
<div class="d-flex justify-content-between text-light w-100">
<div class="px-1 text-left">
<b>EgwCoreLib</b> <span class="small">v.@version</span>
</div>
<div class="px-1 text-end">
<span class="small px-1">@adesso</span>
<a class="text-light fw-bold" href="https://www.egalware.com/" target="_blank">Egalware<img class="img-fluid" width="16" src="images/EgalwareLogo.svg" /></a>
</div>
</div>
@code {
protected DateTime adesso = DateTime.Now;
Version version = typeof(Program).Assembly.GetName().Version;
}
@@ -0,0 +1,16 @@
<div class="row pt-2">
<div class="col-4 px-0">
</div>
<div class="col-4 px-0 d-none d-lg-block text-center h4 text-truncate">
<NavLink class="btn btn-primary" href="ForceReload" >
<span class="oi oi-home" aria-hidden="true"></span> Home
</NavLink>
</div>
<div class="col-4 px-0 text-end d-flex flex-row-reverse">
<SearchMod></SearchMod>
</div>
</div>
@code {
}
@@ -0,0 +1,31 @@
<div class="input-group input-group-sm">
<input @bind-value="searchVal" @bind-value:event="oninput" type="text" class="form-control" title="Campo Ricerca" placeholder="Ricerca [ALT-R]" accesskey="R" />
<button @onclick="reset" class="btn btn-success input-group-text">reset</button>
</div>
@code {
#region Public Properties
[Parameter]
public EventCallback<string> searchUpdated { get; set; }
[Parameter]
public string searchVal { get; set; } = "";
#endregion Public Properties
#region Private Methods
private void reportChange()
{
searchUpdated.InvokeAsync(searchVal);
}
private void reset()
{
searchVal = "";
}
#endregion Private Methods
}
@@ -1,9 +0,0 @@
<h3>TestJsInterop</h3>
<CopyToClipboard Text="@qrCodeVal"></CopyToClipboard>
@code {
protected string qrCodeVal { get; set; } = "Some text for clipboard-copy debug";
}
+22
View File
@@ -0,0 +1,22 @@
using EgwCoreLib.BlazorTest.Pages;
namespace EgwCoreLib.BlazorTest.Data
{
public class TestData
{
public static Dictionary<string, string> MenuList { get; set; } = new()
{
{"TestPdfViewer", "Test PdfViewer"},
{"TestQrDisplay", "Test QrDisplay"},
{"TestGraphCompo", "Test Graph Compo"},
{"TestBarcodeReader", "Test Barcode Read"},
{"TestCalendario", "Test Calendario"},
{"TestProgress", "Test Progress"},
{"TestLoading", "Test Loading"},
{"TestComponenti", "Test Componenti"},
{"TestSvgDraw", "Test SVG draw"},
{"TestGauges", "Test Gauges"},
{"TestChart", "Test Chart.js"},
};
}
}
@@ -1,13 +0,0 @@
namespace EgwCoreLib.BlazorTest.Data
{
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string? Summary { get; set; }
}
}
@@ -1,20 +0,0 @@
namespace EgwCoreLib.BlazorTest.Data
{
public class WeatherForecastService
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
public Task<WeatherForecast[]> GetForecastAsync(DateTime startDate)
{
return Task.FromResult(Enumerable.Range(1, 25).Select(index => new WeatherForecast
{
Date = startDate.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
}).ToArray());
}
}
}
@@ -11,6 +11,10 @@
<Content Remove="compilerconfig.json" />
</ItemGroup>
<ItemGroup>
<_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS01.pubxml" />
</ItemGroup>
<ItemGroup>
<None Include="compilerconfig.json" />
</ItemGroup>
@@ -1,42 +0,0 @@
@page "/fetchdata"
<PageTitle>Weather forecast</PageTitle>
@using EgwCoreLib.BlazorTest.Data
@inject WeatherForecastService ForecastService
<h1>Weather forecast</h1>
<p>This component demonstrates fetching data from a service.</p>
@if (forecasts == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Date<Sorter ParamName="Date" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
<th>Temp. (C)<Sorter ParamName="TempC" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
<th>Temp. (F)<Sorter ParamName="TempF" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
<th>Summary<Sorter ParamName="Summary" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter></th>
</tr>
</thead>
<tbody>
@foreach (var forecast in forecasts)
{
<tr>
<td>@forecast.Date.ToShortDateString()</td>
<td>@forecast.TemperatureC</td>
<td>@forecast.TemperatureF</td>
<td>@forecast.Summary</td>
</tr>
}
</tbody>
</table>
<DataPager PageSize="@numRecord" currPage="@currPage" numRecordChanged="SetNumRec" numPageChanged="SetCurrPage" totalCount="@totalCount" showLoading="@isLoading" PageSizeList="@PageSizeEnab" />
}
@@ -1,122 +0,0 @@
using EgwCoreLib.BlazorTest.Data;
using EgwCoreLib.Razor;
namespace EgwCoreLib.BlazorTest.Pages
{
public partial class FetchData
{
#region Protected Properties
protected List<int> PageSizeEnab { get; set; } = new List<int>();
#endregion Protected Properties
#region Protected Methods
protected override async Task OnInitializedAsync()
{
rawData = await ForecastService.GetForecastAsync(DateTime.Now);
PageSizeEnab = new List<int>()
{
4,8,12,16,20,24,28,32,36,40
};
await ReloadAllData();
}
protected async Task ReloadAllData()
{
await Task.Delay(1);
totalCount = rawData.Count();
List<WeatherForecast> currForecast = rawData.ToList();
// effetuo sort...
if (!string.IsNullOrEmpty(sortField))
{
switch (sortField)
{
case "TempC":
if (sortAsc)
{
currForecast = currForecast.OrderBy(x => x.TemperatureC).ToList();
}
else
{
currForecast = currForecast.OrderByDescending(x => x.TemperatureC).ToList();
}
break;
case "TempF":
if (sortAsc)
{
currForecast = currForecast.OrderBy(x => x.TemperatureF).ToList();
}
else
{
currForecast = currForecast.OrderByDescending(x => x.TemperatureF).ToList();
}
break;
case "Summary":
if (sortAsc)
{
currForecast = currForecast.OrderBy(x => x.Summary).ToList();
}
else
{
currForecast = currForecast.OrderByDescending(x => x.Summary).ToList();
}
break;
default:
case "Date":
if (sortAsc)
{
currForecast = currForecast.OrderBy(x => x.Date).ToList();
}
else
{
currForecast = currForecast.OrderByDescending(x => x.Date).ToList();
}
break;
}
}
forecasts = currForecast.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList();
}
protected async Task SetCurrPage(int newNum)
{
currPage = newNum;
await ReloadAllData();
}
protected async Task SetNumRec(int newNum)
{
numRecord = newNum;
await ReloadAllData();
}
protected async Task SortRequested(Sorter.SortCallBack e)
{
sortField = e.ParamName;
sortAsc = e.IsAscending;
await ReloadAllData();
}
#endregion Protected Methods
#region Private Fields
private List<WeatherForecast>? forecasts;
private WeatherForecast[] rawData { get; set; } = new WeatherForecast[1];
private bool sortAsc = true;
private string sortField = "";
#endregion Private Fields
#region Private Properties
private int currPage { get; set; } = 1;
private bool isLoading { get; set; } = false;
private int numRecord { get; set; } = 8;
private int totalCount { get; set; } = 0;
#endregion Private Properties
}
}
@@ -0,0 +1,10 @@
@page "/ForceReload"
@inject NavigationManager NavMan
<h3>ForceReload</h3>
@code {
protected override void OnInitialized()
{
NavMan.NavigateTo("/", true);
}
}
+36 -77
View File
@@ -1,86 +1,45 @@
@page "/"
@using EgwCoreLib.BlazorTest.Data
<PageTitle>Index</PageTitle>
<div>
<PageTitle>EgwCoreLib Test Site</PageTitle>
<div class="row py-4" style="background-color: #ACDDAC;">
<div class="col-4">
</div>
<div class="col-4">
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="RadialGrad2">
<stop offset="0%" stop-color="#000000" />
<stop offset="80%" stop-color="#151515" />
<stop offset="90%" stop-color="#444444" />
<stop offset="100%" stop-color="#878787" />
</radialGradient>
</defs>
<rect width="100" height="100" rx="50" fill="url(#RadialGrad2)" fill-opacity="0.5">
</rect>
<text id="TitleElem" x="10%" y="50%" class="text-light" style="font-size:2rem;">Titolo</text>
<g>
<rect x="10%" y="10%" width="80%" height="80%" fill="white" fill-opacity="0.1" >
</rect>
<text x="10%" y="70%" class="text-light" style="font-size:0.8rem;">
testo più lungo... 0123456789
<animate attributeName="x"
values="10%;10%;-10%;-80%;-100%;-100%;10%"
dur="6s"
begin="2s"
repeatCount="indefinite" />
</text>
</g>
</svg>
</div>
<div class="col-4">
</div>
@*<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg">
<rect width="10" height="10">
<animate attributeName="rx"
values="0;5;0"
dur="5s"
repeatCount="indefinite" />
</rect>
</svg>*@
</div>
<div class="row py-4" style="background-color: #34495E;">
<div class="col-4">
</div>
<div class="col-4">
<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="RadialGrad2">
<stop offset="0%" stop-color="#000000" />
<stop offset="80%" stop-color="#151515" />
<stop offset="90%" stop-color="#444444" />
<stop offset="100%" stop-color="#878787" />
</radialGradient>
</defs>
<rect width="10" height="10" rx="5" fill="url(#RadialGrad2)" fill-opacity="0.5">
</rect>
</svg>
</div>
<div class="col-4">
</div>
</div>
<div class="mt-4 p-4 bg-primary bg-gradient bg-opacity-25 border border-light text-dark rounded shadow">
<div class="row">
<div class="col-12 containerCalendario">
<div class="calendario">
<div class="d-flex justify-content-between">
<div>
<CircleGauge Titolo="9:00" Testo="Caricate" maxVal="480" currVal="540" strokeColorVal="#F1C40F" ShowCircleBtn="true"></CircleGauge>
<div class="col-6 col-md-8 pr-0">
<h1>EgwCoreLib</h1>
<div>
Test componenti EgwCoreLib
</div>
</div>
<div class="col-6 col-md-4 text-right pl-0">
<div class="d-flex flex-row-reverse">
<div class="px-2 badge rounded-pill bg-dark my-4">
<div class="p-2" style="font-size: 1.5em;">
<a class="text-light" href="https://www.egalware.com/" target="_blank">powered by&nbsp;EgalWare <img width="32" class="img-fluid" src="images/EgalwareLogo.svg" /></a>
</div>
<div>
<CircleGauge Titolo="4:00" Testo="Lavorate" maxVal="480" currVal="240" strokeColorVal="#00FF00" ShowCircleBtn="true"></CircleGauge>
</div>
</div>
<div class="containerBtnTemp">
<button class="btn btn-sm btn-warning">
TEMP
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card mt-2 shadow my-lg-5">
<div class="card-body">
<div class="row px-0">
@foreach (var item in MenuList)
{
<div class="col-6 col-md-4 col-lg-3 my-1">
<NavLink type="button" class="btn btn-primary bg-gradient text-light p-3 w-100" title="@item.Value" href="@item.Key">
<i class="fa-solid fa-wrench fa-2x mb-2" aria-hidden="true"></i>
<h5>@item.Value</h5>
</NavLink>
</div>
}
</div>
</div>
</div>
@code {
private Dictionary<string, string> MenuList { get; set; } = TestData.MenuList;
}
@@ -1,18 +0,0 @@
@page "/provacalendar"
<PageTitle>Index</PageTitle>
<div>
<div class="containerCard">
<DtCard cardBg="background-color: #E74C3C"></DtCard>
</div>
<div class="containerBtnEntrEsc">
<BottoniEntrEsc></BottoniEntrEsc>
</div>
<div class="row mt-2">
<div class="col">
<CalendarMonth DtRif="@dtCurr" MainCss="table table-dark table-borderless" DateSelected="DisplayDate" DateCheck="@DateCheck" SingleWeek="@singleWeek" SelDayCss="selDate rounded-top p-2"></CalendarMonth>
</div>
</div>
</div>
@@ -1,60 +0,0 @@
namespace EgwCoreLib.BlazorTest.Pages
{
public partial class ProvaCalendar
{
#region Protected Methods
protected override async Task OnInitializedAsync()
{
dtCurr = DateTime.Today;
await Task.Delay(1);
DateCheck = new Dictionary<DateTime, string>();
Random rnd = new Random();
// random colorate...
for (int i = 0; i < 10; i++)
{
DateTime newDate = dtCurr.AddDays(rnd.Next(-5, 10)).Date;
if (!DateCheck.ContainsKey(newDate))
{
DateCheck.Add(newDate, "bg-success text-light rounded-circle p-2");
}
else
{
DateCheck[newDate] = "bg-warning text-light rounded-circle p-2";
}
}
}
#endregion Protected Methods
#region Private Fields
private Dictionary<DateTime, string> DateCheck = new Dictionary<DateTime, string>();
#endregion Private Fields
#region Private Properties
private DateTime dtCurr { get; set; } = DateTime.Today;
private bool singleWeek = false;
#endregion Private Properties
#region Private Methods
private void DisplayDate(DateTime dtSel)
{
dtCurr = dtSel;
singleWeek = true;
}
private async Task resetCal()
{
singleWeek = false;
await Task.Delay(1);
}
#endregion Private Methods
}
}
@@ -1,43 +0,0 @@
.containerCalendario {
margin-top: 20px;
position: relative;
min-width: 20rem;
align-items: center;
display: flex;
justify-content: center;
}
.containerGauge {
position: fixed;
bottom: 5rem;
width: 100%;
align-items: center;
right: 5.2rem;
display: flex;
justify-content: center;
gap: 8.3rem;
}
.containerCard {
position: relative;
width: 100%;
align-items: center;
display: flex;
justify-content: center;
flex-direction: row;
}
.containerBtnEntrEsc {
margin-top: 20px;
position: relative;
width: 95%;
height: 2.5rem;
display: flex;
justify-content: center;
}
.containerBtnTemp {
position: fixed;
height: 39px;
width: 59px;
bottom: 4rem;
align-items: center;
display: flex;
justify-content: center;
}
@@ -1,49 +0,0 @@
.containerCalendario {
margin-top: 20px;
position: relative;
min-width: 20rem;
align-items: center;
display: flex;
justify-content: center;
}
.containerGauge {
position: fixed;
bottom: 5rem;
width: 100%;
align-items: center;
right: 5.2rem;
display: flex;
justify-content: center;
gap: 8.3rem;
}
.containerCard {
position: relative;
width: 100%;
align-items: center;
display: flex;
justify-content: center;
flex-direction: row;
}
.containerBtnEntrEsc {
margin-top: 20px;
position: relative;
width: 95%;
height: 2.5rem;
display: flex;
justify-content: center;
}
.containerBtnTemp {
position: fixed;
height: 39px;
width: 59px;
bottom: 4rem;
align-items: center;
display: flex;
justify-content: center;
}
@@ -1 +0,0 @@
.containerCalendario{margin-top:20px;position:relative;min-width:20rem;align-items:center;display:flex;justify-content:center;}.containerGauge{position:fixed;bottom:5rem;width:100%;align-items:center;right:5.2rem;display:flex;justify-content:center;gap:8.3rem;}.containerCard{position:relative;width:100%;align-items:center;display:flex;justify-content:center;flex-direction:row;}.containerBtnEntrEsc{margin-top:20px;position:relative;width:95%;height:2.5rem;display:flex;justify-content:center;}.containerBtnTemp{position:fixed;height:39px;width:59px;bottom:4rem;align-items:center;display:flex;justify-content:center;}
@@ -0,0 +1,77 @@
@page "/TestBarcodeReader"
<PageTitle>Test Barcode Reader</PageTitle>
<div class="card my-2">
<div class="card-header"><h4>Test Barcode Reader</h4></div>
<div class="card-body">
<BarcodeReader ScanResult="(e) => ScanDoneHandler(e)"
ScanBtnTitle="Scan"
ResetBtnTitle="Reset"
CloseBtnTitle="Close"
UseBuiltinDiv="false"
@ref="barcodeReaderCustom"
SelectDeviceBtnTitle="Select Device">
</BarcodeReader>
<div @ref="barcodeReaderCustom.Element" class="d-flex justify-content-center">
@* <div style="width: 480px; max-width: 100%"> *@
<div class="col-12 col-md-8 col-lg-6">
<button class="btn btn-outline-success p-2 m-1 w-25" data-action="startButton">Scan</button>
<button class="btn btn-outline-success p-2 m-1 w-25" data-action="resetButton">Reset</button>
<div data-action="sourceSelectPanel" style="display:none">
<label for="sourceSelect">Source:</label>
<select data-action="sourceSelect" style="max-width:100%" class="form-control">
</select>
</div>
<div>
<video id="video" playsinline="true" autoplay="true" class="w-100 h-100 border rounded shadow" muted="true"></video>
</div>
</div>
</div>
</div>
</div>
@code {
private int currentCount = 0;
protected BarcodeReader barcodeReaderCustom { get; set; } = null!;
protected Random rnd = new Random();
protected async Task ScanDoneHandler(string value)
{
await Task.Delay(1);
}
private void IncrementCount()
{
currentCount++;
}
protected override void OnInitialized()
{
base.OnInitialized();
listBord01 = new();
listBord01.Add("");
listBord01.Add("White");
listBord01.Add("");
listBord01.Add("");
listBord02 = new();
listBord02.Add("");
listBord02.Add("White");
listBord02.Add("");
listBord02.Add("White");
listBord03 = new();
listBord03.Add("");
listBord03.Add("White");
listBord03.Add("");
listBord03.Add("Blue");
}
protected List<string> listBord01 { get; set; } = new();
protected List<string> listBord02 { get; set; } = new();
protected List<string> listBord03 { get; set; } = new();
protected string qrCodeVal { get; set; } = "https://office.egalware.com/WDC/UI";
}
-42
View File
@@ -1,42 +0,0 @@
@page "/TestCal"
<h3>TestCal</h3>
<div class="row bg-dark">
<div class="col">
<CircleGauge maxVal="480" currVal="240" Titolo="4:00" Testo="Lavorate"></CircleGauge>
</div>
<div class="col">
<CircleGauge maxVal="480" currVal="360" Titolo="6:00" Testo="Lavorate"></CircleGauge>
</div>
<div class="col">
<CircleGauge maxVal="480" currVal="480" Titolo="8:00" Testo="Lavorate"></CircleGauge>
</div>
<div class="col">
<CircleGauge maxVal="480" currVal="600" Titolo="10:00" Testo="Lavorate"></CircleGauge>
</div>
</div>
<div class="row bg-dark py-3">
<div class="col">
<CalendarMonth DtRif="@dtCurr" MainCss="table table-dark table-borderless" DateSelected="DisplayDate" DateCheck="@DateCheck" SingleWeek="@singleWeek"></CalendarMonth>
</div>
</div>
<div class="d-flex justify-content-between">
<div>
<b>@($"{dtCurr:ddd dd.MM.yyyy}")</b>
</div>
<div>
<button class="btn btn-primary" @onclick="() => resetCal()">Reset</button>
</div>
<div>
single: <b>@singleWeek</b>
</div>
</div>
@@ -0,0 +1,46 @@
@page "/TestCalendario"
<PageTitle>TestGauges</PageTitle>
<div class="card shadow">
<div class="card-header">
<h3>Test Calendario + Gauges</h3>
</div>
<div class="card-body py-1">
<div class="row bg-dark">
<div class="col">
<CircleGauge maxVal="480" currVal="240" Titolo="4:00" Testo="Lavorate"></CircleGauge>
</div>
<div class="col">
<CircleGauge maxVal="480" currVal="360" Titolo="6:00" Testo="Lavorate"></CircleGauge>
</div>
<div class="col">
<CircleGauge maxVal="480" currVal="480" Titolo="8:00" Testo="Lavorate"></CircleGauge>
</div>
<div class="col">
<CircleGauge maxVal="480" currVal="600" Titolo="10:00" Testo="Lavorate"></CircleGauge>
</div>
</div>
<div class="row bg-dark py-3">
<div class="col">
<CalendarMonth DtRif="@dtCurr" MainCss="table table-dark table-borderless" DateSelected="DisplayDate" DateCheck="@DateCheck" SingleWeek="@singleWeek"></CalendarMonth>
</div>
</div>
<div class="d-flex justify-content-between">
<div>
<b>@($"{dtCurr:ddd dd.MM.yyyy}")</b>
</div>
<div>
<button class="btn btn-primary" @onclick="() => resetCal()">Reset</button>
</div>
<div>
single: <b>@singleWeek</b>
</div>
</div>
</div>
</div>
@@ -1,6 +1,6 @@
namespace EgwCoreLib.BlazorTest.Pages
{
public partial class TestCal
public partial class TestCalendario
{
#region Protected Methods
@@ -0,0 +1,75 @@
@page "/TestSvgDraw"
<PageTitle>TestSvgDraw</PageTitle>
<div class="card">
<div class="card-header">
<h3>Test SVG</h3>
</div>
<div class="card-body py-1">
<div class="row py-4" style="background-color: #ACDDAC;">
<div class="col-4">
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="RadialGrad2">
<stop offset="0%" stop-color="#000000" />
<stop offset="80%" stop-color="#151515" />
<stop offset="90%" stop-color="#444444" />
<stop offset="100%" stop-color="#878787" />
</radialGradient>
</defs>
<rect width="100" height="100" rx="50" fill="url(#RadialGrad2)" fill-opacity="0.5">
</rect>
<text id="TitleElem" x="10%" y="50%" class="text-light" style="font-size:2rem;">Titolo</text>
<g>
<rect x="10%" y="10%" width="80%" height="80%" fill="white" fill-opacity="0.1">
</rect>
<text x="10%" y="70%" class="text-light" style="font-size:0.8rem;">
testo più lungo... 0123456789
<animate attributeName="x"
values="10%;10%;-10%;-80%;-100%;-100%;10%"
dur="6s"
begin="2s"
repeatCount="indefinite" />
</text>
</g>
</svg>
</div>
<div class="col-4 text-center">
<ul class="list-group">
<li class="list-group-item active">
<b>SVG Draw</b>
</li>
<li class="list-group-item">
Test disegno diretto component SVG + html/css
</li>
<li class="list-group-item">
Disegno elemento circolare + gradiente (simil-button)
<div class="fs-3">&rarr;</div>
</li>
<li class="list-group-item">
Testo che scorre entro un box
<div class="fs-3">&larr;</div>
</li>
</ul>
</div>
<div class="col-4">
<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient id="RadialGrad2">
<stop offset="0%" stop-color="#000000" />
<stop offset="80%" stop-color="#151515" />
<stop offset="90%" stop-color="#444444" />
<stop offset="100%" stop-color="#878787" />
</radialGradient>
</defs>
<rect width="10" height="10" rx="5" fill="url(#RadialGrad2)" fill-opacity="0.5">
</rect>
</svg>
</div>
</div>
</div>
</div>
@@ -0,0 +1,37 @@
using EgwCoreLib.Razor;
namespace EgwCoreLib.BlazorTest.Pages
{
public partial class TestCerchi
{
protected List<CircleGaugeMulti.CircSegm> DDemo1 = new List<CircleGaugeMulti.CircSegm>();
protected List<CircleGaugeMulti.CircSegm> DDemoIn2 = new List<CircleGaugeMulti.CircSegm>();
protected List<CircleGaugeMulti.CircSegm> DDemoOut2 = new List<CircleGaugeMulti.CircSegm>();
protected int currVal1 = 1000;
protected int currVal2 = 1000;
protected int maxVal = 1000;
protected decimal valDecimale = 12345;
protected override void OnInitialized()
{
DDemo1.Clear();
currVal1 = 800;
DDemo1.Add(new CircleGaugeMulti.CircSegm() { Color = "#DCFD15", Value = 800 });
DDemo1.Add(new CircleGaugeMulti.CircSegm() { Color = "#13FD67", Value = 300 });
Random rnd = new Random();
DDemoIn2.Clear();
DDemoOut2.Clear();
currVal2 = 1300;
DDemoIn2.Add(new CircleGaugeMulti.CircSegm() { Color = "#DCFD15", Value = 1000 });
DDemoIn2.Add(new CircleGaugeMulti.CircSegm() { Color = "#13FD67", Value = 600 });
DDemoOut2.Add(new CircleGaugeMulti.CircSegm() { Color = "#1367FD", Value = 300 });
// DataDemo.Add(new CircleGaugeMulti.CircSegm() { Color = "#1515FD", Value = 700 });
// currVal = rnd.Next(maxVal - 200, maxVal + 500);
// DataDemo.Add(new CircleGaugeMulti.CircSegm() { Color = "#13FD67", Value = currVal / 4 });
// DataDemo.Add(new CircleGaugeMulti.CircSegm() { Color = "#ACFD15", Value = currVal / 4 });
// DataDemo.Add(new CircleGaugeMulti.CircSegm() { Color = "#1515FD", Value = currVal / 2 });
}
}
}
@@ -0,0 +1,66 @@
@page "/TestChart"
@using EgwCoreLib.Razor.Data;
@using EgwCoreLib.Utils;
<PageTitle>Test</PageTitle>
<div class="card">
<div class="card-header d-flex justify-content-between">
<div class="px-0">
<h3>Test Grafici Chart.js</h3>
</div>
<div class="px-0">
<Toggler SelFilter="CurrFilt" FilterChanged="SetTipo"></Toggler>
</div>
</div>
<div class="card-body py-1">
@if (showMulti)
{
<div class="row" style="height: 400px;">
<div class="col-6">
<ChartHist Id="01" Data="@histData(1)" Labels="@histLabel(1)" LineColor="rgb(7, 173, 236)" BackColor="rgba(107, 223, 255, 0.5)" ChartLabel="Ore 01"></ChartHist>
</div>
<div class="col-6">
<ChartMultiLine DataSets="currDS" ChartLabels="ChLabels"></ChartMultiLine>
</div>
</div>
}
else
{
<div class="row" style="height: 400px;">
<div class="col-6">
@if (periodo != null)
{
<div>
Periodo Selezionato: <b>@($"{periodo.Inizio:yyyy/MM/dd}") &rarr; @($"{periodo.Fine:yyyy/MM/dd}")</b>
</div>
}
</div>
<div class="col-6">
<PeriodoSel E_PeriodoSel="setPeriodo" CurrPeriodo="@periodo"></PeriodoSel>
</div>
<div class="col-4">
<ChartHist Id="01" Data="@histData(1)" Labels="@histLabel(1)" LineColor="rgb(7, 173, 236)" BackColor="rgba(107, 223, 255, 0.5)" ChartLabel="Ore 01"></ChartHist>
</div>
<div class="col-2 text-center">
<div>
<Doughnut Id="00" Type="@Doughnut.ChartType.Doughnut" Data="@SimData()" BackgroundColor="@colors"></Doughnut>
</div>
<small>display con animazione</small>
</div>
<div class="col-2 text-center">
<div>
<Doughnut Id="03" Type="@Doughnut.ChartType.Doughnut" Data="@SimData()" BackgroundColor="@colors"></Doughnut>
</div>
<small>display con animazione</small>
</div>
<div class="col-4">
<ChartHist Id="02" Data="@histData(2)" Labels="@histLabel(2)" LineColor="rgb(173, 7, 236)" BackColor="rgba(223,107, 255, 0.5)" ChartLabel="Ore 02"></ChartHist>
</div>
</div>
}
</div>
</div>
@@ -0,0 +1,175 @@
using EgwCoreLib.Razor;
using EgwCoreLib.Razor.Data;
using EgwCoreLib.Utils;
using static EgwCoreLib.Razor.Data.chartJsData;
using static EgwCoreLib.Razor.Toggler;
namespace EgwCoreLib.BlazorTest.Pages
{
public partial class TestChart
{
#region Public Fields
public List<DoughnutStyling> colors = new List<DoughnutStyling>();
public List<double> Data = new List<double>();
public List<string> Labels = new List<string>();
#endregion Public Fields
#region Protected Fields
protected Random rnd = new Random();
#endregion Protected Fields
#region Protected Properties
protected List<string>? ChLabels { get; set; } = null;
protected List<chartJsData.chartJsDataSetXY>? currDS { get; set; } = null;
protected DtUtils.Periodo? periodo { get; set; } = new DtUtils.Periodo(DtUtils.PeriodSet.ThisTrim);
#endregion Protected Properties
#region Protected Methods
protected string[] histData(int num)
{
List<string> answ = new List<string>();
for (int i = 0; i < 50; i++)
{
answ.Add($"{(double)(rnd.Next(10, 100)) / 10 + i}");
}
return answ.ToArray();
}
protected string[] histLabel(int num)
{
List<string> answ = new List<string>();
for (int i = 0; i < 50; i++)
{
answ.Add($"LBL_{i:00}");
}
return answ.ToArray();
}
protected override async Task OnInitializedAsync()
{
CurrFilt = new Toggler.SelectGlobalToggle()
{
leftString = "Multi-linea",
rightString = "Singolo",
isActive = true,
toolTip = "Tipo di grafico"
};
currDS = null;
await Task.Delay(200);
await setupData();
}
protected override async Task OnParametersSetAsync()
{
await ReloadData();
await Task.Delay(1);
}
protected async Task ReloadData()
{
await Task.Delay(1);
}
protected async Task setPeriodo(DtUtils.Periodo newPeriodo)
{
await Task.Delay(1);
periodo = newPeriodo;
}
protected void SetTipo(SelectGlobalToggle selFilt)
{
if (selFilt != null)
{
showMulti = !selFilt.isActive;
}
}
protected double[] SimData()
{
List<double> answ = new List<double>();
double currColor = 0;
for (int i = 0; i < 10; i++)
{
currColor = (double)(rnd.Next(10, 100)) / 10;
answ.Add(currColor);
if (currColor > 7)
{
colors.Add(new DoughnutStyling("#28FF69", "ccc"));
}
else if (currColor > 3)
{
colors.Add(new DoughnutStyling("orange", "ccc"));
}
else
{
colors.Add(new DoughnutStyling("red", "ccc"));
}
}
return answ.ToArray();
}
#endregion Protected Methods
#region Private Fields
private bool showMulti = false;
#endregion Private Fields
#region Private Properties
private Toggler.SelectGlobalToggle CurrFilt { get; set; } = new Toggler.SelectGlobalToggle();
#endregion Private Properties
#region Private Methods
private async Task setupData()
{
currDS = null;
List<chartJsData.chartJsDataSetXY> currDemo = new List<chartJsData.chartJsDataSetXY>();
ChLabels = new List<string>();
int numMesi = 6;
for (int iMese = 1; iMese <= numMesi; iMese++)
{
ChLabels.Add($"{iMese:00}");
}
for (int iSerie = 0; iSerie < 4; iSerie++)
{
// simulo 12 mesi...
List<chartJsXY> simData = new List<chartJsXY>();
for (int iMese = 1; iMese <= numMesi; iMese++)
{
simData.Add(new chartJsXY() { x = iMese, y = iMese + rnd.Next(-4, 4) });
}
int rCol = rnd.Next(0, 155);
int gCol = rnd.Next(0, 155);
int bCol = rnd.Next(0, 100);
chartJsData.chartJsDataSetXY singleData = new chartJsData.chartJsDataSetXY()
{
label = $"Data_{iSerie:00}",
data = simData,
borderColor = $"#{10 + rCol:X2}{30 + gCol:X2}{100 + bCol:X2}",
backgroundColor = $"rgba({60 + rCol},{80 + gCol},{155 + bCol},0.3)",
lineTension = 0,
stepped = iSerie % 5 == 0,
fill = iSerie % 3 == 0 ? "start" : "false"
};
// aggiungo
currDemo.Add(singleData);
}
currDS = currDemo;
await Task.Delay(10);
}
#endregion Private Methods
}
}
@@ -1,69 +0,0 @@
@page "/TestCompo"
@using EgwCoreLib.Razor.Data;
@using EgwCoreLib.Utils;
<PageTitle>Test</PageTitle>
<h3>TestCompo</h3>
@*<div class="row">
<div class="col-6">
@if (periodo != null)
{
<div>
Periodo Selezionato: <b>@($"{periodo.Inizio:yyyy/MM/dd}") &rarr; @($"{periodo.Fine:yyyy/MM/dd}")</b>
</div>
}
</div>
<div class="col-6">
<PeriodoSel E_PeriodoSel="setPeriodo" CurrPeriodo="@periodo"></PeriodoSel>
</div>
</div>*@
<Doughnut Type="@Doughnut.ChartType.Doughnut" Data="@Data.ToArray()" BackgroundColor="@colors"></Doughnut>
@code {
#if false
protected DtUtils.Periodo? periodo { get; set; } = new DtUtils.Periodo(DtUtils.PeriodSet.ThisTrim);
protected async Task setPeriodo(DtUtils.Periodo newPeriodo)
{
await Task.Delay(1);
periodo = newPeriodo;
}
#endif
public List<DoughnutStyling> colors = new List<DoughnutStyling>();
public List<double> Data = new List<double>();
public List<string> Labels = new List<string>();
protected override async Task OnInitializedAsync()
{
await Task.Delay(1);
}
protected override async Task OnParametersSetAsync()
{
await ReloadData();
await Task.Delay(1);
}
protected async Task ReloadData()
{
Data.Clear();
Labels.Clear();
colors.Clear();
for (int x = 0; x < 5; x++)
{
Data.Add(x);
Labels.Add($"test n#: {x} - {x}min");
colors.Add(new DoughnutStyling("orange", "ccc"));
colors.Add(new DoughnutStyling("#2874A6", "ccc"));
}
await Task.Delay(1);
}
}
@@ -0,0 +1,160 @@
@page "/TestComponenti"
@inject NavigationManager NavMan
@implements IDisposable
<PageTitle>Test</PageTitle>
<div class="card">
<div class="card-header">
<h1>Test Componenti custom</h1>
</div>
<div class="card-body py-1">
<div class="row">
<div class="col-3">
<div class="card">
<div class="card-header">
Test Image
</div>
<div class="card-body py-1">
<img src="_content/EgwCoreLib.Razor/images/LogoEgw.png" class="img-fluid" width="200" height="200" />
</div>
</div>
</div>
<div class="col-3">
<div class="card">
<div class="card-header">
Input password
</div>
<div class="card-body py-1">
<ul class="list-group">
<li class="list-group-item">
Standard
<PasswordBox></PasswordBox>
</li>
<li class="list-group-item">
Cambio label
<PasswordBox ItemLabel="pwd"></PasswordBox>
</li>
<li class="list-group-item">
Show disabilitato
<PasswordBox DisableShow="true"></PasswordBox>
</li>
</ul>
</div>
</div>
</div>
<div class="col-3">
<div class="card">
<div class="card-header">
Input Speciali
</div>
<div class="card-body py-1">
<small>Test copia clipboard, GUID (presudo)random</small>
<CopyToClipboard Text="@textToCopy"></CopyToClipboard>
<hr />
<small>Input numerico con gestione cifre (es x double)</small>
<NumInput CssClass="form-control" @bind-Value="@valDecimale"></NumInput>
<div>
<b>@valDecimale</b>
</div>
</div>
</div>
</div>
<div class="col-3">
<div class="card">
<div class="card-header">
QueryString
</div>
<div class="card-body py-1">
Test valori QueryString
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between">
QString <b>Nome</b>:
<span class="badge bg-primary rounded-pill">
@if (!string.IsNullOrEmpty(qsNome))
{
@qsNome
}
else
{
<span>-</span>
}
</span>
</li>
<li class="list-group-item d-flex justify-content-between">
QString <b>Intero</b>:
<span class="badge bg-primary rounded-pill">
@if (qsIntero > 0)
{
@qsIntero
}
else
{
<span>-</span>
}
</span>
</li>
<li class="list-group-item">
<NavLink type="button" class="btn btn-primary bg-gradient text-light w-100" href="TestComponenti">
<i class="fa-solid fa-wrench" aria-hidden="true"></i>
<small>Reload Vuoto</small>
</NavLink>
</li>
<li class="list-group-item">
<NavLink type="button" class="btn btn-primary bg-gradient text-light w-100" href="@($"TestComponenti?Nome=Test_{DateTime.Now:mm}")">
<i class="fa-solid fa-wrench" aria-hidden="true"></i>
<small>Reload Nome</small>
</NavLink>
</li>
<li class="list-group-item">
<NavLink type="button" class="btn btn-primary bg-gradient text-light w-100" href="@($"TestComponenti?Intero={DateTime.Now:ss}")">
<i class="fa-solid fa-wrench" aria-hidden="true"></i>
<small>Reload Intero</small>
</NavLink>
</li>
<li class="list-group-item">
<NavLink type="button" class="btn btn-primary bg-gradient text-light w-100" href="@($"TestComponenti?Nome=Test_{DateTime.Now:mm}&Intero={DateTime.Now:ss}")">
<i class="fa-solid fa-wrench" aria-hidden="true"></i>
<small>Reload All</small>
</NavLink>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
@code {
protected string textToCopy = $"{Guid.NewGuid()}";
protected decimal valDecimale = 12345;
private string qsNome = "";
private int qsIntero = -1;
protected override void OnInitialized()
{
// base.OnInitialized();
qsNome = NavMan.ExtractQueryStringByKey<string>("Nome");
qsIntero = NavMan.ExtractQueryStringByKey<int>("Intero");
NavMan.LocationChanged += LocationChanged;
}
async void LocationChanged(object sender, LocationChangedEventArgs e)
{
qsNome = NavMan.ExtractQueryStringByKey<string>("Nome");
qsIntero = NavMan.ExtractQueryStringByKey<int>("Intero");
StateHasChanged();
}
void IDisposable.Dispose()
{
NavMan.LocationChanged -= LocationChanged;
}
}
@@ -0,0 +1,54 @@
@page "/TestGauges"
<PageTitle>TestGauges</PageTitle>
<div class="card shadow">
<div class="card-header">
<h3>Test componente Gauges</h3>
</div>
<div class="card-body py-1">
<div class="row py-4" style="background-color: #ACDDAC;">
<div class="col-1 bg-dark">
<CircleGaugeMulti Titolo="@($"{currVal1}")" Testo="#pz prod" maxVal="@maxVal" ListInner="@DDemo1" ShowCircleBtn="true"></CircleGaugeMulti>
</div>
<div class="col-2 bg-dark">
<CircleGaugeMulti Titolo="@($"{currVal2}")" Testo="#pz prod" maxVal="@maxVal" ListInner="@DDemoIn2" ListOuter="@DDemoOut2" ShowCircleBtn="true"></CircleGaugeMulti>
</div>
<div class="col-3 bg-dark">
<CircleGaugeMulti Titolo="@($"{currVal1}")" Testo="#pz prod" maxVal="@maxVal" ListInner="@DDemo1" ShowCircleBtn="true"></CircleGaugeMulti>
</div>
<div class="col-3 bg-dark">
<CircleGaugeMulti Titolo="@($"{currVal2}")" Testo="#pz prod" maxVal="@maxVal" ListInner="@DDemoIn2" ListOuter="@DDemoOut2" ShowCircleBtn="true"></CircleGaugeMulti>
</div>
<div class="col-2 bg-dark">
<CircleGaugeMulti Titolo="@($"{currVal1}")" Testo="#pz prod" maxVal="@maxVal" ListInner="@DDemo1" ShowCircleBtn="true"></CircleGaugeMulti>
</div>
<div class="col-1 bg-dark">
<CircleGaugeMulti Titolo="@($"{currVal2}")" Testo="#pz prod" maxVal="@maxVal" ListInner="@DDemoIn2" ListOuter="@DDemoOut2" ShowCircleBtn="true"></CircleGaugeMulti>
</div>
</div>
<div class="row">
<div class="col-12 containerCalendario">
<small>Blocco calendario (sottostante) gestito da css sticky sul fondo</small>
<div class="calendario">
<div class="d-flex justify-content-between">
<div>
<CircleGauge Titolo="9:00" Testo="Caricate" maxVal="480" currVal="540" StrokeColorVal="#F1C40F" ShowCircleBtn="true"></CircleGauge>
</div>
<div>
<CircleGauge Titolo="4:00" Testo="Lavorate" maxVal="480" currVal="240" StrokeColorVal="#00FF00" ShowCircleBtn="true"></CircleGauge>
</div>
<div>
<CircleGauge Titolo="12:00" Testo="Caricate" maxVal="480" currVal="720" StrokeColorVal="#F1C40F" StrokeColorValOuter="#01C4FF" ShowCircleBtn="true"></CircleGauge>
</div>
</div>
<div class="containerBtnTemp">
<button class="btn btn-sm btn-warning">
TEMP
</button>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,37 @@
using EgwCoreLib.Razor;
namespace EgwCoreLib.BlazorTest.Pages
{
public partial class TestGauges
{
protected List<CircleGaugeMulti.CircSegm> DDemo1 = new List<CircleGaugeMulti.CircSegm>();
protected List<CircleGaugeMulti.CircSegm> DDemoIn2 = new List<CircleGaugeMulti.CircSegm>();
protected List<CircleGaugeMulti.CircSegm> DDemoOut2 = new List<CircleGaugeMulti.CircSegm>();
protected int currVal1 = 1000;
protected int currVal2 = 1000;
protected int maxVal = 1000;
protected decimal valDecimale = 12345;
protected override void OnInitialized()
{
DDemo1.Clear();
currVal1 = 800;
DDemo1.Add(new CircleGaugeMulti.CircSegm() { Color = "#DCFD15", Value = 800 });
DDemo1.Add(new CircleGaugeMulti.CircSegm() { Color = "#13FD67", Value = 300 });
Random rnd = new Random();
DDemoIn2.Clear();
DDemoOut2.Clear();
currVal2 = 1300;
DDemoIn2.Add(new CircleGaugeMulti.CircSegm() { Color = "#DCFD15", Value = 1000 });
DDemoIn2.Add(new CircleGaugeMulti.CircSegm() { Color = "#13FD67", Value = 600 });
DDemoOut2.Add(new CircleGaugeMulti.CircSegm() { Color = "#1367FD", Value = 300 });
// DataDemo.Add(new CircleGaugeMulti.CircSegm() { Color = "#1515FD", Value = 700 });
// currVal = rnd.Next(maxVal - 200, maxVal + 500);
// DataDemo.Add(new CircleGaugeMulti.CircSegm() { Color = "#13FD67", Value = currVal / 4 });
// DataDemo.Add(new CircleGaugeMulti.CircSegm() { Color = "#ACFD15", Value = currVal / 4 });
// DataDemo.Add(new CircleGaugeMulti.CircSegm() { Color = "#1515FD", Value = currVal / 2 });
}
}
}
@@ -4,7 +4,7 @@
height: 18.75rem;
position: fixed;
bottom: 3.5rem;
width: 95%;
width: 70%;
display: flex;
justify-content: center;
border-radius: 12px 12px 12px 12px;
@@ -39,9 +39,9 @@
}
.containerBtnTemp {
position: fixed;
height: 39px;
width: 59px;
bottom: 4rem;
height: 3rem;
width: 6rem;
bottom: 2rem;
align-items: center;
display: flex;
justify-content: center;
@@ -4,7 +4,7 @@
height: 18.75rem;
position: fixed;
bottom: 3.5rem;
width: 95%;
width: 70%;
display: flex;
justify-content: center;
border-radius: 12px 12px 12px 12px
@@ -44,9 +44,9 @@
.containerBtnTemp {
position: fixed;
height: 39px;
width: 59px;
bottom: 4rem;
height: 3rem;
width: 6rem;
bottom: 2rem;
align-items: center;
display: flex;
justify-content: center;
@@ -1 +1 @@
.calendario{background-color:#34495e;border:2px solid #000;height:18.75rem;position:fixed;bottom:3.5rem;width:95%;display:flex;justify-content:center;border-radius:12px 12px 12px 12px;}.containerCalendario{display:flex;justify-content:center;}.containerGauge{position:fixed;bottom:5rem;width:100%;align-items:center;right:5.2rem;display:flex;justify-content:center;gap:8.3rem;}.containerCard{position:relative;width:100%;align-items:center;display:flex;justify-content:center;}.containerBtnEntrEsc{margin-top:20px;position:relative;width:100%;display:flex;justify-content:center;}.containerBtnTemp{position:fixed;height:39px;width:59px;bottom:4rem;align-items:center;display:flex;justify-content:center;}
.calendario{background-color:#34495e;border:2px solid #000;height:18.75rem;position:fixed;bottom:3.5rem;width:70%;display:flex;justify-content:center;border-radius:12px 12px 12px 12px;}.containerCalendario{display:flex;justify-content:center;}.containerGauge{position:fixed;bottom:5rem;width:100%;align-items:center;right:5.2rem;display:flex;justify-content:center;gap:8.3rem;}.containerCard{position:relative;width:100%;align-items:center;display:flex;justify-content:center;}.containerBtnEntrEsc{margin-top:20px;position:relative;width:100%;display:flex;justify-content:center;}.containerBtnTemp{position:fixed;height:3rem;width:6rem;bottom:2rem;align-items:center;display:flex;justify-content:center;}
@@ -0,0 +1,57 @@
@page "/TestGraphCompo"
<PageTitle>Test</PageTitle>
<div class="card">
<div class="card-header"><h4>Test Componenti Arrow SVG</h4></div>
<div class="card-body">
<div class="row bg-secondary py-2">
<div class="col">
<StepArrow ObjId="123" StepText="Prova Arrow 01" BlockStyle="@($"fill: #123456;")" StrokeWidth="4" ObjW="650" ObjH="100" StrokeColors="@listBord01" TipAngle="90"></StepArrow>
</div>
<div class="col">
<StepArrow ObjId="456" StepText="Prova Arrow 02" BlockStyle="@($"fill: #456789;")" StrokeWidth="4" ObjW="600" ObjH="100" StrokeColors="@listBord02" TipAngle="60"></StepArrow>
</div>
<div class="col">
<StepArrow ObjId="456" StepText="Prova Arrow 03" BlockStyle="@($"fill: #6789AB;")" StrokeWidth="4" ObjW="500" ObjH="100" StrokeColors="@listBord03" TipAngle="120"></StepArrow>
</div>
<div class="col">
<StepArrow ObjId="456" StepText="Prova Arrow 04" BlockStyle="@($"fill: #89ABCD;")" StrokeWidth="0" ObjW="700" ObjH="100" TipAngle="108"></StepArrow>
</div>
</div>
</div>
</div>
@code {
private int currentCount = 0;
protected Random rnd = new Random();
protected override void OnInitialized()
{
base.OnInitialized();
listBord01 = new();
listBord01.Add("");
listBord01.Add("White");
listBord01.Add("");
listBord01.Add("");
listBord02 = new();
listBord02.Add("");
listBord02.Add("White");
listBord02.Add("");
listBord02.Add("White");
listBord03 = new();
listBord03.Add("");
listBord03.Add("White");
listBord03.Add("");
listBord03.Add("Blue");
}
protected List<string> listBord01 { get; set; } = new();
protected List<string> listBord02 { get; set; } = new();
protected List<string> listBord03 { get; set; } = new();
}
@@ -0,0 +1,36 @@
@page "/TestLoading"
<div class="row">
<div class="col-4">
<LoadingData DisplaySize="LoadingData.CtrlSize.Small" DisplayMode="LoadingData.SpinMode.Normal"></LoadingData>
</div>
<div class="col-4">
<LoadingData DisplaySize="LoadingData.CtrlSize.Small" DisplayMode="LoadingData.SpinMode.Growl"></LoadingData>
</div>
<div class="col-4">
<LoadingData DisplaySize="LoadingData.CtrlSize.Small" DisplayMode="LoadingData.SpinMode.BounceLine"></LoadingData>
</div>
</div>
<div class="row">
<div class="col-4">
<LoadingData DisplaySize="LoadingData.CtrlSize.Normal" DisplayMode="LoadingData.SpinMode.Normal"></LoadingData>
</div>
<div class="col-4">
<LoadingData DisplaySize="LoadingData.CtrlSize.Normal" DisplayMode="LoadingData.SpinMode.Growl"></LoadingData>
</div>
<div class="col-4">
<LoadingData DisplaySize="LoadingData.CtrlSize.Normal" DisplayMode="LoadingData.SpinMode.BounceLine"></LoadingData>
</div>
</div>
<div class="row">
<div class="col-4">
<LoadingData DisplaySize="LoadingData.CtrlSize.Large" DisplayMode="LoadingData.SpinMode.Normal"></LoadingData>
</div>
<div class="col-4">
<LoadingData DisplaySize="LoadingData.CtrlSize.Large" DisplayMode="LoadingData.SpinMode.Growl"></LoadingData>
</div>
<div class="col-4">
<LoadingData DisplaySize="LoadingData.CtrlSize.Large" DisplayMode="LoadingData.SpinMode.BounceLine"></LoadingData>
</div>
</div>
@@ -0,0 +1,27 @@
@page "/TestPdfViewer"
<div class="card">
<div class="card-header">
<div class="d-flex justify-content-between">
<div class="px-0">
<h3>Test pdf display</h3>
</div>
<div class="px-0">
<div class="input-group w-100">
<span class="input-group-text">File</span>
<select class="form-select" @bind="@FileSel">
<option value="File01.pdf">File 01</option>
<option value="File02.pdf">File 02</option>
<option value="File03.pdf">File 03</option>
<option value="File04.pdf">File 04</option>
<option value="File05.pdf">File 05</option>
</select>
</div>
</div>
</div>
</div>
<div class="card-body py-1">
<PdfDisplay Width="100%" PdfUrl="@($"test/{FileSel}")" HeightList="@heightList"></PdfDisplay>
<p class="card-text">Selezione: <b>@FileSel</b></p>
</div>
</div>
@@ -0,0 +1,121 @@
#if false
using CA.Blazor.Pdf;
using CA.Blazor.Pdf.Extensions;
#endif
using Microsoft.AspNetCore.Components;
using System.Net.Http.Headers;
namespace EgwCoreLib.BlazorTest.Pages
{
public partial class TestPdfViewer
{
#region Public Fields
public int CompoSel = 1;
#endregion Public Fields
#region Public Properties
public string PdfBase64 { get; set; } = "";
#endregion Public Properties
#region Protected Properties
protected string FileSel
{
get => fileSel;
set
{
if (fileSel != value)
{
fileSel = value;
ReloadData().ConfigureAwait(false);
StateHasChanged();
}
}
}
protected string HeightSel
{
get => heightSel;
set
{
if (heightSel != value)
{
heightSel = value;
StateHasChanged();
}
}
}
[Inject]
protected NavigationManager NavMan { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
protected override async Task OnInitializedAsync()
{
await ReloadData();
await Task.Delay(1);
}
#endregion Protected Methods
#region Private Properties
private string fileSel { get; set; } = "File01.pdf";
private string heightSel { get; set; } = "400px";
private string baseUri = "";
private string fileUrl = "";
private Dictionary<string, string> heightList { get; set; } = new Dictionary<string, string>() { { "200", "200px" }, { "400", "400px" }, { "600", "600px" }, { "800", "800px" }, { "1000", "1000px" } };
#endregion Private Properties
#region Private Methods
private async Task<string> GetBase64Pdf(string apiUrl)
{
using (var httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri(NavMan.BaseUri);
// Make the API request to get the PDF content
var response = await httpClient.GetAsync(apiUrl);
if (response.IsSuccessStatusCode)
{
// Convert the response content to Base64
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
var base64String = Convert.ToBase64String(pdfBytes);
return $"data:application/pdf;base64,{base64String}";
}
else
{
// Handle error scenarios based on your application needs For simplicity, we
// return an empty string in case of an error
return string.Empty;
}
}
}
private async Task ReloadData()
{
baseUri = NavMan.BaseUri;
fileUrl = $"{baseUri}/test/{FileSel}";
#if false
// Call the helper method to retrieve the Base64-encoded PDF content
PdfBase64 = await GetBase64Pdf(apiUrl);
#endif
}
#endregion Private Methods
}
}
@@ -0,0 +1,78 @@
@page "/TestProgress"
<div class="card">
<div class="card-header">
<h3>Test Modale Loading</h3>
</div>
<div class="card-body py-1">
<div class="row">
<div class="col-4">
<div class="input-group w-100 mb-1">
<span class="input-group-text">Tempo sim</span>
<input class="form-control" @bind="@expTime" type="number" />
</div>
<div class="input-group w-100 mb-1">
<span class="input-group-text">Num steps</span>
<input class="form-control" @bind="@numSteps" type="number" />
</div>
<button class="btn btn-success w-100" @onclick="StartLongTimer">Start</button>
<div>@realTime</div>
</div>
<div class="col-8 small">
<h3>Fake Progressbar</h3>
<p>Modale che mostra avanzamento (progressbar con %) di un task lungo.</p>
<p>Devono essere definiti il numero degli step attesi e per ogni step la durata attesa di completamento.</p>
<p>Viene definito <b>fake</b> poiché l'avanzamento è artificialmente rallentato quando si approssima allo scadere di uno step per dare impressione di un sistema realmente (ri)calcolato di continuo, mentre al superamento di ogni step viene portato avanti il conteggio recuperando eventuali ritardi di stima.</p>
</div>
</div>
<hr />
<div class="card my-2">
<div class="card-header"><h4>Test progBar singola linea</h4></div>
<div class="card-body">
<div class="row bg-secondary py-2">
<div class="col">
<ProgBar singleLine="true" baseUM="$" currVal="@(rnd.Next(50,250))" maxVal="1000" redLim="200" yelLim="400" />
</div>
<div class="col">
<ProgBar singleLine="true" baseUM="gg" currVal="@(rnd.Next(200,450))" maxVal="1000" redLim="200" yelLim="400" />
</div>
<div class="col">
<ProgBar singleLine="true" baseUM="min" currVal="@(rnd.Next(400,650))" maxVal="1000" redLim="200" yelLim="400" />
</div>
<div class="col">
<ProgBar singleLine="true" baseUM="px" currVal="@(rnd.Next(600,900))" maxVal="1000" redLim="200" yelLim="400" />
</div>
<div class="col">
<ProgBar singleLine="true" baseUM="h" currVal="@(rnd.Next(500,1000))" maxVal="1000" redLim="200" yelLim="400" />
</div>
</div>
</div>
</div>
<hr />
<div class="card my-2">
<div class="card-header"><h4>Test progBar multi linea</h4></div>
<div class="card-body">
<div class="row bg-dark py-2">
<div class="col">
<ProgBar singleLine="false" baseUM="$" currVal="@(rnd.Next(50,250))" maxVal="1000" redLim="200" yelLim="400" />
</div>
<div class="col">
<ProgBar singleLine="false" baseUM="gg" currVal="@(rnd.Next(200,450))" maxVal="1000" redLim="200" yelLim="400" />
</div>
<div class="col">
<ProgBar singleLine="false" baseUM="min" currVal="@(rnd.Next(400,650))" maxVal="1000" redLim="200" yelLim="400" />
</div>
<div class="col">
<ProgBar singleLine="false" baseUM="px" currVal="@(rnd.Next(600,900))" maxVal="1000" redLim="200" yelLim="400" />
</div>
<div class="col">
<ProgBar singleLine="false" baseUM="h" currVal="@(rnd.Next(500,1000))" maxVal="1000" redLim="200" yelLim="400" />
</div>
</div>
</div>
</div>
</div>
</div>
<ProgressDisplay RefreshInterval="100" Title="@titleMsg" MaxVal="@maxVal" CurrVal="@currVal" NextVal="@nextVal" ExpTimeMSec="@expTimeMSec" DisplaySize="ProgressDisplay.ModalSize.Medium" ModalCss="card alert-primary" SlowLimit="0.4"></ProgressDisplay>
@@ -0,0 +1,65 @@
using System.Diagnostics;
namespace EgwCoreLib.BlazorTest.Pages
{
public partial class TestProgress
{
#region Protected Properties
protected double expTime { get; set; } = 5;
protected int numSteps { get; set; } = 10;
#endregion Protected Properties
#region Protected Methods
protected string realTime = "";
protected async Task StartLongTimer()
{
Stopwatch sw = new Stopwatch();
sw.Start();
maxVal = numSteps * 10;
double stdWait = expTime / numSteps;
int nextWait = 1000;
int stepVal = maxVal / numSteps;
// imposto i valori x progress..
expTimeMSec = (int)(stdWait * 1000);
//nextVal = stepVal;
for (int currStep = 1; currStep <= numSteps; currStep++)
{
// aggiorno valori
currVal = (currStep - 1) * stepVal;
nextVal = currStep * stepVal;
// se max mi fermo...
if (nextVal > maxVal)
{
nextVal = maxVal;
}
await InvokeAsync(StateHasChanged);
// simulo ritardo importante (da 0 a 2 volte)
nextWait = (int)(rnd.Next(100, 2000) * stdWait);
// attendo step successivi...
await Task.Delay(nextWait);
}
await Task.Delay(1);
currVal = maxVal;
sw.Stop();
realTime = $"Real: {sw.Elapsed.TotalSeconds:N3}s";
await InvokeAsync(StateHasChanged);
}
#endregion Protected Methods
#region Private Fields
private int currVal = 100;
private int expTimeMSec = 10000;
private int maxVal = 100;
private int nextVal = 100;
private Random rnd = new Random();
private string titleMsg = "SIM Progress";
#endregion Private Fields
}
}
@@ -0,0 +1,75 @@
@page "/TestQrDisplay"
<PageTitle>Test Display QRCode</PageTitle>
<div class="card">
<div class="card-header">
<h1>Test Display QRCode</h1>
</div>
<div class="card-body">
<div class="row text-center">
<div class="col">
<div class="card">
<div class="card-header"><b>AZTEC</b></div>
<div class="card-body">
<div class="d-flex align-items-center text-center" style=" height: 13rem;">
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.AZTEC"></QrCodeDisplay>
</div>
<hr />
<small>Quadrato, control point centrale</small>
</div>
@* <div class="card-footer"></div> *@
</div>
</div>
<div class="col">
<div class="card">
<div class="card-header"><b>QR_CODE</b></div>
<div class="card-body">
<div class="d-flex align-items-center" style=" height: 13rem;">
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.QR_CODE"></QrCodeDisplay>
</div>
<hr />
<small>Quadrato, 3 control point vertici</small>
</div>
</div>
</div>
<div class="col">
<div class="card">
<div class="card-header"><b>DATA_MATRIX</b></div>
<div class="card-body">
<div class="d-flex align-items-center" style=" height: 13rem;">
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.DATA_MATRIX"></QrCodeDisplay>
</div>
<hr />
<small>Quadrato/Rettangolare (se codice lungo), linee controllo sx/basso</small>
</div>
</div>
</div>
<div class="col">
<div class="card">
<div class="card-header"><b>PDF_417</b></div>
<div class="card-body">
<div class="d-flex align-items-center" style=" height: 13rem;">
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.PDF_417" Width="600" Height="200"></QrCodeDisplay>
@* <QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.PDF_417" Width="600"></QrCodeDisplay> *@
</div>
<hr />
<small>Rettangolare, linee controllo verticali sx/dx differenti (verso)</small>
</div>
</div>
</div>
</div>
</div>
</div>
@code {
protected string qrCodeVal { get; set; } = "https://office.egalware.com/WDC/UI";
}
@@ -1,4 +1,4 @@
@page "/Test"
@page "/TestOld"
<PageTitle>Test</PageTitle>
@@ -91,11 +91,41 @@
</div>
</div>
<BarcodeReader ScanResult="(e) => ScanDoneHandler(e)"
ScanBtnTitle="Scan"
ResetBtnTitle="Reset"
CloseBtnTitle="Close"
UseBuiltinDiv="false"
@ref="barcodeReaderCustom"
SelectDeviceBtnTitle="Select Device">
</BarcodeReader>
<div @ref="barcodeReaderCustom.Element" class="d-flex justify-content-center">
@* <div style="width: 480px; max-width: 100%"> *@
<div class="col-12 col-md-8 col-lg-6">
<button class="btn btn-outline-success p-2 m-1 w-25" data-action="startButton">Scan</button>
<button class="btn btn-outline-success p-2 m-1 w-25" data-action="resetButton">Reset</button>
<div data-action="sourceSelectPanel" style="display:none">
<label for="sourceSelect">Source:</label>
<select data-action="sourceSelect" style="max-width:100%" class="form-control">
</select>
</div>
<div>
<video id="video" playsinline="true" autoplay="true" class="w-100 h-100 border rounded shadow" muted="true"></video>
</div>
</div>
</div>
@code {
private int currentCount = 0;
protected BarcodeReader barcodeReaderCustom { get; set; } = null!;
protected Random rnd = new Random();
protected async Task ScanDoneHandler(string value)
{
await Task.Delay(1);
}
private void IncrementCount()
{
currentCount++;
+38 -6
View File
@@ -8,10 +8,10 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="~/" />
<link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
<link rel="stylesheet" href="~/lib/font-awesome/css/all.min.css" />
<link href="css/site.css" rel="stylesheet" />
<link href="EgwCoreLib.BlazorTest.styles.css" rel="stylesheet" />
<link rel="stylesheet" href="lib/bootstrap/css/bootstrap.css" />
<link rel="stylesheet" href="lib/font-awesome/css/all.min.css" />
<link rel="stylesheet" href="css/site.css" />
<link rel="stylesheet" href="EgwCoreLib.BlazorTest.styles.css" />
<component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" />
</head>
<body>
@@ -28,8 +28,40 @@
<a class="dismiss">🗙</a>
</div>
<script src="_framework/blazor.server.js"></script>
<script src="lib/bootstrap/js/bootstrap.bundle.js"></script>
@* <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> *@
<script src="~/lib/Chart.js/chart.umd.js"></script>
<script src="_framework/blazor.server.js" autostart="false"></script>
@*Gestione autoriconnessione: https://github.com/dotnet/aspnetcore/issues/38305 (vedere anche https://docs.microsoft.com/it-it/aspnet/core/blazor/fundamentals/signalr?view=aspnetcore-6.0#modify-the-reconnection-handler-blazor-server)*@
<script>
Blazor.start({
reconnectionOptions: {
maxRetries: 1500,
retryIntervalMilliseconds: 4000
},
reconnectionHandler: {
onConnectionDown: (options, error) => console.error(error),
onConnectionUp: () => console.log("Connection up!,restarting!")
}
}).then(() => {
Object.defineProperty(Blazor.defaultReconnectionHandler, '_reconnectionDisplay', {
get() {
return this.__reconnectionDisplay;
},
set(value) {
this.__reconnectionDisplay = {
show: () => value.show(),
update: (d) => value.update(d),
rejected: (d) => document.location.reload()
}
}
});
});
</script>
@*Gestione ricollegamento successivo: https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/signalr?view=aspnetcore-6.0*@
@* <script>Blazor.defaultReconnectionHandler._reconnectCallback = function (d) { document.location.reload(); }</script> *@
<script src="~/lib/Chart.js/chart.js"></script>
</body>
</html>
+7 -2
View File
@@ -1,4 +1,4 @@
using EgwCoreLib.BlazorTest.Data;
using EgwCoreLib.BlazorTest;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
@@ -7,7 +7,6 @@ var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();
var app = builder.Build();
@@ -19,6 +18,12 @@ if (!app.Environment.IsDevelopment())
app.UseHsts();
}
//// disabilita risposta compressa in debug
//if (!app.Environment.IsDevelopment())
//{
// app.UseResponseCompression();
//}
app.UseHttpsRedirection();
app.UseStaticFiles();
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>https://iis01.egalware.com/EgwCoreTest</SiteUrlToLaunchAfterPublish>
<ExcludeApp_Data>false</ExcludeApp_Data>
<ProjectGuid>9e5a3295-08bf-4603-9fa3-d38a2f1100e5</ProjectGuid>
<SelfContained>false</SelfContained>
<MSDeployServiceURL>https://iis01.egalware.com:8172/MsDeploy.axd</MSDeployServiceURL>
<DeployIisAppPath>Default Web Site/EgwCoreTest</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>false</SkipExtraFilesOnServer>
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
<EnableMSDeployBackup>true</EnableMSDeployBackup>
<EnableMsDeployAppOffline>true</EnableMsDeployAppOffline>
<UserName>jenkins</UserName>
<_SavePWD>true</_SavePWD>
<_TargetId>IISWebDeploy</_TargetId>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
+11 -3
View File
@@ -3,8 +3,11 @@
<PageTitle>EgwCoreLib.BlazorTest</PageTitle>
<div class="page">
<div class="@sideClass">
<NavMenu />
</div>
<main class="w-100">
<div class="w-100">
<div class="top-row">
<CmpTop></CmpTop>
</div>
@@ -12,8 +15,13 @@
@Body
</article>
<div class="w-100">
<NavBottom></NavBottom>
<div class="fixed-bottom bottom-row">
<CmpFooter></CmpFooter>
</div>
</main>
</div>
@code{
protected bool navLarge { get; set; } = true;
protected string sideClass { get; set; } = "sidebar";
}
@@ -8,22 +8,22 @@ main {
flex: 1;
}
.sidebar {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
.sidebar, .sidebarSmall {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 20%, #3aa6ff 90%);
}
.top-row {
background-color: #f7f7f7;
border-bottom: 1px solid #d6d5d5;
justify-content: flex-end;
height: 3.5rem;
display: flex;
align-items: center;
/*justify-content: space-evenly;
display: flex;*/
}
.top-row ::deep a, .top-row .btn-link {
white-space: nowrap;
margin-left: 1.5rem;
margin-left: 0.5rem;
}
.top-row a:first-child {
@@ -45,13 +45,34 @@ main {
}
}
.bottom-row {
color: #dedede;
background-color: #000000;
height: 1.6rem;
align-items: center;
}
@media (max-width: 640.99px) {
.main > div {
padding-left: 0.5rem !important;
padding-right: 0.5rem !important;
}
}
@media (min-width: 641px) {
.page {
flex-direction: row;
}
.sidebar {
width: 250px;
width: 230px;
height: 100vh;
position: sticky;
top: 0;
}
.sidebarSmall {
width: 80px;
height: 100vh;
position: sticky;
top: 0;
@@ -64,7 +85,18 @@ main {
}
.top-row, article {
padding-left: 2rem !important;
padding-right: 1.5rem !important;
padding-left: 1rem !important;
padding-right: 1.0rem !important;
}
.bottom-row {
position: fixed;
bottom: 0;
z-index: 1;
}
.main > div {
/*padding-left: 0.5rem !important;
padding-right: 0.5rem !important;*/
}
}
+14 -17
View File
@@ -1,4 +1,5 @@
<div class="top-row ps-3 navbar navbar-dark">
@using EgwCoreLib.BlazorTest.Data
<div class="top-row ps-3 navbar navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="">EgwCoreLib.BlazorTest</a>
<button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
@@ -9,26 +10,19 @@
<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
<nav class="flex-column">
<div class="nav-item px-3">
<div class="nav-item px-2">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="oi oi-home" aria-hidden="true"></span> Home
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="TestCal">
<span class="oi oi-list-rich" aria-hidden="true"></span> Test Calendario
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="counter">
<span class="oi oi-plus" aria-hidden="true"></span> Counter
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="fetchdata">
<span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data
</NavLink>
</div>
@foreach (var item in MenuList)
{
<div class="nav-item px-1">
<NavLink class="nav-link px-2" href="@item.Key">
<span class="fa-solid fa-wrench pe-2" aria-hidden="true"></span> @item.Value
</NavLink>
</div>
}
</nav>
</div>
@@ -41,4 +35,7 @@
{
collapseNavMenu = !collapseNavMenu;
}
private Dictionary<string, string> MenuList { get; set; } = TestData.MenuList;
}
+2 -1
View File
@@ -9,4 +9,5 @@
@using EgwCoreLib.BlazorTest
@using EgwCoreLib.BlazorTest.Components
@using EgwCoreLib.BlazorTest.Shared
@using EgwCoreLib.Razor
@using EgwCoreLib.Razor
@using EgwCoreLib.Razor.Data
@@ -10,5 +10,9 @@
{
"outputFile": "Pages/ProvaCalendar.razor.css",
"inputFile": "Pages/ProvaCalendar.razor.less"
},
{
"outputFile": "Pages/TestGauges.razor.css",
"inputFile": "Pages/TestGauges.razor.less"
}
]
+4 -9
View File
@@ -4,21 +4,16 @@
"libraries": [
{
"library": "bootstrap@5.2.3",
"destination": "wwwroot/lib/css/bootstrap/"
"destination": "wwwroot/lib/bootstrap/"
},
{
"library": "font-awesome@6.3.0",
"destination": "wwwroot/lib/font-awesome/"
},
{
"library": "Chart.js@4.3.0",
"destination": "wwwroot/lib/Chart.js/",
"files": [
"chart.min.js",
"helpers.min.js",
"helpers.js",
"chart.js"
]
"provider": "cdnjs",
"library": "Chart.js@4.4.1",
"destination": "wwwroot/lib/Chart.js/"
}
]
}
@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 564 568" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><g id="Livello_3"><g><path d="M275.833,117.917l-156.25,-0.417l156.25,0.417Z" style="fill:none;fill-rule:nonzero;"/><path d="M179.167,361.25l62.5,-89.583l-62.5,89.583Z" style="fill:none;fill-rule:nonzero;"/><path d="M563.333,445.833l-443.333,0l-0.417,-328.333l156.25,0.417l83.334,-117.917l-359.167,0l1.667,567.5l561.666,-0.833l0,-120.834Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M290.417,201.25l-48.75,70.417l-62.5,89.583l384.166,-0.417l0,-360.833l-82.083,0l-140,200.833l-50.833,0.417Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M481.25,0l-122.083,0l122.083,0Z" style="fill:#fff;fill-rule:nonzero;"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"version":3,"file":"helpers.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +0,0 @@
/*!
* Chart.js v3.7.0
* https://www.chartjs.org
* (c) 2021 Chart.js Contributors
* Released under the MIT License
*/
export { H as HALF_PI, aX as INFINITY, P as PI, aW as PITAU, aZ as QUARTER_PI, aY as RAD_PER_DEG, T as TAU, a_ as TWO_THIRDS_PI, Q as _addGrace, V as _alignPixel, a0 as _alignStartEnd, p as _angleBetween, a$ as _angleDiff, _ as _arrayUnique, a6 as _attachContext, aq as _bezierCurveTo, an as _bezierInterpolation, av as _boundSegment, al as _boundSegments, a3 as _capitalize, ak as _computeSegments, a7 as _createResolver, aH as _decimalPlaces, aP as _deprecated, a8 as _descriptors, af as _elementsEqual, M as _factorize, aJ as _filterBetween, F as _getParentNode, U as _int16Range, ah as _isBetween, ag as _isClickEvent, K as _isDomSupported, z as _isPointInArea, w as _limitValue, aI as _longestText, aK as _lookup, x as _lookupByKey, S as _measureText, aN as _merger, aO as _mergerIf, aw as _normalizeAngle, ao as _pointInLine, ai as _readValueToProps, A as _rlookupByKey, aD as _setMinAndMaxByKey, am as _steppedInterpolation, ap as _steppedLineTo, az as _textX, $ as _toLeftRightCenter, aj as _updateBezierControlPoints, as as addRoundedRectPath, aG as almostEquals, aF as almostWhole, O as callback, ad as clearCanvas, W as clipArea, aM as clone, c as color, h as createContext, ab as debounce, j as defined, aC as distanceBetweenPoints, ar as drawPoint, D as each, e as easingEffects, N as finiteOrDefault, aU as fontString, o as formatNumber, B as getAngleFromPoint, aL as getHoverColor, E as getMaximumSize, y as getRelativePosition, ax as getRtlAdapter, aT as getStyle, b as isArray, g as isFinite, a5 as isFunction, k as isNullOrUndef, q as isNumber, i as isObject, l as listenArrayEvents, L as log10, a2 as merge, a9 as mergeIf, aE as niceNum, aB as noop, ay as overrideTextDirection, G as readUsedSize, X as renderText, r as requestAnimFrame, a as resolve, f as resolveObjectKey, aA as restoreTextDirection, ac as retinaScale, ae as setsEqual, s as sign, aR as splineCurve, aS as splineCurveMonotone, J as supportsEventListenerOptions, I as throttled, R as toDegrees, n as toDimension, Z as toFont, aQ as toFontString, aV as toLineHeight, C as toPadding, m as toPercentage, t as toRadians, at as toTRBL, au as toTRBLCorners, aa as uid, Y as unclipArea, u as unlistenArrayEvents, v as valueOrDefault } from './chunks/helpers.segment.js';
@@ -1 +0,0 @@
export{H as HALF_PI,aX as INFINITY,P as PI,aW as PITAU,aZ as QUARTER_PI,aY as RAD_PER_DEG,T as TAU,a_ as TWO_THIRDS_PI,Q as _addGrace,V as _alignPixel,a0 as _alignStartEnd,p as _angleBetween,a$ as _angleDiff,_ as _arrayUnique,a6 as _attachContext,aq as _bezierCurveTo,an as _bezierInterpolation,av as _boundSegment,al as _boundSegments,a3 as _capitalize,ak as _computeSegments,a7 as _createResolver,aH as _decimalPlaces,aP as _deprecated,a8 as _descriptors,af as _elementsEqual,M as _factorize,aJ as _filterBetween,F as _getParentNode,U as _int16Range,ah as _isBetween,ag as _isClickEvent,K as _isDomSupported,z as _isPointInArea,w as _limitValue,aI as _longestText,aK as _lookup,x as _lookupByKey,S as _measureText,aN as _merger,aO as _mergerIf,aw as _normalizeAngle,ao as _pointInLine,ai as _readValueToProps,A as _rlookupByKey,aD as _setMinAndMaxByKey,am as _steppedInterpolation,ap as _steppedLineTo,az as _textX,$ as _toLeftRightCenter,aj as _updateBezierControlPoints,as as addRoundedRectPath,aG as almostEquals,aF as almostWhole,O as callback,ad as clearCanvas,W as clipArea,aM as clone,c as color,h as createContext,ab as debounce,j as defined,aC as distanceBetweenPoints,ar as drawPoint,D as each,e as easingEffects,N as finiteOrDefault,aU as fontString,o as formatNumber,B as getAngleFromPoint,aL as getHoverColor,E as getMaximumSize,y as getRelativePosition,ax as getRtlAdapter,aT as getStyle,b as isArray,g as isFinite,a5 as isFunction,k as isNullOrUndef,q as isNumber,i as isObject,l as listenArrayEvents,L as log10,a2 as merge,a9 as mergeIf,aE as niceNum,aB as noop,ay as overrideTextDirection,G as readUsedSize,X as renderText,r as requestAnimFrame,a as resolve,f as resolveObjectKey,aA as restoreTextDirection,ac as retinaScale,ae as setsEqual,s as sign,aR as splineCurve,aS as splineCurveMonotone,J as supportsEventListenerOptions,I as throttled,R as toDegrees,n as toDimension,Z as toFont,aQ as toFontString,aV as toLineHeight,C as toPadding,m as toPercentage,t as toRadians,at as toTRBL,au as toTRBLCorners,aa as uid,Y as unclipArea,u as unlistenArrayEvents,v as valueOrDefault}from"./chunks/helpers.segment.js";
@@ -0,0 +1,9 @@
/*!
* Chart.js v4.4.1
* https://www.chartjs.org
* (c) 2023 Chart.js Contributors
* Released under the MIT License
*/
export { H as HALF_PI, b2 as INFINITY, P as PI, b1 as PITAU, b4 as QUARTER_PI, b3 as RAD_PER_DEG, T as TAU, b5 as TWO_THIRDS_PI, R as _addGrace, X as _alignPixel, a2 as _alignStartEnd, p as _angleBetween, b6 as _angleDiff, _ as _arrayUnique, a8 as _attachContext, as as _bezierCurveTo, ap as _bezierInterpolation, ax as _boundSegment, an as _boundSegments, a5 as _capitalize, am as _computeSegments, a9 as _createResolver, aK as _decimalPlaces, aV as _deprecated, aa as _descriptors, ah as _elementsEqual, N as _factorize, aO as _filterBetween, I as _getParentNode, q as _getStartAndCountOfVisiblePoints, W as _int16Range, aj as _isBetween, ai as _isClickEvent, M as _isDomSupported, C as _isPointInArea, S as _limitValue, aN as _longestText, aP as _lookup, B as _lookupByKey, V as _measureText, aT as _merger, aU as _mergerIf, ay as _normalizeAngle, y as _parseObjectDataRadialScale, aq as _pointInLine, ak as _readValueToProps, A as _rlookupByKey, w as _scaleRangesChanged, aG as _setMinAndMaxByKey, aW as _splitKey, ao as _steppedInterpolation, ar as _steppedLineTo, aB as _textX, a1 as _toLeftRightCenter, al as _updateBezierControlPoints, au as addRoundedRectPath, aJ as almostEquals, aI as almostWhole, Q as callback, af as clearCanvas, Y as clipArea, aS as clone, c as color, j as createContext, ad as debounce, h as defined, aE as distanceBetweenPoints, at as drawPoint, aD as drawPointLegend, F as each, e as easingEffects, O as finiteOrDefault, a$ as fontString, o as formatNumber, D as getAngleFromPoint, aR as getHoverColor, G as getMaximumSize, z as getRelativePosition, az as getRtlAdapter, a_ as getStyle, b as isArray, g as isFinite, a7 as isFunction, k as isNullOrUndef, x as isNumber, i as isObject, aQ as isPatternOrGradient, l as listenArrayEvents, aM as log10, a4 as merge, ab as mergeIf, aH as niceNum, aF as noop, aA as overrideTextDirection, J as readUsedSize, Z as renderText, r as requestAnimFrame, a as resolve, f as resolveObjectKey, aC as restoreTextDirection, ae as retinaScale, ag as setsEqual, s as sign, aY as splineCurve, aZ as splineCurveMonotone, K as supportsEventListenerOptions, L as throttled, U as toDegrees, n as toDimension, a0 as toFont, aX as toFontString, b0 as toLineHeight, E as toPadding, m as toPercentage, t as toRadians, av as toTRBL, aw as toTRBLCorners, ac as uid, $ as unclipArea, u as unlistenArrayEvents, v as valueOrDefault } from './chunks/helpers.segment.js';
import '@kurkle/color';
//# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
{"version":3,"file":"helpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1 @@
export{H as HALF_PI,b2 as INFINITY,P as PI,b1 as PITAU,b4 as QUARTER_PI,b3 as RAD_PER_DEG,T as TAU,b5 as TWO_THIRDS_PI,R as _addGrace,X as _alignPixel,a2 as _alignStartEnd,p as _angleBetween,b6 as _angleDiff,_ as _arrayUnique,a8 as _attachContext,as as _bezierCurveTo,ap as _bezierInterpolation,ax as _boundSegment,an as _boundSegments,a5 as _capitalize,am as _computeSegments,a9 as _createResolver,aK as _decimalPlaces,aV as _deprecated,aa as _descriptors,ah as _elementsEqual,N as _factorize,aO as _filterBetween,I as _getParentNode,q as _getStartAndCountOfVisiblePoints,W as _int16Range,aj as _isBetween,ai as _isClickEvent,M as _isDomSupported,C as _isPointInArea,S as _limitValue,aN as _longestText,aP as _lookup,B as _lookupByKey,V as _measureText,aT as _merger,aU as _mergerIf,ay as _normalizeAngle,y as _parseObjectDataRadialScale,aq as _pointInLine,ak as _readValueToProps,A as _rlookupByKey,w as _scaleRangesChanged,aG as _setMinAndMaxByKey,aW as _splitKey,ao as _steppedInterpolation,ar as _steppedLineTo,aB as _textX,a1 as _toLeftRightCenter,al as _updateBezierControlPoints,au as addRoundedRectPath,aJ as almostEquals,aI as almostWhole,Q as callback,af as clearCanvas,Y as clipArea,aS as clone,c as color,j as createContext,ad as debounce,h as defined,aE as distanceBetweenPoints,at as drawPoint,aD as drawPointLegend,F as each,e as easingEffects,O as finiteOrDefault,a$ as fontString,o as formatNumber,D as getAngleFromPoint,aR as getHoverColor,G as getMaximumSize,z as getRelativePosition,az as getRtlAdapter,a_ as getStyle,b as isArray,g as isFinite,a7 as isFunction,k as isNullOrUndef,x as isNumber,i as isObject,aQ as isPatternOrGradient,l as listenArrayEvents,aM as log10,a4 as merge,ab as mergeIf,aH as niceNum,aF as noop,aA as overrideTextDirection,J as readUsedSize,Z as renderText,r as requestAnimFrame,a as resolve,f as resolveObjectKey,aC as restoreTextDirection,ae as retinaScale,ag as setsEqual,s as sign,aY as splineCurve,aZ as splineCurveMonotone,K as supportsEventListenerOptions,L as throttled,U as toDegrees,n as toDimension,a0 as toFont,aX as toFontString,b0 as toLineHeight,E as toPadding,m as toPercentage,t as toRadians,av as toTRBL,aw as toTRBLCorners,ac as uid,$ as unclipArea,u as unlistenArrayEvents,v as valueOrDefault}from"./chunks/helpers.segment.js";import"@kurkle/color";
+12
View File
@@ -0,0 +1,12 @@
export * from './controllers/index.js';
export * from './core/index.js';
export * from './elements/index.js';
export * from './platform/index.js';
export * from './plugins/index.js';
export * from './scales/index.js';
import * as controllers from './controllers/index.js';
import * as elements from './elements/index.js';
import * as plugins from './plugins/index.js';
import * as scales from './scales/index.js';
export { controllers, elements, plugins, scales, };
export declare const registerables: (typeof controllers | typeof elements | typeof plugins | typeof scales)[];
@@ -0,0 +1,5 @@
/**
* @namespace Chart
*/
import Chart from './core/core.controller.js';
export default Chart;
+10
View File
@@ -0,0 +1,10 @@
/**
* Temporary entry point of the types at the time of the transition.
* After transition done need to remove it in favor of index.ts
*/
export * from './index.js';
/**
* Explicitly re-exporting to resolve the ambiguity.
*/
export { BarController, BubbleController, DoughnutController, LineController, PieController, PolarAreaController, RadarController, ScatterController, Animation, Animations, Chart, DatasetController, Interaction, Scale, Ticks, defaults, layouts, registry, ArcElement, BarElement, LineElement, PointElement, BasePlatform, BasicPlatform, DomPlatform, Decimation, Filler, Legend, SubTitle, Title, Tooltip, CategoryScale, LinearScale, LogarithmicScale, RadialLinearScale, TimeScale, TimeSeriesScale, PluginOptionsByType, ElementOptionsByType, ChartDatasetProperties, UpdateModeEnum, registerables } from './types/index.js';
export * from './types/index.js';

Some files were not shown because too many files have changed in this diff Show More