aktueller Stand

This commit is contained in:
Meik
2026-02-05 13:49:54 +01:00
parent 7ba20b3aa6
commit 825ddf05d4
29 changed files with 60439 additions and 58884 deletions

View File

@@ -55,13 +55,27 @@ namespace FasdDesktopUi.Basics.Models
set { if (_incidentCriticalSelected != value) { _incidentCriticalSelected = value; OnPropertyChanged(nameof(IncidentCriticalSelected)); } }
}
private bool _incidentNewInfoSelected;
public bool IncidentNewInfoSelected
{
get => _incidentNewInfoSelected;
set { if (_incidentNewInfoSelected != value) { _incidentNewInfoSelected = value; OnPropertyChanged(nameof(IncidentNewInfoSelected)); } }
}
private bool _incidentNewInfoSelected;
public bool IncidentNewInfoSelected
{
get => _incidentNewInfoSelected;
set { if (_incidentNewInfoSelected != value) { _incidentNewInfoSelected = value; OnPropertyChanged(nameof(IncidentNewInfoSelected)); } }
}
private bool _unassignedTicketsSelected;
public bool UnassignedTicketsSelected
{
get => _unassignedTicketsSelected;
set { if (_unassignedTicketsSelected != value) { _unassignedTicketsSelected = value; OnPropertyChanged(nameof(UnassignedTicketsSelected)); } }
}
private bool _unassignedTicketsCriticalSelected;
public bool UnassignedTicketsCriticalSelected
{
get => _unassignedTicketsCriticalSelected;
set { if (_unassignedTicketsCriticalSelected != value) { _unassignedTicketsCriticalSelected = value; OnPropertyChanged(nameof(UnassignedTicketsCriticalSelected)); } }
}
#endregion
#region Highlight-Properties
@@ -86,9 +100,15 @@ namespace FasdDesktopUi.Basics.Models
private bool _incidentCriticalHighlighted;
public bool IncidentCriticalHighlighted { get => _incidentCriticalHighlighted; set { if (_incidentCriticalHighlighted != value) { _incidentCriticalHighlighted = value; OnPropertyChanged(nameof(IncidentCriticalHighlighted)); } } }
private bool _incidentNewInfoHighlighted;
public bool IncidentNewInfoHighlighted { get => _incidentNewInfoHighlighted; set { if (_incidentNewInfoHighlighted != value) { _incidentNewInfoHighlighted = value; OnPropertyChanged(nameof(IncidentNewInfoHighlighted)); } } }
private bool _incidentNewInfoHighlighted;
public bool IncidentNewInfoHighlighted { get => _incidentNewInfoHighlighted; set { if (_incidentNewInfoHighlighted != value) { _incidentNewInfoHighlighted = value; OnPropertyChanged(nameof(IncidentNewInfoHighlighted)); } } }
private bool _unassignedTicketsHighlighted;
public bool UnassignedTicketsHighlighted { get => _unassignedTicketsHighlighted; set { if (_unassignedTicketsHighlighted != value) { _unassignedTicketsHighlighted = value; OnPropertyChanged(nameof(UnassignedTicketsHighlighted)); } } }
private bool _unassignedTicketsCriticalHighlighted;
public bool UnassignedTicketsCriticalHighlighted { get => _unassignedTicketsCriticalHighlighted; set { if (_unassignedTicketsCriticalHighlighted != value) { _unassignedTicketsCriticalHighlighted = value; OnPropertyChanged(nameof(UnassignedTicketsCriticalHighlighted)); } } }
#endregion
#region Change Hint Properties
@@ -113,9 +133,15 @@ namespace FasdDesktopUi.Basics.Models
private string _incidentCriticalChangeHint;
public string IncidentCriticalChangeHint { get => _incidentCriticalChangeHint; set { if (_incidentCriticalChangeHint != value) { _incidentCriticalChangeHint = value; OnPropertyChanged(nameof(IncidentCriticalChangeHint)); } } }
private string _incidentNewInfoChangeHint;
public string IncidentNewInfoChangeHint { get => _incidentNewInfoChangeHint; set { if (_incidentNewInfoChangeHint != value) { _incidentNewInfoChangeHint = value; OnPropertyChanged(nameof(IncidentNewInfoChangeHint)); } } }
private string _incidentNewInfoChangeHint;
public string IncidentNewInfoChangeHint { get => _incidentNewInfoChangeHint; set { if (_incidentNewInfoChangeHint != value) { _incidentNewInfoChangeHint = value; OnPropertyChanged(nameof(IncidentNewInfoChangeHint)); } } }
private string _unassignedTicketsChangeHint;
public string UnassignedTicketsChangeHint { get => _unassignedTicketsChangeHint; set { if (_unassignedTicketsChangeHint != value) { _unassignedTicketsChangeHint = value; OnPropertyChanged(nameof(UnassignedTicketsChangeHint)); } } }
private string _unassignedTicketsCriticalChangeHint;
public string UnassignedTicketsCriticalChangeHint { get => _unassignedTicketsCriticalChangeHint; set { if (_unassignedTicketsCriticalChangeHint != value) { _unassignedTicketsCriticalChangeHint = value; OnPropertyChanged(nameof(UnassignedTicketsCriticalChangeHint)); } } }
#endregion
#region Ticket & Incident-Properties
@@ -143,9 +169,16 @@ namespace FasdDesktopUi.Basics.Models
private int _incidentCritical;
public int IncidentCritical { get => _incidentCritical; set { _incidentCritical = value; OnPropertyChanged(nameof(IncidentCritical)); } }
private int _incidentNewInfo;
public int IncidentNewInfo { get => _incidentNewInfo; set { _incidentNewInfo = value; OnPropertyChanged(nameof(IncidentNewInfo)); } }
private int _incidentNewInfo;
public int IncidentNewInfo { get => _incidentNewInfo; set { _incidentNewInfo = value; OnPropertyChanged(nameof(IncidentNewInfo)); } }
// Unassigned Ticket Properties
private int _unassignedTickets;
public int UnassignedTickets { get => _unassignedTickets; set { _unassignedTickets = value; OnPropertyChanged(nameof(UnassignedTickets)); } }
private int _unassignedTicketsCritical;
public int UnassignedTicketsCritical { get => _unassignedTicketsCritical; set { _unassignedTicketsCritical = value; OnPropertyChanged(nameof(UnassignedTicketsCritical)); } }
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName) =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
@@ -162,9 +195,12 @@ namespace FasdDesktopUi.Basics.Models
IncidentNewSelected = false;
IncidentActiveSelected = false;
IncidentCriticalSelected = false;
IncidentNewInfoSelected = false;
IncidentCriticalSelected = false;
IncidentNewInfoSelected = false;
UnassignedTicketsSelected = false;
UnassignedTicketsCriticalSelected = false;
}
public void ResetHighlights()
@@ -175,20 +211,26 @@ namespace FasdDesktopUi.Basics.Models
TicketsNewInfoHighlighted = false;
IncidentNewHighlighted = false;
IncidentActiveHighlighted = false;
IncidentCriticalHighlighted = false;
IncidentNewInfoHighlighted = false;
IncidentActiveHighlighted = false;
IncidentCriticalHighlighted = false;
IncidentNewInfoHighlighted = false;
UnassignedTicketsHighlighted = false;
UnassignedTicketsCriticalHighlighted = false;
TicketsNewChangeHint = null;
TicketsActiveChangeHint = null;
TicketsCriticalChangeHint = null;
TicketsActiveChangeHint = null;
TicketsCriticalChangeHint = null;
TicketsNewInfoChangeHint = null;
IncidentNewChangeHint = null;
IncidentActiveChangeHint = null;
IncidentCriticalChangeHint = null;
IncidentNewInfoChangeHint = null;
IncidentNewChangeHint = null;
IncidentActiveChangeHint = null;
IncidentCriticalChangeHint = null;
IncidentNewInfoChangeHint = null;
UnassignedTicketsChangeHint = null;
UnassignedTicketsCriticalChangeHint = null;
}
#endregion

