Commit de747bce authored by Francesco Carraro's avatar Francesco Carraro
Browse files

adding zoom tools

parent a41c8a11
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ using INAF.Apps.Uwp.SLabDataManager.Charts;
using INAF.Apps.Uwp.SLabDataManager.Charts.Containers;
using INAF.Apps.Uwp.SLabDataManager.Helpers;
using INAF.Apps.Uwp.SLabDataManager.Helpers.RemoteOperations;
using INAF.Apps.Uwp.SLabDataManager.Helpers.UI;
using INAF.Apps.Uwp.SLabDataManager.Helpers.UI.Chart;
using INAF.Apps.Uwp.SLabDataManager.Helpers.UI.Chart.ProcessingHelpers;
using INAF.Apps.Uwp.SLabDataManager.Helpers.XmlReaders;
@@ -140,6 +141,7 @@ namespace INAF.Apps.Uwp.SLabDataManager
                .AddSingleton<WorkingFoldersContainer>()
                .AddSingleton<WorkingItemsModel>()
                /* transient */
                .AddTransient<AnimationsHelper>()
                .AddTransient<AuthenticationManager>()
                .AddTransient<ConfigReader>()
                .AddTransient<ContinuumRemovalHelper>()
+57 −18
Original line number Diff line number Diff line
@@ -41,6 +41,13 @@ namespace INAF.Apps.Uwp.SLabDataManager.Charts.Containers
        }

        #region properties
        private bool areBoundariesChanged;
        public bool AreBoundariesChanged
        {
            get { return areBoundariesChanged; }
            set { SetProperty(ref areBoundariesChanged, value); }
        }

        protected bool isAnySummaryUpdated;
        public bool IsAnySummaryUpdated
        {
@@ -117,6 +124,32 @@ namespace INAF.Apps.Uwp.SLabDataManager.Charts.Containers
        #endregion
        #endregion

        #region raise methods
        public void raiseAreBoundariesChanged()
        {
            AreBoundariesChanged = true;
            areBoundariesChanged = false;// trick to enable for the next added spectrum
        }

        public void raiseIsAnySpectrumLoaded()
        {
            IsAnySpectrumLoaded = true;
            isAnySpectrumLoaded = false;// trick to enable for the next added spectrum
        }

        public void raiseIsAnySpectrumRemoved()
        {
            IsAnySpectrumRemoved = true;
            isAnySpectrumRemoved = false;// trick to enable for the next added spectrum
        }

        public void raiseIsAnySpectrumUpdated()
        {
            IsAnySpectrumUpdated = true;
            isAnySpectrumUpdated = false;// trick to enable for the next added spectrum
        }
        #endregion

        protected async Task<(double xMin, double xMax, double yMin, double yMax)> getSpectrumAxesBoundariesAsync()
        {
            List<Task> tasks = new List<Task>();
@@ -180,6 +213,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Charts.Containers

        public virtual void init()
        {
            AreBoundariesChanged = false;
            IsAnySpectrumLoaded = false;

            XAxisMajorStepValues = new List<double>(2);
@@ -187,24 +221,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.Charts.Containers
            XAxisMajorStepValues.Add(Constants.Constants.X_AXIS_MAJOR_STEP_100);
        }

        public void raiseIsAnySpectrumLoaded()
        {
            IsAnySpectrumLoaded = true;
            isAnySpectrumLoaded = false;// trick to enable for the next added spectrum
        }

        public void raiseIsAnySpectrumRemoved()
        {
            IsAnySpectrumRemoved = true;
            isAnySpectrumRemoved = false;// trick to enable for the next added spectrum
        }

        public void raiseIsAnySpectrumUpdated()
        {
            IsAnySpectrumUpdated = true;
            isAnySpectrumUpdated = false;// trick to enable for the next added spectrum
        }

        public async Task setBoundariesAsync()
        {
            (double xMin, double xMax, double yMin, double yMax) result = await getSpectrumAxesBoundariesAsync();
@@ -218,6 +234,20 @@ namespace INAF.Apps.Uwp.SLabDataManager.Charts.Containers
            YAxisTitle = title;
        }

        public void moveBoundariesToLeft(double value)
        {
            XAxisBoundaries.changeMinValue(value);
            XAxisBoundaries.changeMaxValue(value);
            raiseAreBoundariesChanged();
        }

        public void moveBoundariesToRight(double value)
        {
            XAxisBoundaries.changeMinValue(value);
            XAxisBoundaries.changeMaxValue(value);
            raiseAreBoundariesChanged();
        }

        public async Task updateBoundariesAsync()
        {
            (double xMin, double xMax, double yMin, double yMax) result = await getSpectrumAxesBoundariesAsync();
@@ -226,6 +256,15 @@ namespace INAF.Apps.Uwp.SLabDataManager.Charts.Containers
            YAxisBoundaries.updateAxisBoundaries(result.yMin, result.yMax);
        }

        public void updateBoundaries(double xMin, double xMax, double yMin, double yMax)
        {
            XAxisBoundaries.updateAxisBoundaries(xMin, xMax);
            YAxisBoundaries.updateAxisBoundaries(yMin, yMax);

            /* warn ChartBaseViewModel about update of chart boundaries */
            raiseAreBoundariesChanged();
        }

        public virtual Task addOrUpdateSpectrumAsync(SpectrumModel spectrum)
        {
            throw new NotImplementedException();
+19 −1
Original line number Diff line number Diff line
using INAF.Apps.Uwp.SLabDataManager.Charts.Containers;
using INAF.Apps.Uwp.SLabDataManager.Helpers;
using INAF.Apps.Uwp.SLabDataManager.Models;
using INAF.Apps.Uwp.SLabDataManager.ViewModels;
using INAF.Libraries.NetStandard.Extensions;
using INAF.Libraries.NetStandard.ScienceModels.Extensions;
using Microsoft.Toolkit.Mvvm.DependencyInjection;
@@ -270,11 +271,28 @@ namespace INAF.Apps.Uwp.SLabDataManager.Converters
        }
    }

    public sealed class ZoomIconConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            var viewModel = Ioc.Default.GetRequiredService<ChartViewModel>();
            if (viewModel.IsZoomDrawRegionRequested)
                return "\uE8A3";
            else
                return "\uE71E";
        }

        public object ConvertBack(object value, Type targetType, object parameter, string language)
        {
            throw new NotImplementedException();
        }
    }

    public sealed class XScaleLabelFormatConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            return "{0:G}"; ;
            return "{0:G}";
        }

        public object ConvertBack(object value, Type targetType, object parameter, string language)
