コード例 #1
0
 private JavascriptGroup?getGroupForJavascriptFile(string jsFile, AggregateMode aggregationMode)
 {
     if (aggregationMode == AggregateMode.Aggregate)
     {
         foreach (JavascriptGroup jsGroup in jsFilePaths_Aggregate.Keys)
         {
             foreach (string js in jsFilePaths_Aggregate[jsGroup])
             {
                 if (string.Compare(js, jsFile, true) == 0)
                 {
                     return(jsGroup);
                 }
             } // foreach
         }
     }
     else if (aggregationMode == AggregateMode.DoNotAggregate)
     {
         foreach (JavascriptGroup jsGroup in jsFilePaths_DoNotAggregate.Keys)
         {
             foreach (string js in jsFilePaths_DoNotAggregate[jsGroup])
             {
                 if (string.Compare(js, jsFile, true) == 0)
                 {
                     return(jsGroup);
                 }
             } // foreach
         }
     }
     return(null);
 }
コード例 #2
0
 private CSSGroup?getGroupForCSSFile(string cssFile, AggregateMode aggregationMode)
 {
     if (aggregationMode == AggregateMode.Aggregate)
     {
         foreach (CSSGroup cssGroup in cssFilePaths_Aggregate.Keys)
         {
             foreach (string css in cssFilePaths_Aggregate[cssGroup])
             {
                 if (string.Compare(css, cssFile, true) == 0)
                 {
                     return(cssGroup);
                 }
             } // foreach
         }
     }
     else if (aggregationMode == AggregateMode.DoNotAggregate)
     {
         foreach (CSSGroup cssGroup in cssFilePaths_DoNotAggregate.Keys)
         {
             foreach (string css in cssFilePaths_DoNotAggregate[cssGroup])
             {
                 if (string.Compare(css, cssFile, true) == 0)
                 {
                     return(cssGroup);
                 }
             } // foreach
         }
     }
     return(null);
 }
コード例 #3
0
        /// <summary>
        /// Adds a CSS file reference to the page's head section.
        /// </summary>
        /// <param name="pathToCSSFileUnderAppPath"></param>
        public void AddCSSFile(CSSGroup cssGroup, string pathToCSSFileUnderAppPath, AggregateMode aggregationMode)
        {
            // -- add only unique items
            string cssPath = pathToCSSFileUnderAppPath.Trim();

            if (!isExternallyHosted(cssPath))
            {
                cssPath = removeBeginningSlash(cssPath);
            }

            CSSGroup?existingGroup = getGroupForCSSFile(cssPath, aggregationMode);

            if (existingGroup == null)
            {
                if (aggregationMode == AggregateMode.Aggregate)
                {
                    cssFilePaths_Aggregate[cssGroup].Add(cssPath);
                }
                else
                {
                    cssFilePaths_DoNotAggregate[cssGroup].Add(cssPath);
                }
            }
            else if (existingGroup != null && existingGroup != cssGroup)
            {
                throw new ArgumentException(cssPath + " has already been added to the " + existingGroup.ToString() + " CSS group");
            }
        } // Add AddCSSFile
コード例 #4
0
        public GaugeAggregatorAttribute(AggregateMode aggregateMode, string suffix, double percentile)
        {
            AggregateMode = aggregateMode;

            string defaultSuffix;

            switch (aggregateMode)
            {
            case AggregateMode.Average:
                Percentile    = -1.0;
                defaultSuffix = "_avg";
                break;

            case AggregateMode.Last:
                Percentile    = -2.0;
                defaultSuffix = "";
                break;

            case AggregateMode.Count:
                Percentile    = -3.0;
                defaultSuffix = "_count";
                break;

            case AggregateMode.Median:
                Percentile    = 0.5;
                defaultSuffix = "_median";
                break;

            case AggregateMode.Percentile:
                if (Double.IsNaN(percentile) || percentile < 0 || percentile > 1)
                {
                    throw new ArgumentOutOfRangeException("percentile", "Percentile must be specified for gauge aggregators with percentile mode. Percentile must be between 0 and 1 (inclusive)");
                }
                Percentile    = percentile;
                defaultSuffix = "_" + (int)(percentile * 100);
                break;

            case AggregateMode.Max:
                Percentile    = 1.0;
                defaultSuffix = "_max";
                break;

            case AggregateMode.Min:
                Percentile    = 0.0;
                defaultSuffix = "_min";
                break;

            default:
                throw new Exception("Gauge mode not implemented.");
            }

            Suffix = suffix ?? defaultSuffix;
            if (Suffix.Length > 0 && !BosunValidation.IsValidMetricName(Suffix))
            {
                throw new Exception("\"" + Suffix + "\" is not a valid metric suffix.");
            }
        }
コード例 #5
0
        /// <summary>
        /// Applies an <see cref="AggregateMode"/> to an <see cref="AggregateGauge"/>.
        /// </summary>
        /// <param name="mode">The aggregate mode. Don't use AggregateMode.Percentile with this constructor.</param>
        /// <param name="suffix">Overrides the default suffix for the aggregate mode.</param>
        /// <param name="percentile">
        /// The percentile represented as a double. For example, 0.95 = 95th percentile. Using more than two digits is not recommended. In order to use this
        /// argument, <paramref name="mode"/> must be AggregateMode.Percentile.
        /// </param>
        public GaugeAggregatorAttribute(AggregateMode mode, string suffix, double percentile)
        {
            AggregateMode = mode;
            Percentile    = AggregateGauge.AggregateModeToPercentileAndSuffix(mode, percentile, out var defaultSuffix);
            Suffix        = suffix ?? defaultSuffix;

            if (Suffix.Length > 0 && !BosunValidation.IsValidMetricName(Suffix))
            {
                throw new Exception("\"" + Suffix + "\" is not a valid metric suffix.");
            }
        }
