/// <summary>Initializes a new instance of the <see cref="MetricInfoAttribute"/> class.</summary> /// <param name="category">The category of the metric.</param> /// <param name="defaultMinValue">Min value to be used by default.</param> public MetricInfoAttribute([NotNull] string category, DefaultMinMetricValue defaultMinValue) { Code.NotNullNorEmpty(category, nameof(category)); Category = category; DefaultMinValue = defaultMinValue; MetricColumns = MetricValueColumns.Default; }
/// <summary>Determines if the minimum metric value should be stored.</summary> /// <param name="metricRange">The metric range.</param> /// <param name="metricUnit">The metric unit.</param> /// <param name="defaultMinValue">>Min value to be used by default.</param> /// <returns><c>true</c>, if the minimum metric value should be stored.</returns> public static bool ShouldStoreMinMetricValue( this MetricRange metricRange, MetricUnit metricUnit, DefaultMinMetricValue defaultMinValue) { switch (defaultMinValue) { case DefaultMinMetricValue.Zero: return(!metricRange.Min.Equals(0)); case DefaultMinMetricValue.NegativeInfinity: return(!double.IsInfinity(metricRange.Min)); case DefaultMinMetricValue.SameAsMax: return(double.IsInfinity(metricRange.Min) || !metricRange.MinMaxAreSame(metricUnit)); default: throw CodeExceptions.UnexpectedArgumentValue(nameof(defaultMinValue), defaultMinValue); } }
/// <summary>Returns minimum metric value.</summary> /// <param name="metricMaxValue">The maximum metric value.</param> /// <param name="defaultMinValue">>Min value to be used by default.</param> /// <returns>Minimum metric value.</returns> private static double GetMinMetricValue(this double metricMaxValue, DefaultMinMetricValue defaultMinValue) { if (metricMaxValue.Equals(0)) { return(0); } switch (defaultMinValue) { case DefaultMinMetricValue.Zero: return(0); case DefaultMinMetricValue.NegativeInfinity: return(double.NegativeInfinity); case DefaultMinMetricValue.SameAsMax: return(double.IsInfinity(metricMaxValue) ? double.NegativeInfinity : metricMaxValue); default: throw CodeExceptions.UnexpectedArgumentValue(nameof(defaultMinValue), defaultMinValue); } }