Loading INAF.Apps.Uwp.SLabDataManager/Extensions/Extensions.cs +18 −303 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ using INAF.Apps.Uwp.SLabDataManager.Models.Chart; using INAF.Apps.Uwp.SLabDataManager.Models.Chart.Fit; using INAF.Libraries.NetStandard.Extensions; using INAF.Libraries.NetStandard.Math.Models; using INAF.Libraries.NetStandard.Math.Stats; using INAF.Libraries.NetStandard.ScienceModels.Spectra; using INAF.Libraries.NetStandard.SLabCommonModels.Models.Files; using INAF.Libraries.NetStandard.SLabCommonModels.Models.Spectrum; Loading @@ -12,9 +11,7 @@ using INAF.Libraries.NetStandard.SLabCommonModels.Models.Spectrum.ProcessedSpect using INAF.Libraries.NetStandard.SLabCommonModels.Models.Spectrum.ProcessedSpectraInfo.ContinuumRemoval; using INAF.Libraries.NetStandard.SLabCommonModels.Models.Spectrum.ProcessedSpectraInfo.Smoothing; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using Telerik.UI.Xaml.Controls.Chart; using Windows.Data.Xml.Dom; Loading @@ -28,19 +25,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions public static class Extensions { #region spectrum model public static FileSpectrumModel ToSpectrumFile(this IChartSpectrumModel model) { return new FileSpectrumModel() { Id = model.Id, Filename = model.Filename, ParentId = model.ParentId, Type = model.Type, Level = model.Level, Xml = model.ToXmlString() }; } public static FileSpectrumModel ToSpectrumFileBaseInfo(this ISpectrumModel model) { return new FileSpectrumModel() Loading Loading @@ -69,7 +53,10 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions { try { return new PointModel(element.X, element.Y); if (element.YStdDev == null) return new PointModel(element.getValueInNanometers(), element.Y); else return new PointModel(element.getValueInNanometers(), element.Y, (double)element.YStdDev); } catch (Exception) { Loading @@ -90,86 +77,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions } #region local files public static string ToTxt(this IChartSpectrumModel spectrum) { if (spectrum == null || spectrum.Elements == null || spectrum.Elements.Count == 0) return null; StringBuilder sb = new StringBuilder(); foreach (var element in spectrum.Elements) { sb.AppendLine(element.toCsvString()); } return sb.ToString(); } private static XmlElement AppendParentFilesXml(XmlDocument dom, ParentFilesModel parentFiles) { var xmlalignmentsettings = dom.CreateElement(Constants.Constants.XML_PARENT_FILES); /* raw file id */ var xmlrawfileid = dom.CreateElement(Constants.Constants.XML_PARENT_FILE_ID); xmlrawfileid.InnerText = parentFiles.ParentFile.Id.ToString(); xmlalignmentsettings.AppendChild(xmlrawfileid); /* ref file id */ if (parentFiles.RefFile != null) { var xmlreffileid = dom.CreateElement(Constants.Constants.XML_REF_FILE_ID); xmlreffileid.InnerText = parentFiles.RefFile.Id.ToString(); xmlalignmentsettings.AppendChild(xmlreffileid); } /* raw file id */ if (parentFiles.RefWhiteFile != null) { var xmlrefwhitefileid = dom.CreateElement(Constants.Constants.XML_REF_WHITE_FILE_ID); xmlrefwhitefileid.InnerText = parentFiles.RefWhiteFile.Id.ToString(); xmlalignmentsettings.AppendChild(xmlrefwhitefileid); } return xmlalignmentsettings; } private static XmlDocument GetCommonXml(IChartSpectrumModel spectrum) { if (spectrum == null || spectrum.Elements == null || spectrum.Elements.Count == 0) return null; XmlDocument dom = new XmlDocument(); var xmlspectrum = dom.CreateElement(Constants.Constants.XML_SPECTRUM); dom.AppendChild(xmlspectrum); /* append spectrum info (filename, type) */ var xmlinfo = dom.CreateElement(Constants.Constants.XML_INFO); /* filename */ var xmlfilename = dom.CreateElement(Constants.Constants.XML_RAW_FILENAME); xmlfilename.InnerText = spectrum.Filename; xmlinfo.AppendChild(xmlfilename); /* type */ var xmltype = dom.CreateElement(Constants.Constants.XML_TYPE); xmltype.InnerText = spectrum.Type.ToString(); xmlinfo.AppendChild(xmltype); xmlspectrum.AppendChild(xmlinfo); return dom; } private static XmlElement GetElements(IChartSpectrumModel spectrum, XmlDocument dom) { /* append spectrum data (wavelength, value) */ var xmlelements = dom.CreateElement(Constants.Constants.XML_ELEMENTS); foreach (var element in spectrum.Elements) xmlelements.AppendChild(element.ToXmlNode(dom)); return xmlelements; } public static bool IsErrorBar(this CartesianChartAnnotation line) { bool isError = false; Loading @@ -179,66 +86,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions return isError; } /* used for 'saveSpectrumOfTypeAsLocalFileAsync' method in BaseUserControlViewModel */ public static XmlDocument ToXml(this IChartSpectrumModel spectrum) { if (spectrum == null || spectrum.Elements == null || spectrum.Elements.Count == 0) return null; XmlDocument dom = GetCommonXml(spectrum); var xmlspectrum = dom.SelectSingleNode(Constants.Constants.XML_SPECTRUM); /* append spectrum data (wavelength, value) */ var xmlelements = GetElements(spectrum, dom); xmlspectrum.AppendChild(xmlelements); return dom; } public static XmlDocument ToXml(this IChartSpectrumOfTypeProcessedModel spectrum) { if (spectrum == null || spectrum.Elements == null || spectrum.Elements.Count == 0) return null; XmlDocument dom = GetCommonXml(spectrum); var xmlspectrum = dom.SelectSingleNode(Constants.Constants.XML_SPECTRUM); xmlspectrum.AppendChild(AppendParentFilesXml(dom, spectrum.ParentFiles)); /* type specific actions */ if (spectrum.GetType() == typeof(ChartSpectrumOfTypeAlignedModel)) { xmlspectrum.AppendChild(GetAlignmentSettingsXml(dom, ((ChartSpectrumOfTypeAlignedModel)spectrum).AlignmentSettings)); } else if (spectrum.GetType() == typeof(ChartSpectrumOfTypeContinuumRemovedModel)) { xmlspectrum.AppendChild(GetSegmentsFitSettingsXml(dom, ((ChartSpectrumOfTypeContinuumRemovedModel)spectrum).ContinuumRemovalSettings)); } else if (spectrum.GetType() == typeof(ChartSpectrumOfTypeSmoothedModel)) { xmlspectrum.AppendChild(GetSmoothingSettingsXml(dom, ((ChartSpectrumOfTypeSmoothedModel)spectrum).SmoothingSettings)); } /* append spectrum data (wavelength, value) */ var xmlelements = GetElements(spectrum, dom); xmlspectrum.AppendChild(xmlelements); return dom; } /* used for 'ToSpectrumFile' extension method */ public static string ToXmlString(this IChartSpectrumModel spectrum) { return spectrum.ToXml().GetXml(); } public static string ToXmlString(this IChartSpectrumOfTypeProcessedModel spectrum) { return spectrum.ToXml().GetXml(); } #endregion #region elements Loading @@ -255,134 +102,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions return xmlelement; } #endregion #region settings private static XmlElement GetAlignmentSettingsXml(XmlDocument dom, AlignmentSettingsModel alignmentSettings) { var xmlalignmentsettings = dom.CreateElement(Constants.Constants.XML_ALIGNMENT_SETTINGS); /* num of points */ var xmlnumofpoints = dom.CreateElement(Constants.Constants.XML_NUM_OF_POINTS); xmlnumofpoints.InnerText = alignmentSettings.NumOfPoints.ToString(); xmlalignmentsettings.AppendChild(xmlnumofpoints); /* segment boundaries */ var xmlsegmentboundaries = dom.CreateElement(Constants.Constants.XML_ALIGNMENT_SETTINGS_SEGMENT_BOUNDARIES); /* min */ var xmlsegmentboundariesmin = dom.CreateElement(Constants.Constants.XML_MIN); xmlsegmentboundariesmin.InnerText = alignmentSettings.AlignmentSegmentBoundaries.Min.ToString(); xmlsegmentboundaries.AppendChild(xmlsegmentboundariesmin); /* max */ var xmlsegmentboundariesmax = dom.CreateElement(Constants.Constants.XML_MAX); xmlsegmentboundariesmax.InnerText = alignmentSettings.AlignmentSegmentBoundaries.Max.ToString(); xmlsegmentboundaries.AppendChild(xmlsegmentboundariesmax); xmlalignmentsettings.AppendChild(xmlsegmentboundaries); return xmlalignmentsettings; } private static XmlElement GetSegmentsFitSettingsXml(XmlDocument dom, ContinuumRemovalSettingsModel continuumRemovalSettings) { var xmlcontinuumremovalsettings = dom.CreateElement(Constants.Constants.XML_CONTINUUM_REMOVAL_SETTINGS); /* num of points */ var xmlnumofpoints = dom.CreateElement(Constants.Constants.XML_NUM_OF_POINTS); xmlnumofpoints.InnerText = continuumRemovalSettings.NumOfPointsForAveragingMissingPointX.ToString(); xmlcontinuumremovalsettings.AppendChild(xmlnumofpoints); /* segments */ var xmlsegments = dom.CreateElement(Constants.Constants.XML_SETTINGS_SEGMENTS); foreach (var segment in continuumRemovalSettings.Segments) { var xmlsegment = dom.CreateElement(Constants.Constants.XML_SETTINGS_SEGMENT); /* fit method name */ var xmlfitmethodname = dom.CreateElement(Constants.Constants.XML_CONTINUUM_REMOVAL_SETTINGS_SEGMENT_FIT_METHOD_NAME); xmlfitmethodname.InnerText = segment.FitMethodName; xmlsegment.AppendChild(xmlfitmethodname); /* start */ var xmlsegmentstart = dom.CreateElement(Constants.Constants.XML_SEGMENT_START); xmlsegmentstart.InnerText = segment.XStart.ToDoubleInvariantString(); xmlsegment.AppendChild(xmlsegmentstart); /* end */ var xmlsegmentend = dom.CreateElement(Constants.Constants.XML_SEGMENT_END); xmlsegmentend.InnerText = segment.XEnd.ToDoubleInvariantString(); xmlsegment.AppendChild(xmlsegmentend); /* fit param value */ if (segment.FitParamValue.HasValue) { var xmlfitparamvalue = dom.CreateElement(Constants.Constants.XML_CONTINUUM_REMOVAL_SETTINGS_SEGMENT_PARAMETER_VALUE); xmlfitparamvalue.InnerText = segment.FitParamValue.Value.ToDoubleInvariantString(); xmlsegment.AppendChild(xmlfitparamvalue); } xmlsegments.AppendChild(xmlsegment); } xmlcontinuumremovalsettings.AppendChild(xmlsegments); return xmlcontinuumremovalsettings; } private static XmlElement GetSmoothingSettingsXml(XmlDocument dom, SmoothingSettingsModel smoothingSettings) { var xmlsmoothingsettings = dom.CreateElement(Constants.Constants.XML_SMOOTHING_SETTINGS); var xmlsegments = dom.CreateElement(Constants.Constants.XML_SETTINGS_SEGMENTS); foreach (var segment in smoothingSettings.Segments) { var xmlsegment = dom.CreateElement(Constants.Constants.XML_SETTINGS_SEGMENT); /* start */ var xmlsegmentstart = dom.CreateElement(Constants.Constants.XML_SEGMENT_START); xmlsegmentstart.InnerText = segment.XStart.ToDoubleInvariantString(); xmlsegment.AppendChild(xmlsegmentstart); /* end */ var xmlsegmentend = dom.CreateElement(Constants.Constants.XML_SEGMENT_END); xmlsegmentend.InnerText = segment.XEnd.ToDoubleInvariantString(); xmlsegment.AppendChild(xmlsegmentend); /* polynomial order */ var xmlpolynomialorder = dom.CreateElement(Constants.Constants.XML_SMOOTHING_POLYNOMIAL_ORDER); xmlpolynomialorder.InnerText = segment.PolynomialOrder.ToString(); xmlsegment.AppendChild(xmlpolynomialorder); /* window size */ var xmlwindowsize = dom.CreateElement(Constants.Constants.XML_SMOOTHING_WINDOW_SIZE); xmlwindowsize.InnerText = segment.WindowSize.ToString(); xmlsegment.AppendChild(xmlwindowsize); xmlsegments.AppendChild(xmlsegment); } xmlsmoothingsettings.AppendChild(xmlsegments); return xmlsmoothingsettings; } public static SegmentFitSettingsModel ToSegmentFitSettingsModel(this SegmentFitModel model) { var p = new SegmentFitSettingsModel() { Name = model.SelectedFitMethod.Name, FitMethodName = model.SelectedFitMethod.MethodName, FitParamValue = (model.SelectedFitMethod.ParameterConstraintValue != null ? model.SelectedFitMethod.ParameterConstraintValue.Value : 0), XStart = model.P1.X, XEnd = model.P2.X }; return p; } #endregion #endregion public static string GetDescription(this Enum enumValue) Loading Loading @@ -413,6 +132,20 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions segment.SelectedFitMethod.ParameterConstraintValue?.Value); } public static SegmentFitSettingsModel ToSegmentFitSettingsModel(this SegmentFitModel model) { var p = new SegmentFitSettingsModel() { Name = model.SelectedFitMethod.Name, FitMethodName = model.SelectedFitMethod.MethodName, FitParamValue = (model.SelectedFitMethod.ParameterConstraintValue != null ? model.SelectedFitMethod.ParameterConstraintValue.Value : 0), XStart = model.P1.X, XEnd = model.P2.X }; return p; } public static SmoothingSegment ToSmoothingSegment(this SegmentSmoothingSettingsModel segmentSettings) { return new SmoothingSegment(segmentSettings.Id, Loading Loading @@ -444,23 +177,5 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions // create the solidColorbrush return new SolidColorBrush(color); } //public static IChartSpectrumModel ToChartSpectrumModel(this FileSpectrumModel fileSpectrum) //{ // List<ElementModel> elements = new List<ElementModel>(); // foreach (var element in fileSpectrum.Elements) // { // elements.Add(new ElementModel(element.X, element.Y)); // } // return new ChartSpectrumModel() // { // Id = fileSpectrum.Id, // Filename = fileSpectrum.Filename, // ParentId = fileSpectrum.ParentId, // Type = fileSpectrum.Type, // Elements = new ObservableCollection<ElementModel>(elements) // }; //} } } INAF.Apps.Uwp.SLabDataManager/Helpers/UI/ProcessedFilesSummaryItemsTemplateSelector.cs +2 −2 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI { public class ProcessedFilesSummaryItemsTemplateSelector : DataTemplateSelector { public DataTemplate AlignedFileSettingsAummary { get; set; } public DataTemplate AlignedFileSettingsSummary { get; set; } public DataTemplate ContinuumRemovedFileSettingsSummary { get; set; } Loading @@ -19,7 +19,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI if (item is ChartSpectrumOfTypeRawModel) return RawOrRefSummary; else if (item is ChartSpectrumOfTypeAlignedModel) return AlignedFileSettingsAummary; return AlignedFileSettingsSummary; else if (item is ChartSpectrumOfTypeContinuumRemovedModel) return ContinuumRemovedFileSettingsSummary; else if (item is ChartSpectrumOfTypeSmoothedModel) Loading INAF.Apps.Uwp.SLabDataManager/INAF.Apps.Uwp.SLabDataManager.csproj +1 −1 Original line number Diff line number Diff line Loading @@ -185,6 +185,7 @@ <Compile Include="Helpers\RemoteOperations\RemoteOperationsManagerMaterials.cs" /> <Compile Include="Helpers\RemoteOperations\RemoteOperationsManagerSampleAndMeasurement.cs" /> <Compile Include="Helpers\UI\Chart\YAxisLabelFormatter.cs" /> <Compile Include="Models\Chart\ChartSpectrumOfTypeAlignedModel.cs" /> <Compile Include="Models\Chart\SelectedRefBand.cs" /> <Compile Include="Models\Containers\SpectraContainer.cs" /> <Compile Include="Models\Chart\Smoothing\SmoothingSegment.cs" /> Loading Loading @@ -236,7 +237,6 @@ <Compile Include="Helpers\UI\XamlHelpers.cs" /> <Compile Include="Helpers\UpdateUIHelper.cs" /> <Compile Include="Models\Chart\ChartSpectrumModel.cs" /> <Compile Include="Models\Chart\ChartSpectrumOfTypeAlignedModel.cs" /> <Compile Include="Models\Chart\ChartSpectrumOfTypeContinuumRemovedModel.cs" /> <Compile Include="Models\Chart\ChartSpectrumOfTypeRawModel.cs" /> <Compile Include="Models\Chart\ChartSpectrumOfTypeSmoothedModel.cs" /> Loading INAF.Apps.Uwp.SLabDataManager/Models/Chart/ChartSpectrumModel.cs +33 −10 Original line number Diff line number Diff line Loading @@ -38,6 +38,29 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models.Chart Level= spectrumLevel; } public ChartSpectrumModel(IServiceProvider serviceProvider, SpectrumType spectrumType, SpectrumLevel spectrumLevel, string filename) : this(serviceProvider, spectrumType, spectrumLevel) { Filename = filename; Title = getTitle(); IsVisible = true; } public ChartSpectrumModel(IServiceProvider serviceProvider, SpectrumType spectrumType, SpectrumLevel spectrumLevel, string filename, string filepath) : this(serviceProvider, spectrumType, spectrumLevel, filename) { Filepath = filepath; Title = getTitle(); IsVisible = true; } public ChartSpectrumModel(SpectrumType spectrumType, SpectrumLevel spectrumLevel, IEnumerable<ElementModel> points) : this() Loading @@ -47,25 +70,20 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models.Chart Elements = new ObservableCollection<ElementModel>(points); } public ChartSpectrumModel(IServiceProvider serviceProvider, SpectrumType spectrumType, public ChartSpectrumModel(SpectrumType spectrumType, SpectrumLevel spectrumLevel, string fileName) : this(serviceProvider, spectrumType, spectrumLevel) string fileName) : base(spectrumType, spectrumLevel, fileName) { Filename = fileName; Title = getTitle(); IsVisible = true; } public ChartSpectrumModel(IServiceProvider serviceProvider, SpectrumType spectrumType, public ChartSpectrumModel(SpectrumType spectrumType, SpectrumLevel spectrumLevel, string fileName, string filepath) : this(serviceProvider, spectrumType, spectrumLevel) string filename, string filepath) : base(spectrumType, spectrumLevel, filename, filepath) { Filename = fileName; Filepath = filepath; Title = getTitle(); IsVisible = true; Loading Loading @@ -141,6 +159,11 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models.Chart return Elements.Select(x => x.Y).ToArray(); } protected void setPointsFromElements() { Points = Elements.Select(x => x.ToPointModel()).ToList(); } public void switchToMeasureUnit(WavelengthMeasureUnit newMeasureUnit) { Elements.All(x => { x.switchToMeasureUnit(newMeasureUnit); return true; }); Loading INAF.Apps.Uwp.SLabDataManager/Models/Chart/ChartSpectrumOfTypeAlignedModel.cs +6 −0 Original line number Diff line number Diff line Loading @@ -35,5 +35,11 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models.Chart public AlignmentSettingsModel AlignmentSettings { get; set; } public ParentFilesModel ParentFiles { get; set; } public IChartSpectrumOfTypeProcessedModel prepareForSaving() { setPointsFromElements(); return this; } } } Loading
INAF.Apps.Uwp.SLabDataManager/Extensions/Extensions.cs +18 −303 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ using INAF.Apps.Uwp.SLabDataManager.Models.Chart; using INAF.Apps.Uwp.SLabDataManager.Models.Chart.Fit; using INAF.Libraries.NetStandard.Extensions; using INAF.Libraries.NetStandard.Math.Models; using INAF.Libraries.NetStandard.Math.Stats; using INAF.Libraries.NetStandard.ScienceModels.Spectra; using INAF.Libraries.NetStandard.SLabCommonModels.Models.Files; using INAF.Libraries.NetStandard.SLabCommonModels.Models.Spectrum; Loading @@ -12,9 +11,7 @@ using INAF.Libraries.NetStandard.SLabCommonModels.Models.Spectrum.ProcessedSpect using INAF.Libraries.NetStandard.SLabCommonModels.Models.Spectrum.ProcessedSpectraInfo.ContinuumRemoval; using INAF.Libraries.NetStandard.SLabCommonModels.Models.Spectrum.ProcessedSpectraInfo.Smoothing; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using Telerik.UI.Xaml.Controls.Chart; using Windows.Data.Xml.Dom; Loading @@ -28,19 +25,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions public static class Extensions { #region spectrum model public static FileSpectrumModel ToSpectrumFile(this IChartSpectrumModel model) { return new FileSpectrumModel() { Id = model.Id, Filename = model.Filename, ParentId = model.ParentId, Type = model.Type, Level = model.Level, Xml = model.ToXmlString() }; } public static FileSpectrumModel ToSpectrumFileBaseInfo(this ISpectrumModel model) { return new FileSpectrumModel() Loading Loading @@ -69,7 +53,10 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions { try { return new PointModel(element.X, element.Y); if (element.YStdDev == null) return new PointModel(element.getValueInNanometers(), element.Y); else return new PointModel(element.getValueInNanometers(), element.Y, (double)element.YStdDev); } catch (Exception) { Loading @@ -90,86 +77,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions } #region local files public static string ToTxt(this IChartSpectrumModel spectrum) { if (spectrum == null || spectrum.Elements == null || spectrum.Elements.Count == 0) return null; StringBuilder sb = new StringBuilder(); foreach (var element in spectrum.Elements) { sb.AppendLine(element.toCsvString()); } return sb.ToString(); } private static XmlElement AppendParentFilesXml(XmlDocument dom, ParentFilesModel parentFiles) { var xmlalignmentsettings = dom.CreateElement(Constants.Constants.XML_PARENT_FILES); /* raw file id */ var xmlrawfileid = dom.CreateElement(Constants.Constants.XML_PARENT_FILE_ID); xmlrawfileid.InnerText = parentFiles.ParentFile.Id.ToString(); xmlalignmentsettings.AppendChild(xmlrawfileid); /* ref file id */ if (parentFiles.RefFile != null) { var xmlreffileid = dom.CreateElement(Constants.Constants.XML_REF_FILE_ID); xmlreffileid.InnerText = parentFiles.RefFile.Id.ToString(); xmlalignmentsettings.AppendChild(xmlreffileid); } /* raw file id */ if (parentFiles.RefWhiteFile != null) { var xmlrefwhitefileid = dom.CreateElement(Constants.Constants.XML_REF_WHITE_FILE_ID); xmlrefwhitefileid.InnerText = parentFiles.RefWhiteFile.Id.ToString(); xmlalignmentsettings.AppendChild(xmlrefwhitefileid); } return xmlalignmentsettings; } private static XmlDocument GetCommonXml(IChartSpectrumModel spectrum) { if (spectrum == null || spectrum.Elements == null || spectrum.Elements.Count == 0) return null; XmlDocument dom = new XmlDocument(); var xmlspectrum = dom.CreateElement(Constants.Constants.XML_SPECTRUM); dom.AppendChild(xmlspectrum); /* append spectrum info (filename, type) */ var xmlinfo = dom.CreateElement(Constants.Constants.XML_INFO); /* filename */ var xmlfilename = dom.CreateElement(Constants.Constants.XML_RAW_FILENAME); xmlfilename.InnerText = spectrum.Filename; xmlinfo.AppendChild(xmlfilename); /* type */ var xmltype = dom.CreateElement(Constants.Constants.XML_TYPE); xmltype.InnerText = spectrum.Type.ToString(); xmlinfo.AppendChild(xmltype); xmlspectrum.AppendChild(xmlinfo); return dom; } private static XmlElement GetElements(IChartSpectrumModel spectrum, XmlDocument dom) { /* append spectrum data (wavelength, value) */ var xmlelements = dom.CreateElement(Constants.Constants.XML_ELEMENTS); foreach (var element in spectrum.Elements) xmlelements.AppendChild(element.ToXmlNode(dom)); return xmlelements; } public static bool IsErrorBar(this CartesianChartAnnotation line) { bool isError = false; Loading @@ -179,66 +86,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions return isError; } /* used for 'saveSpectrumOfTypeAsLocalFileAsync' method in BaseUserControlViewModel */ public static XmlDocument ToXml(this IChartSpectrumModel spectrum) { if (spectrum == null || spectrum.Elements == null || spectrum.Elements.Count == 0) return null; XmlDocument dom = GetCommonXml(spectrum); var xmlspectrum = dom.SelectSingleNode(Constants.Constants.XML_SPECTRUM); /* append spectrum data (wavelength, value) */ var xmlelements = GetElements(spectrum, dom); xmlspectrum.AppendChild(xmlelements); return dom; } public static XmlDocument ToXml(this IChartSpectrumOfTypeProcessedModel spectrum) { if (spectrum == null || spectrum.Elements == null || spectrum.Elements.Count == 0) return null; XmlDocument dom = GetCommonXml(spectrum); var xmlspectrum = dom.SelectSingleNode(Constants.Constants.XML_SPECTRUM); xmlspectrum.AppendChild(AppendParentFilesXml(dom, spectrum.ParentFiles)); /* type specific actions */ if (spectrum.GetType() == typeof(ChartSpectrumOfTypeAlignedModel)) { xmlspectrum.AppendChild(GetAlignmentSettingsXml(dom, ((ChartSpectrumOfTypeAlignedModel)spectrum).AlignmentSettings)); } else if (spectrum.GetType() == typeof(ChartSpectrumOfTypeContinuumRemovedModel)) { xmlspectrum.AppendChild(GetSegmentsFitSettingsXml(dom, ((ChartSpectrumOfTypeContinuumRemovedModel)spectrum).ContinuumRemovalSettings)); } else if (spectrum.GetType() == typeof(ChartSpectrumOfTypeSmoothedModel)) { xmlspectrum.AppendChild(GetSmoothingSettingsXml(dom, ((ChartSpectrumOfTypeSmoothedModel)spectrum).SmoothingSettings)); } /* append spectrum data (wavelength, value) */ var xmlelements = GetElements(spectrum, dom); xmlspectrum.AppendChild(xmlelements); return dom; } /* used for 'ToSpectrumFile' extension method */ public static string ToXmlString(this IChartSpectrumModel spectrum) { return spectrum.ToXml().GetXml(); } public static string ToXmlString(this IChartSpectrumOfTypeProcessedModel spectrum) { return spectrum.ToXml().GetXml(); } #endregion #region elements Loading @@ -255,134 +102,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions return xmlelement; } #endregion #region settings private static XmlElement GetAlignmentSettingsXml(XmlDocument dom, AlignmentSettingsModel alignmentSettings) { var xmlalignmentsettings = dom.CreateElement(Constants.Constants.XML_ALIGNMENT_SETTINGS); /* num of points */ var xmlnumofpoints = dom.CreateElement(Constants.Constants.XML_NUM_OF_POINTS); xmlnumofpoints.InnerText = alignmentSettings.NumOfPoints.ToString(); xmlalignmentsettings.AppendChild(xmlnumofpoints); /* segment boundaries */ var xmlsegmentboundaries = dom.CreateElement(Constants.Constants.XML_ALIGNMENT_SETTINGS_SEGMENT_BOUNDARIES); /* min */ var xmlsegmentboundariesmin = dom.CreateElement(Constants.Constants.XML_MIN); xmlsegmentboundariesmin.InnerText = alignmentSettings.AlignmentSegmentBoundaries.Min.ToString(); xmlsegmentboundaries.AppendChild(xmlsegmentboundariesmin); /* max */ var xmlsegmentboundariesmax = dom.CreateElement(Constants.Constants.XML_MAX); xmlsegmentboundariesmax.InnerText = alignmentSettings.AlignmentSegmentBoundaries.Max.ToString(); xmlsegmentboundaries.AppendChild(xmlsegmentboundariesmax); xmlalignmentsettings.AppendChild(xmlsegmentboundaries); return xmlalignmentsettings; } private static XmlElement GetSegmentsFitSettingsXml(XmlDocument dom, ContinuumRemovalSettingsModel continuumRemovalSettings) { var xmlcontinuumremovalsettings = dom.CreateElement(Constants.Constants.XML_CONTINUUM_REMOVAL_SETTINGS); /* num of points */ var xmlnumofpoints = dom.CreateElement(Constants.Constants.XML_NUM_OF_POINTS); xmlnumofpoints.InnerText = continuumRemovalSettings.NumOfPointsForAveragingMissingPointX.ToString(); xmlcontinuumremovalsettings.AppendChild(xmlnumofpoints); /* segments */ var xmlsegments = dom.CreateElement(Constants.Constants.XML_SETTINGS_SEGMENTS); foreach (var segment in continuumRemovalSettings.Segments) { var xmlsegment = dom.CreateElement(Constants.Constants.XML_SETTINGS_SEGMENT); /* fit method name */ var xmlfitmethodname = dom.CreateElement(Constants.Constants.XML_CONTINUUM_REMOVAL_SETTINGS_SEGMENT_FIT_METHOD_NAME); xmlfitmethodname.InnerText = segment.FitMethodName; xmlsegment.AppendChild(xmlfitmethodname); /* start */ var xmlsegmentstart = dom.CreateElement(Constants.Constants.XML_SEGMENT_START); xmlsegmentstart.InnerText = segment.XStart.ToDoubleInvariantString(); xmlsegment.AppendChild(xmlsegmentstart); /* end */ var xmlsegmentend = dom.CreateElement(Constants.Constants.XML_SEGMENT_END); xmlsegmentend.InnerText = segment.XEnd.ToDoubleInvariantString(); xmlsegment.AppendChild(xmlsegmentend); /* fit param value */ if (segment.FitParamValue.HasValue) { var xmlfitparamvalue = dom.CreateElement(Constants.Constants.XML_CONTINUUM_REMOVAL_SETTINGS_SEGMENT_PARAMETER_VALUE); xmlfitparamvalue.InnerText = segment.FitParamValue.Value.ToDoubleInvariantString(); xmlsegment.AppendChild(xmlfitparamvalue); } xmlsegments.AppendChild(xmlsegment); } xmlcontinuumremovalsettings.AppendChild(xmlsegments); return xmlcontinuumremovalsettings; } private static XmlElement GetSmoothingSettingsXml(XmlDocument dom, SmoothingSettingsModel smoothingSettings) { var xmlsmoothingsettings = dom.CreateElement(Constants.Constants.XML_SMOOTHING_SETTINGS); var xmlsegments = dom.CreateElement(Constants.Constants.XML_SETTINGS_SEGMENTS); foreach (var segment in smoothingSettings.Segments) { var xmlsegment = dom.CreateElement(Constants.Constants.XML_SETTINGS_SEGMENT); /* start */ var xmlsegmentstart = dom.CreateElement(Constants.Constants.XML_SEGMENT_START); xmlsegmentstart.InnerText = segment.XStart.ToDoubleInvariantString(); xmlsegment.AppendChild(xmlsegmentstart); /* end */ var xmlsegmentend = dom.CreateElement(Constants.Constants.XML_SEGMENT_END); xmlsegmentend.InnerText = segment.XEnd.ToDoubleInvariantString(); xmlsegment.AppendChild(xmlsegmentend); /* polynomial order */ var xmlpolynomialorder = dom.CreateElement(Constants.Constants.XML_SMOOTHING_POLYNOMIAL_ORDER); xmlpolynomialorder.InnerText = segment.PolynomialOrder.ToString(); xmlsegment.AppendChild(xmlpolynomialorder); /* window size */ var xmlwindowsize = dom.CreateElement(Constants.Constants.XML_SMOOTHING_WINDOW_SIZE); xmlwindowsize.InnerText = segment.WindowSize.ToString(); xmlsegment.AppendChild(xmlwindowsize); xmlsegments.AppendChild(xmlsegment); } xmlsmoothingsettings.AppendChild(xmlsegments); return xmlsmoothingsettings; } public static SegmentFitSettingsModel ToSegmentFitSettingsModel(this SegmentFitModel model) { var p = new SegmentFitSettingsModel() { Name = model.SelectedFitMethod.Name, FitMethodName = model.SelectedFitMethod.MethodName, FitParamValue = (model.SelectedFitMethod.ParameterConstraintValue != null ? model.SelectedFitMethod.ParameterConstraintValue.Value : 0), XStart = model.P1.X, XEnd = model.P2.X }; return p; } #endregion #endregion public static string GetDescription(this Enum enumValue) Loading Loading @@ -413,6 +132,20 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions segment.SelectedFitMethod.ParameterConstraintValue?.Value); } public static SegmentFitSettingsModel ToSegmentFitSettingsModel(this SegmentFitModel model) { var p = new SegmentFitSettingsModel() { Name = model.SelectedFitMethod.Name, FitMethodName = model.SelectedFitMethod.MethodName, FitParamValue = (model.SelectedFitMethod.ParameterConstraintValue != null ? model.SelectedFitMethod.ParameterConstraintValue.Value : 0), XStart = model.P1.X, XEnd = model.P2.X }; return p; } public static SmoothingSegment ToSmoothingSegment(this SegmentSmoothingSettingsModel segmentSettings) { return new SmoothingSegment(segmentSettings.Id, Loading Loading @@ -444,23 +177,5 @@ namespace INAF.Apps.Uwp.SLabDataManager.Extensions // create the solidColorbrush return new SolidColorBrush(color); } //public static IChartSpectrumModel ToChartSpectrumModel(this FileSpectrumModel fileSpectrum) //{ // List<ElementModel> elements = new List<ElementModel>(); // foreach (var element in fileSpectrum.Elements) // { // elements.Add(new ElementModel(element.X, element.Y)); // } // return new ChartSpectrumModel() // { // Id = fileSpectrum.Id, // Filename = fileSpectrum.Filename, // ParentId = fileSpectrum.ParentId, // Type = fileSpectrum.Type, // Elements = new ObservableCollection<ElementModel>(elements) // }; //} } }
INAF.Apps.Uwp.SLabDataManager/Helpers/UI/ProcessedFilesSummaryItemsTemplateSelector.cs +2 −2 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI { public class ProcessedFilesSummaryItemsTemplateSelector : DataTemplateSelector { public DataTemplate AlignedFileSettingsAummary { get; set; } public DataTemplate AlignedFileSettingsSummary { get; set; } public DataTemplate ContinuumRemovedFileSettingsSummary { get; set; } Loading @@ -19,7 +19,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI if (item is ChartSpectrumOfTypeRawModel) return RawOrRefSummary; else if (item is ChartSpectrumOfTypeAlignedModel) return AlignedFileSettingsAummary; return AlignedFileSettingsSummary; else if (item is ChartSpectrumOfTypeContinuumRemovedModel) return ContinuumRemovedFileSettingsSummary; else if (item is ChartSpectrumOfTypeSmoothedModel) Loading
INAF.Apps.Uwp.SLabDataManager/INAF.Apps.Uwp.SLabDataManager.csproj +1 −1 Original line number Diff line number Diff line Loading @@ -185,6 +185,7 @@ <Compile Include="Helpers\RemoteOperations\RemoteOperationsManagerMaterials.cs" /> <Compile Include="Helpers\RemoteOperations\RemoteOperationsManagerSampleAndMeasurement.cs" /> <Compile Include="Helpers\UI\Chart\YAxisLabelFormatter.cs" /> <Compile Include="Models\Chart\ChartSpectrumOfTypeAlignedModel.cs" /> <Compile Include="Models\Chart\SelectedRefBand.cs" /> <Compile Include="Models\Containers\SpectraContainer.cs" /> <Compile Include="Models\Chart\Smoothing\SmoothingSegment.cs" /> Loading Loading @@ -236,7 +237,6 @@ <Compile Include="Helpers\UI\XamlHelpers.cs" /> <Compile Include="Helpers\UpdateUIHelper.cs" /> <Compile Include="Models\Chart\ChartSpectrumModel.cs" /> <Compile Include="Models\Chart\ChartSpectrumOfTypeAlignedModel.cs" /> <Compile Include="Models\Chart\ChartSpectrumOfTypeContinuumRemovedModel.cs" /> <Compile Include="Models\Chart\ChartSpectrumOfTypeRawModel.cs" /> <Compile Include="Models\Chart\ChartSpectrumOfTypeSmoothedModel.cs" /> Loading
INAF.Apps.Uwp.SLabDataManager/Models/Chart/ChartSpectrumModel.cs +33 −10 Original line number Diff line number Diff line Loading @@ -38,6 +38,29 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models.Chart Level= spectrumLevel; } public ChartSpectrumModel(IServiceProvider serviceProvider, SpectrumType spectrumType, SpectrumLevel spectrumLevel, string filename) : this(serviceProvider, spectrumType, spectrumLevel) { Filename = filename; Title = getTitle(); IsVisible = true; } public ChartSpectrumModel(IServiceProvider serviceProvider, SpectrumType spectrumType, SpectrumLevel spectrumLevel, string filename, string filepath) : this(serviceProvider, spectrumType, spectrumLevel, filename) { Filepath = filepath; Title = getTitle(); IsVisible = true; } public ChartSpectrumModel(SpectrumType spectrumType, SpectrumLevel spectrumLevel, IEnumerable<ElementModel> points) : this() Loading @@ -47,25 +70,20 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models.Chart Elements = new ObservableCollection<ElementModel>(points); } public ChartSpectrumModel(IServiceProvider serviceProvider, SpectrumType spectrumType, public ChartSpectrumModel(SpectrumType spectrumType, SpectrumLevel spectrumLevel, string fileName) : this(serviceProvider, spectrumType, spectrumLevel) string fileName) : base(spectrumType, spectrumLevel, fileName) { Filename = fileName; Title = getTitle(); IsVisible = true; } public ChartSpectrumModel(IServiceProvider serviceProvider, SpectrumType spectrumType, public ChartSpectrumModel(SpectrumType spectrumType, SpectrumLevel spectrumLevel, string fileName, string filepath) : this(serviceProvider, spectrumType, spectrumLevel) string filename, string filepath) : base(spectrumType, spectrumLevel, filename, filepath) { Filename = fileName; Filepath = filepath; Title = getTitle(); IsVisible = true; Loading Loading @@ -141,6 +159,11 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models.Chart return Elements.Select(x => x.Y).ToArray(); } protected void setPointsFromElements() { Points = Elements.Select(x => x.ToPointModel()).ToList(); } public void switchToMeasureUnit(WavelengthMeasureUnit newMeasureUnit) { Elements.All(x => { x.switchToMeasureUnit(newMeasureUnit); return true; }); Loading
INAF.Apps.Uwp.SLabDataManager/Models/Chart/ChartSpectrumOfTypeAlignedModel.cs +6 −0 Original line number Diff line number Diff line Loading @@ -35,5 +35,11 @@ namespace INAF.Apps.Uwp.SLabDataManager.Models.Chart public AlignmentSettingsModel AlignmentSettings { get; set; } public ParentFilesModel ParentFiles { get; set; } public IChartSpectrumOfTypeProcessedModel prepareForSaving() { setPointsFromElements(); return this; } } }