Fix comportamento area clipboard

This commit is contained in:
Samuele Locatelli
2022-01-05 18:57:38 +01:00
parent bee16e4746
commit 2e30c28f40
18 changed files with 372 additions and 65 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ namespace GPW.CORE.Data.DbModels
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int IdxRa { get; set; }
public int IdxDipendente { get; set; }
public int IdxDipendente { get; set; } = 0;
public int IdxFase { get; set; }
public DateTime Inizio { get; set; }
public DateTime Fine { get; set; }
+13 -1
View File
@@ -4,7 +4,14 @@
@inject MessageService AppMServ
<button @onclick="() => AddNew()" class="px-1 text-center btn btn-lg btn-outline-success">
<i class="fas fa-plus-circle"></i>
@if (canPaste)
{
<i class="fas fa-clipboard"></i>
}
else
{
<i class="fas fa-plus-circle"></i>
}
</button>
@code {
@@ -19,6 +26,11 @@
[Parameter]
public EventCallback<RegAttivitaModel> NewItemCreated { get; set; }
protected bool canPaste
{
get => AppMServ.clonedRA != null;
}
/// <summary>
/// Indico item selezionato
/// </summary>
+30 -27
View File
@@ -9,7 +9,7 @@
@if (@CurrData.IdxFase > 0)
{
<div class="dropdown">
<button @onclick="() => Edit()" class="dropbtn px-1 text-center border border-secondary border-top-0 border-bottom-0 border-left-0 btn btn-info btn-sm" style="font-size: 0.72rem;">
<button @onclick="() => Edit()" class="dropbtn px-1 text-center border border-secondary border-top-0 border-bottom-0 border-left-0 btn btn-info btn-sm" style="font-size: 0.72rem;" disabled="@(IsClipboard)">
@if (@CurrData.OreTot > 1)
{
<div>@CurrData.Inizio.ToString("HH:mm")</div>
@@ -23,35 +23,38 @@
<div class="badge badge-dark">@($"{CurrData.OreTot*60:N0}'")</div>
}
</button>
<div class="dropdown-content border border-dark table-dark text-light rounded p-2">
<div class="row">
<div class="col-9 pr-0">
<div class="text-light text-left"><b>@($"{CurrData.FasiNav?.ProgettoNav?.ClienteNav?.RagSociale}")</b> - <span class="small">@($"{CurrData.FasiNav?.ProgettoNav?.NomeProj}")</span></div>
<div class="text-info text-left" title="@CurrData.FasiNav?.DescrizioneFase">@($"{CurrData.FasiNav?.DescrizioneFase}")</div>
</div>
<div class="col-3">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="switch-@CurrData.IdxRa" checked="@IsEnd" title="Modifica Fine" @bind-value="@IsEnd">
<label class="custom-control-label small" for="switch-@CurrData.IdxRa">@txtModDurata</label>
@if (!IsClipboard)
{
<div class="dropdown-content border border-dark table-dark text-light rounded p-2">
<div class="row">
<div class="col-9 pr-0">
<div class="text-light text-left"><b>@($"{CurrData.FasiNav?.ProgettoNav?.ClienteNav?.RagSociale}")</b> - <span class="small">@($"{CurrData.FasiNav?.ProgettoNav?.NomeProj}")</span></div>
<div class="text-info text-left" title="@CurrData.FasiNav?.DescrizioneFase">@($"{CurrData.FasiNav?.DescrizioneFase}")</div>
</div>
<div class="col-3">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="switch-@CurrData.IdxRa" checked="@IsEnd" title="Modifica Fine" @bind-value="@IsEnd">
<label class="custom-control-label small" for="switch-@CurrData.IdxRa">@txtModDurata</label>
</div>
</div>
</div>
<div class="btn-group btn-group-sm w-100 py-2">
<button @onclick="() => Edit()" class="btn btn-sm btn-info"><i class="fas fa-pencil-alt"></i> Edit</button>
<button @onclick="() => Clone()" class="btn btn-sm btn-primary"><i class="far fa-copy"></i> Copy</button>
<button @onclick="() => Delete()" class="btn btn-sm btn-danger"><i class="fas fa-trash-alt"></i> Delete</button>
</div>
<div class="btn-group btn-group-sm w-100 small">
<button @onclick="() => AddTime(-120)" class="btn btn-sm btn-warning">-2h</button>
<button @onclick="() => AddTime(-60)" class="btn btn-sm btn-warning">-1h</button>
<button @onclick="() => AddTime(-30)" class="btn btn-sm btn-warning">-30'</button>
<button @onclick="() => AddTime(-15)" class="btn btn-sm btn-warning">-15'</button>
<button @onclick="() => AddTime(15)" class="btn btn-sm btn-success">+15'</button>
<button @onclick="() => AddTime(30)" class="btn btn-sm btn-success">+30'</button>
<button @onclick="() => AddTime(60)" class="btn btn-sm btn-success">+1h</button>
<button @onclick="() => AddTime(120)" class="btn btn-sm btn-success">+2h</button>
</div>
</div>
<div class="btn-group btn-group-sm w-100 py-2">
<button @onclick="() => Edit()" class="btn btn-sm btn-info"><i class="fas fa-pencil-alt"></i> Edit</button>
<button @onclick="() => Clone()" class="btn btn-sm btn-primary"><i class="far fa-clone"></i> Clone</button>
<button @onclick="() => Delete()" class="btn btn-sm btn-danger"><i class="fas fa-trash-alt"></i> Delete</button>
</div>
<div class="btn-group btn-group-sm w-100 small">
<button @onclick="() => AddTime(-120)" class="btn btn-sm btn-warning">-2h</button>
<button @onclick="() => AddTime(-60)" class="btn btn-sm btn-warning">-1h</button>
<button @onclick="() => AddTime(-30)" class="btn btn-sm btn-warning">-30'</button>
<button @onclick="() => AddTime(-15)" class="btn btn-sm btn-warning">-15'</button>
<button @onclick="() => AddTime(15)" class="btn btn-sm btn-success">+15'</button>
<button @onclick="() => AddTime(30)" class="btn btn-sm btn-success">+30'</button>
<button @onclick="() => AddTime(60)" class="btn btn-sm btn-success">+1h</button>
<button @onclick="() => AddTime(120)" class="btn btn-sm btn-success">+2h</button>
</div>
</div>
}
</div>
<div class="px-1 text-left textTrim flex-fill">
<div class="text-dark" title="@CurrData.FasiNav?.ProgettoNav?.ClienteNav?.RagSociale - @CurrData.FasiNav?.ProgettoNav?.NomeProj"><b>@(trimLine($"{CurrData.FasiNav?.ProgettoNav?.ClienteNav?.RagSociale}",65))</b> - @(trimLine($"{CurrData.FasiNav?.ProgettoNav?.NomeProj}",75))</div>
+9 -2
View File
@@ -20,6 +20,9 @@ namespace GPW.CORE.UI.Components
{
public partial class RegAtt
{
[Parameter]
public bool IsClipboard { get; set; } = false;
[Parameter]
public RegAttivitaModel CurrData { get; set; } = null!;
[Parameter]
@@ -114,8 +117,12 @@ namespace GPW.CORE.UI.Components
/// </summary>
protected async void Edit()
{
isSelected = true;
await ItemSelected.InvokeAsync(CurrData);
// SOLO SE non è una copia clipboard...
//if (!IsClipboard)
//{
isSelected = true;
await ItemSelected.InvokeAsync(CurrData);
//}
}
/// <summary>
+1 -1
View File
@@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Version>1.0.2201.0516</Version>
<Version>3.0.2201.0518</Version>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
+14 -16
View File
@@ -45,11 +45,6 @@
</div>
</div>
<div class="card-body">
@*@if (currRecord != null)
{
<RegAttEditor currRecord="@currRecord" ItemReset="@ResetData" ItemUpdated="@ResetData"></RegAttEditor>
}*@
@if (ListRecords == null)
{
<LoadingData></LoadingData>
@@ -71,25 +66,28 @@
}
</div>
<div class="card-footer py-1">
<div class="row small">
<div class="col-6">
<div class="d-flex justify-content-between">
<div class="py-1 px-2">
Selezione range orario:&nbsp;
<input @bind="startHour" style="width: 3em;" type="number" />
<i class="fas fa-angle-double-right"></i>
<input @bind="endHour" style="width: 3em;" type="number" />
</div>
<div class="col-2 text-right">
<div class="py-1 px-2">
@if (clonedRA != null)
{
<span>Record Clonato <i class="fas fa-arrow-alt-circle-right"></i></span>
<button class="btn btn-block btn-warning" @onclick="ResetClone"><i class="fas fa-redo-alt"></i> Reset</button>
}
</div>
<div class="col-4 text-right">
@if (clonedRA != null)
{
<RegAtt CurrData="@clonedRA" Periodo="@periodoClonato" ListFasi="@ListFasi" ItemSelected="ReportSelect" IdxDipSel="@IdxDipendente"></RegAtt>
<div class="d-flex">
<div class="px-2 flex-grow-1">
<RegAtt CurrData="@clonedRA" Periodo="@periodoClonato" ListFasi="@ListFasi" ItemSelected="ReportSelect" IdxDipSel="@IdxDipendente" IsClipboard="true"></RegAtt>
</div>
<div class="px-2">
<button class="btn btn-block btn-warning" @onclick="ResetClone" title="Reset Clipboard">
<i class="fas fa-clipboard"></i><br>
<i class="far fa-times-circle"></i>
</button>
</div>
</div>
}
</div>
</div>
-13
View File
@@ -191,19 +191,6 @@ namespace GPW.CORE.UI.Pages
[Inject]
protected MessageService AppMServ { get; set; }
protected int totalCount
{
get
{
int answ = 0;
if (ListRecords != null)
{
answ = ListRecords.Count;
}
return answ;
}
}
protected WeekData currWeekSel
{
get
+2 -2
View File
@@ -12,10 +12,10 @@
<LoginDisplay />
</div>
<article class="content px-2">
<article class="content pt-1">
@Body
</article>
<div class="fixed-bottom bottom-row">
<div class="fixed-bottom bottom-row px-2">
<GPW.CORE.UI.Components.CmpFooter></GPW.CORE.UI.Components.CmpFooter>
</div>
</main>
+1 -1
View File
@@ -5,7 +5,7 @@ $FileManIn="..\Resources\manifest-original.xml"
$FileManOut="..\Resources\manifest.xml"
$FileCLogIn="..\Resources\ChangeLog-original.html"
$FileCLogOut="..\Resources\ChangeLog.html"
$MajMin="1.0."
$MajMin="3.0."
$currentDate = get-date -format yyMM;
$currentTime = get-date -format ddHH;
$find = "<Version>(.|\n)*?</Version>";
+106
View File
@@ -125,4 +125,110 @@ a,
}
.blazor-error-boundary::after {
content: "An error has occurred.";
}
/*------------------------------------------------------------------
[ Shortcuts / .shortcuts ]
*/
.shortcuts {
text-align: center;
}
.shortcuts .shortcut-icon {
font-size: 2rem;
}
.shortcuts .shortcut {
min-width: 9rem;
min-height: 5rem;
display: inline-block;
padding: 2rem/3 0;
margin: 0 2px 1em;
vertical-align: top;
text-decoration: none;
background: #F3F3F3;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee));
background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%);
background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%);
background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
border: 1px solid #ddd;
box-sizing: border-box;
border-radius: 1rem/2;
}
.shortcuts .shortcut-sm {
min-width: 4.5rem;
min-height: 3rem;
display: inline-block;
padding: 1rem/4 0;
margin: 0 2px 1em;
vertical-align: top;
text-decoration: none;
background: #F3F3F3;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee));
background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%);
background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%);
background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
border: 1px solid #ddd;
box-sizing: border-box;
border-radius: 1rem/2;
}
.shortcuts .shortcut .shortcut-icon {
width: 100%;
margin-top: 0;
margin-bottom: 0;
font-size: 2rem;
color: #333;
}
.shortcuts .shortcut-sm .shortcut-icon {
width: 100%;
margin-top: 0;
margin-bottom: 0;
font-size: 2rem;
color: #333;
}
.shortcuts .shortcut:hover {
background: #E8E8E8;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1));
background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%);
background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%);
background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0);
}
.shortcuts .shortcut-sm:hover {
background: #E8E8E8;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1));
background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%);
background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%);
background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0);
}
.shortcuts .shortcut:active {
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.shortcuts .shortcut-sm:active {
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.shortcuts .shortcut:hover .shortcut-icon {
color: #C93;
}
.shortcuts .shortcut-sm:hover .shortcut-icon {
color: #666;
}
.shortcuts .shortcut-label {
display: block;
margin-top: 0.75em;
font-weight: 400;
color: #666;
}
@media (max-width: 640px) {
.shortcuts .shortcut {
min-width: 8rem;
min-height: 4rem;
}
body {
font-size: 0.8em;
}
}
+125
View File
@@ -140,3 +140,128 @@ a, .btn-link {
.blazor-error-boundary::after {
content: "An error has occurred."
}
/*------------------------------------------------------------------
[ Shortcuts / .shortcuts ]
*/
@blSCut: 1rem;
.shortcuts {
text-align: center;
}
.shortcuts .shortcut-icon {
font-size: 2*@blSCut;
}
.shortcuts .shortcut {
min-width: @blSCut * 9;
min-height: @blSCut * 5;
display: inline-block;
padding: @blSCut*2/3 0;
margin: 0 2px 1em;
vertical-align: top;
text-decoration: none;
background: #F3F3F3;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee));
background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%);
background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%);
background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
border: 1px solid #ddd;
box-sizing: border-box;
border-radius: @blSCut/2;
}
.shortcuts .shortcut-sm {
min-width: @blSCut * 4.5;
min-height: @blSCut * 3;
display: inline-block;
padding: @blSCut/4 0;
margin: 0 2px 1em;
vertical-align: top;
text-decoration: none;
background: #F3F3F3;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee));
background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%);
background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%);
background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
border: 1px solid #ddd;
box-sizing: border-box;
border-radius: @blSCut/2;
}
.shortcuts .shortcut .shortcut-icon {
width: 100%;
margin-top: 0;
margin-bottom: 0;
font-size: @blSCut*2;
color: #333;
}
.shortcuts .shortcut-sm .shortcut-icon {
width: 100%;
margin-top: 0;
margin-bottom: 0;
font-size: @blSCut*2;
color: #333;
}
.shortcuts .shortcut:hover {
background: #E8E8E8;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1));
background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%);
background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%);
background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0);
}
.shortcuts .shortcut-sm:hover {
background: #E8E8E8;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1));
background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%);
background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%);
background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0);
}
.shortcuts .shortcut:active {
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.shortcuts .shortcut-sm:active {
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.shortcuts .shortcut:hover .shortcut-icon {
color: #C93;
}
.shortcuts .shortcut-sm:hover .shortcut-icon {
color: #666;
}
.shortcuts .shortcut-label {
display: block;
margin-top: .75em;
font-weight: 400;
color: #666;
}
@media (max-width: 640px) {
.shortcuts .shortcut {
min-width: @blSCut * 8;
min-height: @blSCut * 4;
}
body {
font-size: 0.8em;
}
}
File diff suppressed because one or more lines are too long
+27
View File
@@ -0,0 +1,27 @@
<body>
<i>GPW - Gestione Presenze Web</i>
<h4>Versione: {{CURRENT-REL}}</h4>
<br /> Note di rilascio:
<ul>
<li>
<b>Ultime modifiche:</b>
<ul>{{LAST-CHANGES}}</ul>
</li>
<li>
<b>v.3.* &rarr;</b>
<ul>
<li>Versione CORE per UI commesse</li>
<li>Release dotnet6</li>
<li>Integrazione EFCore</li>
</ul>
</li>
</ul>
<div>
<div style="float: left;">
<img src="logoSteamware.png" />
</div>
<div style="float: right;">
<a href="https://www.steamware.net/GPW" target="_blank">&copy; Egalware 2006-2022</a>
</div>
</div>
</body>
+27
View File
@@ -0,0 +1,27 @@
<body>
<i>GPW - Gestione Presenze Web</i>
<h4>Versione: 3.0.2201.0518</h4>
<br /> Note di rilascio:
<ul>
<li>
<b>Ultime modifiche:</b>
<ul>{{LAST-CHANGES}}</ul>
</li>
<li>
<b>v.3.* &rarr;</b>
<ul>
<li>Versione CORE per UI commesse</li>
<li>Release dotnet6</li>
<li>Integrazione EFCore</li>
</ul>
</li>
</ul>
<div>
<div style="float: left;">
<img src="logoSteamware.png" />
</div>
<div style="float: right;">
<a href="https://www.steamware.net/GPW" target="_blank">&copy; Egalware 2006-2022</a>
</div>
</div>
</body>
+1
View File
@@ -0,0 +1 @@
3.0.2201.0518
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>1.0.0.0</version>
<url>http://nexus.steamware.net/repository/SWS/{{DIRNAME}}/{{BRANCHNAME}}/{{PACKNAME}}.zip</url>
<changelog>http://nexus.steamware.net/repository/SWS/{{DIRNAME}}/{{BRANCHNAME}}/ChangeLog.html</changelog>
<mandatory>false</mandatory>
</item>
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>3.0.2201.0518</version>
<url>http://nexus.steamware.net/repository/SWS/GWMS/stable/0/GWMS.UI.zip</url>
<changelog>http://nexus.steamware.net/repository/SWS/GWMS/stable/0/ChangeLog.html</changelog>
<mandatory>false</mandatory>
</item>