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

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
@@ -8,10 +9,10 @@ using C4IT.Configuration;
using C4IT.FASD.Base;
using C4IT.FASD.Cockpit.Communication;
using C4IT.Logging;
using C4IT.XML;
using FasdDesktopUi.Basics.Enums;
using FasdDesktopUi.Config;
using FasdDesktopUi.Basics.UiActions.NativeActions;
using static C4IT.Logging.cLogManager;
@@ -39,6 +40,7 @@ namespace FasdDesktopUi
[RegConfig]
public string SelectedLanguage;
public CultureInfo SelectedCulture { get => string.IsNullOrEmpty(SelectedLanguage) ? CultureInfo.CurrentCulture : new CultureInfo(SelectedLanguage); }
[RegConfig]
public enumAppColorMode DetailsPageColorMode = enumAppColorMode.LightMode;
@@ -141,7 +143,10 @@ namespace FasdDesktopUi
public void OnUiSettingsChanged()
{
UiSettingsChanged?.Invoke(this, EventArgs.Empty);
App.Current?.Dispatcher.Invoke(() =>
{
UiSettingsChanged?.Invoke(this, EventArgs.Empty);
});
}
public void SetDetailsPageZoom(int zoom)
@@ -168,6 +173,8 @@ namespace FasdDesktopUi
{
try
{
AddDefaultMenuItems();
if (cF4SDCockpitXmlConfig.Instance.MenuSectionConfig?.Sections?.MenuSections != null)
{
foreach (var menuSection in cF4SDCockpitXmlConfig.Instance.MenuSectionConfig?.Sections?.MenuSections)
@@ -180,6 +187,9 @@ namespace FasdDesktopUi
{
foreach (var quickAction in cF4SDCockpitXmlConfig.Instance.QuickActionConfig?.F4SDQuickActions?.QuickActions)
{
if (quickAction.Value is FasdNativeQuickAction nativeAction)
UpdatePrerequesites(nativeAction);
InsertMenuItem(quickAction.Key, quickAction.Value);
}
}
@@ -212,8 +222,30 @@ namespace FasdDesktopUi
else
cF4SDCockpitXmlConfig.Instance.MenuItems.Add(key, menuItem);
}
void AddDefaultMenuItems()
{
InsertMenuItem(cCopyTemplate.DefaultSectionName, new cFasdMenuSection()
{
IsValid = true,
TechName = cCopyTemplate.DefaultSectionName,
Names = new C4IT.MultiLanguage.cMultiLanguageDictionary() { ["EN"] = "Copy content", ["DE"] = "Inhalte kopieren" },
Icon = new cFasdIcon(enumInternIcon.menuBar_copy)
});
}
}
private void UpdatePrerequesites(FasdNativeQuickAction nativeAction)
{
switch (nativeAction.NativeName)
{
case RemoteConnectionAction.NativeActionName:
RemoteConnectionAction.UpdatePrerequesites(nativeAction);
break;
default:
break;
}
}
private void SetGlobalTranslations()
{
@@ -315,40 +347,40 @@ namespace FasdDesktopUi
return false;
}
public async Task<cCollectorStatusInfo> CheckCollectorStatusAsync()
{
try
{
var _res = await cFasdCockpitCommunicationBase.Instance.CheckCollectorStatusAsync();
if(_res != null)
public async Task<cCollectorStatusInfo> CheckCollectorStatusAsync()
{
try
{
var _res = await cFasdCockpitCommunicationBase.Instance.CheckCollectorStatusAsync();
if (_res != null)
return _res;
}
catch (Exception E)
{
LogException(E);
}
return null;
}
public bool HasM42Configuration()
{
try
{
return !string.IsNullOrWhiteSpace(cCockpitConfiguration.Instance?.m42ServerConfiguration?.Server);
}
catch (Exception E)
{
LogException(E);
}
return false;
}
public async Task InstantiateAnalyticsAsync(Guid SessionId)
{
try
{
return null;
}
public bool HasM42Configuration()
{
try
{
return !string.IsNullOrWhiteSpace(cCockpitConfiguration.Instance?.m42ServerConfiguration?.Server);
}
catch (Exception E)
{
LogException(E);
}
return false;
}
public async Task InstantiateAnalyticsAsync(Guid SessionId)
{
try
{
IsAnalyticsActive = await cFasdCockpitCommunicationBase.Instance.IsAnalyticsModuleActive();
if (IsAnalyticsActive)
{
@@ -403,7 +435,7 @@ namespace FasdDesktopUi
var apiResult = await cFasdCockpitCommunicationBase.Instance.GetQuickActionsOfAgent();
List<string> quickActionsToRemove = new List<string>();
foreach (var quickActionKeyValuePair in cF4SDCockpitXmlConfig.Instance?.QuickActionConfig?.F4SDQuickActions.QuickActions)
foreach (var quickActionKeyValuePair in cF4SDCockpitXmlConfig.Instance?.QuickActionConfig?.F4SDQuickActions?.QuickActions)
{
var quickAction = quickActionKeyValuePair.Value;
if (!(quickAction is cF4sdQuickActionRemote remoteQuickAction))
@@ -497,8 +529,6 @@ namespace FasdDesktopUi
{
quickActionsToRemove.Add(quickActionKeyValuePair.Key);
}
}
foreach (var quickAction in quickActionsToRemove)