Ejemplo n.º 1
0
        internal static IDimension UpdateDimension(this INumericValueField numericValueField, IDimension dimension)
        {
            var dimensionToUse = dimension ?? Constants.Dimension.NO_DIMENSION;

            numericValueField.DisplayUnit = dimensionToUse.DefaultUnit;
            return(dimensionToUse);
        }
Ejemplo n.º 2
0
 private void mapNumericFieldToModel(PopulationAnalysisField snapshot, INumericValueField field)
 {
     field.Dimension   = _dimensionFactory.Dimension(snapshot.Dimension);
     field.Dimension   = _dimensionFactory.OptimalDimension(field.Dimension);
     field.DisplayUnit = field.Dimension.Unit(ModelValueFor(snapshot.Unit));
     field.Scaling     = ModelValueFor(snapshot.Scaling, field.Scaling);
 }
Ejemplo n.º 3
0
        protected CurveData <TX, TY> GetCurveData(
            DataRow row,
            IReadOnlyList <string> paneFieldNames,
            IReadOnlyList <IComparer <object> > paneFieldValueComparers,
            IReadOnlyList <string> seriesFieldNames,
            IReadOnlyList <IComparer <object> > curveFieldValueComparers,
            ChartData <TX, TY> chart,
            INumericValueField yAxisField)
        {
            var paneFieldValues = GetFieldValues(paneFieldNames, row);
            var pane            = getOrCreatePane(chart, paneFieldValues, curveFieldValueComparers, yAxisField);

            var seriesFieldValues = GetFieldValues(seriesFieldNames, row);
            var series            = getOrCreateCurve(pane, seriesFieldValues);

            var quantityField = yAxisField as IQuantityField;

            if (quantityField != null)
            {
                series.QuantityPath = quantityField.QuantityPath;
            }

            SetCurveSettings(series, row);
            return(series);
        }
Ejemplo n.º 4
0
        private void mapNumericFieldToModel(PopulationAnalysisField snapshot, INumericValueField field)
        {
            field.Dimension = _dimensionRepository.DimensionByName(snapshot.Dimension);
            var optimalDimension = _dimensionRepository.MergedDimensionFor(field);

            field.DisplayUnit = optimalDimension.Unit(ModelValueFor(snapshot.Unit));
            field.Scaling     = ModelValueFor(snapshot.Scaling, field.Scaling);
        }
Ejemplo n.º 5
0
 protected ChartData <TX, TY> CreateChart(
     INumericValueField xAxisField,
     IReadOnlyList <IComparer <object> > paneFieldValueComparers,
     IReadOnlyList <string> xFieldNames = null,
     IComparer <TX> xValueComparer      = null)
 {
     return(new ChartData <TX, TY>(CreateAxisDataFor(xAxisField), paneFieldValueComparers, xFieldNames, xValueComparer));
 }
        protected override AxisData CreateAxisDataFor(INumericValueField axisField)
        {
            //override default implementation to set caption to [display unit], because different DATA_FIELDS are shown at one pane
            var axis = base.CreateAxisDataFor(axisField);

            if (axis != null)
            {
                axis.Caption = Constants.NameWithUnitFor(_dimensionRepository.MergedDimensionFor(axisField).DisplayName, axisField.DisplayUnit);
            }
            return(axis);
        }
Ejemplo n.º 7
0
        protected virtual AxisData CreateAxisDataFor(INumericValueField axisField)
        {
            if (axisField == null)
            {
                return(new AxisData(_dimensionRepository.NoDimension, _dimensionRepository.NoDimension.DefaultUnit, Scalings.Linear));
            }

            var mergedDimension = _dimensionRepository.MergedDimensionFor(new NumericFieldContext(axisField, _populationDataCollector));

            return(new AxisData(mergedDimension, axisField.DisplayUnit, axisField.Scaling)
            {
                Caption = Constants.NameWithUnitFor(axisField.Name, axisField.DisplayUnit)
            });
        }