+1 −1
Original line number Diff line number Diff line
@@ -324,7 +324,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions
            return string.Join(string.Empty, "color", type.ToString().ToLowerInvariant());
        }

        public static SegmentFitModel ToSegmentFitModel(this INAF.Apps.Uwp.SLabDataManager.Models.Fit.SegmentFitModel segment)
        public static SegmentFitModel ToSegmentFitModel(this Models.Fit.SegmentFitModel segment)
        {
            return new SegmentFitModel(segment.Id,
                                       segment.SelectedFitMethod.MethodName,
+66 −0
Original line number Diff line number Diff line
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Media.Animation;

namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI
{
    public class AnimationsHelper
    {
        public static Storyboard GetExpandWidthStoryboard(FrameworkElement frameworkElement,
                                                          double refWidth)
        {
            DoubleAnimation expandWidthAnimation = new DoubleAnimation()
            {
                From = frameworkElement.Width,
                To = refWidth,
                Duration = TimeSpan.FromMilliseconds(300),
                EnableDependentAnimation = true,
                EasingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut }
            };
            Storyboard.SetTarget(expandWidthAnimation, frameworkElement);
            Storyboard.SetTargetProperty(expandWidthAnimation, "Width");

            Storyboard storyboard = new Storyboard();
            storyboard.Children.Add(expandWidthAnimation);
            return storyboard;
        }

        public static Storyboard GetShrinkWidthStoryboard(FrameworkElement frameworkElement,
                                                          double destWidth)
        {
            DoubleAnimation shrinkWidthAnimation = new DoubleAnimation()
            {
                From = frameworkElement.Width,
                To = destWidth,
                Duration = TimeSpan.FromMilliseconds(300),
                EnableDependentAnimation = true,
                EasingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut }
            };
            Storyboard.SetTarget(shrinkWidthAnimation, frameworkElement);
            Storyboard.SetTargetProperty(shrinkWidthAnimation, "Width");

            Storyboard storyboard = new Storyboard();
            storyboard.Children.Add(shrinkWidthAnimation);
            return storyboard;
        }

        public static Storyboard GetTranslateXAnimation(FrameworkElement frameworkElement,
                                                        double from)
        {
            DoubleAnimation translateAnimation = new DoubleAnimation()
            {
                From = from,
                To = 0,
                Duration = TimeSpan.FromMilliseconds(300),
                EnableDependentAnimation = true,
                EasingFunction = new CubicEase() { EasingMode = EasingMode.EaseIn }
            };
            Storyboard.SetTarget(translateAnimation, frameworkElement);
            Storyboard.SetTargetProperty(translateAnimation, "(UIElement.RenderTransform).(TranslateTransform.X)");

            Storyboard storyboard = new Storyboard();
            storyboard.Children.Add(translateAnimation);
            return storyboard;
        }
    }
}
Loading