Files
C4IT-F4SD-Client/FasdDesktopUi/Pages/DetailsPage/DetailsPageViewModel.cs
2025-11-13 17:35:09 +01:00

286 lines
7.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Threading;
using FasdDesktopUi.Basics.Models;
using FasdDesktopUi.Pages.DetailsPage.Models;
using FasdDesktopUi.Basics;
using static C4IT.Logging.cLogManager;
namespace FasdDesktopUi.Pages.DetailsPage.ViewModels
{
public class DetailsPageViewModel : BaseViewModel
{
#region Properties
private int shownValueColumnsCount;
public cSupportCaseDataProvider DataProvider { get; set; }
#region ZoomInPercent
private int zoomInPercent;
public int ZoomInPercent
{
get { return zoomInPercent; }
set
{
if (value < 50)
value = 50;
else if (value > 250)
value = 250;
zoomInPercent = value;
cFasdCockpitConfig.Instance.SetDetailsPageZoom(value);
OnPropertyChanged();
}
}
#endregion
#region Header Properties
#region PageTitle Property
private string pageTitle;
public string PageTitle
{
get { return pageTitle; }
set
{
pageTitle = value;
OnPropertyChanged();
}
}
#endregion
#region HeadingData Property
private List<cHeadingDataModel> headingData;
public List<cHeadingDataModel> HeadingData
{
get { return headingData; }
set
{
headingData = value;
OnPropertyChanged();
}
}
#endregion
#endregion
#region Widget Properties
#region WidgetData Property
private List<List<cWidgetValueModel>> widgetDataList;
public List<List<cWidgetValueModel>> WidgetDataList
{
get { return widgetDataList; }
set
{
widgetDataList = value;
OnPropertyChanged();
}
}
#endregion
#region WidgetGeometry Property
private List<DetailsPageWidgetGeometryModel> widgetGeometryList;
public List<DetailsPageWidgetGeometryModel> WidgetGeometryList
{
get { return widgetGeometryList; }
set
{
widgetGeometryList = value;
OnPropertyChanged();
}
}
#endregion
#endregion
#region Details Properties
#region TimeSinceLastRefresh property
private TimeSpan timeSinceLastRefresh;
public TimeSpan TimeSinceLastRefresh
{
get { return timeSinceLastRefresh; }
set
{
timeSinceLastRefresh = value;
OnPropertyChanged();
}
}
#endregion
#region DetailsGeometry property
private DetailsPageDataHistoryCollectionGeometryModel detailsGeometry;
public DetailsPageDataHistoryCollectionGeometryModel DetailsGeometry
{
get { return detailsGeometry; }
set
{
detailsGeometry = value;
OnPropertyChanged();
}
}
#endregion
#region DetailsData property
private cDetailsPageDataHistoryDataModel detailsDataList;
public cDetailsPageDataHistoryDataModel DetailsDataList
{
get { return detailsDataList; }
set
{
detailsDataList = value;
OnPropertyChanged();
}
}
#endregion
#region ShownValueColumnsCount
public int ShownValueColumnsCount
{
get => shownValueColumnsCount; set
{
shownValueColumnsCount = value;
OnPropertyChanged();
}
}
#endregion
#endregion
#region Menu Properties
#region MenuBarData property
private List<cMenuDataBase> menuBarData;
public List<cMenuDataBase> MenuBarData
{
get { return menuBarData; }
set
{
menuBarData = value;
OnPropertyChanged();
OnPropertyChanged(nameof(MenuDrawerData));
}
}
#endregion
#region MenuDrawerData Property
public List<cMenuDataBase> MenuDrawerData
{
get
{
if (MenuBarData != null)
return MenuBarData.Where(x => x.IconPositionIndex < 0).ToList();
return new List<cMenuDataBase>();
}
}
#endregion
#endregion
#endregion
#region Methods
public DetailsPageViewModel()
{
cFasdCockpitConfig.Instance.UiSettingsChanged += CockpitConfig_UiSettingsChanged;
}
private void CockpitConfig_UiSettingsChanged(object sender, EventArgs e)
{
ZoomInPercent = cFasdCockpitConfig.Instance.DetailsPageZoom;
}
#region Set DataContext
public void SetGeometryValues(DetailsPageGeometry geometryValues)
{
var CM = MethodBase.GetCurrentMethod();
LogMethodBegin(CM);
try
{
WidgetGeometryList = geometryValues.WidgetGeometryList;
DetailsGeometry = geometryValues.DetailsCollectionGeometry;
}
catch (Exception E)
{
LogEntry($"Passed geometry values: {geometryValues}");
LogException(E);
}
finally
{
LogMethodEnd(CM);
}
}
public void SetPropertyValues(cDetailsPageData propertyValues)
{
var CM = MethodBase.GetCurrentMethod();
LogMethodBegin(CM);
try
{
DataProvider = propertyValues.DataProvider;
//Heading Properties
HeadingData = propertyValues.HeadingData;
//Widget Properties
WidgetDataList = propertyValues.WidgetData;
//Details Properties
TimeSinceLastRefresh = propertyValues.TimeSinceLastRefresh;
ShownValueColumnsCount = propertyValues.ShownValueColumnsCount;
DetailsDataList = propertyValues.DataHistoryList;
//Menu Properties
MenuBarData = propertyValues.MenuBarData;
}
catch (Exception E)
{
LogEntry($"Passed history values: {propertyValues}");
LogException(E);
}
finally
{
LogMethodEnd(CM);
}
}
#endregion
#endregion
}
}