Commit 9bebb8d3 authored by Francesco Carraro's avatar Francesco Carraro
Browse files

fixes in materials management

parent ade3898f
Loading
Loading
Loading
Loading
+4 −10
Original line number Diff line number Diff line
using INAF.Libraries.NetStandard.SLabCommonModels.Models.SampleData;
using INAF.Libraries.NetStandard.SLabCommonModels.Models.SampleData.Containers;
using INAF.Libraries.NetStandard.SLabCommonModels.Models.SampleData.Interfaces;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using static INAF.Libraries.NetStandard.SLabCommonModels.Enums.Enums;

@@ -15,18 +13,14 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.RemoteOperations
            return await getAsync<MaterialsContainer>(RemoteOperationType.GetMeteorClasses, buildArgument("Text", text));
        }

        public async Task<List<IMaterialModel>> getMineralsAsync(string text)
        public async Task<List<MaterialBaseModel>> getMineralsAsync(string text)
        {
            return (await getAsync<List<MaterialBaseModel>>(RemoteOperationType.GetMinerals, buildArgument("Text", text)))
                    .Cast<IMaterialModel>()
                    .ToList();
            return await getAsync<List<MaterialBaseModel>>(RemoteOperationType.GetMinerals, buildArgument("Text", text));
        }

        public async Task<List<IMaterialModel>> getRocksAsync(string text)
        public async Task<List<MaterialBaseModel>> getRocksAsync(string text)
        {
            return (await getAsync<List<MaterialBaseModel>>(RemoteOperationType.GetRocks, buildArgument("Text", text)))?
                    .Cast<IMaterialModel>()
                    .ToList();
            return await getAsync<List<MaterialBaseModel>>(RemoteOperationType.GetRocks, buildArgument("Text", text));
        }
    }
}
+4 −4
Original line number Diff line number Diff line
@@ -159,7 +159,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI
        #endregion

        #region materials visibility
        public static Visibility GetSelectedMeteorClassVisibility(IMaterialModel selectedSuggestedMeteorClass, string parameter)
        public static Visibility GetSelectedMeteorClassVisibility(MaterialBaseModel selectedSuggestedMeteorClass, string parameter)
        {
            Visibility visibility = Visibility.Collapsed;

@@ -181,7 +181,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI
            return visibility;
        }

        public static Visibility GetSelectedMineralVisibility(IMaterialModel selectedSuggestedMineral, MineralsSelectionType MineralsSelectionType, string parameter)
        public static Visibility GetSelectedMineralVisibility(MaterialBaseModel selectedSuggestedMineral, MineralsSelectionType MineralsSelectionType, string parameter)
        {
            Visibility visibility = Visibility.Collapsed;

@@ -210,7 +210,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI
            return visibility;
        }

        public static Visibility GetSelectedMineralsVisibility(ObservableCollection<IMaterialModel> selectedSuggestedMinerals, MineralsSelectionType MineralsSelectionType, string parameter)
        public static Visibility GetSelectedMineralsVisibility(ObservableCollection<MaterialBaseModel> selectedSuggestedMinerals, MineralsSelectionType MineralsSelectionType, string parameter)
        {
            Visibility visibility = Visibility.Collapsed;

@@ -239,7 +239,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI
            return visibility;
        }

        public static Visibility GetSelectedRockVisibility(IMaterialModel selectedSuggestedRock, string parameter)
        public static Visibility GetSelectedRockVisibility(MaterialBaseModel selectedSuggestedRock, string parameter)
        {
            Visibility visibility = Visibility.Collapsed;

+19 −19
Original line number Diff line number Diff line
@@ -33,10 +33,10 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels
            set { SetProperty(ref isInfoUserControlShow, value); }
        }

        private IMaterialModel SelectedMineralForDeleting { get; set; }
        private MaterialBaseModel SelectedMineralForDeleting { get; set; }
        #endregion

        public void askDeleteSelectedMineral(IMaterialModel item)
        public void askDeleteSelectedMineral(MaterialBaseModel item)
        {
            SelectedMineralForDeleting = item;

@@ -68,11 +68,11 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels
        //    InfoSampleDataViewModel = await userControlsViewModelFactory.initSampleDataViewModelAsync();
        //}

        private (bool isOk, string warningMessage, IMaterialModel selectedRock) manageMeteorClassSelection()
        private (bool isOk, string warningMessage, MaterialBaseModel selectedRock) manageMeteorClassSelection()
        {
            bool isOk = true;
            string warningMessage = string.Empty;
            IMaterialModel selectedMeteorClass = MaterialBaseModel.CreateEmpty();
            MaterialBaseModel selectedMeteorClass = MaterialBaseModel.CreateEmpty();

            if (infoSampleDataViewModel.SelectedSuggestedMeteorClass != null)
                selectedMeteorClass = infoSampleDataViewModel.SelectedSuggestedMeteorClass;
@@ -80,14 +80,14 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels
            return (isOk, warningMessage, selectedMeteorClass);
        }

        private (bool isOk, string warningMessage, List<IMaterialModel> selectedMinerals) manageMineralsSelection()
        private (bool isOk, string warningMessage, List<MaterialBaseModel> selectedMinerals) manageMineralsSelection()
        {
            /*  check minerals selection */
            bool isOk = true;
            string warningMessage = string.Empty;

            /* create list of selected minerals */
            List<IMaterialModel> selectedMinerals = new List<IMaterialModel>();
            List<MaterialBaseModel> selectedMinerals = new List<MaterialBaseModel>();
            switch (infoSampleDataViewModel.MineralsSelectionType)
            {
                case Constants.Enums.MineralsSelectionType.SingleItem:
@@ -120,11 +120,11 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels
            return (isOk, warningMessage, selectedMinerals);
        }

        private (bool isOk, string warningMessage, IMaterialModel selectedRock) manageRockSelection()
        private (bool isOk, string warningMessage, MaterialBaseModel selectedRock) manageRockSelection()
        {
            bool isOk = true;
            string warningMessage = string.Empty;
            IMaterialModel selectedRock = MaterialBaseModel.CreateEmpty();
            MaterialBaseModel selectedRock = MaterialBaseModel.CreateEmpty();

            if (infoSampleDataViewModel.SelectedSuggestedRock != null)
                selectedRock = infoSampleDataViewModel.SelectedSuggestedRock;
@@ -144,30 +144,30 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels
            bool isOk = true;
            string warningMessage = string.Empty;

            List<IMaterialModel> selectedMinerals = new List<IMaterialModel>();
            IMaterialModel selectedRock = MaterialBaseModel.CreateEmpty();
            IMaterialModel selectedMeteorClass = MaterialBaseModel.CreateEmpty();
            List<MaterialBaseModel> selectedMinerals = new List<MaterialBaseModel>();
            MaterialBaseModel selectedRock = MaterialBaseModel.CreateEmpty();
            MaterialBaseModel selectedMeteorClass = MaterialBaseModel.CreateEmpty();

            /* check rock/minerals selection */
            switch (InfoSampleDataViewModel.SelectedMineralTypeValue.Value)
            {
                case "Monomineralic":
                case "Mix":
                    (bool isOk, string warningMessage, List<IMaterialModel> selectedMinerals) mineralsResult = manageMineralsSelection();
                    (bool isOk, string warningMessage, List<MaterialBaseModel> selectedMinerals) mineralsResult = manageMineralsSelection();
                    isOk = mineralsResult.isOk;
                    warningMessage = mineralsResult.warningMessage;
                    selectedMinerals.AddRange(mineralsResult.selectedMinerals);
                    break;

                case "Rock":
                    (bool isOk, string warningMessage, IMaterialModel selectedRock) rockResult = manageRockSelection();
                    (bool isOk, string warningMessage, MaterialBaseModel selectedRock) rockResult = manageRockSelection();
                    isOk = rockResult.isOk;
                    warningMessage = rockResult.warningMessage;
                    selectedRock = rockResult.selectedRock;
                    break;

                case "Extraterrestrial":
                    (bool isOk, string warningMessage, IMaterialModel selectedRock) meteorClassResult = manageMeteorClassSelection();
                    (bool isOk, string warningMessage, MaterialBaseModel selectedRock) meteorClassResult = manageMeteorClassSelection();
                    isOk = meteorClassResult.isOk;
                    warningMessage = meteorClassResult.warningMessage;
                    selectedMeteorClass = meteorClassResult.selectedRock;
@@ -215,9 +215,9 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels
                        GrainSizeTypeId = selectedGrainSizeTypeValueId,
                        OriginTypeId = InfoSampleDataViewModel.SelectedOriginTypeValue.Id,
                        MineralTypeId = InfoSampleDataViewModel.SelectedMineralTypeValue.Id,
                        Minerals = selectedMinerals.Cast<MaterialBaseModel>().ToList(),
                        Rock = (MaterialBaseModel)selectedRock,
                        MeteorClass = (MaterialBaseModel)selectedMeteorClass,
                        Minerals = selectedMinerals,
                        Rock = selectedRock,
                        MeteorClass = selectedMeteorClass,
                    },
                    SpectrumFileMeasurementInfoValues = new SpectrumFileMeasurementInfoValues()
                    {
@@ -295,8 +295,8 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels
        #endregion

        #region commands
        private RelayCommand<IMaterialModel> commandAskDeleteSelectedMineral;
        public RelayCommand<IMaterialModel> CommandAskDeleteSelectedMineral => commandAskDeleteSelectedMineral ?? (commandAskDeleteSelectedMineral = new RelayCommand<IMaterialModel>((item) => askDeleteSelectedMineral(item)));
        private RelayCommand<MaterialBaseModel> commandAskDeleteSelectedMineral;
        public RelayCommand<MaterialBaseModel> CommandAskDeleteSelectedMineral => commandAskDeleteSelectedMineral ?? (commandAskDeleteSelectedMineral = new RelayCommand<MaterialBaseModel>((item) => askDeleteSelectedMineral(item)));

        private RelayCommand commandDeleteSelectedMineral;
        public RelayCommand CommandDeleteSelectedMineral => commandDeleteSelectedMineral ?? (commandDeleteSelectedMineral = new RelayCommand(() => deleteSelectedMineral()));
+20 −20
Original line number Diff line number Diff line
@@ -216,50 +216,50 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels
            }
        }

        private IMaterialModel selectedSuggestedMeteorClass;
        public IMaterialModel SelectedSuggestedMeteorClass
        private MaterialBaseModel selectedSuggestedMeteorClass;
        public MaterialBaseModel SelectedSuggestedMeteorClass
        {
            get { return selectedSuggestedMeteorClass; }
            set { SetProperty(ref selectedSuggestedMeteorClass, value); }
        }

        private IMaterialModel selectedSuggestedMineral;
        public IMaterialModel SelectedSuggestedMineral
        private MaterialBaseModel selectedSuggestedMineral;
        public MaterialBaseModel SelectedSuggestedMineral
        {
            get { return selectedSuggestedMineral; }
            set { SetProperty(ref selectedSuggestedMineral, value); }
        }

        private ObservableCollection<IMaterialModel> selectedSuggestedMinerals;
        public ObservableCollection<IMaterialModel> SelectedSuggestedMinerals
        private ObservableCollection<MaterialBaseModel> selectedSuggestedMinerals;
        public ObservableCollection<MaterialBaseModel> SelectedSuggestedMinerals
        {
            get { return selectedSuggestedMinerals; }
            set { SetProperty(ref selectedSuggestedMinerals, value); }
        }

        private IMaterialModel selectedSuggestedRock;
        public IMaterialModel SelectedSuggestedRock
        private MaterialBaseModel selectedSuggestedRock;
        public MaterialBaseModel SelectedSuggestedRock
        {
            get { return selectedSuggestedRock; }
            set { SetProperty(ref selectedSuggestedRock, value); }
        }

        private List<IMaterialModel> suggestedMeteorClasses;
        public List<IMaterialModel> SuggestedMeteorClasses
        private List<MaterialBaseModel> suggestedMeteorClasses;
        public List<MaterialBaseModel> SuggestedMeteorClasses
        {
            get { return suggestedMeteorClasses; }
            set { SetProperty(ref suggestedMeteorClasses, value); }
        }

        private List<IMaterialModel> suggestedMinerals;
        public List<IMaterialModel> SuggestedMinerals
        private List<MaterialBaseModel> suggestedMinerals;
        public List<MaterialBaseModel> SuggestedMinerals
        {
            get { return suggestedMinerals; }
            set { SetProperty(ref suggestedMinerals, value); }
        }

        private List<IMaterialModel> suggestedRocks;
        public List<IMaterialModel> SuggestedRocks
        private List<MaterialBaseModel> suggestedRocks;
        public List<MaterialBaseModel> SuggestedRocks
        {
            get { return suggestedRocks; }
            set { SetProperty(ref suggestedRocks, value); }
@@ -381,12 +381,12 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels
            return await remoteOperationsManager.getMeteorClassesAsync(text);
        }

        public async Task<List<IMaterialModel>> loadMineralsSuggestionsAsync(string text)
        public async Task<List<MaterialBaseModel>> loadMineralsSuggestionsAsync(string text)
        {
            return await remoteOperationsManager.getMineralsAsync(text);
        }

        public async Task<List<IMaterialModel>> loadRocksSuggestionsAsync(string text)
        public async Task<List<MaterialBaseModel>> loadRocksSuggestionsAsync(string text)
        {
            return await remoteOperationsManager.getRocksAsync(text);
        }
@@ -399,7 +399,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels
            MineralsSelectionType = MineralsSelectionType.None;
            IsSelectedSuggestedMineralsEmpty = true;
            SelectedSuggestedMineral = null;
            SelectedSuggestedMinerals = new ObservableCollection<IMaterialModel>();
            SelectedSuggestedMinerals = new ObservableCollection<MaterialBaseModel>();

            SelectedSuggestedRock = null;
        }
@@ -492,7 +492,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels
            if (sampleDataSelectedValues.MineralTypeId == (int)MineralType.Monomineralic)
                SelectedSuggestedMineral = sampleDataSelectedValues.Minerals[0];
            else if (sampleDataSelectedValues.MineralTypeId == (int)MineralType.Mix)
                SelectedSuggestedMinerals = new ObservableCollection<IMaterialModel>(sampleDataSelectedValues.Minerals);
                SelectedSuggestedMinerals = new ObservableCollection<MaterialBaseModel>(sampleDataSelectedValues.Minerals);

            /* selected rock */
            if (sampleDataSelectedValues.Rock != null)
@@ -501,7 +501,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels
        #endregion

        #region selected minerals
        public void addSelectedSuggestedMineral(IMaterialModel mineral)
        public void addSelectedSuggestedMineral(MaterialBaseModel mineral)
        {
            if (SelectedSuggestedMinerals.Any(x => x.Id == mineral.Id))
                return;
@@ -530,7 +530,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels
            SuggestedRocks?.Clear();
        }

        public void deleteSelectedMineral(IMaterialModel mineral)
        public void deleteSelectedMineral(MaterialBaseModel mineral)
        {
            if (!SelectedSuggestedMinerals.Any(x => x.Id == mineral.Id))
                return;
+7 −12
Original line number Diff line number Diff line
@@ -76,9 +76,9 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views.UserControls
        #endregion

        #region commands
        public RelayCommand<IMaterialModel> CommandAskDeleteSelectedMineral
        public RelayCommand<MaterialBaseModel> CommandAskDeleteSelectedMineral
        {
            get { return (RelayCommand<IMaterialModel>)GetValue(CommandAskDeleteSelectedMineralProperty); }
            get { return (RelayCommand<MaterialBaseModel>)GetValue(CommandAskDeleteSelectedMineralProperty); }
            set { SetValue(CommandAskDeleteSelectedMineralProperty, value); }
        }

@@ -127,13 +127,8 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views.UserControls
                    MaterialsContainer foundMeteorClassesContainer = await InfoSampleDataViewModel.loadMeteorClassesSuggestionsAsync(sender.Text);
                    if (foundMeteorClassesContainer.Materials?.Count() > 0)
                    {
                        var meteorClasses = new List<IMaterialModel>();
                        foreach (var meteorClass in foundMeteorClassesContainer.Materials)
                            meteorClasses.Add(meteorClass);

                        InfoSampleDataViewModel.SuggestedMeteorClasses = meteorClasses;
                        InfoSampleDataViewModel.SuggestedMeteorClasses = foundMeteorClassesContainer.Materials.ToList();
                    }
                    //InfoSampleDataViewModel.SuggestedMeteorClasses =  new List<MaterialBaseModel>(foundMeteorClassesContainer.Materials);
                }
            }
        }
