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); }
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); }
/// <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
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."); } }
/// <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."); } }
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."); } }
/// <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
public GaugeAggregatorAttribute(AggregateMode mode, string suffix) : this(mode, suffix, Double.NaN) { }
public GaugeAggregatorAttribute(AggregateMode mode, double percentile) : this(mode, null, percentile) { }
public GaugeAggregatorAttribute(AggregateMode mode) : this(mode, null, Double.NaN) { }
public IrisGridColumnAttribute() { Width = 120; Aggregate = AggregateMode.None; }
public AggregateUpdateContext(OnDemandProcessingContext odpContext, AggregateMode mode) { m_mode = mode; m_odpContext = odpContext; m_activeAggregates = null; }
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."); }