Ejemplo n.º 8
0
        protected virtual AxisData CreateAxisDataFor(INumericValueField numericValueField)
        {
            if (numericValueField == null)
            {
                return(new AxisData(_dimensionRepository.NoDimension, _dimensionRepository.NoDimension.DefaultUnit, Scalings.Linear));
            }

            var mergedDimension = createMergedDimensionFor(numericValueField);

            return(new AxisData(mergedDimension, numericValueField.DisplayUnit, numericValueField.Scaling)
            {
                Caption = Constants.NameWithUnitFor(numericValueField.Name, numericValueField.DisplayUnit)
            });
        }
Ejemplo n.º 9
0
 private void mapNumericFieldToSnapshot(PopulationAnalysisField snapshot, INumericValueField field)
 {
     snapshot.Dimension = field.Dimension.Name;
     snapshot.Unit      = SnapshotValueFor(field.DisplayUnit.Name);
     snapshot.Scaling   = field.Scaling;
 }
Ejemplo n.º 10
0
        private void plotContinousData <TObject>(IPopulationDataCollector populationDataCollector, TObject objectToPlot, INumericValueField numericValueField,
                                                 Func <IPopulationDistributionPresenter, Action <IPopulationDataCollector, TObject, DistributionSettings, IDimension, Unit> > plotFunc)
            where TObject : class, IWithDimension

        {
            if (objectToPlot == null)
            {
                return;
            }

            var displayUnit = _displayUnitRetriever.PreferredUnitFor(objectToPlot);
            var dimension   = objectToPlot.Dimension;
            var settings    = new DistributionSettings();

            if (numericValueField != null)
            {
                displayUnit          = numericValueField.DisplayUnit;
                settings.PlotCaption = numericValueField.Name;
                dimension            = _dimensionRepository.MergedDimensionFor(new NumericFieldContext(numericValueField, populationDataCollector));
            }
            plotFunc(_populationDistributionPresenter)(populationDataCollector, objectToPlot, settings, dimension, displayUnit);
        }
Ejemplo n.º 11
0
 public NumericFieldContext(INumericValueField numericValueField, IPopulationDataCollector populationDataCollector)
 {
     NumericValueField       = numericValueField;
     PopulationDataCollector = populationDataCollector;
 }
Ejemplo n.º 12
0
 public static double ValueInDisplayUnit(this INumericValueField numericValueField, double valueInBaseUnit)
 {
     return(numericValueField.ConvertToDisplayUnit(valueInBaseUnit));
 }
Ejemplo n.º 13
0
        private PaneData <TX, TY> getOrCreatePane(ChartData <TX, TY> chart, IReadOnlyDictionary <string, string> paneFieldValues, IReadOnlyList <IComparer <object> > curveFieldValueComparers, INumericValueField axisField)
        {
            string paneCaption = captionFor(paneFieldValues.Values);
            string paneId      = idFromCaption(paneCaption); // Id cannot be empty string
            var    pane        = chart.Panes.FindById(paneId);

            if (pane != null)
            {
                return(pane);
            }

            // add new pane
            pane = new PaneData <TX, TY>(CreateAxisDataFor(axisField), paneFieldValues, curveFieldValueComparers)
            {
                Id      = paneId,
                Caption = paneCaption
            };

            chart.AddPane(pane);
            return(pane);
        }
Ejemplo n.º 14
0
 private IDimension createMergedDimensionFor(INumericValueField numericValueField)
 {
     return(_dimensionRepository.MergedDimensionFor(new NumericFieldContext(numericValueField, _populationDataCollector)));
 }
Ejemplo n.º 15
0
        private CurveData <TX, TY> getOrCreateCurve(PaneData <TX, TY> pane, IReadOnlyDictionary <string, string> seriesFieldValues, INumericValueField yAxisField)
        {
            string curveCaption = captionFor(seriesFieldValues.Values);
            string curveId      = idFromCaption(curveCaption);
            var    series       = pane.Curves[curveId];

            if (series != null)
            {
                return(series);
            }

            // add new curve
            series = new CurveData <TX, TY>(seriesFieldValues)
            {
                Id      = curveId,
                Caption = curveCaption,
                //Save one merge dimension per curve so that we can always convert using the dimension matching the output field exactly (only necessary when converting between molar and mass)
                YDimension = createMergedDimensionFor(yAxisField)
            };
            pane.AddCurve(series);
            return(series);
        }