@@ -145,11 +140,11 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views.UserControls
            switch (InfoSampleDataViewModel.SelectedMineralTypeValue.Value)
            {
                case "Monomineralic":
                    InfoSampleDataViewModel.SelectedSuggestedMineral = (args.SelectedItem as MaterialModel);
                    InfoSampleDataViewModel.SelectedSuggestedMineral = (args.SelectedItem as MaterialBaseModel);
                    break;

                case "Mix":
                    InfoSampleDataViewModel.addSelectedSuggestedMineral((args.SelectedItem as MaterialModel));
                    InfoSampleDataViewModel.addSelectedSuggestedMineral((args.SelectedItem as MaterialBaseModel));
                    break;
            }

@@ -166,7 +161,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views.UserControls
                }
                else if (sender.Text.Length >= 3)
                {
                    List<IMaterialModel> foundMinerals = await InfoSampleDataViewModel.loadMineralsSuggestionsAsync(sender.Text);
                    List<MaterialBaseModel> foundMinerals = await InfoSampleDataViewModel.loadMineralsSuggestionsAsync(sender.Text);
                    if (foundMinerals?.Count > 0)
                        InfoSampleDataViewModel.SuggestedMinerals = foundMinerals;
                }
@@ -191,7 +186,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views.UserControls
                }
                else if (sender.Text.Length >= 3)
                {
                    List<IMaterialModel> foundRocks = await InfoSampleDataViewModel.loadRocksSuggestionsAsync(sender.Text);
                    List<MaterialBaseModel> foundRocks = await InfoSampleDataViewModel.loadRocksSuggestionsAsync(sender.Text);
                    if (foundRocks?.Count > 0)
                        InfoSampleDataViewModel.SuggestedRocks = foundRocks;
                }