View File

@@ -29,7 +29,9 @@ namespace FasdDesktopUi.Basics.Services
"IncidentNew",
"IncidentActive",
"IncidentCritical",
"IncidentNewInfo"
"IncidentNewInfo",
"UnassignedTickets",
"UnassignedTicketsCritical"
};
private const string DemoTicketDetailsKey = "Demo.HasTicketDetails";
private readonly Dispatcher _dispatcher;

View File

@@ -83,6 +83,8 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
@@ -124,14 +126,14 @@
FontSize="12" />
<!-- Tickets -->
<Label Grid.Row="1"
<Label Grid.Row="2"
Grid.Column="0"
Foreground="{DynamicResource FontColor.DetailsPage.TitleSection.Header}"
Content="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=TicketOverview.Row.Heading.Tickets}"
FontWeight="Bold"
FontSize="12" />
<Label Grid.Row="1"
<Label Grid.Row="2"
Grid.Column="1"
Content="{Binding TicketsNew}"
Style="{StaticResource RoundedSelectedLabelStyle}"
@@ -147,7 +149,7 @@
HorizontalAlignment="Center"
Cursor="Hand" />
<Label Grid.Row="1"
<Label Grid.Row="2"
Grid.Column="2"
Content="{Binding TicketsActive}"
Style="{StaticResource RoundedSelectedLabelStyle}"
@@ -163,7 +165,7 @@
HorizontalAlignment="Center"
Cursor="Hand" />
<Label Grid.Row="1"
<Label Grid.Row="2"
Grid.Column="3"
Content="{Binding TicketsCritical}"
Style="{StaticResource RoundedSelectedLabelStyle}"
@@ -179,7 +181,7 @@
HorizontalAlignment="Center"
Cursor="Hand" />
<Label Grid.Row="1"
<Label Grid.Row="2"
Grid.Column="4"
Content="{Binding TicketsNewInfo}"
Style="{StaticResource RoundedSelectedLabelStyle}"
@@ -196,14 +198,14 @@
Cursor="Hand" />
<!-- Incidents -->
<Label Grid.Row="2"
<Label Grid.Row="3"
Grid.Column="0"
Foreground="{DynamicResource FontColor.DetailsPage.TitleSection.Header}"
Content="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=TicketOverview.Row.Heading.Incidents}"
FontWeight="Bold"
FontSize="12" />
<Label Grid.Row="2"
<Label Grid.Row="3"
Grid.Column="1"
Content="{Binding IncidentNew}"
Style="{StaticResource RoundedSelectedLabelStyle}"
@@ -219,7 +221,7 @@
HorizontalAlignment="Center"
Cursor="Hand" />
<Label Grid.Row="2"
<Label Grid.Row="3"
Grid.Column="2"
Content="{Binding IncidentActive}"
Style="{StaticResource RoundedSelectedLabelStyle}"
@@ -235,7 +237,7 @@
HorizontalAlignment="Center"
Cursor="Hand" />
<Label Grid.Row="2"
<Label Grid.Row="3"
Grid.Column="3"
Content="{Binding IncidentCritical}"
Style="{StaticResource RoundedSelectedLabelStyle}"
@@ -251,7 +253,7 @@
HorizontalAlignment="Center"
Cursor="Hand" />
<Label Grid.Row="2"
<Label Grid.Row="3"
Grid.Column="4"
Content="{Binding IncidentNewInfo}"
Style="{StaticResource RoundedSelectedLabelStyle}"
@@ -267,6 +269,45 @@
HorizontalAlignment="Center"
Cursor="Hand" />
<!-- Unassigned -->
<Label Grid.Row="4"
Grid.Column="0"
Foreground="{DynamicResource FontColor.DetailsPage.TitleSection.Header}"
Content="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=TicketOverview.Row.Heading.UnassignedTickets}"
FontWeight="Bold"
FontSize="12" />
<Label Grid.Row="4"
Grid.Column="1"
Content="{Binding UnassignedTickets}"
Style="{StaticResource RoundedSelectedLabelStyle}"
local:TicketOverview.IsSelected="{Binding UnassignedTicketsSelected, Mode=TwoWay}"
local:TicketOverview.IsHighlighted="{Binding UnassignedTicketsHighlighted}"
ToolTip="{Binding UnassignedTicketsChangeHint}"
Tag="UnassignedTicketsSelected"
MouseLeftButtonUp="Label_MouseLeftButtonUp"
FontWeight="Medium"
Foreground="{DynamicResource Color.Orange}"
FontSize="12"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Cursor="Hand" />
<Label Grid.Row="4"
Grid.Column="3"
Content="{Binding UnassignedTicketsCritical}"
Style="{StaticResource RoundedSelectedLabelStyle}"
local:TicketOverview.IsSelected="{Binding UnassignedTicketsCriticalSelected, Mode=TwoWay}"
local:TicketOverview.IsHighlighted="{Binding UnassignedTicketsCriticalHighlighted}"
ToolTip="{Binding UnassignedTicketsCriticalChangeHint}"
Tag="UnassignedTicketsCriticalSelected"
MouseLeftButtonUp="Label_MouseLeftButtonUp"
FontWeight="Medium"
Foreground="{DynamicResource Color.Red}"
FontSize="12"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Cursor="Hand" />
</Grid>
</Border>
</UserControl>

