Loading INAF.Apps.Uwp.SLabDataManager/Models/AlignmentConfigModel.cs +6 −5 Original line number Diff line number Diff line using INAF.Libraries.NetStandard.ScienceModels; using INAF.Libraries.NetStandard.ScienceModels.Spectra; using System.Threading.Tasks; using static INAF.Libraries.NetStandard.ScienceModels.Enums.Enums; namespace INAF.Apps.Uwp.SLabDataManager.Models Loading Loading @@ -66,12 +67,12 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models } #endregion public void switchToMeasureUnit(WavelengthMeasureUnit newMeasureUnit) public async Task switchToMeasureUnitAsync(WavelengthMeasureUnit newMeasureUnit) { SeparatorWavelength0.switchToMeasureUnit(newMeasureUnit); SeparatorWavelength1.switchToMeasureUnit(newMeasureUnit); SeparatorWavelength2.switchToMeasureUnit(newMeasureUnit); SeparatorWavelength3.switchToMeasureUnit(newMeasureUnit); await SeparatorWavelength0.switchToMeasureUnitAsync(newMeasureUnit); await SeparatorWavelength1.switchToMeasureUnitAsync(newMeasureUnit); await SeparatorWavelength2.switchToMeasureUnitAsync(newMeasureUnit); await SeparatorWavelength3.switchToMeasureUnitAsync(newMeasureUnit); } } } INAF.Apps.Uwp.SLabDataManager/Models/WorkingItemsModel.cs +2 −2 Original line number Diff line number Diff line Loading @@ -109,11 +109,11 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models SpectrumChartOptions.PropertyChanged += SpectrumChartOptions_PropertyChanged; } private void SpectrumChartOptions_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) private async void SpectrumChartOptions_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName.Equals(nameof(SpectrumChartOptions.SelectedWavelengthMeasureUnit))) { AlignmentConfig.switchToMeasureUnit(SpectrumChartOptions.SelectedWavelengthMeasureUnit); await AlignmentConfig.switchToMeasureUnitAsync(SpectrumChartOptions.SelectedWavelengthMeasureUnit); } } #endregion Loading INAF.Apps.Uwp.SLabDataManager/ViewModels/ChartViewModel.cs +30 −5 Original line number Diff line number Diff line using INAF.Apps.Uwp.Charts; using INAF.Apps.Uwp.SLabDataManager.Helpers.ConfigHelpers; using INAF.Apps.Uwp.SLabDataManager.Helpers.ConfigHelpers; using INAF.Apps.Uwp.SLabDataManager.Models; using INAF.Libraries.Uwp.Logging; using INAF.Libraries.Uwp.Settings; Loading @@ -16,7 +15,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels public ChartViewModel(IServiceProvider serviceProvider, SettingsHelper settingsHelper, StorageItemsAccessHelper storageItemsAccessHelper, AlignmentConfigModel alignmentConfig, Logger logger) : base(serviceProvider, settingsHelper, storageItemsAccessHelper, Loading @@ -27,11 +25,22 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels public void OnNavigatedTo(NavigationEventArgs e) { initAsync(); /* add listener for being warned of changed unit of measure by visualization flyout */ WorkingItems.SpectrumChartOptions.PropertyChanged += SpectrumChartOptions_PropertyChanged; } public void OnNavigatingFrom(NavigatingCancelEventArgs e) private void SpectrumChartOptions_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { /* warn UI about change */ IsUnitOfMeasureChanged = true; /*reset to false the private property to enable the next change */ isUnitOfMeasureChanged = false; } public void OnNavigatingFrom(NavigatingCancelEventArgs e) { /* remove listener for being warned of changed unit of measure by visualization flyout */ WorkingItems.SpectrumChartOptions.PropertyChanged -= SpectrumChartOptions_PropertyChanged; } #endregion Loading @@ -42,10 +51,25 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels get { return isLoading; } set { SetProperty(ref isLoading, value); } } private bool isReady; public bool IsReady { get { return isReady; } set { SetProperty(ref isReady, value); } } private bool isUnitOfMeasureChanged; public bool IsUnitOfMeasureChanged { get { return isUnitOfMeasureChanged; } set { SetProperty(ref isUnitOfMeasureChanged, value); } } #endregion private async void initAsync() { IsReady = false; IsLoading = true; await Task.Run(async () => Loading @@ -57,9 +81,10 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels /* switch unit of measure for alignment options, if needed */ if (WorkingItems.SpectrumChartOptions.SelectedWavelengthMeasureUnit != Libraries.NetStandard.ScienceModels.Enums.Enums.WavelengthMeasureUnit.Nanometers) WorkingItems.AlignmentConfig.switchToMeasureUnit(WorkingItems.SpectrumChartOptions.SelectedWavelengthMeasureUnit); WorkingItems.AlignmentConfig.switchToMeasureUnitAsync(WorkingItems.SpectrumChartOptions.SelectedWavelengthMeasureUnit); IsLoading = false; IsReady = true; } } } INAF.Apps.Uwp.SLabDataManager/Views/ChartPage.xaml +37 −32 Original line number Diff line number Diff line Loading @@ -136,6 +136,11 @@ <Flyout x:Name="AlignmentOptionsFlyout" x:Key="AlignmentOptionsFlyout" Placement="BottomEdgeAlignedRight"> <Flyout.FlyoutPresenterStyle> <Style TargetType="FlyoutPresenter"> <Setter Property="Width" Value="500" /> </Style> </Flyout.FlyoutPresenterStyle> <Grid x:Name="gridAlignmentOptionsFlyout" Width="500"> <Grid.RowDefinitions> Loading @@ -145,33 +150,33 @@ <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <!-- WAVELENGTH 0 --> <userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.Value, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.MinValue, Mode=TwoWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.MaxValue, Mode=TwoWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.StepValue, Mode=TwoWay}" Grid.Row="0" /> <!--<userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.CurrentValue, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.MinValue, Mode=OneWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.MaxValue, Mode=OneWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.StepValue, Mode=OneWay}" Grid.Row="0" />--> <!-- WAVELENGTH 1 --> <userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.Value, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.MinValue, Mode=TwoWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.MaxValue, Mode=TwoWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.StepValue, Mode=TwoWay}" Grid.Row="1" /> <!--<userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.CurrentValue, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.MinValue, Mode=OneWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.MaxValue, Mode=OneWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.StepValue, Mode=OneWay}" Grid.Row="1" />--> <!-- WAVELENGTH 2 --> <userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.Value, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.MinValue, Mode=TwoWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.MaxValue, Mode=TwoWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.StepValue, Mode=TwoWay}" Grid.Row="2" /> <!--<userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.CurrentValue, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.MinValue, Mode=OneWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.MaxValue, Mode=OneWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.StepValue, Mode=OneWay}" Grid.Row="2" />--> <!-- WAVELENGTH 3 --> <userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.Value, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.MinValue, Mode=TwoWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.MaxValue, Mode=TwoWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.StepValue, Mode=TwoWay}" Grid.Row="3" /> <!--<userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.CurrentValue, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.MinValue, Mode=OneWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.MaxValue, Mode=OneWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.StepValue, Mode=OneWay}" Grid.Row="3" />--> </Grid> </Flyout> </Page.Resources> Loading Loading @@ -330,23 +335,23 @@ <!-- ANNOTATIONS --> <telerikChart:RadCartesianChart.Annotations> <telerikChart:CartesianGridLineAnnotation Axis="{Binding ElementName=spectrumChart, Path=HorizontalAxis}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.Value, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.Value, Mode=OneWay}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.CurrentValue, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.CurrentValue, Mode=OneWay}" Stroke="LightGreen" StrokeThickness="2"/> <telerikChart:CartesianGridLineAnnotation Axis="{Binding ElementName=spectrumChart, Path=HorizontalAxis}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.Value, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.Value, Mode=OneWay}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.CurrentValue, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.CurrentValue, Mode=OneWay}" Stroke="LightGreen" StrokeThickness="2"/> <telerikChart:CartesianGridLineAnnotation Axis="{Binding ElementName=spectrumChart, Path=HorizontalAxis}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.Value, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.Value, Mode=OneWay}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.CurrentValue, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.CurrentValue, Mode=OneWay}" Stroke="LightGreen" StrokeThickness="2"/> <telerikChart:CartesianGridLineAnnotation Axis="{Binding ElementName=spectrumChart, Path=HorizontalAxis}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.Value, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.Value, Mode=OneWay}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.CurrentValue, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.CurrentValue, Mode=OneWay}" Stroke="LightGreen" StrokeThickness="2"/> </telerikChart:RadCartesianChart.Annotations> Loading INAF.Apps.Uwp.SLabDataManager/Views/ChartPage.xaml.cs +64 −0 Original line number Diff line number Diff line using INAF.Apps.Uwp.SLabDataManager.ViewModels; using INAF.Apps.Uwp.SLabDataManager.Views.UserControls; using INAF.Libraries.NetStandard.ScienceModels.Spectra; using Microsoft.Toolkit.Mvvm.DependencyInjection; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Navigation; namespace INAF.Apps.Uwp.SLabDataManager.Views Loading @@ -20,11 +24,71 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views { //ViewModel.setPage(this); ViewModel.OnNavigatedTo(e); ViewModel.PropertyChanged += ViewModel_PropertyChanged; } private void ViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { switch (e.PropertyName) { case nameof(ViewModel.IsReady): if (ViewModel.IsReady) addSeparatorWavelengthsUserControls(); break; case nameof(ViewModel.IsUnitOfMeasureChanged): if (ViewModel.IsUnitOfMeasureChanged) { removeSeparatorWavelengthsUserControls(); addSeparatorWavelengthsUserControls(); } break; default: break; } } protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) { ViewModel.OnNavigatingFrom(e); ViewModel.PropertyChanged -= ViewModel_PropertyChanged; } #region alignment options flyout private void addSeparatorWavelengthsUserControls() { addSeparatorWavelengthUserControl(AlignmentOptionsFlyout, ViewModel.WorkingItems.AlignmentConfig.SeparatorWavelength0, 0); addSeparatorWavelengthUserControl(AlignmentOptionsFlyout, ViewModel.WorkingItems.AlignmentConfig.SeparatorWavelength1, 1); addSeparatorWavelengthUserControl(AlignmentOptionsFlyout, ViewModel.WorkingItems.AlignmentConfig.SeparatorWavelength2, 2); addSeparatorWavelengthUserControl(AlignmentOptionsFlyout, ViewModel.WorkingItems.AlignmentConfig.SeparatorWavelength3, 3); } private void addSeparatorWavelengthUserControl(Flyout flyout, WavelengthModel wavelengthModel, int rowIndex) { try { Grid grid = flyout.Content as Grid; var swuc = new SeparatorWavelengthUserControl(); swuc.SetBinding(SeparatorWavelengthUserControl.SliderLabelProperty, new Binding() { Path = new PropertyPath("Label"), Source = wavelengthModel, Mode = BindingMode.OneWay }); swuc.SetBinding(SeparatorWavelengthUserControl.MinValueProperty, new Binding() { Path = new PropertyPath("MinValue"), Source = wavelengthModel, Mode = BindingMode.OneWay }); swuc.SetBinding(SeparatorWavelengthUserControl.CurrentValueProperty, new Binding() { Path = new PropertyPath("CurrentValue"), Source = wavelengthModel, Mode = BindingMode.TwoWay }); swuc.SetBinding(SeparatorWavelengthUserControl.MaxValueProperty, new Binding() { Path = new PropertyPath("MaxValue"), Source = wavelengthModel, Mode = BindingMode.OneWay }); swuc.SetBinding(SeparatorWavelengthUserControl.StepValueProperty, new Binding() { Path = new PropertyPath("StepValue"), Source = wavelengthModel, Mode = BindingMode.OneWay }); grid.Children.Add(swuc); Grid.SetRow(swuc, rowIndex); } catch (System.Exception ex) { System.Diagnostics.Debug.WriteLine($"ex: {ex.Message}"); } } private void removeSeparatorWavelengthsUserControls() { Grid grid = AlignmentOptionsFlyout.Content as Grid; grid.Children.Clear(); } #endregion } } Loading
INAF.Apps.Uwp.SLabDataManager/Models/AlignmentConfigModel.cs +6 −5 Original line number Diff line number Diff line using INAF.Libraries.NetStandard.ScienceModels; using INAF.Libraries.NetStandard.ScienceModels.Spectra; using System.Threading.Tasks; using static INAF.Libraries.NetStandard.ScienceModels.Enums.Enums; namespace INAF.Apps.Uwp.SLabDataManager.Models Loading Loading @@ -66,12 +67,12 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models } #endregion public void switchToMeasureUnit(WavelengthMeasureUnit newMeasureUnit) public async Task switchToMeasureUnitAsync(WavelengthMeasureUnit newMeasureUnit) { SeparatorWavelength0.switchToMeasureUnit(newMeasureUnit); SeparatorWavelength1.switchToMeasureUnit(newMeasureUnit); SeparatorWavelength2.switchToMeasureUnit(newMeasureUnit); SeparatorWavelength3.switchToMeasureUnit(newMeasureUnit); await SeparatorWavelength0.switchToMeasureUnitAsync(newMeasureUnit); await SeparatorWavelength1.switchToMeasureUnitAsync(newMeasureUnit); await SeparatorWavelength2.switchToMeasureUnitAsync(newMeasureUnit); await SeparatorWavelength3.switchToMeasureUnitAsync(newMeasureUnit); } } }
INAF.Apps.Uwp.SLabDataManager/Models/WorkingItemsModel.cs +2 −2 Original line number Diff line number Diff line Loading @@ -109,11 +109,11 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models SpectrumChartOptions.PropertyChanged += SpectrumChartOptions_PropertyChanged; } private void SpectrumChartOptions_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) private async void SpectrumChartOptions_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName.Equals(nameof(SpectrumChartOptions.SelectedWavelengthMeasureUnit))) { AlignmentConfig.switchToMeasureUnit(SpectrumChartOptions.SelectedWavelengthMeasureUnit); await AlignmentConfig.switchToMeasureUnitAsync(SpectrumChartOptions.SelectedWavelengthMeasureUnit); } } #endregion Loading
INAF.Apps.Uwp.SLabDataManager/ViewModels/ChartViewModel.cs +30 −5 Original line number Diff line number Diff line using INAF.Apps.Uwp.Charts; using INAF.Apps.Uwp.SLabDataManager.Helpers.ConfigHelpers; using INAF.Apps.Uwp.SLabDataManager.Helpers.ConfigHelpers; using INAF.Apps.Uwp.SLabDataManager.Models; using INAF.Libraries.Uwp.Logging; using INAF.Libraries.Uwp.Settings; Loading @@ -16,7 +15,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels public ChartViewModel(IServiceProvider serviceProvider, SettingsHelper settingsHelper, StorageItemsAccessHelper storageItemsAccessHelper, AlignmentConfigModel alignmentConfig, Logger logger) : base(serviceProvider, settingsHelper, storageItemsAccessHelper, Loading @@ -27,11 +25,22 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels public void OnNavigatedTo(NavigationEventArgs e) { initAsync(); /* add listener for being warned of changed unit of measure by visualization flyout */ WorkingItems.SpectrumChartOptions.PropertyChanged += SpectrumChartOptions_PropertyChanged; } public void OnNavigatingFrom(NavigatingCancelEventArgs e) private void SpectrumChartOptions_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { /* warn UI about change */ IsUnitOfMeasureChanged = true; /*reset to false the private property to enable the next change */ isUnitOfMeasureChanged = false; } public void OnNavigatingFrom(NavigatingCancelEventArgs e) { /* remove listener for being warned of changed unit of measure by visualization flyout */ WorkingItems.SpectrumChartOptions.PropertyChanged -= SpectrumChartOptions_PropertyChanged; } #endregion Loading @@ -42,10 +51,25 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels get { return isLoading; } set { SetProperty(ref isLoading, value); } } private bool isReady; public bool IsReady { get { return isReady; } set { SetProperty(ref isReady, value); } } private bool isUnitOfMeasureChanged; public bool IsUnitOfMeasureChanged { get { return isUnitOfMeasureChanged; } set { SetProperty(ref isUnitOfMeasureChanged, value); } } #endregion private async void initAsync() { IsReady = false; IsLoading = true; await Task.Run(async () => Loading @@ -57,9 +81,10 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels /* switch unit of measure for alignment options, if needed */ if (WorkingItems.SpectrumChartOptions.SelectedWavelengthMeasureUnit != Libraries.NetStandard.ScienceModels.Enums.Enums.WavelengthMeasureUnit.Nanometers) WorkingItems.AlignmentConfig.switchToMeasureUnit(WorkingItems.SpectrumChartOptions.SelectedWavelengthMeasureUnit); WorkingItems.AlignmentConfig.switchToMeasureUnitAsync(WorkingItems.SpectrumChartOptions.SelectedWavelengthMeasureUnit); IsLoading = false; IsReady = true; } } }
INAF.Apps.Uwp.SLabDataManager/Views/ChartPage.xaml +37 −32 Original line number Diff line number Diff line Loading @@ -136,6 +136,11 @@ <Flyout x:Name="AlignmentOptionsFlyout" x:Key="AlignmentOptionsFlyout" Placement="BottomEdgeAlignedRight"> <Flyout.FlyoutPresenterStyle> <Style TargetType="FlyoutPresenter"> <Setter Property="Width" Value="500" /> </Style> </Flyout.FlyoutPresenterStyle> <Grid x:Name="gridAlignmentOptionsFlyout" Width="500"> <Grid.RowDefinitions> Loading @@ -145,33 +150,33 @@ <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <!-- WAVELENGTH 0 --> <userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.Value, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.MinValue, Mode=TwoWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.MaxValue, Mode=TwoWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.StepValue, Mode=TwoWay}" Grid.Row="0" /> <!--<userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.CurrentValue, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.MinValue, Mode=OneWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.MaxValue, Mode=OneWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.StepValue, Mode=OneWay}" Grid.Row="0" />--> <!-- WAVELENGTH 1 --> <userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.Value, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.MinValue, Mode=TwoWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.MaxValue, Mode=TwoWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.StepValue, Mode=TwoWay}" Grid.Row="1" /> <!--<userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.CurrentValue, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.MinValue, Mode=OneWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.MaxValue, Mode=OneWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.StepValue, Mode=OneWay}" Grid.Row="1" />--> <!-- WAVELENGTH 2 --> <userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.Value, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.MinValue, Mode=TwoWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.MaxValue, Mode=TwoWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.StepValue, Mode=TwoWay}" Grid.Row="2" /> <!--<userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.CurrentValue, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.MinValue, Mode=OneWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.MaxValue, Mode=OneWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.StepValue, Mode=OneWay}" Grid.Row="2" />--> <!-- WAVELENGTH 3 --> <userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.Value, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.MinValue, Mode=TwoWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.MaxValue, Mode=TwoWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.StepValue, Mode=TwoWay}" Grid.Row="3" /> <!--<userControls:SeparatorWavelengthUserControl SliderLabel="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.Label, Mode=OneWay}" CurrentValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.CurrentValue, Mode=TwoWay}" MinValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.MinValue, Mode=OneWay}" MaxValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.MaxValue, Mode=OneWay}" StepValue="{Binding Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.StepValue, Mode=OneWay}" Grid.Row="3" />--> </Grid> </Flyout> </Page.Resources> Loading Loading @@ -330,23 +335,23 @@ <!-- ANNOTATIONS --> <telerikChart:RadCartesianChart.Annotations> <telerikChart:CartesianGridLineAnnotation Axis="{Binding ElementName=spectrumChart, Path=HorizontalAxis}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.Value, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.Value, Mode=OneWay}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.CurrentValue, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength0.CurrentValue, Mode=OneWay}" Stroke="LightGreen" StrokeThickness="2"/> <telerikChart:CartesianGridLineAnnotation Axis="{Binding ElementName=spectrumChart, Path=HorizontalAxis}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.Value, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.Value, Mode=OneWay}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.CurrentValue, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength1.CurrentValue, Mode=OneWay}" Stroke="LightGreen" StrokeThickness="2"/> <telerikChart:CartesianGridLineAnnotation Axis="{Binding ElementName=spectrumChart, Path=HorizontalAxis}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.Value, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.Value, Mode=OneWay}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.CurrentValue, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength2.CurrentValue, Mode=OneWay}" Stroke="LightGreen" StrokeThickness="2"/> <telerikChart:CartesianGridLineAnnotation Axis="{Binding ElementName=spectrumChart, Path=HorizontalAxis}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.Value, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.Value, Mode=OneWay}" Value="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.CurrentValue, Mode=OneWay}" Label="{Binding ElementName=Self, Path=DataContext.WorkingItems.AlignmentConfig.SeparatorWavelength3.CurrentValue, Mode=OneWay}" Stroke="LightGreen" StrokeThickness="2"/> </telerikChart:RadCartesianChart.Annotations> Loading
INAF.Apps.Uwp.SLabDataManager/Views/ChartPage.xaml.cs +64 −0 Original line number Diff line number Diff line using INAF.Apps.Uwp.SLabDataManager.ViewModels; using INAF.Apps.Uwp.SLabDataManager.Views.UserControls; using INAF.Libraries.NetStandard.ScienceModels.Spectra; using Microsoft.Toolkit.Mvvm.DependencyInjection; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Navigation; namespace INAF.Apps.Uwp.SLabDataManager.Views Loading @@ -20,11 +24,71 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views { //ViewModel.setPage(this); ViewModel.OnNavigatedTo(e); ViewModel.PropertyChanged += ViewModel_PropertyChanged; } private void ViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { switch (e.PropertyName) { case nameof(ViewModel.IsReady): if (ViewModel.IsReady) addSeparatorWavelengthsUserControls(); break; case nameof(ViewModel.IsUnitOfMeasureChanged): if (ViewModel.IsUnitOfMeasureChanged) { removeSeparatorWavelengthsUserControls(); addSeparatorWavelengthsUserControls(); } break; default: break; } } protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) { ViewModel.OnNavigatingFrom(e); ViewModel.PropertyChanged -= ViewModel_PropertyChanged; } #region alignment options flyout private void addSeparatorWavelengthsUserControls() { addSeparatorWavelengthUserControl(AlignmentOptionsFlyout, ViewModel.WorkingItems.AlignmentConfig.SeparatorWavelength0, 0); addSeparatorWavelengthUserControl(AlignmentOptionsFlyout, ViewModel.WorkingItems.AlignmentConfig.SeparatorWavelength1, 1); addSeparatorWavelengthUserControl(AlignmentOptionsFlyout, ViewModel.WorkingItems.AlignmentConfig.SeparatorWavelength2, 2); addSeparatorWavelengthUserControl(AlignmentOptionsFlyout, ViewModel.WorkingItems.AlignmentConfig.SeparatorWavelength3, 3); } private void addSeparatorWavelengthUserControl(Flyout flyout, WavelengthModel wavelengthModel, int rowIndex) { try { Grid grid = flyout.Content as Grid; var swuc = new SeparatorWavelengthUserControl(); swuc.SetBinding(SeparatorWavelengthUserControl.SliderLabelProperty, new Binding() { Path = new PropertyPath("Label"), Source = wavelengthModel, Mode = BindingMode.OneWay }); swuc.SetBinding(SeparatorWavelengthUserControl.MinValueProperty, new Binding() { Path = new PropertyPath("MinValue"), Source = wavelengthModel, Mode = BindingMode.OneWay }); swuc.SetBinding(SeparatorWavelengthUserControl.CurrentValueProperty, new Binding() { Path = new PropertyPath("CurrentValue"), Source = wavelengthModel, Mode = BindingMode.TwoWay }); swuc.SetBinding(SeparatorWavelengthUserControl.MaxValueProperty, new Binding() { Path = new PropertyPath("MaxValue"), Source = wavelengthModel, Mode = BindingMode.OneWay }); swuc.SetBinding(SeparatorWavelengthUserControl.StepValueProperty, new Binding() { Path = new PropertyPath("StepValue"), Source = wavelengthModel, Mode = BindingMode.OneWay }); grid.Children.Add(swuc); Grid.SetRow(swuc, rowIndex); } catch (System.Exception ex) { System.Diagnostics.Debug.WriteLine($"ex: {ex.Message}"); } } private void removeSeparatorWavelengthsUserControls() { Grid grid = AlignmentOptionsFlyout.Content as Grid; grid.Children.Clear(); } #endregion } }