コード例 #6
0
        internal static double AggregateModeToPercentileAndSuffix(AggregateMode mode, double percentile, out string defaultSuffix)
        {
            if (mode != AggregateMode.Percentile && !double.IsNaN(percentile))
            {
                throw new ArgumentOutOfRangeException(nameof(percentile), "Percentile cannot be specified for mode " + mode);
            }

            switch (mode)
            {
            case AggregateMode.Average:
                defaultSuffix = "_avg";
                return(-1.0);

            case AggregateMode.Last:
                defaultSuffix = "";
                return(-2.0);

            case AggregateMode.Count:
                defaultSuffix = "_count";
                return(-3.0);

            case AggregateMode.Median:
                defaultSuffix = "_median";
                return(0.5);

            case AggregateMode.Percentile:
                if (double.IsNaN(percentile) || percentile < 0 || percentile > 1)
                {
                    throw new ArgumentOutOfRangeException(nameof(percentile), "Percentile must be specified for gauge aggregators with percentile mode. Percentile must be between 0 and 1 (inclusive)");
                }

                defaultSuffix = "_" + (int)(percentile * 100);
                return(percentile);

            case AggregateMode.Max:
                defaultSuffix = "_max";
                return(1.0);

            case AggregateMode.Min:
                defaultSuffix = "_min";
                return(0.0);

            default:
                throw new Exception("Gauge mode not implemented.");
            }
        }
コード例 #7
0
        /// <summary>
        /// Adds a javascript file statement to the head section
        /// </summary>
        /// <param name="pathToJSFileUnderAppPath"></param>
        public void AddJavascriptFile(JavascriptGroup jsGroup, string pathToJSFileUnderAppPath, AggregateMode aggregationMode)
        {
            // -- add only unique items
            string jsPath = pathToJSFileUnderAppPath.Trim();

            if (!isExternallyHosted(jsPath))
            {
                jsPath = removeBeginningSlash(jsPath);
            }

            JavascriptGroup?existingGroup = getGroupForJavascriptFile(jsPath, aggregationMode);

            if (existingGroup == null)
            {
                if (aggregationMode == AggregateMode.Aggregate)
                {
                    jsFilePaths_Aggregate[jsGroup].Add(jsPath);
                }
                else
                {
                    jsFilePaths_DoNotAggregate[jsGroup].Add(jsPath);
                }
            }
            else if (existingGroup != null && existingGroup != jsGroup)
            {
                throw new ArgumentException(pathToJSFileUnderAppPath + " has already been added to the " + existingGroup.ToString() + " javascript group");
            }
        } // Add JavascriptFile
コード例 #8
0
 public GaugeAggregatorAttribute(AggregateMode mode, string suffix) : this(mode, suffix, Double.NaN) { }
コード例 #9
0
 public GaugeAggregatorAttribute(AggregateMode mode, double percentile) : this(mode, null, percentile) { }
コード例 #10
0
 public GaugeAggregatorAttribute(AggregateMode mode, double percentile) : this(mode, null, percentile)
 {
 }
コード例 #11
0
 public GaugeAggregatorAttribute(AggregateMode mode, string suffix) : this(mode, suffix, Double.NaN)
 {
 }
コード例 #12
0
 public GaugeAggregatorAttribute(AggregateMode mode) : this(mode, null, Double.NaN)
 {
 }
コード例 #13
0
 public IrisGridColumnAttribute()
 {
     Width = 120;
     Aggregate = AggregateMode.None;
 }
コード例 #14
0
 public GaugeAggregatorAttribute(AggregateMode mode) : this(mode, null, Double.NaN) { }
コード例 #15
0
 public AggregateUpdateContext(OnDemandProcessingContext odpContext, AggregateMode mode)
 {
     m_mode             = mode;
     m_odpContext       = odpContext;
     m_activeAggregates = null;
 }
コード例 #16
0
 public IrisGridColumnAttribute()
 {
     Width     = 120;
     Aggregate = AggregateMode.None;
 }
コード例 #17
0
        public GaugeAggregatorAttribute(AggregateMode aggregateMode, string suffix, double percentile)
        {
            AggregateMode = aggregateMode;

            string defaultSuffix;
            switch (aggregateMode)
            {
                case AggregateMode.Average:
                    Percentile = -1.0;
                    defaultSuffix = "_avg";
                    break;
                case AggregateMode.Last:
                    Percentile = -2.0;
                    defaultSuffix = "";
                    break;
                case AggregateMode.Count:
                    Percentile = -3.0;
                    defaultSuffix = "_count";
                    break;
                case AggregateMode.Median:
                    Percentile = 0.5;
                    defaultSuffix = "_median";
                    break;
                case AggregateMode.Percentile:
                    if (Double.IsNaN(percentile) || percentile < 0 || percentile > 1)
                        throw new ArgumentOutOfRangeException("percentile", "Percentile must be specified for gauge aggregators with percentile mode. Percentile must be between 0 and 1 (inclusive)");
                    Percentile = percentile;
                    defaultSuffix = "_" + (int)(percentile * 100);
                    break;
                case AggregateMode.Max:
                    Percentile = 1.0;
                    defaultSuffix = "_max";
                    break;
                case AggregateMode.Min:
                    Percentile = 0.0;
                    defaultSuffix = "_min";
                    break;
                default:
                    throw new Exception("Gauge mode not implemented.");
            }

            Suffix = suffix ?? defaultSuffix;
            if (Suffix.Length > 0 && !BosunValidation.IsValidMetricName(Suffix))
                throw new Exception("\"" + Suffix + "\" is not a valid metric suffix.");
        }