using InABox.Configuration; using InABox.Core; using InABox.Wpf.Dashboard; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace PRSDesktop; public class CustomDashboardProperties : IDashboardProperties, IUserConfigurationSettings { public Guid DashboardID { get; set; } } public class CustomDashboardElement : DFLayoutElement { protected override string GetDescription() { var customDashboard = new GlobalConfiguration().Load() .CustomDashboards.FirstOrDefault(x => x.ID == Properties.DashboardID); return customDashboard?.Name ?? "Unknown Dashboard"; } } /// /// Interaction logic for CustomDashboard.xaml /// public partial class CustomDashboardWidget : UserControl, IDashboardWidget { public CustomDashboardWidget() { InitializeComponent(); } public CustomDashboardProperties Properties { get; set; } = null!; public event LoadSettings? LoadSettings; public event SaveSettings? SaveSettings; private DynamicDashboardDataComponent? DataComponent; private IDynamicDashboardDataPresenter? DataPresenter; public void Setup() { var customDashboard = new GlobalConfiguration().Load() .CustomDashboards.FirstOrDefault(x => x.ID == Properties.DashboardID); if(customDashboard is null) { return; } var dashboard = DynamicDashboardUtils.Deserialize(customDashboard.Layout); if(dashboard is null) { return; } DataComponent = dashboard.DataComponent; DataPresenter = dashboard.DataPresenter; if(DataPresenter is null) { return; } DataPresenter.IsPreview = false; DataPresenter.DataComponent = DataComponent; var control = DataPresenter.Setup(); ContentControl.Content = control; } public void Refresh() { var data = DataComponent?.RunQuery(); if (data is null) return; DataPresenter?.Refresh(data); } public void Shutdown(CancelEventArgs? cancel) { DataPresenter?.Shutdown(cancel); } }