var _____WB$wombat$assign$function_____ = function(name) {return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name]; }; if (!self.__WB_pmw) { self.__WB_pmw = function(obj) { this.__WB_source = obj; return this; } } { let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opener = _____WB$wombat$assign$function_____("opener"); var _argumentPattern = "A"; var _valuePattern = "V"; var _seriesNamePattern = "S"; var _stackedGroupPattern = "G"; var _value1Pattern = "V1"; var _value2Pattern = "V2"; var _weightPattern = "W"; var _highValuePattern = "HV"; var _lowValuePattern = "LV"; var _openValuePattern = "OV"; var _closeValuePattern = "CV"; var _percentValuePattern = "VP"; var _pointHintPattern = "HINT"; ASPxPointDataToStringConverter = _aspxCreateClass(null, { constructor: function(series, showStackedGroup) { this.series = series; this.defaultStackedGroupPattern = " : {G}"; var stackedGroupPattern = showStackedGroup ? this.defaultStackedGroupPattern : ""; this.defaultPointPattern = this.GetDefaultArgumentPattern() + stackedGroupPattern + this.GetDefaultValuePattern(); }, GetDefaultArgumentPattern: function() { return "{A" + this.GetDefaultArgumentFormat() + "}"; }, GetDefaultValuePattern: function() { throw "ASPxPointDataToStringConverter abstract error"; }, GetHintText: function(seriesPoint) { return seriesPoint.hint != null ? seriesPoint.hint : ""; }, GetArgumentText: function(seriesPoint, series, format) { if (seriesPoint.argument == null) return ""; if (series.argumentScaleType == ASPxClientScaleType.Numerical || series.argumentScaleType == ASPxClientScaleType.DateTime || format == null || format == "") { var argument = series.argumentScaleType == ASPxClientScaleType.DateTime ? _aspxToUtcTime(seriesPoint.argument) : seriesPoint.argument; return ASPxFormatter.Format("{0:" + format + "}", [argument]); } else return seriesPoint.argument; }, GetValueTextByIndex: function(valueIndex, seriesPoint, format) { var formattedValue = format == "" || format == null ? seriesPoint.values[valueIndex] : ASPxFormatter.Format("{0:" + format + "}", seriesPoint.values[valueIndex]) return valueIndex >= seriesPoint.values.length ? "" : formattedValue; }, GetDefaultFormat: function(scaleType) { if (scaleType == ASPxClientScaleType.DateTime) return ":d"; return ""; }, GetDefaultArgumentFormat: function() { return this.GetDefaultFormat(this.series.argumentScaleType); }, GetDefaultValueFormat: function() { return this.GetDefaultFormat(this.series.valueScaleType); } }); ASPxValueToStringConverter = _aspxCreateClass(ASPxPointDataToStringConverter, { constructor: function(series, showStackedGroup) { this.constructor.prototype.constructor.call(this, series, showStackedGroup); }, GetDefaultValuePattern: function() { return " : {V" + this.GetDefaultValueFormat() + "}"; }, GetValueText: function(seriesPoint, format) { return this.GetValueTextByIndex(0, seriesPoint, format); } }); ASPxRangeValueToStringConverter = _aspxCreateClass(ASPxPointDataToStringConverter, { constructor: function(series) { this.constructor.prototype.constructor.call(this, series, false); }, GetDefaultValuePattern: function() { return " : {V1" + this.GetDefaultValueFormat() + "} : {V2" + this.GetDefaultValueFormat() + "}"; }, GetValue1Text: function(seriesPoint, format) { return this.GetValueTextByIndex(0, seriesPoint, format); }, GetValue2Text: function(seriesPoint, format) { return this.GetValueTextByIndex(1, seriesPoint, format); } }); ASPxBubbleValueToStringConverter = _aspxCreateClass(ASPxValueToStringConverter, { constructor: function(series) { this.constructor.prototype.constructor.call(this, series, false); }, GetDefaultValuePattern: function() { return " : {V" + this.GetDefaultValueFormat() + "} : {W" + this.GetDefaultValueFormat() + "}"; }, GetWeightText: function(seriesPoint, format) { return this.GetValueTextByIndex(1, seriesPoint, format); } }); ASPxFinancialValueToStringConverter = _aspxCreateClass(ASPxPointDataToStringConverter, { constructor: function(series) { this.constructor.prototype.constructor.call(this, series, false); }, GetDefaultValuePattern: function() { return "\nHigh: {HV" + this.GetDefaultValueFormat() + "}\nLow: {LV" + this.GetDefaultValueFormat() + "}\nOpen: {OV" + this.GetDefaultValueFormat() + "}\nClose: {CV" + this.GetDefaultValueFormat() + "}"; }, GetLowValueText: function(seriesPoint, format) { return this.GetValueTextByIndex(0, seriesPoint, format); }, GetHighValueText: function(seriesPoint, format) { return this.GetValueTextByIndex(1, seriesPoint, format); }, GetOpenValueText: function(seriesPoint, format) { return this.GetValueTextByIndex(2, seriesPoint, format); }, GetCloseValueText: function(seriesPoint, format) { return this.GetValueTextByIndex(3, seriesPoint, format); } }); ASPxPercentValueToStringConverter = _aspxCreateClass(ASPxValueToStringConverter, { constructor: function(series, showStackedGroup) { this.constructor.prototype.constructor.call(this, series, showStackedGroup); }, GetDefaultValuePattern: function() { return "{V" + this.GetDefaultValueFormat() + "} ({VP:P2})";; }, GetPercentValueText: function(seriesPoint, format) { if (seriesPoint.percentValue == null) return format; return format == "" || format == null ? seriesPoint.percentValue : ASPxFormatter.Format("{0:" + format + "}", seriesPoint.percentValue) } }); ASPxToolTipPatternHelper = { ReplacePatternToValue: function(fragment, series, seriesPoint, converter) { var preparedFragment = this.PrepareFragment(fragment); if (preparedFragment == null) return fragment; var format = preparedFragment[0]; var pattern = preparedFragment[1]; switch (pattern) { case _seriesNamePattern: return series.name; case _stackedGroupPattern: return series.stackedGroup != null ? series.stackedGroup : fragment; } if (seriesPoint != null) { var result; switch (pattern) { case _argumentPattern: result = converter.GetArgumentText(seriesPoint, series, format); break; case _valuePattern: result = (converter instanceof ASPxValueToStringConverter) ? converter.GetValueText(seriesPoint, format) : fragment; break; case _value1Pattern: result = (converter instanceof ASPxRangeValueToStringConverter) ? converter.GetValue1Text(seriesPoint, format) : fragment; break; case _value2Pattern: result = (converter instanceof ASPxRangeValueToStringConverter) ? converter.GetValue2Text(seriesPoint, format) : fragment; break; case _weightPattern: result = (converter instanceof ASPxBubbleValueToStringConverter) ? converter.GetWeightText(seriesPoint, format) : fragment; break; case _highValuePattern: result = (converter instanceof ASPxFinancialValueToStringConverter) ? converter.GetHighValueText(seriesPoint, format) : fragment; break; case _lowValuePattern: result = (converter instanceof ASPxFinancialValueToStringConverter) ? converter.GetLowValueText(seriesPoint, format) : fragment; break; case _openValuePattern: result = (converter instanceof ASPxFinancialValueToStringConverter) ? converter.GetOpenValueText(seriesPoint, format) : fragment; break; case _closeValuePattern: result = (converter instanceof ASPxFinancialValueToStringConverter) ? converter.GetCloseValueText(seriesPoint, format) : fragment; break; case _percentValuePattern: result = (converter instanceof ASPxPercentValueToStringConverter) ? converter.GetPercentValueText(seriesPoint, format) : fragment; break; case _pointHintPattern: result = converter.GetHintText(seriesPoint); break; default: result = fragment; break; } return this.EscapeDollarSymbols(result); } else return fragment; }, EscapeDollarSymbols: function(fragment) { var result = ""; if (typeof(fragment) != "string") return fragment; for (var i = 0; i < fragment.length; i++) { var symbol = fragment.charAt(i); result += symbol; if (symbol == "$") result += "$"; } return result; }, PrepareFragment: function(fragment) { var pattern = ""; var format = ""; if (!(fragment.charAt(0) == "{" && fragment.charAt(fragment.length - 1) == "}")) return null; pattern = fragment.substring(1, fragment.length - 1); var formatIndex = pattern.indexOf(":"); if (formatIndex >= 0) { format = pattern.substring(formatIndex + 1).replace(/^\s*/, "").replace(/\s*$/, ""); pattern = pattern.substring(0, formatIndex); } pattern = pattern.replace(/^\s*/, "").replace(/\s*$/, "").toUpperCase(); return [format, pattern]; }, SplitString: function(splitingString, leftSeparator, rightSeparator) { var substrings = []; var leftStringIndex = 0; var rightStringIndex = 0; var currentIndex = 0; if (splitingString != null && splitingString != "") { for (var i = 0; i < splitingString.length; i++) { var charElement = splitingString.charAt(i); if (charElement == leftSeparator) { leftStringIndex = currentIndex; } else { if (charElement == rightSeparator) { rightStringIndex = currentIndex; substrings.push(splitingString.substring(leftStringIndex, rightStringIndex + 1)); } } currentIndex++; } return substrings; } else return null; }, GetPointToolTipText: function(seriesPointPattern, seriesPoint, series) { var converter = this.GetPatternConverter(series); if (converter == null) return ""; parsedPattern = this.SplitString(seriesPointPattern, "{", "}"); var result = seriesPointPattern; if (parsedPattern != null) for (var i in parsedPattern) { var fragment = parsedPattern[i]; var formattedFragment = this.ReplacePatternToValue(fragment, series, seriesPoint, converter); result = result.replace(new RegExp(fragment, "g"), formattedFragment); } return result; }, GetSeriesToolTipText: function(seriesPattern, series) { if (seriesPattern == null || seriesPattern == "") return ""; parsedPattern = this.SplitString(seriesPattern, "{", "}"); var result = seriesPattern; if (parsedPattern != null) for (var i in parsedPattern) { var fragment = parsedPattern[i]; result = result.replace(new RegExp(fragment, "g"), this.ReplacePatternToValue(fragment, series, null, null)); } return result; }, GetPatternConverter: function(series) { var viewType = series.viewType; if (viewType == "Pie" || viewType == "Funnel" || viewType == "Doughnut") return new ASPxPercentValueToStringConverter(series, false); if (viewType == "FullStackedArea" || viewType == "FullStackedBar" || viewType == "SideBySideFullStackedBar" || viewType == "FullStackedLine" || viewType == "FullStackedSplineArea") return new ASPxPercentValueToStringConverter(series, true); if (viewType == "CandleStick" || viewType == "Stock") return new ASPxFinancialValueToStringConverter(series); if (viewType == "Bubble") return new ASPxBubbleValueToStringConverter(series); if (viewType == "RangeArea" || viewType == "RangeBar" || viewType == "SideBySideRangeBar" || viewType == "SideBySideRangeBar" || viewType == "Gantt" || viewType == "SideBySideGantt") return new ASPxRangeValueToStringConverter(series); if (viewType.indexOf("3D") >= 0 || viewType.indexOf("Manhattan") >= 0) return null; return new ASPxValueToStringConverter(series, false); }, GetAxisLabelText: function(axis, isValueAxis, value) { parsedPattern = this.SplitString(axis.crosshairLabelPattern, "{", "}"); if (parsedPattern != null) { var result = axis.crosshairLabelPattern; for (var i in parsedPattern) { var fragment = parsedPattern[i]; var preparedFragment = this.PrepareFragment(fragment); if (preparedFragment == null) return fragment; var format = preparedFragment[0]; var formattedFragment = fragment; var pattern = preparedFragment[1]; if (pattern == _argumentPattern && !isValueAxis || isValueAxis && pattern == _valuePattern) { if (axis.scale instanceof ASPxClientDateTimeMap || axis.scale instanceof ASPxClientNumericalMap) { formattedFragment = ASPxFormatter.Format("{0:" + format + "}", [value]); } else { formattedFragment = value; } } result = result.replace(new RegExp(fragment, "g"), formattedFragment); } return result; } return value; } }; } /* playback timings (ms): load_resource: 223.042 PetaboxLoader3.resolve: 102.248 CDXLines.iter: 41.866 (3) exclusion.robots.policy: 12.45 captures_list: 551.387 exclusion.robots: 12.477 LoadShardBlock: 465.787 (3) RedisCDXSource: 25.378 PetaboxLoader3.datanode: 492.317 (4) esindex: 0.028 */