View File

@@ -28,7 +28,9 @@ namespace FasdDesktopUi.Basics.UserControls
("IncidentNew", new Action<TicketOverviewModel, int>((vm, value) => { vm.IncidentNew = value; })),
("IncidentActive", new Action<TicketOverviewModel, int>((vm, value) => { vm.IncidentActive = value; })),
("IncidentCritical", new Action<TicketOverviewModel, int>((vm, value) => { vm.IncidentCritical = value; })),
("IncidentNewInfo", new Action<TicketOverviewModel, int>((vm, value) => { vm.IncidentNewInfo = value; }))
("IncidentNewInfo", new Action<TicketOverviewModel, int>((vm, value) => { vm.IncidentNewInfo = value; })),
("UnassignedTickets", new Action<TicketOverviewModel, int>((vm, value) => { vm.UnassignedTickets = value; })),
("UnassignedTicketsCritical", new Action<TicketOverviewModel, int>((vm, value) => { vm.UnassignedTicketsCritical = value; }))
};
private static readonly (string Key, Action<TicketOverviewModel, bool> Setter)[] HighlightSetters = new[]
{
@@ -39,7 +41,9 @@ namespace FasdDesktopUi.Basics.UserControls
("IncidentNew", new Action<TicketOverviewModel, bool>((vm, value) => { vm.IncidentNewHighlighted = value; })),
("IncidentActive", new Action<TicketOverviewModel, bool>((vm, value) => { vm.IncidentActiveHighlighted = value; })),
("IncidentCritical", new Action<TicketOverviewModel, bool>((vm, value) => { vm.IncidentCriticalHighlighted = value; })),
("IncidentNewInfo", new Action<TicketOverviewModel, bool>((vm, value) => { vm.IncidentNewInfoHighlighted = value; }))
("IncidentNewInfo", new Action<TicketOverviewModel, bool>((vm, value) => { vm.IncidentNewInfoHighlighted = value; })),
("UnassignedTickets", new Action<TicketOverviewModel, bool>((vm, value) => { vm.UnassignedTicketsHighlighted = value; })),
("UnassignedTicketsCritical", new Action<TicketOverviewModel, bool>((vm, value) => { vm.UnassignedTicketsCriticalHighlighted = value; }))
};
private static readonly (string Key, Action<TicketOverviewModel, string> Setter)[] ChangeHintSetters = new[]
{
@@ -50,7 +54,9 @@ namespace FasdDesktopUi.Basics.UserControls
("IncidentNew", new Action<TicketOverviewModel, string>((vm, value) => { vm.IncidentNewChangeHint = value; })),
("IncidentActive", new Action<TicketOverviewModel, string>((vm, value) => { vm.IncidentActiveChangeHint = value; })),
("IncidentCritical", new Action<TicketOverviewModel, string>((vm, value) => { vm.IncidentCriticalChangeHint = value; })),
("IncidentNewInfo", new Action<TicketOverviewModel, string>((vm, value) => { vm.IncidentNewInfoChangeHint = value; }))
("IncidentNewInfo", new Action<TicketOverviewModel, string>((vm, value) => { vm.IncidentNewInfoChangeHint = value; })),
("UnassignedTickets", new Action<TicketOverviewModel, string>((vm, value) => { vm.UnassignedTicketsChangeHint = value; })),
("UnassignedTicketsCritical", new Action<TicketOverviewModel, string>((vm, value) => { vm.UnassignedTicketsCriticalChangeHint = value; }))
};
private readonly Dictionary<string, HighlightInfo> _personalHighlightStates = new Dictionary<string, HighlightInfo>(StringComparer.OrdinalIgnoreCase);
private readonly Dictionary<string, HighlightInfo> _roleHighlightStates = new Dictionary<string, HighlightInfo>(StringComparer.OrdinalIgnoreCase);

