aktueller stand

This commit is contained in:
Meik
2026-02-12 08:42:41 +01:00
parent 7392454a63
commit 493e671b9f
30 changed files with 30212 additions and 30217 deletions

View File

@@ -125,4 +125,4 @@
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup> </PropertyGroup>
</Target> </Target>
</Project> </Project>

View File

@@ -119,9 +119,6 @@
<Content Include="Config\F4SD-MenuSection-Configuration.xml"> <Content Include="Config\F4SD-MenuSection-Configuration.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
<Content Include="Config\F4SD-Global-Configuration.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Config\F4SD-QuickAction-Configuration.xml"> <Content Include="Config\F4SD-QuickAction-Configuration.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
@@ -276,4 +273,4 @@
<PropertyGroup> <PropertyGroup>
<PreBuildEvent>copy "$(ProjectDir)..\..\C4IT FASD\_Common\XmlSchemas\*" "$(ProjectDir)Config"</PreBuildEvent> <PreBuildEvent>copy "$(ProjectDir)..\..\C4IT FASD\_Common\XmlSchemas\*" "$(ProjectDir)Config"</PreBuildEvent>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@@ -2,17 +2,15 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.IO; using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Threading; using System.Threading;
using System.Diagnostics; using System.Diagnostics;
using System.Xml;
using Newtonsoft.Json; using Newtonsoft.Json;
using FasdCockpitBase.Models; using FasdCockpitBase.Models;
using FasdCockpitCommunicationDemo; using FasdCockpitCommunicationDemo;
using C4IT.Configuration;
using C4IT.FASD.Base; using C4IT.FASD.Base;
using static C4IT.Logging.cLogManager; using static C4IT.Logging.cLogManager;
using FasdCockpitBase; using FasdCockpitBase;
@@ -48,6 +46,7 @@ namespace C4IT.FASD.Cockpit.Communication
BuildCategoryLookup(); BuildCategoryLookup();
LoadTicketOverviewRelations(); LoadTicketOverviewRelations();
LoadGeneratedTickets(); LoadGeneratedTickets();
ApplyMissingDemoTicketActivityTypes();
EnsureOverviewTicketJournalEntries(); EnsureOverviewTicketJournalEntries();
} }
@@ -276,6 +275,72 @@ namespace C4IT.FASD.Cockpit.Communication
} }
} }
private void ApplyMissingDemoTicketActivityTypes()
{
try
{
var activityTypesByTicketId = new Dictionary<Guid, string>();
foreach (var tileEntry in TicketOverviewRelations.Values)
{
if (tileEntry == null)
continue;
foreach (var scopeEntry in tileEntry.Values)
{
if (scopeEntry == null)
continue;
foreach (var definition in scopeEntry)
{
if (definition == null || definition.TicketId == Guid.Empty)
continue;
var activityType = NormalizeActivityType(definition.ActivityType);
if (string.IsNullOrWhiteSpace(activityType))
continue;
activityTypesByTicketId[definition.TicketId] = activityType;
}
}
}
foreach (var sampleData in MockupData)
{
if (sampleData?.Tickets == null)
continue;
foreach (var ticket in sampleData.Tickets)
{
if (ticket == null)
continue;
ticket.ActivityType = NormalizeActivityType(ticket.ActivityType);
if (!string.IsNullOrWhiteSpace(ticket.ActivityType))
continue;
if (ticket.Id != Guid.Empty && activityTypesByTicketId.TryGetValue(ticket.Id, out var mappedActivityType))
{
ticket.ActivityType = mappedActivityType;
continue;
}
ticket.ActivityType = NormalizeActivityType(TryGetActivityTypeFromTicketLinks(ticket));
}
}
}
catch (Exception E)
{
LogException(E);
}
}
private static string NormalizeActivityType(string activityType)
{
return string.IsNullOrWhiteSpace(activityType) ? null : activityType.Trim();
}
private void EnsureOverviewTicketJournalEntries() private void EnsureOverviewTicketJournalEntries()
{ {
try try
@@ -396,10 +461,11 @@ namespace C4IT.FASD.Cockpit.Communication
AffectedUser = detail.AffectedUser ?? record.UserDisplayName, AffectedUser = detail.AffectedUser ?? record.UserDisplayName,
Asset = detail.Asset, Asset = detail.Asset,
Category = detail.Category, Category = detail.Category,
ActivityType = NormalizeActivityType(record.ActivityType),
Description = detail.Description, Description = detail.Description,
DescriptionHtml = detail.DescriptionHtml, DescriptionHtml = detail.DescriptionHtml,
Solution = detail.Solution, Solution = detail.Solution,
SolutionHtml = detail.SolutionHtml, SolutionHtml = detail.SolutionHtml,
CreationDate = createdAt.ToLocalTime(), CreationDate = createdAt.ToLocalTime(),
CreationDaysSinceNow = Math.Max(0, (int)(DateTime.UtcNow - createdAt).TotalDays), CreationDaysSinceNow = Math.Max(0, (int)(DateTime.UtcNow - createdAt).TotalDays),
Priority = detail.Priority ?? 0, Priority = detail.Priority ?? 0,
@@ -562,34 +628,16 @@ namespace C4IT.FASD.Cockpit.Communication
return fallbackData.Tickets.FirstOrDefault(ticket => ticket.Id == definition.TicketId); return fallbackData.Tickets.FirstOrDefault(ticket => ticket.Id == definition.TicketId);
} }
private static string ResolveTicketActivityType(string displayName, cF4SDTicket detailTicket = null) private static string ResolveTicketActivityType(cF4SDTicket detailTicket = null)
{ {
var configuredType = NormalizeActivityType(detailTicket?.ActivityType);
if (!string.IsNullOrWhiteSpace(configuredType))
return configuredType;
var linkType = TryGetActivityTypeFromTicketLinks(detailTicket); var linkType = TryGetActivityTypeFromTicketLinks(detailTicket);
if (!string.IsNullOrWhiteSpace(linkType)) if (!string.IsNullOrWhiteSpace(linkType))
return linkType; return linkType;
var ticketName = displayName ?? detailTicket?.Name;
if (string.IsNullOrWhiteSpace(ticketName))
return "SPSActivityTypeTicket";
if (ticketName.StartsWith("INC", StringComparison.OrdinalIgnoreCase))
return "SPSActivityTypeIncident";
if (ticketName.StartsWith("SRQ", StringComparison.OrdinalIgnoreCase))
return "SPSActivityTypeServiceRequest";
if (ticketName.StartsWith("PRB", StringComparison.OrdinalIgnoreCase))
return "SPSActivityTypeGroupTicket";
if (ticketName.StartsWith("ALT", StringComparison.OrdinalIgnoreCase))
return "SPSActivityTypeAlert";
if (ticketName.StartsWith("CHG", StringComparison.OrdinalIgnoreCase))
return "SVMChangeRequestType";
if (ticketName.StartsWith("TSK", StringComparison.OrdinalIgnoreCase))
return "SPSActivityTypeBase";
return "SPSActivityTypeTicket"; return "SPSActivityTypeTicket";
} }
@@ -1258,7 +1306,7 @@ namespace C4IT.FASD.Cockpit.Communication
foreach (var demoTicket in demoTickets) foreach (var demoTicket in demoTickets)
{ {
output.Add(new cF4sdApiSearchResultRelation() { id = demoTicket.Id, Name = demoTicket.Name, DisplayName = demoTicket.Name, Infos = new Dictionary<string, string>() { ["Summary"] = demoTicket.Summary, ["Status"] = demoTicket.Status.ToString(), ["StatusId"] = ((int)demoTicket.Status).ToString(), ["Asset"] = demoTicket.Asset, ["ActivityType"] = ResolveTicketActivityType(demoTicket.Name, demoTicket) }, Type = enumF4sdSearchResultClass.Ticket, Identities = new cF4sdIdentityList() { new cF4sdIdentityEntry() { Class = enumFasdInformationClass.User, Id = Guid.Parse(constGuidTimoTicket) }, new cF4sdIdentityEntry() { Class = enumFasdInformationClass.Ticket, Id = demoTicket.Id } } }); output.Add(new cF4sdApiSearchResultRelation() { id = demoTicket.Id, Name = demoTicket.Name, DisplayName = demoTicket.Name, Infos = new Dictionary<string, string>() { ["Summary"] = demoTicket.Summary, ["Status"] = demoTicket.Status.ToString(), ["StatusId"] = ((int)demoTicket.Status).ToString(), ["Asset"] = demoTicket.Asset, ["ActivityType"] = ResolveTicketActivityType(demoTicket) }, Type = enumF4sdSearchResultClass.Ticket, Identities = new cF4sdIdentityList() { new cF4sdIdentityEntry() { Class = enumFasdInformationClass.User, Id = Guid.Parse(constGuidTimoTicket) }, new cF4sdIdentityEntry() { Class = enumFasdInformationClass.Ticket, Id = demoTicket.Id } } });
} }
break; break;
@@ -1318,7 +1366,7 @@ namespace C4IT.FASD.Cockpit.Communication
["Status"] = demoTicket.Status.ToString(), ["Status"] = demoTicket.Status.ToString(),
["StatusId"] = ((int)demoTicket.Status).ToString(), ["StatusId"] = ((int)demoTicket.Status).ToString(),
["Asset"] = demoTicket.Asset ?? string.Empty, ["Asset"] = demoTicket.Asset ?? string.Empty,
["ActivityType"] = ResolveTicketActivityType(demoTicket.Name, demoTicket) ["ActivityType"] = ResolveTicketActivityType(demoTicket)
}, },
Identities = new cF4sdIdentityList() Identities = new cF4sdIdentityList()
{ {
@@ -1901,12 +1949,15 @@ namespace C4IT.FASD.Cockpit.Communication
if (writeParams.Values.TryGetValue("Asset", out var asset)) if (writeParams.Values.TryGetValue("Asset", out var asset))
output.Asset = asset.ToString(); output.Asset = asset.ToString();
if (writeParams.Values.TryGetValue("Category", out var category)) if (writeParams.Values.TryGetValue("Category", out var category))
output.Category = category.ToString(); output.Category = category.ToString();
if (writeParams.Values.TryGetValue("CreationSource", out var creationSourceObj)) if (writeParams.Values.TryGetValue("ActivityType", out var activityType))
if (Enum.TryParse(creationSourceObj.ToString(), out cF4SDTicket.enumTicketCreationSource creationSource)) output.ActivityType = NormalizeActivityType(activityType?.ToString());
output.CreationSource = creationSource;
if (writeParams.Values.TryGetValue("CreationSource", out var creationSourceObj))
if (Enum.TryParse(creationSourceObj.ToString(), out cF4SDTicket.enumTicketCreationSource creationSource))
output.CreationSource = creationSource;
if (writeParams.Values.TryGetValue("Status", out var statusObj)) if (writeParams.Values.TryGetValue("Status", out var statusObj))
{ {
@@ -2143,37 +2194,11 @@ namespace C4IT.FASD.Cockpit.Communication
cCockpitConfiguration.Instance = new cCockpitConfiguration(); cCockpitConfiguration.Instance = new cCockpitConfiguration();
cCockpitConfiguration.Instance.agentApiConfiguration = new cAgentApiConfiguration() { ApiUrl = "", ClientId = "", ClientSecret = "", LogonUrl = "", OrganizationCode = 0 }; cCockpitConfiguration.Instance.agentApiConfiguration = new cAgentApiConfiguration() { ApiUrl = "", ClientId = "", ClientSecret = "", LogonUrl = "", OrganizationCode = 0 };
cCockpitConfiguration.Instance.m42ServerConfiguration = new cM42ServerConfiguration() { Server = ResolveDemoM42Server() }; cCockpitConfiguration.Instance.m42ServerConfiguration = new cM42ServerConfiguration() { Server = ResolveDemoM42Server() };
cCockpitConfiguration.Instance.GlobalConfig = LoadDemoGlobalConfig(); cCockpitConfiguration.Instance.GlobalConfig = null;
await Task.CompletedTask; await Task.CompletedTask;
return true; return true;
} }
private static cConfigHelperParameterList LoadDemoGlobalConfig()
{
try
{
var executingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var filePath = Path.Combine(executingDirectory, "Config", "F4SD-Global-Configuration.xml");
if (!File.Exists(filePath))
return null;
var xmlDocument = new XmlDocument();
xmlDocument.Load(filePath);
var root = xmlDocument.DocumentElement;
if (root == null || !string.Equals(root.Name, "F4SD-Global-Configuration", StringComparison.OrdinalIgnoreCase))
return null;
return cF4sdGlobalConfigParameterParser.Parse(root);
}
catch (Exception E)
{
LogException(E);
}
return null;
}
public override Task<bool> GetAgentOnlineStatus(int AgentDeviceId, int? AgentUserId = null) => Task.FromResult(true); public override Task<bool> GetAgentOnlineStatus(int AgentDeviceId, int? AgentUserId = null) => Task.FromResult(true);
public override Task<cF4sdAgentScript> GetQuickActionOfAgent(int ScriptId) => Task.FromResult(new cF4sdAgentScript() { Id = ScriptId, Name = "AgentScript", Type = enumAgentScriptType.user, UserPermissionRequired = false }); public override Task<cF4sdAgentScript> GetQuickActionOfAgent(int ScriptId) => Task.FromResult(new cF4sdAgentScript() { Id = ScriptId, Name = "AgentScript", Type = enumAgentScriptType.user, UserPermissionRequired = false });

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1089,7 +1089,7 @@
{ {
"ColumnName": "DiskTotal", "ColumnName": "DiskTotal",
"Values": [ "Values": [
511101108224, 511101108224.0,
null, null,
null, null,
null, null,
@@ -1122,7 +1122,7 @@
{ {
"ColumnName": "DiskFree", "ColumnName": "DiskFree",
"Values": [ "Values": [
3435973836, 3435973836.0,
null, null,
null, null,
null, null,
@@ -1155,7 +1155,7 @@
{ {
"ColumnName": "SystemDiskTotal", "ColumnName": "SystemDiskTotal",
"Values": [ "Values": [
274877906944, 274877906944.0,
null, null,
null, null,
null, null,
@@ -1188,7 +1188,7 @@
{ {
"ColumnName": "SystemDiskFree", "ColumnName": "SystemDiskFree",
"Values": [ "Values": [
8589934592, 8589934592.0,
null, null,
null, null,
null, null,
@@ -1221,7 +1221,7 @@
{ {
"ColumnName": "MemoryTotal", "ColumnName": "MemoryTotal",
"Values": [ "Values": [
34037615820, 34037615820.0,
null, null,
null, null,
null, null,
@@ -1478,16 +1478,16 @@
null, null,
null, null,
null, null,
2, 2.0,
1, 1.0,
1, 1.0,
1, 1.0,
null, null,
null, null,
2, 2.0,
1, 1.0,
1, 1.0,
1, 1.0,
null, null,
null, null,
null, null,
@@ -1539,21 +1539,21 @@
{ {
"ColumnName": "DiskTotal", "ColumnName": "DiskTotal",
"Values": [ "Values": [
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
null, null,
null, null,
null, null,
@@ -1572,21 +1572,21 @@
{ {
"ColumnName": "DiskFree", "ColumnName": "DiskFree",
"Values": [ "Values": [
3435973836, 3435973836.0,
26843545600, 26843545600.0,
84359738368, 84359738368.0,
105784247808, 105784247808.0,
105884247808, 105884247808.0,
105785247808, 105785247808.0,
105818914474, 105818914474.0,
105819414474, 105819414474.0,
105819914474, 105819914474.0,
105820414474, 105820414474.0,
105820914474, 105820914474.0,
105821414474, 105821414474.0,
105821914474, 105821914474.0,
105822414474, 105822414474.0,
105822914474, 105822914474.0,
null, null,
null, null,
null, null,
@@ -1605,21 +1605,21 @@
{ {
"ColumnName": "SystemDiskTotal", "ColumnName": "SystemDiskTotal",
"Values": [ "Values": [
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
null, null,
null, null,
null, null,
@@ -1638,21 +1638,21 @@
{ {
"ColumnName": "SystemDiskFree", "ColumnName": "SystemDiskFree",
"Values": [ "Values": [
8589934592, 8589934592.0,
28600000000, 28600000000.0,
71203283968, 71203283968.0,
77893283968, 77893283968.0,
71232283968, 71232283968.0,
81203283968, 81203283968.0,
81217783968, 81217783968.0,
83551683968, 83551683968.0,
85885583968, 85885583968.0,
88219483968, 88219483968.0,
90553383968, 90553383968.0,
92887283968, 92887283968.0,
95221183968, 95221183968.0,
97555083968, 97555083968.0,
99888983968, 99888983968.0,
null, null,
null, null,
null, null,
@@ -1671,21 +1671,21 @@
{ {
"ColumnName": "MemoryTotal", "ColumnName": "MemoryTotal",
"Values": [ "Values": [
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
null, null,
null, null,
null, null,
@@ -1704,21 +1704,21 @@
{ {
"ColumnName": "MemoryFree", "ColumnName": "MemoryFree",
"Values": [ "Values": [
21260088115, 21260088115.0,
21277781150, 21277781150.0,
24837781150, 24837781150.0,
18837781150, 18837781150.0,
26837781150, 26837781150.0,
26377781150, 26377781150.0,
14837781150, 14837781150.0,
24839981150, 24839981150.0,
24837781150, 24837781150.0,
24008141150, 24008141150.0,
24364329720, 24364329720.0,
24720518290, 24720518290.0,
25076706860, 25076706860.0,
25432895430, 25432895430.0,
25789084000, 25789084000.0,
null, null,
null, null,
null, null,
@@ -1737,21 +1737,21 @@
{ {
"ColumnName": "ProcessorUsage", "ColumnName": "ProcessorUsage",
"Values": [ "Values": [
12, 12.0,
20, 20.0,
18, 18.0,
15, 15.0,
18, 18.0,
19, 19.0,
20, 20.0,
26, 26.0,
17, 17.0,
11, 11.0,
18, 18.0,
16, 16.0,
16, 16.0,
14, 14.0,
15, 15.0,
null, null,
null, null,
null, null,
@@ -1841,16 +1841,16 @@
null, null,
null, null,
null, null,
16000, 16000.0,
14000, 14000.0,
16000, 16000.0,
17000, 17000.0,
null, null,
null, null,
14000, 14000.0,
13000, 13000.0,
17000, 17000.0,
16000, 16000.0,
null, null,
null, null,
null, null,
@@ -1869,21 +1869,21 @@
{ {
"ColumnName": "NetworkRecievedTraffic", "ColumnName": "NetworkRecievedTraffic",
"Values": [ "Values": [
107374182, 107374182.0,
6120328396, 6120328396.0,
53687091, 53687091.0,
193273528, 193273528.0,
193273528, 193273528.0,
193273528, 193273528.0,
612032839, 612032839.0,
193273528, 193273528.0,
193273528, 193273528.0,
612032839, 612032839.0,
612032839, 612032839.0,
193273528, 193273528.0,
193273528, 193273528.0,
612032839, 612032839.0,
193273528, 193273528.0,
null, null,
null, null,
null, null,
@@ -1902,21 +1902,21 @@
{ {
"ColumnName": "NetworkSentTraffic", "ColumnName": "NetworkSentTraffic",
"Values": [ "Values": [
5368709, 5368709.0,
5368709, 5368709.0,
5368709, 5368709.0,
189273528, 189273528.0,
189298528, 189298528.0,
82298528, 82298528.0,
191530456, 191530456.0,
223540266, 223540266.0,
255550077, 255550077.0,
287559887, 287559887.0,
319569698, 319569698.0,
351579509, 351579509.0,
383589319, 383589319.0,
415599130, 415599130.0,
447608941, 447608941.0,
null, null,
null, null,
null, null,
@@ -2340,21 +2340,21 @@
{ {
"ColumnName": "LogonCount", "ColumnName": "LogonCount",
"Values": [ "Values": [
2, 2.0,
1, 1.0,
null, null,
null, null,
null, null,
2, 2.0,
1, 1.0,
1, 1.0,
1, 1.0,
null, null,
null, null,
2, 2.0,
1, 1.0,
1, 1.0,
1, 1.0,
null, null,
null, null,
null, null,
@@ -2440,7 +2440,7 @@
"ColumnName": "HardReset", "ColumnName": "HardReset",
"Values": [ "Values": [
null, null,
1, 1.0,
null, null,
null, null,
null, null,
@@ -2474,7 +2474,7 @@
"Values": [ "Values": [
null, null,
null, null,
1, 1.0,
null, null,
null, null,
null, null,
@@ -2506,7 +2506,7 @@
"ColumnName": "ApplicationHang", "ColumnName": "ApplicationHang",
"Values": [ "Values": [
null, null,
3, 3.0,
null, null,
null, null,
null, null,
@@ -2538,7 +2538,7 @@
{ {
"ColumnName": "ApplicationCrash", "ColumnName": "ApplicationCrash",
"Values": [ "Values": [
2, 2.0,
null, null,
null, null,
null, null,
@@ -2771,57 +2771,57 @@
"5": [ "5": [
[ [
"2022-05-14T00:55:15.34", "2022-05-14T00:55:15.34",
16000 16000.0
], ],
[ [
"2022-05-14T01:24:03.34", "2022-05-14T01:24:03.34",
16000 16000.0
] ]
], ],
"6": [ "6": [
[ [
"2022-05-13T01:24:03.34", "2022-05-13T01:24:03.34",
14000 14000.0
] ]
], ],
"7": [ "7": [
[ [
"2022-05-12T01:24:03.34", "2022-05-12T01:24:03.34",
16000 16000.0
] ]
], ],
"8": [ "8": [
[ [
"2022-05-11T01:24:03.34", "2022-05-11T01:24:03.34",
17000 17000.0
] ]
], ],
"11": [ "11": [
[ [
"2022-05-08T01:09:39.34", "2022-05-08T01:09:39.34",
14000 14000.0
], ],
[ [
"2022-05-08T03:33:39.34", "2022-05-08T03:33:39.34",
14000 14000.0
] ]
], ],
"12": [ "12": [
[ [
"2022-05-08T05:57:39.34", "2022-05-08T05:57:39.34",
13000 13000.0
] ]
], ],
"13": [ "13": [
[ [
"2022-05-06T03:19:15.34", "2022-05-06T03:19:15.34",
17000 17000.0
] ]
], ],
"14": [ "14": [
[ [
"2022-05-05T03:33:39.34", "2022-05-05T03:33:39.34",
16000 16000.0
] ]
] ]
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -540,7 +540,7 @@
{ {
"ColumnName": "id", "ColumnName": "id",
"Values": [ "Values": [
2, 2.0,
null, null,
null, null,
null, null,
@@ -707,57 +707,57 @@
"5": [ "5": [
[ [
"2023-02-17T06:19:38", "2023-02-17T06:19:38",
160000 160000.0
], ],
[ [
"2023-02-17T06:48:26", "2023-02-17T06:48:26",
16000 16000.0
] ]
], ],
"6": [ "6": [
[ [
"2023-02-16T06:48:26", "2023-02-16T06:48:26",
14000 14000.0
] ]
], ],
"7": [ "7": [
[ [
"2023-02-15T06:48:26", "2023-02-15T06:48:26",
16000 16000.0
] ]
], ],
"8": [ "8": [
[ [
"2023-02-14T06:48:26", "2023-02-14T06:48:26",
17000 17000.0
] ]
], ],
"11": [ "11": [
[ [
"2023-02-11T06:34:02", "2023-02-11T06:34:02",
14000 14000.0
], ],
[ [
"2023-02-11T08:58:02", "2023-02-11T08:58:02",
14000 14000.0
] ]
], ],
"12": [ "12": [
[ [
"2023-02-11T11:22:02", "2023-02-11T11:22:02",
13000 13000.0
] ]
], ],
"13": [ "13": [
[ [
"2023-02-09T08:43:38", "2023-02-09T08:43:38",
17000 17000.0
] ]
], ],
"14": [ "14": [
[ [
"2023-02-08T08:58:02", "2023-02-08T08:58:02",
16000 16000.0
] ]
] ]
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1089,7 +1089,7 @@
{ {
"ColumnName": "DiskTotal", "ColumnName": "DiskTotal",
"Values": [ "Values": [
511101108224, 511101108224.0,
null, null,
null, null,
null, null,
@@ -1122,7 +1122,7 @@
{ {
"ColumnName": "DiskFree", "ColumnName": "DiskFree",
"Values": [ "Values": [
3435973836, 3435973836.0,
null, null,
null, null,
null, null,
@@ -1155,7 +1155,7 @@
{ {
"ColumnName": "SystemDiskTotal", "ColumnName": "SystemDiskTotal",
"Values": [ "Values": [
274877906944, 274877906944.0,
null, null,
null, null,
null, null,
@@ -1188,7 +1188,7 @@
{ {
"ColumnName": "SystemDiskFree", "ColumnName": "SystemDiskFree",
"Values": [ "Values": [
8589934592, 8589934592.0,
null, null,
null, null,
null, null,
@@ -1221,7 +1221,7 @@
{ {
"ColumnName": "MemoryTotal", "ColumnName": "MemoryTotal",
"Values": [ "Values": [
34037615820, 34037615820.0,
null, null,
null, null,
null, null,
@@ -1478,16 +1478,16 @@
null, null,
null, null,
null, null,
2, 2.0,
1, 1.0,
1, 1.0,
1, 1.0,
null, null,
null, null,
2, 2.0,
1, 1.0,
1, 1.0,
1, 1.0,
null, null,
null, null,
null, null,
@@ -1539,21 +1539,21 @@
{ {
"ColumnName": "DiskTotal", "ColumnName": "DiskTotal",
"Values": [ "Values": [
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
511101108224, 511101108224.0,
null, null,
null, null,
null, null,
@@ -1572,21 +1572,21 @@
{ {
"ColumnName": "DiskFree", "ColumnName": "DiskFree",
"Values": [ "Values": [
3435973836, 3435973836.0,
26843545600, 26843545600.0,
84359738368, 84359738368.0,
105784247808, 105784247808.0,
105884247808, 105884247808.0,
105785247808, 105785247808.0,
105818914474, 105818914474.0,
105819414474, 105819414474.0,
105819914474, 105819914474.0,
105820414474, 105820414474.0,
105820914474, 105820914474.0,
105821414474, 105821414474.0,
105821914474, 105821914474.0,
105822414474, 105822414474.0,
105822914474, 105822914474.0,
null, null,
null, null,
null, null,
@@ -1605,21 +1605,21 @@
{ {
"ColumnName": "SystemDiskTotal", "ColumnName": "SystemDiskTotal",
"Values": [ "Values": [
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
274877906944, 274877906944.0,
null, null,
null, null,
null, null,
@@ -1638,21 +1638,21 @@
{ {
"ColumnName": "SystemDiskFree", "ColumnName": "SystemDiskFree",
"Values": [ "Values": [
8589934592, 8589934592.0,
28600000000, 28600000000.0,
71203283968, 71203283968.0,
77893283968, 77893283968.0,
71232283968, 71232283968.0,
81203283968, 81203283968.0,
81217783968, 81217783968.0,
83551683968, 83551683968.0,
85885583968, 85885583968.0,
88219483968, 88219483968.0,
90553383968, 90553383968.0,
92887283968, 92887283968.0,
95221183968, 95221183968.0,
97555083968, 97555083968.0,
99888983968, 99888983968.0,
null, null,
null, null,
null, null,
@@ -1671,21 +1671,21 @@
{ {
"ColumnName": "MemoryTotal", "ColumnName": "MemoryTotal",
"Values": [ "Values": [
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
34037615820, 34037615820.0,
null, null,
null, null,
null, null,
@@ -1704,21 +1704,21 @@
{ {
"ColumnName": "MemoryFree", "ColumnName": "MemoryFree",
"Values": [ "Values": [
21260088115, 21260088115.0,
21277781150, 21277781150.0,
24837781150, 24837781150.0,
18837781150, 18837781150.0,
26837781150, 26837781150.0,
26377781150, 26377781150.0,
14837781150, 14837781150.0,
24839981150, 24839981150.0,
24837781150, 24837781150.0,
24008141150, 24008141150.0,
24364329720, 24364329720.0,
24720518290, 24720518290.0,
25076706860, 25076706860.0,
25432895430, 25432895430.0,
25789084000, 25789084000.0,
null, null,
null, null,
null, null,
@@ -1737,21 +1737,21 @@
{ {
"ColumnName": "ProcessorUsage", "ColumnName": "ProcessorUsage",
"Values": [ "Values": [
12, 12.0,
20, 20.0,
18, 18.0,
15, 15.0,
18, 18.0,
19, 19.0,
20, 20.0,
26, 26.0,
17, 17.0,
11, 11.0,
18, 18.0,
16, 16.0,
16, 16.0,
14, 14.0,
15, 15.0,
null, null,
null, null,
null, null,
@@ -1841,16 +1841,16 @@
null, null,
null, null,
null, null,
16000, 16000.0,
14000, 14000.0,
16000, 16000.0,
17000, 17000.0,
null, null,
null, null,
14000, 14000.0,
13000, 13000.0,
17000, 17000.0,
16000, 16000.0,
null, null,
null, null,
null, null,
@@ -1869,21 +1869,21 @@
{ {
"ColumnName": "NetworkRecievedTraffic", "ColumnName": "NetworkRecievedTraffic",
"Values": [ "Values": [
107374182, 107374182.0,
6120328396, 6120328396.0,
53687091, 53687091.0,
193273528, 193273528.0,
193273528, 193273528.0,
193273528, 193273528.0,
612032839, 612032839.0,
193273528, 193273528.0,
193273528, 193273528.0,
612032839, 612032839.0,
612032839, 612032839.0,
193273528, 193273528.0,
193273528, 193273528.0,
612032839, 612032839.0,
193273528, 193273528.0,
null, null,
null, null,
null, null,
@@ -1902,21 +1902,21 @@
{ {
"ColumnName": "NetworkSentTraffic", "ColumnName": "NetworkSentTraffic",
"Values": [ "Values": [
5368709, 5368709.0,
5368709, 5368709.0,
5368709, 5368709.0,
189273528, 189273528.0,
189298528, 189298528.0,
82298528, 82298528.0,
191530456, 191530456.0,
223540266, 223540266.0,
255550077, 255550077.0,
287559887, 287559887.0,
319569698, 319569698.0,
351579509, 351579509.0,
383589319, 383589319.0,
415599130, 415599130.0,
447608941, 447608941.0,
null, null,
null, null,
null, null,
@@ -2340,21 +2340,21 @@
{ {
"ColumnName": "LogonCount", "ColumnName": "LogonCount",
"Values": [ "Values": [
2, 2.0,
1, 1.0,
null, null,
null, null,
null, null,
2, 2.0,
1, 1.0,
1, 1.0,
1, 1.0,
null, null,
null, null,
2, 2.0,
1, 1.0,
1, 1.0,
1, 1.0,
null, null,
null, null,
null, null,
@@ -2440,7 +2440,7 @@
"ColumnName": "HardReset", "ColumnName": "HardReset",
"Values": [ "Values": [
null, null,
1, 1.0,
null, null,
null, null,
null, null,
@@ -2474,7 +2474,7 @@
"Values": [ "Values": [
null, null,
null, null,
1, 1.0,
null, null,
null, null,
null, null,
@@ -2506,7 +2506,7 @@
"ColumnName": "ApplicationHang", "ColumnName": "ApplicationHang",
"Values": [ "Values": [
null, null,
3, 3.0,
null, null,
null, null,
null, null,
@@ -2538,7 +2538,7 @@
{ {
"ColumnName": "ApplicationCrash", "ColumnName": "ApplicationCrash",
"Values": [ "Values": [
2, 2.0,
null, null,
null, null,
null, null,
@@ -2771,57 +2771,57 @@
"5": [ "5": [
[ [
"2022-05-14T00:56:05.48", "2022-05-14T00:56:05.48",
16000 16000.0
], ],
[ [
"2022-05-14T01:24:53.48", "2022-05-14T01:24:53.48",
16000 16000.0
] ]
], ],
"6": [ "6": [
[ [
"2022-05-13T01:24:53.48", "2022-05-13T01:24:53.48",
14000 14000.0
] ]
], ],
"7": [ "7": [
[ [
"2022-05-12T01:24:53.48", "2022-05-12T01:24:53.48",
16000 16000.0
] ]
], ],
"8": [ "8": [
[ [
"2022-05-11T01:24:53.48", "2022-05-11T01:24:53.48",
17000 17000.0
] ]
], ],
"11": [ "11": [
[ [
"2022-05-08T01:10:29.48", "2022-05-08T01:10:29.48",
14000 14000.0
], ],
[ [
"2022-05-08T03:34:29.48", "2022-05-08T03:34:29.48",
14000 14000.0
] ]
], ],
"12": [ "12": [
[ [
"2022-05-08T05:58:29.48", "2022-05-08T05:58:29.48",
13000 13000.0
] ]
], ],
"13": [ "13": [
[ [
"2022-05-06T03:20:05.48", "2022-05-06T03:20:05.48",
17000 17000.0
] ]
], ],
"14": [ "14": [
[ [
"2022-05-05T03:34:29.48", "2022-05-05T03:34:29.48",
16000 16000.0
] ]
] ]
} }

View File

@@ -207,4 +207,4 @@
"IsWritable": false "IsWritable": false
} }
} }
} }

View File

@@ -49,9 +49,10 @@ namespace FasdCockpitCommunicationDemo
public string DescriptionHtml { get; set; } public string DescriptionHtml { get; set; }
public int Priority { get; set; } public int Priority { get; set; }
public string Category { get; set; } //todo: replace with tree structure public string Category { get; set; } //todo: replace with tree structure
public string ActivityType { get; set; }
public string Solution { get; set; } public string Solution { get; set; }
public string SolutionHtml { get; set; } public string SolutionHtml { get; set; }
public Dictionary<string, string> DirectLinks { get; set; } public Dictionary<string, string> DirectLinks { get; set; }
public List<cTicketJournalItem> JournalItems { get; set; } public List<cTicketJournalItem> JournalItems { get; set; }

View File

@@ -12,7 +12,7 @@ using static C4IT.Logging.cLogManager;
namespace FasdDesktopUi.Basics.Services.SupportCase.Controllers namespace FasdDesktopUi.Basics.Services.SupportCase.Controllers
{ {
/// <summary> /// <summary>
/// Used to manage the <see cref="ISupportCase"/> for the UI via the <see cref="SupportCaseProcessor"/>" /// Used to manage the <see cref="ISupportCase"/> for the UI via the <see cref="SupportCaseProcessor"/>
/// </summary> /// </summary>
public class SupportCaseController public class SupportCaseController
{ {
@@ -81,8 +81,8 @@ namespace FasdDesktopUi.Basics.Services.SupportCase.Controllers
} }
} }
private void HandleAvailableCaseRelationsAdded(object sender, RelationEventArgs e) private void HandleAvailableCaseRelationsAdded(object sender, RelationEventArgs e)
=> AvailableCaseRelationsAdded?.Invoke(this, e); => AvailableCaseRelationsAdded?.Invoke(this, e);
private void HandleCaseDataChanged(object sender, SupportCaseDataEventArgs e) private void HandleCaseDataChanged(object sender, SupportCaseDataEventArgs e)
{ {
@@ -127,13 +127,16 @@ namespace FasdDesktopUi.Basics.Services.SupportCase.Controllers
SupportCaseDataProviderArtifact.HealthCardDataHelper.TrySetSelectedHealthcard(requiredInformationClasses); SupportCaseDataProviderArtifact.HealthCardDataHelper.TrySetSelectedHealthcard(requiredInformationClasses);
_focusedRelation = relation; _focusedRelation = relation;
if (!_selectedRelations.Values.Contains(relation)) if (!_selectedRelations.Values.Contains(relation) || relation.Type == enumF4sdSearchResultClass.Computer)
_hasDirectionConnection = false; {
_hasDirectionConnection = false;
_selectedRelations[cF4sdIdentityEntry.GetFromSearchResult(relation.Type)] = relation; SupportCaseDataProviderArtifact.DirectConnectionHelper.Reset();
_ = Task.Run(async () => await UpdateStatusOfSelectedRelations()); }
_selectedRelations[cF4sdIdentityEntry.GetFromSearchResult(relation.Type)] = relation;
_ = Task.Run(async () => await UpdateStatusOfSelectedRelations());
var focusedRelations = new cF4sdApiSearchResultRelation[1] { _focusedRelation }; var focusedRelations = new cF4sdApiSearchResultRelation[1] { _focusedRelation };
FocusedRelationsChanged?.Invoke(this, new RelationEventArgs() FocusedRelationsChanged?.Invoke(this, new RelationEventArgs()
@@ -147,7 +150,7 @@ namespace FasdDesktopUi.Basics.Services.SupportCase.Controllers
} }
} }
private async Task UpdateStatusOfSelectedRelations() private async Task UpdateStatusOfSelectedRelations()
{ {
const string StatusString = "Status"; const string StatusString = "Status";
@@ -220,9 +223,8 @@ namespace FasdDesktopUi.Basics.Services.SupportCase.Controllers
catch (Exception ex) catch (Exception ex)
{ {
LogException(ex); LogException(ex);
} }
} }
public async Task RefreshDataForCurrentlyFocusedRelationAsync() public async Task RefreshDataForCurrentlyFocusedRelationAsync()
{ {

View File

@@ -65,18 +65,19 @@ namespace FasdDesktopUi.Basics.Services.SupportCase
if (relations is null) if (relations is null)
return; return;
foreach (var relationType in relations) foreach (var relationType in relations)
{ {
if (_caseRelations.TryGetValue(relationType.Key, out var caseRelation)) //TODO Max fragen obs passt! Bug: in den Ticketrelations (Header Ticketauswahl) sind nur zwei Tickets sichtbar anstatt 5 oder mehr..
caseRelation = caseRelation.Union(relationType).ToList(); if (_caseRelations.TryGetValue(relationType.Key, out var caseRelation))
else _caseRelations[relationType.Key] = caseRelation.Union(relationType).ToList();
_caseRelations.Add(relationType.Key, relationType.ToList()); else
_caseRelations.Add(relationType.Key, relationType.ToList());
if (SupportCaseDataProviderArtifact?.CaseRelations?.TryGetValue(relationType.Key, out var caseRelations) ?? false)
caseRelations = caseRelations.Union(relationType).ToList(); if (SupportCaseDataProviderArtifact?.CaseRelations?.TryGetValue(relationType.Key, out var caseRelations) ?? false)
else SupportCaseDataProviderArtifact.CaseRelations[relationType.Key] = caseRelations.Union(relationType).ToList();
SupportCaseDataProviderArtifact?.CaseRelations?.Add(relationType.Key, relationType.ToList()); else
} SupportCaseDataProviderArtifact?.CaseRelations?.Add(relationType.Key, relationType.ToList());
}
CaseRelationsAdded?.Invoke(this, new RelationEventArgs() { Relations = relations }); CaseRelationsAdded?.Invoke(this, new RelationEventArgs() { Relations = relations });
} }

View File

@@ -68,8 +68,6 @@ namespace FasdDesktopUi.Basics.UserControls
}; };
private const string CategoryTableNamePrimary = "M42Wpm-Ticket-Categories"; private const string CategoryTableNamePrimary = "M42Wpm-Ticket-Categories";
private const string CategoryTableNameLegacy = "M42Wpm-Ticket-CloseCase-Categories";
private string activeCategoryTableName = CategoryTableNamePrimary;
private static readonly Brush SharedValidationBorderBrush = CreateValidationBrush(); private static readonly Brush SharedValidationBorderBrush = CreateValidationBrush();
private static readonly Brush DefaultTextBoxBorderBrush = CreateDefaultTextBoxBorderBrush(); private static readonly Brush DefaultTextBoxBorderBrush = CreateDefaultTextBoxBorderBrush();
@@ -1009,20 +1007,7 @@ namespace FasdDesktopUi.Basics.UserControls
isCategoryLoading = true; isCategoryLoading = true;
var tableCandidates = new[] { CategoryTableNamePrimary, CategoryTableNameLegacy }; if (await TryPopulateCategoryHierarchyAsync(CategoryTableNamePrimary))
bool initialized = false;
foreach (var tableName in tableCandidates)
{
if (await TryPopulateCategoryHierarchyAsync(tableName))
{
activeCategoryTableName = tableName;
initialized = true;
break;
}
}
if (initialized)
{ {
CategorySelectionControl.ItemsSource = categoryHierarchy; CategorySelectionControl.ItemsSource = categoryHierarchy;
TrySelectTicketCategoryFromTicketInfos(); TrySelectTicketCategoryFromTicketInfos();

View File

@@ -70,10 +70,8 @@ namespace FasdDesktopUi.Basics.UserControls
}; };
private const string CategoryTableNamePrimary = "M42Wpm-Ticket-Categories"; private const string CategoryTableNamePrimary = "M42Wpm-Ticket-Categories";
private const string CategoryTableNameLegacy = "M42Wpm-Ticket-CloseCase-Categories";
private const string TicketDetailsTableName = "M42Wpm-Tickets"; private const string TicketDetailsTableName = "M42Wpm-Tickets";
private const string TicketDetailsCategoryIdColumnName = "CategoryId"; private const string TicketDetailsCategoryIdColumnName = "CategoryId";
private string activeCategoryTableName = CategoryTableNamePrimary;
private static readonly Brush SharedValidationBorderBrush = CreateValidationBrush(); private static readonly Brush SharedValidationBorderBrush = CreateValidationBrush();
private static readonly Brush DefaultTextBoxBorderBrush = CreateDefaultTextBoxBorderBrush(); private static readonly Brush DefaultTextBoxBorderBrush = CreateDefaultTextBoxBorderBrush();
@@ -1014,20 +1012,7 @@ namespace FasdDesktopUi.Basics.UserControls
isCategoryLoading = true; isCategoryLoading = true;
var tableCandidates = new[] { CategoryTableNamePrimary, CategoryTableNameLegacy }; if (await TryPopulateCategoryHierarchyAsync(CategoryTableNamePrimary))
bool initialized = false;
foreach (var tableName in tableCandidates)
{
if (await TryPopulateCategoryHierarchyAsync(tableName))
{
activeCategoryTableName = tableName;
initialized = true;
break;
}
}
if (initialized)
{ {
CategorySelectionControl.ItemsSource = categoryHierarchy; CategorySelectionControl.ItemsSource = categoryHierarchy;
TrySelectTicketCategoryFromTicketInfos(); TrySelectTicketCategoryFromTicketInfos();

View File

@@ -880,33 +880,33 @@
</UIItem> </UIItem>
<UIItem Name="QuickAction.Remote.Copy.Description"> <UIItem Name="QuickAction.Remote.Copy.Description">
<Language Lang="EN">The Quick Action '{0}' was {3}executed remotely by F4SD on the device '{1}' at {2}.</Language> <Language Lang="EN">The Quick Action '{0}' was {3}executed remotely by F4SD on the device '{1}' at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD remote auf dem Gerät "{1}" am {2} {3}ausgeführt.</Language> <Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD remote auf dem Gerät "{1}" am {2} UTC {3}ausgeführt.</Language>
</UIItem> </UIItem>
<UIItem Name="QuickAction.Remote.Copy.Description.Html"> <UIItem Name="QuickAction.Remote.Copy.Description.Html">
<Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed remotely by F4SD on the device &lt;b&gt;'{1}'&lt;/b&gt; at {2}.</Language> <Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed remotely by F4SD on the device &lt;b&gt;'{1}'&lt;/b&gt; at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD remote auf dem Gerät &lt;b&gt;"{1}"&lt;/b&gt; am {2} &lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language> <Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD remote auf dem Gerät &lt;b&gt;"{1}"&lt;/b&gt; am {2} UTC &lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language>
</UIItem> </UIItem>
<UIItem Name="QuickAction.RemoteSession.Copy.Description"> <UIItem Name="QuickAction.RemoteSession.Copy.Description">
<Language Lang="EN">The Quick Action '{0}' was {3}executed remotely by F4SD for the session '{1}' at {2}.</Language> <Language Lang="EN">The Quick Action '{0}' was {3}executed remotely by F4SD for the session '{1}' at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD remote für die Session "{1}" am {2} {3}ausgeführt.</Language> <Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD remote für die Session "{1}" am {2} UTC {3}ausgeführt.</Language>
</UIItem> </UIItem>
<UIItem Name="QuickAction.RemoteSession.Copy.Description.Html"> <UIItem Name="QuickAction.RemoteSession.Copy.Description.Html">
<Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed remotely by F4SD on the session &lt;b&gt;'{1}'&lt;/b&gt; at {2}.</Language> <Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed remotely by F4SD on the session &lt;b&gt;'{1}'&lt;/b&gt; at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD remote für die Session &lt;b&gt;"{1}"&lt;/b&gt; am {2} &lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language> <Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD remote für die Session &lt;b&gt;"{1}"&lt;/b&gt; am {2} UTC &lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language>
</UIItem> </UIItem>
<UIItem Name="QuickAction.Local.Copy.Description"> <UIItem Name="QuickAction.Local.Copy.Description">
<Language Lang="EN">The Quick Action '{0}' was {3}executed local by F4SD for the device '{1}' at {2}.</Language> <Language Lang="EN">The Quick Action '{0}' was {3}executed local by F4SD for the device '{1}' at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD lokal für das Gerät "{1}" am {2} {3}ausgeführt.</Language> <Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD lokal für das Gerät "{1}" am {2} UTC {3}ausgeführt.</Language>
</UIItem> </UIItem>
<UIItem Name="QuickAction.Local.Copy.Description.Html"> <UIItem Name="QuickAction.Local.Copy.Description.Html">
<Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed local by F4SD for the device &lt;b&gt;'{1}'&lt;/b&gt; at {2}.</Language> <Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed local by F4SD for the device &lt;b&gt;'{1}'&lt;/b&gt; at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD lokal für Gerät &lt;b&gt;"{1}"&lt;/b&gt; am {2} &lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language> <Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD lokal für Gerät &lt;b&gt;"{1}"&lt;/b&gt; am {2} UTC&lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language>
</UIItem> </UIItem>
<UIItem Name="QuickAction.Copy.RevisionStatus.Successfull"> <UIItem Name="QuickAction.Copy.RevisionStatus.Successfull">

View File

@@ -106,5 +106,4 @@
</Setter.Value> </Setter.Value>
</Setter> </Setter>
</Style> </Style>
</ResourceDictionary>
</ResourceDictionary>

View File

@@ -1461,4 +1461,4 @@
<!--#endregion--> <!--#endregion-->
</ResourceDictionary> </ResourceDictionary>