feat: expand cockpit integrations and support workflows

Add Phoenix remote desktop, action connector, documentation engine, and gamification support. Refactor support-case processing and search/action UI, and update installer assets and dependencies.
This commit is contained in:
Meik
2026-07-13 11:16:53 +02:00
parent bbedbf71c8
commit 0b52999b1d
303 changed files with 11235 additions and 3580 deletions

View File

@@ -34,13 +34,19 @@ namespace FasdDesktopUi.Basics.Services.SupportCase
~SupportCase()
{
if (_relationService != null)
{
_relationService.RelationsReset -= HandleRelationsReset;
_relationService.RelationsFound -= HandleRelationsFound;
}
}
public void Initialize()
{
if (_relationService != null)
_relationService.RelationsFound += HandleRelationsFound;
if (_relationService is null)
return;
_relationService.RelationsReset += HandleRelationsReset;
_relationService.RelationsFound += HandleRelationsFound;
}
public ILookup<enumFasdInformationClass, cF4sdApiSearchResultRelation> GetCaseRelations()
@@ -69,13 +75,13 @@ namespace FasdDesktopUi.Basics.Services.SupportCase
foreach (var relationType in relations)
{
if (_caseRelations.TryGetValue(relationType.Key, out var caseRelation))
caseRelation = caseRelation.Union(relationType).ToList();
if (_caseRelations.ContainsKey(relationType.Key))
_caseRelations[relationType.Key] = _caseRelations[relationType.Key].Union(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?.ContainsKey(relationType.Key) ?? false)
SupportCaseDataProviderArtifact.CaseRelations[relationType.Key] = SupportCaseDataProviderArtifact.CaseRelations[relationType.Key].Union(relationType).ToList();
else
SupportCaseDataProviderArtifact?.CaseRelations?.Add(relationType.Key, relationType.ToList());
}
@@ -134,7 +140,6 @@ namespace FasdDesktopUi.Basics.Services.SupportCase
UpdateSupportCaseDataCache(relation, rawData?.Tables?.Values);
isDataComplete = rawData?.Tables?
.Where(table => table.Key.StartsWith("Computation_") == false)
.All(table => !table.Value.IsIncomplete && !table.Value.Columns.Values.Any(c => c.IsIncomplete)) ?? false;
}
@@ -279,15 +284,25 @@ namespace FasdDesktopUi.Basics.Services.SupportCase
}
}
public IEnumerable<object> GetSupportCaseHealthcardData(cF4sdApiSearchResultRelation relation, cValueAddress valueAddress)
public IList<object> GetSupportCaseHealthcardData(cF4sdApiSearchResultRelation relation, cValueAddress valueAddress, bool getStatic)
{
try
{
if (!_supportCaseDataCache.TryGetValue(valueAddress.ValueTable, out var tables))
if (!TryGetTable(relation, valueAddress, out var table))
return null;
if (!tables.TryGetValue(relation, out var table))
return null;
if (getStatic && !string.IsNullOrEmpty(table.AlternateStaticTable))
{
cValueAddress staticValueAdress = new cValueAddress()
{
DayIndex = valueAddress.DayIndex,
ValueTable = table.AlternateStaticTable,
ValueColumn = valueAddress.ValueColumn
};
if (TryGetTable(relation, staticValueAdress, out var staticTable))
table = staticTable;
}
if (!table.Columns.TryGetValue(valueAddress.ValueColumn, out var column))
return null;
@@ -302,6 +317,28 @@ namespace FasdDesktopUi.Basics.Services.SupportCase
return null;
}
private bool TryGetTable(cF4sdApiSearchResultRelation relation, cValueAddress valueAddress, out cF4SDHealthCardRawData.cHealthCardTable table)
{
table = null;
if (valueAddress is null)
return false;
if (!_supportCaseDataCache.TryGetValue(valueAddress.ValueTable, out var tables))
return false;
if (!tables.TryGetValue(relation, out table))
return false;
return true;
}
private void HandleRelationsReset(object sender, EventArgs e)
{
_caseRelations.Clear();
AddCaseRelations(_relationService?.GetLoadedRelations());
}
private void HandleRelationsFound(object sender, StagedSearchResultRelationsEventArgs e)
{
AddCaseRelations(e.StagedResultRelations.Relations);