View File

@@ -512,16 +512,26 @@
<Language Lang="EN">My incidents</Language>
<Language Lang="DE">Eigene Störungen</Language>
</UIItem>
<UIItem Name="TicketOverview.ScopeRow.Role.Tickets">
<Language Lang="EN">Role tickets</Language>
<Language Lang="DE">Rollentickets</Language>
</UIItem>
<UIItem Name="TicketOverview.ScopeRow.Personal.UnassignedTickets">
<Language Lang="EN">My unassigned</Language>
<Language Lang="DE">Eigener Eingang</Language>
</UIItem>
<UIItem Name="TicketOverview.ScopeRow.Role.Tickets">
<Language Lang="EN">Role tickets</Language>
<Language Lang="DE">Rollentickets</Language>
</UIItem>
<UIItem Name="TicketOverview.ScopeRow.Role.Incidents">
<Language Lang="EN">Role incidents</Language>
<Language Lang="DE">Rollenstörungen</Language>
</UIItem>
<UIItem Name="TicketOverview.ScopeRow.Role.UnassignedTickets">
<Language Lang="EN">Role unassigned</Language>
<Language Lang="DE">Rolleneingang</Language>
</UIItem>
<!--Menu-->
<UIItem Name="Menu.About">
@@ -1714,4 +1724,9 @@
<Language Lang="EN">Incidents</Language>
<Language Lang="DE">Störungen</Language>
</UIItem>
<UIItem Name="TicketOverview.Row.Heading.UnassignedTickets">
<Language Lang="EN">Unassigned</Language>
<Language Lang="DE">Eingang</Language>
</UIItem>
</UILanguage>

View File

@@ -1364,6 +1364,8 @@ namespace FasdDesktopUi.Pages.SearchPage
rowKey = "TicketOverview.Row.Heading.Tickets";
else if (normalized.StartsWith("incident"))
rowKey = "TicketOverview.Row.Heading.Incidents";
else if (normalized.StartsWith("unassigned"))
rowKey = "TicketOverview.Row.Heading.UnassignedTickets";
else
return false;
@@ -1389,6 +1391,8 @@ namespace FasdDesktopUi.Pages.SearchPage
suffix = "Tickets";
else if (string.Equals(rowKey, "TicketOverview.Row.Heading.Incidents", StringComparison.OrdinalIgnoreCase))
suffix = "Incidents";
else if (string.Equals(rowKey, "TicketOverview.Row.Heading.UnassignedTickets", StringComparison.OrdinalIgnoreCase))
suffix = "UnassignedTickets";
var translationKey = scope == TileScope.Role
? $"TicketOverview.ScopeRow.Role.{suffix}"